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.
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.
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.
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.
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.
Es ist wichtig, K-Nearest Neighbors von K-Means-Clustering zu unterscheiden, da ihre ähnlichen Namen oft zu Verwirrung führen.
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)")