KNN, KNN, KNN, KNN, KNN
Introduction
KNN (K-Nearest Neighbors) est l’un des premiers algorithmes enseignés en machine learning – et pour de bonnes raisons. Il est simple à comprendre, facile à implémenter et souvent très performant pour des problèmes de classification ou de régression simples.
Le principe est intuitif : pour prédire l’étiquette d’un point, KNN regarde les K points les plus proches dans les données d’entraînement, puis vote pour la classe majoritaire.
Qu’est-ce que KNN ?
KNN est un algorithme d’apprentissage supervisé utilisé pour résoudre des problèmes de classification (ou parfois de régression).
Il n’a pas de phase d’apprentissage explicite : il stocke simplement les données d’entraînement. Lorsqu’une prédiction est demandée, il compare l’exemple à prédire à l’ensemble des données et identifie les K plus proches voisins.
Fonctionnement de KNN
- Choisir une valeur de K (le nombre de voisins à considérer)
- Calculer la distance entre le point à prédire et tous les points du jeu d’entraînement
- Sélectionner les K voisins les plus proches
- Voter pour la classe majoritaire parmi ces voisins (classification) ou faire la moyenne (régression)
Exemple visuel
Imaginons un graphique où des points rouges et bleus sont répartis selon deux dimensions. Un nouveau point (vert) arrive. KNN regardera les K points les plus proches et attribuera une couleur selon la majorité.
Mesures de distance courantes
- Distance Euclidienne (la plus utilisée)
- Distance de Manhattan
- Distance de Minkowski
- Cosine similarity (pour les textes ou vecteurs normalisés)
🧠 Il est important de normaliser les données si les échelles diffèrent, car KNN est très sensible aux distances.
Choisir la bonne valeur de K
- Un K trop petit : risque de surapprentissage (overfitting)
- Un K trop grand : risque de sous-apprentissage (underfitting)
On choisit souvent un K impair pour les problèmes de classification binaire, afin d’éviter les égalités.
La validation croisée peut être utilisée pour trouver la meilleure valeur de K.
Avantages de KNN
✅ Très simple à comprendre
✅ Pas de phase d’entraînement (lazy learning)
✅ Fonctionne bien avec de petits jeux de données propres
✅ Peut s’adapter à différents types de données et métriques
Inconvénients de KNN
❌ Lent à prédire sur de grands jeux de données (car il compare à tous les points)
❌ Sensible aux valeurs aberrantes et au bruit
❌ Ne gère pas bien les données très dimensionnelles (effet de la malédiction de la dimension)
Implémentation de KNN en Python avec scikit-learn
pythonCopierModifierfrom sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
# Charger les données
data = load_iris()
X, y = data.data, data.target
# Séparer les données
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Normalisation
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# Modèle KNN
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
# Prédictions
accuracy = knn.score(X_test, y_test)
print(f"Précision du modèle KNN : {accuracy:.2f}")
Applications courantes de KNN
- Reconnaissance d’image (ex : classification de chiffres manuscrits)
- Recommandation de produits
- Classification de texte (avec prétraitement vectoriel)
- Détection de fraude
- Diagnostic médical
Optimisation et bonnes pratiques
- Normaliser ou standardiser les données
- Utiliser des structures comme KD-Tree ou Ball Tree pour accélérer les prédictions
- Tester différentes distances
- Appliquer un filtrage de caractéristiques si le nombre de dimensions est élevé
Variantes et alternatives
- Weighted KNN : les voisins les plus proches ont plus d’importance dans le vote
- K-d tree KNN : accélère la recherche dans de grandes dimensions
- KNN avec PCA : réduit la dimension avant d’appliquer KNN
KNN en régression
KNN peut également être utilisé pour prédire une valeur continue, par exemple :
- Prédire le prix d’un bien immobilier
- Estimer la température d’un jour donné
La prédiction se fait par la moyenne des K voisins les plus proches.
KNN vs autres algorithmes
Algorithme | Avantage | Limite |
---|---|---|
KNN | Simple, pas d’apprentissage | Lent à prédire, sensible au bruit |
SVM | Performant pour marges fines | Plus complexe à paramétrer |
Random Forest | Robuste, moins sensible au bruit | Moins intuitif |
Réseaux de neurones | Très puissant | Requiert beaucoup de données |
Conclusion
KNN est un algorithme de base mais très utile en machine learning. Sa simplicité le rend idéal pour apprendre les concepts de distance, de classification et de régression. Même si ses performances sont limitées sur les gros jeux de données, il reste une référence pédagogique et pratique.