Page cover

k-Nearest Neighbors (k-NN)

k-NN ist neben Random Forest und SVM ebenfalls ein vielseitiger Algorithmus, der sowohl in Klassifikations- als auch in Regressionsproblemen eingesetzt wird. Das grundlegende Funktionsprinzip von k-NN wird im Folgenden beschrieben:

  • Nachbarschaftsprinzip: Der Algorithmus basiert auf der Idee der "Nachbarschaft". Für die Vorhersage von neuen Datenpunkten sucht k-NN nach den "k" nächsten Nachbarn in den Trainingsdaten.

  • Klassifikation: In der Klassifikation werden die "k" nächsten Nachbarn gezählt, um die Zugehörigkeit zu einer Klasse zu bestimmen. Der neue Datenpunkt wird der am häufigsten vorkommenden Klasse in der Nachbarschaft zugeordnet.

  • Regression: Bei der Regression berechnet k-NN den Durchschnitt oder die gewichtete Summe der k nächsten Nachbarn, um eine Vorhersage zu treffen.

  • Berechnung der Nähe: Die Euklidische Distanz wird oft verwendet, um die Ähnlichkeit zwischen Datenpunkten im Merkmalsraum zu messen. Dies ist das gängigste Maß und wird oft verwendet, wenn die Datenpunkte im Merkmalsraum numerisch sind und eine geometrische Interpretation haben. Je näher Datenpunkte beieinanderliegen, desto ähnlicher sind sie. Neben der Euklidischen Distanz werden auch andere Distanzmaße verwendet, wie die Manhattan-Distanz, die die "Straßenentfernung" zwischen Punkten misst, die Jaccard-Distanz, die die Unterschiede zwischen Mengen misst, und die Kosinus-Distanz, die die Richtung im Raum berücksichtigt.

    Mehr erfahren: KDnuggets/Most Popular Distance Metrics Used in KNN and When to Use Them

  • Anpassung von "k": Die Wahl von "k" beeinflusst die Leistung des Algorithmus. Ein zu kleines "k" kann unpräzise Vorhersagen erzeugen, während ein zu großes "k" die Vorhersagen zu allgemein machen kann.

Abbildung 9 veranschaulicht, wie ein neuer Datenpunkt mithilfe des k-NN-Algorithmus den bereits bestehenden Klassen zugeordnet wird.

Abbildung 9: Zuordnung eines neuen Datenpunktes zu einer der 3 bekannten Klassen mithilfe des k-NN-Algorithmus

k-NN wird in vielen Bereichen wie Empfehlungssystemen, medizinischer Diagnose, Finanzanalysen und Mustererkennung verwendet, wo die Datenpunkte eine natürliche räumliche Struktur aufweisen und Nachbarschaftsinformationen von Bedeutung sind. Nachstehend werden die Vor- und Nachteile des k-NNs näher erläutert.

Vorteile:

  • Einfachheit und Intuition: k-NN ist einfach zu verstehen und zu implementieren, da es auf einem intuitiven Prinzip basiert - der Ähnlichkeit zwischen Datenpunkten.

  • Vielseitigkeit: k-NN kann sowohl für Klassifikations- als auch für Regressionsprobleme eingesetzt werden, was ihn zu einem vielseitigen Algorithmus macht.

  • Keine explizite Modellannahme: k-NN macht keine Annahmen über die Verteilung der Daten und ist daher in vielen Situationen anwendbar.

Nachteile:

  • Rechenintensivität bei großen Datensätzen: Da k-NN für jede Vorhersage die Distanz zu allen Trainingsdatenpunkten berechnen muss, kann er bei großen Datensätzen und hoher Dimensionalität rechenintensiv werden.

  • Empfindlichkeit gegenüber Ausreißern: k-NN kann empfindlich auf Ausreißer reagieren, da die Vorhersagen stark von den k nächsten Nachbarn abhängen.

  • Wahl von "k": Die Leistung von k-NN ist stark von der Wahl des Parameters "k" abhängig, was eine sorgfältige Abstimmung erfordert.

In diesem Beispiel wird verdeutlicht, wie der k-Nearest Neighbors (k-NN) Algorithmus auf den Iris-Datensatz angewendet wird, um Blumen anhand ihrer Merkmale zu klassifizieren.

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier

# Laden des Iris-Datensatzes
iris = load_iris()

# Trainingsdaten und -label definieren
X,y = iris.data, iris.target

# Aufteilung des Datensatzes in Trainings- und Testdaten
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Erstellen des KNN-Modells
model = KNeighborsClassifier(n_neighbors=3)  # Anzahl der Nachbarn

# Training des Modells
model.fit(X_train, y_train)

# Evaluierung auf Testdaten
accuracy = model.score(X_test, y_test)

Mehr erfahren: IBM/What is the k-nearest neighbors (KNN) algorithm?, GeeksforGeeks/K-Nearest Neighbor(KNN) Algorithm

Last updated