Verstehen Sie den k-Nachbarschaftsalgorithmus und probieren Sie ihn mit scicit-learn aus.
Die k-Nachbarschaftsmethode ist ein überwachter Klassifizierungsalgorithmus, der kein Diskriminanzmodell erfasst und auch als überwachte Regression oder unbeaufsichtigte Klassifizierung verwendet werden kann.
Der Algorithmus der k-Nachbarschaftsmethode ist wie folgt.
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 $.
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.
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.
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 |
・ CPU Intel (R) Core (TM) i7-6700K 4,00 GHz
・ Windows 10 Pro 1909 ・ Python 3.6.6 ・ Matplotlib 3.1.1 ・ Numpy 1.19.2 ・ Scikit-Learn 0.23.0
Das implementierte Programm wird auf [GitHub] veröffentlicht (https://github.com/sho-watari/MachineLearning/blob/master/Supervised/nearest_neighbor.py).
nearest_neighbor.py
Das Ausführungsergebnis bei $ k = 15 $ ist wie folgt.
Der blaue Bereich wird als Setosa, der grüne Bereich als Versicolor und der orange Bereich als Virginica klassifiziert.
Die Daten des Regressionsproblems wurden ausgeführt, indem der Sinuskurve eine Zufallszahl hinzugefügt und $ k = 5 $ gesetzt wurde.
Bei einem Klassifizierungsproblem habe ich eine unbeaufsichtigte Klassifizierung mit $ k = 15 $ durchgeführt, ohne eine Kategoriebeschriftung anzugeben.
Recommended Posts