K Nächster Nachbar | KNN-Algorithmus

Inhalt

Notiz: Dieser Artikel wurde ursprünglich veröffentlicht auf 10 Oktober 2014 und der 27 Marsch 2018.

Überblick

  • Den nächsten Nachbarn verstehen (KNN): einer der beliebtesten maschinellen Lernalgorithmen
  • Erfahren Sie, wie kNN in Python funktioniert
  • Wählen Sie den richtigen Wert von k in einfachen Worten

Einführung

In den vier Jahren meiner Data Science Karriere, Ich habe mehr gebaut als 80% von Klassifikationsmodellen und nur ein 15-20% Regressionsmodelle. Diese Verhältnisse lassen sich mehr oder weniger auf die gesamte Branche verallgemeinern. Der Grund für diese Neigung zu Klassifizierungsmodelle ist, dass die meisten analytischen Probleme eine Entscheidung beinhalten.

Zum Beispiel, ob sich ein Kunde abnutzt oder nicht, wenn wir für digitale Kampagnen zu Client X gehen, ob der Kunde ein hohes Potenzial hat oder nicht, etc. Diese Analysen sind aufschlussreicher und direkt mit einer Implementierungs-Roadmap verknüpft.

knn3-8559996

In diesem Artikel, Wir sprechen über ein anderes weit verbreitetes maschinelles Lernen. Klassifizierungstechnikmich genannt K-nächste Nachbarn (KNN). Unser Fokus wird hauptsächlich darauf liegen, wie der Algorithmus funktioniert und wie sich der Eingabeparameter auf den Output auswirkt / Vorhersage.

Notiz: Menschen, die es vorziehen, durch Videos zu lernen, können dasselbe durch unseren kostenlosen Kurs lernen – K-Nearest Neighbours-Algorithmus (KNN) in Python und R. Und wenn Sie ein absoluter Anfänger in Data Science und Machine Learning sind, Sehen Sie sich unser Certified BlackBelt-Programm an:

Inhaltsverzeichnis

  • Wann verwenden wir den KNN-Algorithmus?
  • Wie funktioniert der KNN-Algorithmus?
  • Wie wählen wir den K-Faktor?
  • Brechen sie ab – KNN-Pseudocode
  • Python-Implementierung von Grund auf neu
  • Vergleich unseres Modells mit scikit-learn

Wann verwenden wir den KNN-Algorithmus?

KNN kann für prädiktive Klassifizierungs- und Regressionsprobleme verwendet werden. Aber trotzdem, am häufigsten bei Klassifizierungsproblemen in der Industrie verwendet. Um jede Technik zu bewerten, wir schauen uns normalerweise an 3 wichtige Aspekte:

1. Einfache Interpretation der Ausgabe

2. Berechnungszeit

3. Vorhersagekraft

Nehmen wir einige Beispiele, um KNN auf die Waage zu stellen:

Modellvergleich-1354057KNN-Algorithmus-Messen über alle Betrachtungsparameter. Es wird häufig wegen seiner einfachen Interpretation und der geringen Rechenzeit verwendet.

Wie funktioniert der KNN-Algorithmus?

Nehmen wir einen einfachen Fall, um diesen Algorithmus zu verstehen. Unten ist eine Erweiterung der roten Kreise (RC) und grüne Quadrate (GS):

Szenario1-2967997Er will die Klasse des blauen Sterns herausfinden (BS). BS kann RC oder GS sein und sonst nichts. Der Algorithmus “K” de KNN ist der nächste Nachbar, für den wir stimmen wollen. Nehmen wir an, K = 3. Deswegen, Jetzt machen wir einen Kreis mit BS als Mittelpunkt, der so groß ist, dass er nur drei Datenpunkte in der Ebene einschließt. Bitte beachten Sie das folgende Diagramm für weitere Details:

Szenario2-2483947 Die drei nächsten Punkte zu BS sind alle RC. Deswegen, mit einem guten Maß an Selbstvertrauen, wir können sagen, dass die BS zur RC-Klasse gehören sollte. Hier, Die Wahl wurde sehr offensichtlich, da die drei Stimmen der nächsten Nachbarn an RC gingen. Die Wahl des Parameters K ist bei diesem Algorithmus sehr wichtig. Dann, Wir werden verstehen, welche Faktoren zu berücksichtigen sind, um das beste K . zu ermitteln.

Wie wählen wir den K-Faktor?

Versuchen wir zunächst zu verstehen, was genau K den Algorithmus beeinflusst. Wenn wir das letzte Beispiel sehen, seit der 6 Trainingsbeobachtungen bleiben konstant, mit einem gegebenen K-Wert können wir für jede Klasse Grenzen setzen. Diese Grenzen werden RC von GS trennen. Auf die gleiche Weise, Versuchen wir, die Wirkung des Wertes zu sehen “K” in den Grenzen der Klasse. Im Folgenden sind die unterschiedlichen Grenzen aufgeführt, die die beiden Klassen mit unterschiedlichen Werten von K . trennen.

k-Urteil-4044801

k-Urteil2-3183925

Wenn man genau hinschaut, Sie können sehen, dass der Grenzwert mit zunehmendem Wert von K glatter wird. Mit zunehmendem K ins Unendliche, es wird endlich ganz blau oder ganz rot, abhängig von der Gesamtmehrheit. Die Trainingsfehlerrate und die Validierungsfehlerrate sind zwei Parameter, die wir benötigen, um auf verschiedene K-Werte zuzugreifen.. Unten ist die Kurve für die Trainingsfehlerrate mit einem variablen Wert von K:

Trainingsfehler-6116377Wie du siehst, die Fehlerrate in K = 1 ist für die Trainingsstichprobe immer null. Dies liegt daran, dass der Punkt, der jedem Trainingsdatenpunkt am nächsten liegt, sich selbst ist, also ist die Vorhersage immer genau mit K = 1. Wenn die Validierungsfehlerkurve ähnlich gewesen wäre, unsere Wahl für K wäre gewesen 1. Unten ist die Validierungsfehlerkurve mit einem variablen Wert von K:

Trainingsfehler_11-9737814Damit ist die Geschichte geklärt. Und K = 1, wir haben die grenzen überschritten. Deswegen, die Fehlerquote nimmt zunächst ab und erreicht ein Minimum. Nach dem Mindestpunkt, steigt mit steigendem K. Um den optimalen Wert von K . zu erhalten, kann Training und anfängliche Datensatzvalidierung trennen. Zeichnen Sie nun die Validierungsfehlerkurve, um den optimalen Wert von K . zu erhalten. Dieser Wert von K sollte für alle Vorhersagen verwendet werden.

Die oben genannten Inhalte können mit unserem kostenlosen Kurs intuitiver verstanden werden: Algorithmus der nächsten Nachbarn (KNN) in Python und R

Brechen sie ab – KNN-Pseudocode

Wir können ein KNN-Modell implementieren, indem wir die folgenden Schritte ausführen:

  1. Lade Daten
  2. Initialisieren Sie den Wert von k
  3. Um die vorhergesagte Klasse zu erhalten, wiederholen von 1 bis zur Gesamtzahl der Trainingsdatenpunkte
    1. Berechnen Sie den Abstand zwischen den Testdaten und jeder Zeile der Trainingsdaten. Hier verwenden wir die euklidische Distanz als unsere Distanzmetrik, da es die beliebteste Methode ist. Die anderen Metriken, die verwendet werden können, sind Chebyshev, Kosinus, etc.
    2. Sortieren Sie die berechneten Entfernungen in aufsteigender Reihenfolge basierend auf den Entfernungswerten
    3. Holen Sie sich die ersten k Zeilen der geordneten Matrix
    4. Holen Sie sich die häufigste Klasse aus diesen Zeilen
    5. Gibt die vorhergesagte Klasse zurück

Python-Implementierung von Grund auf neu

Wir werden den beliebten Iris-Datensatz verwenden, um unser KNN-Modell zu erstellen. Sie können es herunterladen von hier.

Vergleich unseres Modells mit scikit-learn

von sklearn.neighbors importieren KNeighborsClassifier
wieher = KNeighborsClassifier(n_nachbarn=3)
wieher.fit(data.iloc[:,0:4], Daten['Name'])

# Vorhergesagte Klasse
drucken(wieher.vorhersagen(Prüfung))

-> ['Iris-Virginica']

# 3 nächste Nachbarn
drucken(nachbar.nachbarn(Prüfung)[1])
-> [[141 139 120]]

Wir können sehen, dass beide Modelle dieselbe Klasse vorhergesagt haben ('Iris-Virginica') und die gleichen nächsten Nachbarn ( [141 139 120] ). Deswegen, Wir können daraus schließen, dass unser Modell wie erwartet funktioniert.

Implementierung von kNN in R

Paso 1: Importieren Sie die Daten

Paso 2: Daten überprüfen und Datenzusammenfassung berechnen

Produktion

#Top-Beobachtungen in den Daten
KelchblattLänge KelchblattBreite BlütenblattLänge BlütenblattBreite Name
1 5.1 3.5 1.4 0.2 Iris-seidig
2 4.9 3.0 1.4 0.2 Iris-seidig
3 4.7 3.2 1.3 0.2 Iris-seidig
4 4.6 3.1 1.5 0.2 Iris-seidig
5 5.0 3.6 1.4 0.2 Iris-seidig
6 5.4 3.9 1.7 0.4 Iris-setosa

#Überprüfe die Abmessungen der Daten
[1] 150 5

#Fassen Sie die Daten zusammen
KelchblattLänge KelchblattBreite BlütenblattLänge BlütenblattBreite Name
Mindest. :4.300 Mindest. :2.000 Mindest. :1.000 Mindest. :0.100 Iris-seidig :50 
1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300 Iris-Versicolor:50 
Median :5.800 Median :3.000 Median :4.350 Median :1.300 Iris-Virginica :50 
Bedeuten :5.843 Bedeuten :3.054 Bedeuten :3.759 Bedeuten :1.199 
3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800 
Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500 

Paso 3: Teile die Daten

Paso 4: Berechnen Sie die euklidische Distanz

Paso 5: schreibe die Funktion zur Vorhersage von kNN

Paso 6: Berechnung des Labels (Name) für K = 1

Produktion

Für K=1
[1] "Iris-Virginica"

Auf die gleiche Weise, kann andere Werte von K . berechnen.

Vergleich unserer Vorhersagefunktion kNN mit der Bibliothek “Klasse”

Produktion

Für K=1
[1] "Iris-Virginica"

Wir können sehen, dass beide Modelle dieselbe Klasse vorhergesagt haben ('Iris-Virginica').

Abschließende Anmerkungen

Der KNN-Algorithmus ist einer der einfachsten Klassifikationsalgorithmen. Auch bei dieser Einfachheit, kann sehr wettbewerbsfähige Ergebnisse liefern. Der KNN-Algorithmus kann auch für Regressionsprobleme verwendet werden. Der einzige Unterschied zu der diskutierten Methodik besteht darin, dass Durchschnittswerte der nächsten Nachbarn verwendet werden, anstatt für die nächsten Nachbarn zu stimmen.. KNN kann in einer einzigen Zeile in R . kodiert werden. Ich muss noch untersuchen, wie wir den KNN-Algorithmus in SAS verwenden können.

War der Artikel hilfreich für dich? Haben Sie in letzter Zeit andere Tools für maschinelles Lernen verwendet?? Planen Sie, KNN bei Ihren geschäftlichen Problemen einzusetzen?? Wenn ja, Sag uns, wie du es vorhast.

Wenn Ihnen das, was Sie gerade gelesen haben, gefällt und Sie Ihre Arbeit fortsetzen möchten analytisches Lernen, abonnieren Sie unsere E-Mails, Folge uns auf Twitter oder wie bei uns Facebook Seite.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.