Découvrez K-Nearest Neighbors (KNN). Apprenez comment cet algorithme d'apprentissage supervisé fonctionne pour la classification et la régression, son utilisation dans la recherche visuelle et son intégration avec Ultralytics .
K-Nearest Neighbors (KNN) est un algorithme robuste et intuitif utilisé dans le domaine de l' apprentissage supervisé pour les tâches de classification et de régression. Se distinguant par sa simplicité, KNN est souvent classé dans la catégorie des « apprenants paresseux » car il ne construit pas de modèle et n'apprend pas de paramètres pendant la phase d'entraînement. Au lieu de cela, il mémorise l'ensemble des données d'entraînement et n'effectue des calculs que lorsqu' une prédiction est demandée. Le principe de base de l'algorithme repose sur la similarité des caractéristiques : il suppose que les points de données ayant des attributs similaires existent à proximité les uns des autres dans un espace de caractéristiques multidimensionnel.
Le mécanisme des K plus proches voisins repose sur des calculs de distance. Lorsqu'un nouveau point de requête est introduit, l' algorithme recherche dans l'ensemble de données stockées le nombre « K » d'échantillons d'apprentissage les plus proches de la nouvelle entrée.
La sélection de la valeur optimale pour « K » est une étape cruciale dans le réglage des hyperparamètres. Le choix de K influence considérablement les performances du modèle et sa capacité à généraliser de nouvelles données.
Malgré sa simplicité par rapport aux réseaux neuronaux profonds, le KNN reste très pertinent dans l'IA moderne, en particulier lorsqu'il est associé à des techniques avancées d'extraction de caractéristiques.
Bien qu'efficace, le KNN est confronté au problème de la dimensionnalité. À mesure que le nombre de caractéristiques (dimensions) augmente, les points de données deviennent clairsemés et les mesures de distance perdent leur efficacité. De plus, comme il stocke toutes les données d'apprentissage, le KNN peut être gourmand en mémoire et souffrir d'une latence d'inférence élevée sur les grands ensembles de données. Pour remédier à cela , les praticiens pré-traitent souvent les données à l'aide de techniques de réduction de la dimensionnalité telles que l' analyse en composantes principales (ACP) ou utilisent des structures de données spécialisées telles que les arbres KD pour accélérer la recherche. Pour la mise à l'échelle des ensembles de données et l'apprentissage des modèles à l'échelle de l'entreprise, l'utilisation Ultralytics peut aider à gérer les ressources informatiques nécessaires au pré-traitement des données complexes.
Il est important de différencier les K-Nearest Neighbors du clustering K-Means, car leurs noms similaires prêtent souvent à confusion.
L'extrait de code suivant illustre un workflow de classification KNN simple utilisant la bibliothèque populaire Scikit-learn. Dans un contexte de vision par ordinateur , les « caractéristiques » d'entrée seraient généralement extraites par un modèle d'apprentissage profond tel que YOLO26 avant d'être transmises au classificateur KNN.
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)")