Académique Documents
Professionnel Documents
Culture Documents
Université de Carthage
Institut Supérieur des Technologies de l’Information et de la Communication
Année Universitaire : 2021/2022
L’algorithme des K plus proches voisins ou K-Nearest Neighbors (kNN) est un algorithme de Machine
Learning qui appartient à la classe des algorithmes d’apprentissage supervisé. C’est un algorithme
simple et facile à mettre en œuvre qui peut être utilisé pour résoudre les problèmes de classification
et de régression. En général KNN est utilisé pour les taches de classification. Certaines applications en
KNN sont en reconnaissance d’image satellite, reconnaissance d’écriture manuscrite,…
KNN est un algorithme simpliste car il ne fait aucune hypothèse mathématique et ne nécessite pas de
machinerie lourde. Il nécessite juste une compréhension des distances entre les points. K-Nearest
Neighbors est considéré comme un algorithme paresseux car il n'y a pas de phrase d'apprentissage de
ce modèle. Il mémorise simplement les données d'entraînement et les compare à nos données de test.
En pratique l’algorithme KNN est assez peu utilisé dans sa forme première, car coûteux en puissance
de calcul.
Il est surnommé « plus proches voisins » car le principe de ce modèle consiste à choisir les k données
les plus proches du point étudié afin d’en prédire sa valeur.
La seule hypothèse de l’ algorithme KNN est: Les points proches les uns des autres sont similaires. Un
nouveau point est classé en fonction de ses voisins les plus proches, ou de la majorité des voisins les
plus proches s'il y en a plusieurs.
Pour effectuer une prédiction, l’algorithme K-NN va se baser sur le jeu de données en entier. Pour une
observation, qui ne fait pas parti du jeu de données, qu’on souhaite prédire, l’algorithme va chercher
les K instances du jeu de données les plus proches de notre observation. Ensuite pour ces k voisins,
l’algorithme se basera sur leurs variables de sortie (output variable) y pour calculer la valeur de la
variable y de l’observation qu’on souhaite prédire.
Si KNN est utilisé pour la régression, c’est la moyenne (ou la médiane) des variables y des K
plus proches observations qui servira pour la prédiction.
Si KNN est utilisé pour la classification, c’est le mode des variables y des K plus proches
observations qui servira pour la prédiction.
1
Principe de l'algorithme KNN
KNN est utilisé pour classer les nouvelles données en fonction de leur proximité avec les k voisins
(données d’entrainement). Ainsi si les nouvelles données sont entourées de données d’apprentissage
qui ont la classe A, on peut en conclure que les nouvelles données sont incluses dans la classe A.
Soit une donnée u qui n’appartient pas à E et qui ne possède pas de label (u est uniquement
caractérisée par un vecteur xu de dimension p).
Soit d’une fonction qui renvoie la distance entre la donnée u et une donnée quelconque appartenant
à E.
Soit un entier k inférieur ou égal à n. Voici le principe de l’algorithme de k plus proches voisins :
On calcule les distances entre la donnée u et chaque donnée appartenant à E à l’aide de la
fonction d
On retient les k données du jeu de données E les plus proches de u
On attribue à u la classe qui est la plus fréquente parmi les k données les plus proches.
Il est possible d’utiliser différents types de distance : euclidienne, Manhattan ou Minkowski. Avec
l’algorithme KNN, nous mesurons généralement la distance euclidienne, la ligne droite ordinaire,
entre deux points.
Dans cette équation, p et q sont deux points dans l'espace n euclidien . Tout ce que nous avons à faire
est de mesurer cette distance de notre point de test à chaque point de données d'entraînement, puis
d'attribuer une étiquette prédite au test, en fonction des points qui en sont les plus proches.
2
L'équation de distance de Manhattan est:
Il faut savoir qu’on choisit généralement la fonction de distance en fonction des types de données
qu’on manipule et du sens mathématique ou physique du problème qu’on a à résoudre. Très
schématiquement, pour les données quantitatives (exemple : la taille, le poids, le salaire, le chiffre
d’affaires etc…), la distance euclidienne est un bon choix pour commencer. La distance de Manhattan
peut être intéressante pour des données qui ne sont pas du même type (c’est-à-dire des données qui
n’ont pas été mise sur la même échelle).
Algorithme KNN
3
TP Les K-plus proches voisins
Dans ce TP, on utilise le jeu de données de kaggle «iris.csv» pour une tâche de classification basée
l’algorithme KNN.
«iris.csv» est un ensemble de données qui contient 150 enregistrements de trois espèces de fleurs
d'iris Iris Setosa, Iris Virginica et Iris Versicolor .
Pour chaque iris mesuré, l'espèce ("iris setosa", "iris versicolor" ou "iris virginica") est notée.
Par souci de simplification, nous nous intéresserons uniquement à la largeur et à la longueur des
pétales. Nous allons utiliser un algorithme de k-voisins les plus proches pour classer ces espèces en
fonction de deux caractéristiques : la longueur et la largeur des pétales. Pour l'espèce de l'iris (au
lieu d'utiliser les noms des espèces, on utilisera des chiffres : 0 pour "iris setosa", 1 pour "iris
versicolor" et 2 pour "iris virginica".
4
Exemple :
Supposons que nous ayons une hauteur de colonne dans un ensemble de données :
Après avoir appliqué le codage d’étiquette, la colonne Hauteur est convertie en:
où 0 est l’étiquette pour hauteur, 1 est l’étiquette pour moyenne et 2 est l’étiquette pour hauteur
courte.
Nous appliquons l’ encodage d’ étiquette sur "iris dataset". Dans la colonne cible, les espèces sont des
mots : Iris-setosa, Iris-versicolor, Iris-virginica . Nous convertissons chaque valeur de la colonne en un
nombre.
5
Etape 2: Partitionnement du jeu de données en ensembles d'entraînement et de test.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(rescaledX, y, test_size = 0.4)
L’objet de la classe KNN peut prendre certains arguments (valeurs de paramètres) au moment de la
création. Si vous ne transmettez pas vous-même de valeurs à ces paramètres, ils seront définis sur
6
leurs valeurs par défaut. Certains des hyperparamètres de KNN sont "n_voisins" (la valeur de K), la
"métrique" (métriques de distance à utiliser, par exemple, distance de Manhattan ou euclidienne).
Le Grid search est une méthode d’optimisation (hyperparameter optimization) qui permet de tester
une série de paramètres et de comparer les performances pour en déduire le meilleur paramétrage.
Le grid search chacune des hypothèses et crée un modèle pour chaque combinaison de paramètres.
Le Grid Search a ses limites puisque c’est vous qui définissez à l’avance les paramètres que vous voulez
tester.
La validation croisée ou K-fold cross validation est une technique d’évaluation d’un algorithme de
Machine Learning. Elle consiste à découper le dataset en k échantillons. On sélectionne x échantillons
pour constituer l’échantillon d’apprentissage. Les k-x échantillons restants permettront d’évaluer la
performance du modèle. On répète l’opération sur toutes les combinaisons possibles. On obtient K
mesures de performance dont la moyenne représente la performance de l’algorithme.
La validation croisée permet d’utiliser l'intégralité de notre jeu de données pour l’entraînement et pour
la validation.
RKNN=knn.fit(X_train, y_train)
best_k=RKNN.best_params_["n_neighbors"]
print("\n Meilleure valeur de k : ",best_k)