Yolo Vision Shenzhen
Shenzhen
Jetzt beitreten
Glossar

K-Nearest Neighbors (KNN)

Entdecken Sie K-Nearest Neighbors (KNN). Erfahren Sie, wie dieser überwachte Lernalgorithmus für Klassifizierung und Regression funktioniert, wie er bei der visuellen Suche eingesetzt wird und wie er in Ultralytics integriert ist.

K-Nearest Neighbors (KNN) ist ein robuster und intuitiver Algorithmus, der im Bereich des überwachten Lernens sowohl für Klassifizierungs- als auch für Regressionsaufgaben eingesetzt wird. KNN zeichnet sich durch seine Einfachheit aus und wird oft als „fauler Lerner” bezeichnet, da es während der Trainingsphase kein Modell aufbaut oder Parameter lernt. Stattdessen speichert er den gesamten Trainingsdatensatz und führt Berechnungen nur dann durch, wenn eine Vorhersage angefordert wird. Das Kernprinzip des Algorithmus beruht auf der Ähnlichkeit von Merkmalen: Er geht davon aus, dass Datenpunkte mit ähnlichen Attributen in unmittelbarer Nähe zueinander innerhalb eines mehrdimensionalen Merkmalsraums existieren.

Wie der Algorithmus funktioniert

Der Mechanismus von K-Nearest Neighbors basiert auf Entfernungsberechnungen. Wenn ein neuer Abfragepunkt eingegeben wird, durchsucht der Algorithmus den gespeicherten Datensatz, um die „K“ Anzahl von Trainingsbeispielen zu finden, die der neuen Eingabe am nächsten sind.

  1. Entfernungsmessung: Das System berechnet die Entfernung zwischen dem Abfragepunkt und jedem anderen Punkt in der Datenbank. Die gängigste Metrik ist die euklidische Entfernung, die die Entfernung in gerader Linie zwischen Punkten misst. Andere Metriken wie die Manhattan-Entfernung (Taxicab-Geometrie) oder die Minkowski-Entfernung können je nach Datentyp verwendet werden .
  2. Nachbarauswahl: Nach der Berechnung der Entfernungen sortiert der Algorithmus diese und ermittelt die K Nächsten.
  3. Entscheidungsfindung:
    • Zur Klassifizierung: Der Algorithmus verwendet ein „Mehrheitswahlsystem”. Die Klassenbezeichnung, die unter den K Nachbarn am häufigsten vorkommt, wird dem Abfragepunkt zugewiesen. Dies wird häufig bei grundlegenden Bildklassifizierungsaufgaben verwendet.
    • Für Regression: Die Vorhersage wird berechnet, indem die Werte der K nächsten Nachbarn gemittelt werden, um eine kontinuierliche Variable zu schätzen.

Die Wahl des richtigen „K“

Die Auswahl des optimalen Wertes für „K“ ist ein entscheidender Schritt bei der Hyperparameteroptimierung. Die Wahl von K hat einen erheblichen Einfluss auf die Leistung des Modells und seine Fähigkeit, auf neue Daten zu verallgemeinern.

  • Niedriger K-Wert: Ein kleiner K-Wert (z. B. K=1) macht das Modell sehr empfindlich gegenüber Rauschen und Ausreißern in den Daten, was zu Überanpassung führen kann.
  • Hoher K-Wert: Ein hoher K-Wert glättet die Entscheidungsgrenzen, reduziert den Einfluss von Rauschen, kann jedoch auch dazu führen, dass eindeutige Muster verwischt werden, was zu einer Unteranpassung führt.

Anwendungsfälle in der Praxis

Trotz seiner Einfachheit im Vergleich zu tiefen neuronalen Netzen ist KNN in der modernen KI nach wie vor von großer Bedeutung, insbesondere in Verbindung mit fortschrittlichen Feature-Extraktionsverfahren.

  • Empfehlungssysteme: KNN erleichtert das kollaborative Filtern im Bereich Medien-Streaming und E-Commerce. Durch die Identifizierung von Nutzern mit ähnlichen Sehgewohnheiten oder Kaufverhalten (Nachbarn) können Plattformen Produkte vorschlagen, die einem Nutzer aufgrund der Vorlieben seiner „nächsten Nachbarn” wahrscheinlich gefallen werden.
  • Anomalieerkennung: In den Bereichen Cybersicherheit und Finanzen wird KNN zur Anomalieerkennung eingesetzt. Transaktionen oder Netzwerkaktivitäten werden in einem Merkmalsraum abgebildet; jeder neue Datenpunkt, der weit von den dichten Clustern „normaler” Aktivitäten entfernt liegt, wird als potenzieller Betrug oder Sicherheitsverletzung markiert.
  • Visuelle Suche: Moderne Vektorsuchmaschinen basieren häufig auf ANN-Algorithmen (Approximate Nearest Neighbor) – einer optimierten Variante von KNN –, um ähnliche Bilder auf der Grundlage von hochdimensionalen Einbettungen, die von Modellen wie YOLO26 generiert werden, schnell abzurufen.

Herausforderungen und Überlegungen

Obwohl KNN effektiv ist, steht es vor dem Fluch der Dimensionalität. Mit zunehmender Anzahl von Merkmalen (Dimensionen) werden die Datenpunkte spärlicher und Distanzmetriken verlieren ihre Wirksamkeit. Da KNN alle Trainingsdaten speichert, kann es zudem speicherintensiv sein und bei großen Datensätzen unter einer hohen Inferenzlatenz leiden. Um dem entgegenzuwirken, bereiten Praktiker Daten häufig mit Hilfe von Techniken zur Dimensionsreduktion wie der Hauptkomponentenanalyse (PCA) vor oder verwenden spezielle Datenstrukturen wie KD-Bäume, um die Suche zu beschleunigen. Für die Skalierung von Datensätzen und das Modelltraining auf Unternehmensebene kann die Nutzung Ultralytics dabei helfen, die für die Vorverarbeitung komplexer Daten erforderlichen Rechenressourcen zu verwalten.

Unterscheidung zwischen KNN und K-Means

Es ist wichtig, K-Nearest Neighbors von K-Means-Clustering zu unterscheiden, da ihre ähnlichen Namen oft zu Verwirrung führen.

  • KNN ist ein überwachter Lernalgorithmus, der beschriftete Daten verwendet, um Vorhersagen zu treffen.
  • K-Means ist ein unüberwachter Lernalgorithmus , mit dem unbeschriftete Daten auf der Grundlage struktureller Ähnlichkeiten in Cluster gruppiert werden.

Beispiel für die Umsetzung

Der folgende Codeausschnitt zeigt einen einfachen KNN-Klassifizierungs-Workflow unter Verwendung der beliebten Scikit-learn-Bibliothek. Im Bereich der Bildverarbeitung werden die Eingabemerkmale in der Regel durch ein Deep-Learning-Modell wie YOLO26 extrahiert, bevor sie an den KNN-Klassifikator weitergeleitet werden.

from sklearn.neighbors import KNeighborsClassifier

# Simulated feature vectors (e.g., extracted from YOLO26) and labels
# Features: [Size, Redness], Labels: 0=Apple, 1=Orange
features = [[0.8, 0.9], [0.9, 0.8], [0.2, 0.3], [0.3, 0.2]]
labels = [0, 0, 1, 1]

# Initialize KNN with 3 neighbors
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(features, labels)

# Predict the class of a new object [Size=0.85, Redness=0.85]
prediction = knn.predict([[0.85, 0.85]])
print(f"Predicted Class: {prediction[0]} (0=Apple, 1=Orange)")

Werden Sie Mitglied der Ultralytics

Gestalten Sie die Zukunft der KI mit. Vernetzen Sie sich, arbeiten Sie zusammen und wachsen Sie mit globalen Innovatoren

Jetzt beitreten