[PYTHON] Maschinelles Lernen: k-Nächste Nachbarn

Ziel

Verstehen Sie den k-Nachbarschaftsalgorithmus und probieren Sie ihn mit scicit-learn aus.

Theorie

Die k-Nachbarschaftsmethode ist ein überwachter Klassifizierungsalgorithmus, der kein Diskriminanzmodell erfasst und auch als überwachte Regression oder unbeaufsichtigte Klassifizierung verwendet werden kann.

Algorithmus der k-nahen Methode

Der Algorithmus der k-Nachbarschaftsmethode ist wie folgt.

  1. Wählen Sie den Wert von k und den Distanzindex.
  2. Berechnen Sie den Entfernungsindex zwischen den neuen Eingabedaten und den Trainingsdaten.
  3. Erhalten Sie k Trainingsdaten und entsprechende Kategorien in aufsteigender Reihenfolge des Distanzindex.
  4. Prognostizieren Sie neue Eingabedatenkategorien mit der Mehrheitsmethode.

Die Minkovsky-Distanz wird als Distanzindex verwendet. Wenn die neuen Eingabedaten $ x '$ sind, sind die Trainingsdaten $ x $ und die Anzahl der Features ist $ m $.

d(x', x) = \sqrt[p]{\sum^m_{j=1} |x'_j - x_j|^p }

Dies ist gleichbedeutend mit der Entfernung nach Manhattan, wenn $ p = 1 $ ist, und der euklidischen Entfernung, wenn $ p = 2 $.

Nachteile der k-Nachbarschaftsmethode

Während das Erhöhen des Wertes von k die Auswirkungen von Rauschen verringern kann, kann es schwierig sein, den Wert von k zu bestimmen, da die Grenzen der Kategorien möglicherweise nicht klar sind.

In dem unten gezeigten Fall wird bei der Klassifizierung neuer schwarzer Datenpunkte, wenn $ k = 3 $, als orangefarbener Kreis klassifiziert, bei $ k = 5 $ jedoch als blaues Quadrat und $ k klassifiziert. Wenn = 8 $, wird es wieder als orangefarbener Kreis klassifiziert.

104_nearest_neighbor.png

Wenn es gemäß dem Algorithmus implementiert wird, ist es außerdem erforderlich, den Entfernungsindex für alle Daten zu berechnen, die bei der Vorhersage neuer Daten gespeichert werden, damit der Rechenaufwand proportional zur Anzahl der Daten zunimmt. Es gibt Nachteile.

Datensatz für Klassifizierungsprobleme

Als Gegenstand der k-Nachbarschaftsmethode werden wir den Iris-Datensatz verwenden, der ein Datensatz von Scikit-Learn-Klassifizierungsproblemen ist.

Die Anzahl der Daten Anzahl der Funktionen Anzahl der Kategorien
150 4 3

Implementierung

Ausführungsumgebung

Hardware-

・ CPU Intel (R) Core (TM) i7-6700K 4,00 GHz

Software

・ Windows 10 Pro 1909 ・ Python 3.6.6 ・ Matplotlib 3.1.1 ・ Numpy 1.19.2 ・ Scikit-Learn 0.23.0

Programm zum Ausführen

Das implementierte Programm wird auf [GitHub] veröffentlicht (https://github.com/sho-watari/MachineLearning/blob/master/Supervised/nearest_neighbor.py).

nearest_neighbor.py


Ergebnis

Mit Lehrer klassifiziert

Das Ausführungsergebnis bei $ k = 15 $ ist wie folgt.

104_nearest_neighbor_classification.png

Der blaue Bereich wird als Setosa, der grüne Bereich als Versicolor und der orange Bereich als Virginica klassifiziert.

Kehre mit dem Lehrer zurück

Die Daten des Regressionsproblems wurden ausgeführt, indem der Sinuskurve eine Zufallszahl hinzugefügt und $ k = 5 $ gesetzt wurde.

104_nearest_neighbor_regression.png

Unüberwachte Klassifizierung

Bei einem Klassifizierungsproblem habe ich eine unbeaufsichtigte Klassifizierung mit $ k = 15 $ durchgeführt, ohne eine Kategoriebeschriftung anzugeben.

104_nearest_neighbor_unsupervised.png

Referenz

1.6. Nearest Neighbors

Recommended Posts

Maschinelles Lernen: k-Nächste Nachbarn
Maschinelles Lernen
Maschinelles Lernen ④ K-nächster Nachbar Zusammenfassung
[Memo] Maschinelles Lernen
Klassifikation des maschinellen Lernens
Beispiel für maschinelles Lernen
Zusammenfassung des Lernprogramms für maschinelles Lernen
Maschinelles Lernen Über Overlearning
Maschinelles Lernen ⑤ AdaBoost-Zusammenfassung
Logistische Regression beim maschinellen Lernen
Maschinelles Lernen unterstützt Vektormaschine
Maschinelles Lernen studieren ~ matplotlib ~
Lineare Regression des maschinellen Lernens
Memo zum Kurs für maschinelles Lernen
Bibliothek für maschinelles Lernen dlib
Maschinelles Lernen (TensorFlow) + Lotto 6
Lerne irgendwie maschinelles Lernen
Maschinelles Lernen Kaninchen Herausforderung
Einführung in das maschinelle Lernen
Was ist maschinelles Lernen?
Maschinelles Lernen #k Nachbarschaftsmethode und deren Implementierung und verschiedene
Modell des maschinellen Lernens unter Berücksichtigung der Wartbarkeit
Maschinelles Lernen mit Pokemon gelernt
Datensatz für maschinelles Lernen
Japanische Vorverarbeitung für maschinelles Lernen
Maschinelles Lernen in Delemas (Praxis)
Eine Einführung in das maschinelle Lernen
Techniken im Zusammenhang mit maschinellem Lernen / Klassifizierung
Grundlagen des maschinellen Lernens (Denkmal)
Anfänger des maschinellen Lernens versuchten RBM
Maschinelles Lernen mit Python! Vorbereitung
Lernressourcen-Lernblock für maschinelles Lernen
Maschinelles Lernen ② Naive Bayes Zusammenfassung
Verstehe maschinelles Lernen ~ Ridge Regression ~.
Zusammenfassung der Artikel zum maschinellen Lernen (selbst verfasst)
Über maschinelles Lernen gemischte Matrix
Maschinelles Lernen: Überwacht - Zufälliger Wald
Praktisches Memo zum maschinellen Lernsystem
Maschinelles Lernen Minesweeper mit PyTorch
Erstellen Sie eine maschinelle Lernumgebung
Python Machine Learning Programming> Schlüsselwörter
Algorithmus für maschinelles Lernen (einfaches Perzeptron)
Bedeutung von Datensätzen für maschinelles Lernen
Maschinelles Lernen und mathematische Optimierung
Maschinelles Lernen: Überwacht - Support Vector Machine
Überwachtes maschinelles Lernen (Klassifikation / Regression)
Ich habe versucht, die Extreme-Lernmaschine zu implementieren
Beginnend mit maschinellem Python-Lernen
Algorithmus für maschinelles Lernen (Support Vector Machine)
Super Einführung in das maschinelle Lernen
4 [/] Vier Arithmetik durch maschinelles Lernen
Pokemon maschinelles Lernen N-te Abkochung
Versuchen Sie es mit Kaggle leicht maschinell
Stapelvorlage für maschinelles Lernen (Rückgabe)
Maschinelles Lernen: Überwacht - Entscheidungsbaum
Algorithmus für maschinelles Lernen (logistische Regression)
<Kurs> Maschinelles Lernen Kapitel 6: Algorithmus 2 (k-Mittel)
Einführung in das maschinelle Lernen Schreiben von Notizen
Bedeutung des maschinellen Lernens und des Mini-Batch-Lernens
[Maschinelles Lernen] Lassen Sie uns den Entscheidungsbaum studieren