Yolo Vision Shenzhen
Shenzhen
Rejoindre maintenant
Glossaire

K-Nearest Neighbors (KNN)

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.

Fonctionnement de l'algorithme

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.

  1. Mesure de distance: le système calcule la distance entre le point de requête et tous les autres points de la base de données. La mesure la plus courante est la distance euclidienne, qui mesure la distance en ligne droite entre les points. D'autres mesures, telles que la distance de Manhattan (géométrie des taxis) ou la distance de Minkowski, peuvent être utilisées en fonction du type de données .
  2. Sélection des voisins: après avoir calculé les distances, l'algorithme les trie et identifie les « K » entrées les plus proches.
  3. Prise de décision:
    • Pour la classification: l'algorithme utilise un système de « vote à la majorité ». L'étiquette de classe qui apparaît le plus fréquemment parmi les K voisins est attribuée au point de requête. Ce système est largement utilisé dans les tâches de classification d'images de base .
    • Pour la régression: la prédiction est calculée en faisant la moyenne des valeurs des K voisins les plus proches pour estimer une variable continue.

Choisir le bon « K »

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.

  • Valeur K faible: une valeur K faible (par exemple, K=1) rend le modèle très sensible au bruit et aux valeurs aberrantes dans les données, ce qui peut entraîner un surajustement.
  • Valeur K élevée: une valeur K élevée lisse les limites de décision, réduisant ainsi l'effet du bruit, mais risquant de brouiller les modèles distincts, ce qui entraîne un sous-ajustement.

Applications concrètes

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.

  • Systèmes de recommandation: KNN facilite le filtrage collaboratif dans le streaming multimédia et le commerce électronique. En identifiant les utilisateurs ayant des historiques de visionnage ou des comportements d'achat similaires (voisins), les plateformes peuvent suggérer des produits susceptibles de plaire à un utilisateur en fonction des préférences de ses « voisins les plus proches ».
  • Détection des anomalies: dans les domaines de la cybersécurité et de la finance, le KNN est utilisé pour la détection des anomalies. Les transactions ou les activités réseau sont cartographiées dans un espace de caractéristiques ; tout nouveau point de données qui s'éloigne des clusters denses d' activité « normale » est signalé comme une fraude potentielle ou une faille de sécurité.
  • Recherche visuelle: les moteurs de recherche vectoriels modernes s'appuient souvent sur des algorithmes ANN (Approximate Nearest Neighbor), une variante optimisée du KNN, pour récupérer rapidement des images similaires à partir d' intégrations multidimensionnelles générées par des modèles tels que YOLO26.

Défis et considérations

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.

Distinguer KNN de K-Means

Il est important de différencier les K-Nearest Neighbors du clustering K-Means, car leurs noms similaires prêtent souvent à confusion.

  • KNN est un algorithme d'apprentissage supervisé qui utilise des données étiquetées pour faire des prédictions.
  • K-Means est un algorithme d'apprentissage non supervisé utilisé pour regrouper des données non étiquetées en clusters sur la base de similitudes structurelles.

Exemple de mise en œuvre

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)")

Rejoindre la communauté Ultralytics

Rejoignez le futur de l'IA. Connectez-vous, collaborez et évoluez avec des innovateurs mondiaux.

Rejoindre maintenant