K-nearest neighbors (k-NN)-Algorithmus - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

K-nearest neighbors (k-NN)-Algorithmus

Der Algorithmus für den k-NN (k-NN) von Amazon SageMaker ist einIndexbasierter Algorithmusaus. Er verwendet eine nicht-parametrische Methode zur Klassifizierung oder Regression. Bei Klassifizierungsproblemen fragt der Algorithmus die k-Punkte ab, die dem Stichprobenpunkt am nächsten liegen, und gibt die am häufigsten verwendeten Bezeichnungen ihrer Klasse als prognostizierte Bezeichnung zurück. Bei Regressionsproblemen fragt der Algorithmus die k-Punkte ab, die dem Stichprobenpunkt am nächsten liegen, und gibt den Durchschnitt ihrer Funktionswerte als prognostizierten Wert zurück.

Die Schulung mit dem k-NN-Algorithmus umfasst drei Schritte: Sampling, Dimensionsreduzierung und Indexerstellung. Durch Sampling wird die Größe des anfänglichen Datasets reduziert, sodass es in den Arbeitsspeicher passt. Für die Dimensionsreduzierung verringert der Algorithmus die Funktionsdimension der Daten, um den Ressourcenbedarf des k-NN-Modells im Speicher und die Inferenzlatenz zu senken. Wir stellen zwei-Methoden der Dimensionsreduzierung zur Verfügung: zufällige Projektion und die schnelle Johnson-Lindenstrauss-Transformation. In der Regel verwenden Sie die Dimensionsreduzierung für hochdimensionale Datasets (d > 1 000), um die Nachteile der Dimensionalität zu vermeiden, die die statistische Analyse von Daten beeinträchtigt, deren Dichte mit steigender Dimensionalität geringer wird. Das Hauptziel der k-NN-Schulung ist die Erstellung des Index. Der Index ermöglicht ein effizientes Suchen von Entfernungen zwischen Punkten, deren Werte oder Klassenbezeichnungen noch nicht festgelegt wurden, und den k nächstgelegenen Punkten zur Inferenz.

E/A-Schnittstellefür den k-NN-Algorithmus

SageMaker K-NN unterstützt Schulungs- und Testdatenkanäle.

  • Verwenden Sie einen Schulungskanal für Daten, die Sie als Stichproben erfassen und in den die k-NN-Index einbauen möchten.

  • Verwenden Sie ein Testkanal, um Punktzahlen in Protokolldateien auszugeben. Punktzahlen werden als eine Zeile pro Mini-Stapel aufgeführt: Genauigkeit für classifier, mittlerer quadratischer Fehler (MSE) für regressor für die Punktzahl.

Für Schulungseingaben unterstützt k-NN text/csv- und application/x-recordio-protobuf-Datenformate. Für den Eingabetyp text/csv werden die ersten label_size Spalten als Bezeichnungsvektor für diese Zeile interpretiert. Sie können entweder den Datei- oder den Pipe-Modus verwenden, um Modelle mit Daten, die als recordIO-wrapped-protobuf oder CSV formatiert sind, zu schulen.

Für Inferenzeingaben unterstützt k-NN die application/json-, application/x-recordio-protobuf- und text/csv-Datenformate. Das text/csv-Format akzeptiert eine label_size und einen Codierungsparameter. Es setzt eine label_size von 0 und eine UTF-8-Codierung voraus.

Für Inferenzausgaben unterstützt k-NN die application/json- und application/x-recordio-protobuf-Datenformate. Diese beiden Datenformate unterstützen auch einen Verbose-Ausgabemodus. Im Verbose-Ausgabemodus stellt die API die Suchergebnisse mit dem Entfernungsvektor aufsteigend sortiert und die entsprechenden Elemente im Bezeichnungsvektor bereit.

Für die Stapeltransformation unterstützt k-NN das application/jsonlines-Datenformat für die Ein- und Ausgabe. Die Eingabe lautet z. B.:

content-type: application/jsonlines {"features": [1.5, 16.0, 14.0, 23.0]} {"data": {"features": {"values": [1.5, 16.0, 14.0, 23.0]}}

Die Ausgabe lautet z. B.:

accept: application/jsonlines {"predicted_label": 0.0} {"predicted_label": 2.0}

Weitere Informationen zu den Ein- und Ausgabedateiformaten finden Sie unter Datenformate für k-NN-Trainingseingaben für die Schulung, k-NN-Anforderungs- und Antwortformate für Inferenz und k-NN-Beispiel-Notebooks.

k-NN-Beispiel-Notebooks

Ein Beispiel-Notebook, das den SageMaker k-Nearest Neighbor Algorithmus zur Vorhersage von Wildnisbedeckungstypen aus geologischen und Waldservicedaten verwendet, finden Sie unter derK-Nearest Neighbor Covertypeaus.

Verwenden Sie eine Jupyter Notebook-Instance, um das Beispiel in SageMaker auszuführen. Informationen zum Erstellen und Öffnen einer Jupyter-Notebook-Instance in SageMaker finden Sie unterVerwenden von Amazon SageMaker Notebook-Instancesaus. Sobald Sie eine Notebook-Instance erstellt und geöffnet haben, wählen Sie die RegisterkarteSageMaker Beispiele, um eine Liste aller -Beispiele für SageMaker -Notebooks anzusehen. Suchen Sie nach K-Nearest Neighbor Notebooks im Abschnitt Einführung in Amazon-Algorithmen. Zum Öffnen eines Notebooks klicken Sie auf die Registerkarte Use (Verwenden) und wählen Sie Create copy (Kopie erstellen) aus.

EC2Instance-Empfehlungfür den k-NN-Algorithmus

Instance-Empfehlung für Training mit dem k-NN-Algorithmus

Um zu beginnen versuchen Sie, Schulungen auf einer CPU, z. B. einer ml.m5.2xlarge-Instance, oder auf einer GPU, z. B. einer ml.p2.xlarge-Instance, auszuführen.

Instance-Empfehlung für Inferenzen mit dem k-NN-Algorithmus

Inferenzanforderungen aus CPUs weisen in der Regel eine geringere durchschnittliche Latenz als Anforderungen von GPUs auf, da bei einer CPU-zu-GPU-Kommunikation bei der Verwendung von GPU-Hardware eine Steuer anfällt. GPUs bieten im Allgemeinen jedoch einen höheren Durchsatz für größere Stapel.