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

  1. Choisir une valeur de K (le nombre de voisins à considérer)
  2. Calculer la distance entre le point à prédire et tous les points du jeu d’entraînement
  3. Sélectionner les K voisins les plus proches
  4. 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

🧠 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

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


Optimisation et bonnes pratiques


Variantes et alternatives


KNN en régression

KNN peut également être utilisé pour prédire une valeur continue, par exemple :

La prédiction se fait par la moyenne des K voisins les plus proches.


KNN vs autres algorithmes

AlgorithmeAvantageLimite
KNNSimple, pas d’apprentissageLent à prédire, sensible au bruit
SVMPerformant pour marges finesPlus complexe à paramétrer
Random ForestRobuste, moins sensible au bruitMoins intuitif
Réseaux de neuronesTrès puissantRequiert 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.

KNN