Découvrez comment l'algorithme des K plus proches voisins (KNN) simplifie l'apprentissage automatique grâce à son approche non paramétrique intuitive pour les tâches de classification et de régression.
K-Nearest Neighbors (KNN) est un algorithme d'apprentissage supervisé fondamental et non paramétrique utilisé à la fois pour les tâches de classification et de régression. Contrairement aux réseaux neuronaux complexes qui apprennent des paramètres pendant une phase d'entraînement, KNN se caractérise comme un « apprenant paresseux ». Il ne génère pas de fonction discriminante à partir des données d'entraînement à l'avance ; au lieu de cela, il mémorise l' ensemble des données et n'effectue des calculs que lorsqu'une requête est effectuée. L'intuition fondamentale derrière KNN est la similarité : il suppose que les points de données ayant des caractéristiques similaires se trouvent à proximité les uns des autres dans l'espace des caractéristiques.
Le mécanisme de K-Nearest Neighbors repose en grande partie sur le calcul de la distance entre les points de données pour déterminer la similarité. Lorsqu'une nouvelle entrée est introduite, l'algorithme identifie le nombre « K » d'échantillons d'apprentissage qui sont 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. Une valeur K faible (par exemple, K = 1) rend le modèle sensible au bruit et aux valeurs aberrantes, ce qui peut entraîner un surapprentissage. À l'inverse, une valeur K élevée lisse les frontières de décision, mais peut négliger les modèles locaux, ce qui entraîne un sous-apprentissage.
Malgré sa simplicité, l'algorithme des K plus proches voisins est suffisamment robuste pour diverses applications pratiques, en particulier lorsque l' interprétabilité est requise.
Bien qu'intuitif, le KNN rencontre des difficultés avec les grands ensembles de données et les données à haute dimension. Comme il stocke toutes les données d'apprentissage , l'utilisation de la mémoire peut être importante. De plus, le coût de calcul des distances pour chaque requête a un impact sur la latence de l'inférence. Dans les espaces à haute dimension , les points de données deviennent clairsemés, un phénomène connu sous le nom de malédiction de la dimensionnalité, qui peut dégrader l' efficacité des mesures de distance.
Pour atténuer ce problème, les praticiens procèdent souvent à une réduction de la dimensionnalité ou utilisent des techniques d'extraction de caractéristiques, telles que l'extraction d' intégrations à l'aide d'un modèle YOLO26, avant d'appliquer le KNN.
Il est courant de confondre les K-Nearest Neighbors avec le K-Means Clustering en raison de leur convention de nommage similaire . Cependant, ils ont des objectifs fondamentalement différents :
L'exemple suivant illustre un workflow de classification simple utilisant la bibliothèque populaire Scikit-learn. Il montre comment l' algorithme ajuste les données et prédit une classe en fonction de la proximité des voisins.
import numpy as np
from sklearn.neighbors import KNeighborsClassifier
# Sample training data (Features: [Height, Weight], Labels: 0=Type A, 1=Type B)
X_train = np.array([[150, 45], [155, 48], [170, 70], [175, 75]])
y_train = np.array([0, 0, 1, 1])
# Initialize KNN with 3 neighbors
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
# Predict class for a new point [160, 55]
# The model calculates distances and votes based on the 3 nearest points
prediction = knn.predict([[160, 55]])
print(f"Predicted Class: {prediction[0]}")
Pour les applications avancées impliquant des données visuelles, les approches modernes combinent souvent la logique KNN avec l'apprentissage profond. Par exemple, les bases de données de recherche vectorielle utilisent des algorithmes ANN (Approximate Nearest Neighbor) pour trouver rapidement des images similaires ou des intégrations de texte générées par des modèles haute performance tels que YOLO11 ou YOLO26.