K-Nearest Neighbors (KNN)
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é non paramétrique,
d'apprentissage supervisé non paramétrique largement utilisé
pour les tâches de classification et de régression. Souvent appelé
comme un "apprenant paresseux" ou une méthode d'apprentissage basée sur les instances, le KNN ne génère pas de fonction discriminante à partir des données d'apprentissage au cours d'une phase d'apprentissage.
les données d'apprentissage au cours d'une phase d'apprentissage. Au lieu de cela,
Au lieu de cela, il mémorise l'ensemble des données et n'effectue des calculs que lorsqu'il fait des prédictions sur de nouvelles instances. Cette approche
Cette approche part du principe que les points de données similaires sont très proches les uns des autres dans l'espace des caractéristiques, ce qui permet à l'algorithme de classify
nouvelles entrées en fonction de la classe majoritaire ou de la classe la plus proche.
nouvelles entrées sur la base de la classe majoritaire ou de la valeur moyenne de leurs voisins les plus proches.
Fonctionnement du KNN
Le mécanisme opérationnel des K-voisins les plus proches s'appuie sur des mesures de distance pour quantifier la similarité entre les points de données.
données. La mesure la plus courante est la distance
distance euclidienne, bien que d'autres comme la
distance de Manhattan ou la distance de Minkowski peuvent être utilisées
de Minkowski peuvent être utilisées en fonction du domaine du problème. Le processus de prédiction comporte plusieurs étapes distinctes :
-
Sélectionner K: l'utilisateur définit le nombre de voisins, appelé "K". Il s'agit d'une étape cruciale dans
réglage des hyperparamètres, car la valeur de K
influence directement le compromis biais-variance du modèle.
le compromis biais-variance du modèle. Un petit K peut conduire à une sensibilité au bruit, tandis qu'un grand K peut conduire à une sensibilité au bruit.
une sensibilité au bruit, tandis qu'un grand K peut lisser des frontières distinctes.
-
Calcul des distances: Lorsqu'un nouveau point d'interrogation est introduit, l'algorithme calcule la distance entre ce point et chaque exemple de l'ensemble de données stocké.
entre ce point et chaque exemple de l'ensemble des données stockées.
-
Identifier les voisins: L'algorithme trie les distances et sélectionne les K premières entrées ayant les valeurs les plus faibles.
valeurs les plus faibles.
-
Production agrégée:
-
Classification: L'algorithme attribue l'étiquette de classe qui apparaît le plus souvent parmi les K
voisins (vote majoritaire).
-
Régression: La prédiction est calculée comme la moyenne des valeurs cibles des K
voisins.
La simplicité du KNN en fait une base efficace pour de nombreux problèmes d'apprentissage automatique.
problèmes d'apprentissage automatique. Voici un exemple concis
exemple concis utilisant la célèbre bibliothèque Scikit-learn pour
pour démontrer un processus de classification de base.
import numpy as np
from sklearn.neighbors import KNeighborsClassifier
# distinct classes: 0 and 1
X_train = np.array([[1, 1], [1, 2], [2, 2], [5, 5], [5, 6], [6, 5]])
y_train = np.array([0, 0, 0, 1, 1, 1])
# Initialize KNN with 3 neighbors
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
# Predict class for a new point [4, 4]
prediction = knn.predict([[4, 4]])
print(f"Predicted Class: {prediction[0]}")
# Output: 1 (Closer to the cluster at [5,5])
Applications concrètes
Malgré sa simplicité, la méthode des K-voisins les plus proches est utilisée dans divers domaines sophistiqués où l'interprétabilité et le raisonnement basé sur les instances sont précieux.
où l'interprétabilité et le raisonnement par instance sont précieux.
-
Moteurs de recommandation: KNN facilite le
filtrage collaboratif
dans les systèmes de recommandation. Les plateformes de
plateformes de diffusion en continu l'utilisent pour suggérer du contenu en trouvant des utilisateurs ayant un historique de visionnage similaire (voisins) et en recommandant les éléments qu'ils ont aimés.
les éléments qu'ils ont aimés. Cette méthode est efficace pour personnaliser l'expérience des utilisateurs.
-
Diagnostic médical: dans l'analyse
l'analyse d'images médicales, le KNN peut aider à
diagnostic en comparant les métriques du patient ou les caractéristiques de l'image à une base de données de cas historiques. Par exemple, il peut aider à classer les patients en fonction de leur âge et de leur sexe.
par exemple, il peut aider à classify
les tumeurs du cancer du sein comme
malignes ou bénignes sur la base de la similarité des caractéristiques cellulaires avec des cas confirmés.
-
Détection des anomalies: Les institutions financières utilisent le KNN pour
détection des anomalies pour identifier les fraudes. En analysant
En analysant les schémas de transaction, le système peut repérer les activités qui s'écartent de manière significative du comportement standard d'un utilisateur, c'est-à-dire les points qui sont éloignés de leurs "voisins les plus proches".
d'un utilisateur, c'est-à-dire les points qui sont éloignés de leurs "voisins les plus proches".
Distinction entre KNN et les algorithmes apparentés
Comprendre les différences entre KNN et d'autres algorithmes est essentiel pour sélectionner l'outil adéquat pour un projet de vision par ordinateur ou d'analyse de données.
projet de vision par ordinateur ou d'analyse de données.
-
K-Means Clustering: Il est facile de confondre KNN et
K-Means Clustering en raison de la similitude des noms.
Cependant, K-Means est une technique d'apprentissage
technique d'apprentissage non supervisé qui regroupe
K-Means est une technique d'apprentissage non supervisée qui regroupe les données non étiquetées en grappes, alors que KNN est une technique supervisée qui nécessite des données étiquetées pour la prédiction.
-
la machine à vecteurs de support (SVM): Bien que les deux soient utilisés pour la classification, la machine à vecteur de support (SVM) se concentre sur la classification des données.
machine à vecteur de support (SVM) se concentre
sur la recherche d'une frontière de décision globale (hyperplan) qui maximise la marge entre les classes. Le KNN, à l'inverse, prend des décisions basées sur la densité locale des données sans construire d'hyperplans.
décisions sur la base de la densité locale des données sans construire de modèle global. Pour en savoir plus sur ces différences, consultez la
la documentation sur les SVM.
-
Arbres de décision: A
arbre de décision classe les données en apprenant des règles explicites
explicites et hiérarchiques qui divisent l'espace des caractéristiques. Le KNN s'appuie uniquement sur la métrique de la distance dans l'espace des caractéristiques.
plus souple pour les limites de décision irrégulières, mais plus lourd en termes de calcul lors de l'inférence.
Bien que le KNN soit puissant pour les petits ensembles de données, il est confronté à des problèmes d'évolutivité avec les données volumineuses en raison du coût de calcul de l'algorithme.
big data en raison du coût de calcul des distances pour chaque
distances pour chaque requête. Pour une inférence en temps réel
en temps réel dans des tâches telles que la
détection d'objets, les architectures modernes d'apprentissage
modernes d'apprentissage profond telles que YOLO11 sont généralement préférées pour leur
vitesse et leur précision supérieures.