K nächster Nachbar. Der k-Nächste-Nachbarn-Algorithmus, auch… | von Sowjanya Sadashiva | Juni 2023

0
26


  • Der k-Nearest-Neighbors-Algorithmus, auch bekannt als KNN oder k-NN, ist ein nichtparametrischer, überwachter Lernklassifikator, der Nähe nutzt, um Klassifizierungen oder Vorhersagen über die Gruppierung eines einzelnen Datenpunkts zu treffen.
  • Dieses Modell kann sowohl für die Klassifizierung als auch für die Regression verwendet werden.
  • Einstufung: Eine Klassenbezeichnung wird auf der Grundlage einer Mehrheitsentscheidung vergeben. Die Klassifizierung wird für diskrete Werte verwendet.
  • Regression: Der Durchschnitt der okay nächsten Nachbarn wird verwendet, um eine Vorhersage über eine Klassifizierung zu treffen. Die Regression wird bei kontinuierlichen verwendet.
  • Der euklidische Abstand (Entfernungsmetrik) wird am häufigsten zur Berechnung des Abstands zwischen den Datenpunkten verwendet. Einige andere Distanzmetriken, die verwendet werden können, sind die Minkowski-Distanz, die Manhattan-Distanz und die Hamming-Distanz.
Euklidische Distanzformel
  • Wählen Sie bei einem Satz klassenbeschrifteter Datenpunkte und einer Abfrage X {(x1, c1), ….., (xn, cn)} die Ok Datenpunkte aus, die X am ähnlichsten sind, und geben Sie die Beschriftung zurück, die der größten Zahl zugeordnet ist der Datenpunkte.
  • Es handelt sich um einen überwachten Lernalgorithmus, der eine punktbasierte Dichtedarstellung verwendet.
  • Je dichter die Datenpunkte sind, desto besser sind die Ergebnisse.

Darstellung

  • Satz beschrifteter Datenpunkte und ein Abstands-/Ähnlichkeitsmaß, das eine kernbasierte Wahrscheinlichkeitsverteilung bildet.
  • In der einfachsten Type sind die Kerne kugelförmige Fenster.
  • Datenpunkte stellen Wahrscheinlichkeitsschätzungen mit begrenztem Bereich dar, die die Klassenbezeichnung unterstützen
  • Wahrscheinlichkeit der Klasse = Anzahl der zur Klasse gehörenden Datenpunkte / Gesamtzahl der Datenpunkte
  • Diese Wahrscheinlichkeit gibt die Schätzung der Wahrscheinlichkeit an, dass dieser Datenpunkt X zur Klasse C gehört.

Bewertungsfunktion

  • Leistungsfunktion: argmaxP(Ci | X), das ist das argmax der Klassenwahrscheinlichkeit bei gegebenem Datenpunkt X.
  • MAP ähnelt dem Bayes-Gesetz
  • argmax P(x|Ci) P(Ci) / P(x)
  • Da P(x) für alle Klassen gleich ist, können wir das ignorieren.

Optimierungskriterium:

  • MAP im sphärischen Bereich um x mit Ok Datenpunkten
  • C = argmaxCP(C|x), was die Klasse angibt, zu der der Datenpunkt gehört.
  • Das sphärische Fenster passt sich additionally basierend auf dem punktbasierten Dichteschätzer an den Datenpunkt an.
  • Dies ist das beste Beispiel für die Funktionsweise eines fensterbasierten Schätzers.

Annahmen des KNN-Algorithmus:

  • Die Wahrscheinlichkeitsdichte wird je nach Kernel interpoliert
  • gewichtetes KNN entspricht abstandsabhängigen Kerneln
  • Punktschätzungen sind unabhängig, sie werden nicht von anderen Datenpunkten beeinflusst und umgekehrt.
  • KNN geht davon aus, dass ähnliche Datenpunkte mit größerer Wahrscheinlichkeit die gleiche Klassenbezeichnung (Klassifizierung) oder ähnliche numerische Werte (Regression) haben.
  • Es wird davon ausgegangen, dass der Merkmalsraum über eine aussagekräftige Distanzmetrik verfügt.

Das Modell kann auf Regressionsprobleme erweitert werden, indem Gewichte und geschätzte Werte als Ausgabe verwendet werden.

Erfordert keine Trainingszeit, aber die Vorhersagezeit nimmt mit der Größe des Trainingssatzes erheblich zu.

Für alle neuen Daten ist diese Rechenzeit die Zeit, die benötigt wird, um die ähnlichsten Datenpunkte im großen Datensatz zu finden.

from sklearn.neighbors import KNeighborsClassifier, KNeighborsRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, mean_squared_error

# Classification instance
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

clf = KNeighborsClassifier(n_neighbors=5)
clf.match(X_train, y_train)
y_pred = clf.predict(X_test)

accuracy = accuracy_score(y_test, y_pred)

# Regression instance
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

reg = KNeighborsRegressor(n_neighbors=5)
reg.match(X_train, y_train)
y_pred = reg.predict(X_test)

mse = mean_squared_error(y_test, y_pred)

Vorteile :

  1. Einfach zu verstehen und leicht umzusetzen
  2. Lässt sich problemlos an neue Daten anpassen, da alle Trainingsdaten im Speicher abgelegt werden.
  3. Wenige Hyperparameter – k-Wert und eine Distanzmetrik.
  4. Es kann sowohl Klassifizierungs- als auch Regressionsprobleme lösen.
  5. Keine Annahmen über die zugrunde liegende Datenverteilung.
  6. Nicht parametrisch, sodass komplexe Entscheidungsgrenzen modelliert werden können.

Nachteile:

  1. KNN ist ein Lazy-Algorithmus und lässt sich nicht intestine skalieren. Im Vergleich zu anderen Klassifikatoren nimmt es mehr Speicher und Datenspeicher in Anspruch. Rechenintensiv bei der Vorhersage, insbesondere bei großen Trainingsdatensätzen.
  2. Der KNN-Algorithmus funktioniert bei hochdimensionalen Dateneingaben nicht intestine.
  3. Aufgrund des „Fluchs der Dimensionalität“ ist KNN auch anfälliger für Überanpassung. Wenn der Wert von okay jedoch zu hoch ist, kann es sein, dass er nicht ausreichend mit den Daten übereinstimmt.
  4. Für genaue Vorhersagen im Voraus ist eine gute Wahl der Anzahl der Nachbarn (Ok) erforderlich.

Wir werden im nächsten Blogbeitrag anhand eines Beispielcodes mehr über Abstimmungen und das gewichtete Abstimmungsschema erfahren.



Source link

HINTERLASSEN SIE EINE ANTWORT

Please enter your comment!
Please enter your name here