Algorithme des k plus proches voisins

Utilisez k-NN sur un vrai jeu de données

Les données et la problématique

D’abord, parlons du jeu de données que nous allons utiliser. C’est un dataset très célèbre, appelé MNIST. Il est constitué d’un ensemble de 70000 images 28×28 pixels en noir et blanc annotées du chiffre correspondant (entre 0 et 9). L’objectif de ce jeu de données était de permettre à un ordinateur d’apprendre à reconnaître des nombres manuscrits automatiquement (pour lire des chèques par exemple). Ce dataset utilise des données réelles qui ont déjà été pré-traitées pour être plus facilement utilisables par un algorithme.

Notre objectif sera donc d’entraîner un modèle qui sera capable de reconnaître les chiffres écrits sur ce type d’images. Par chance, ce jeu de données est téléchargeable directement à partir d’une fonction scikit-learn. 😇 On peut donc directement obtenir ce dataset via un appel de fonction :

https://colab.research.google.com/drive/1u7LkW3H-Mn91Yqk67axD4JrFGKSO5lfJ?usp=sharing

Le modèle KNN est un algorithme prédictif (il “devine” une valeur à partir d’autres valeurs connues) qui est un peu particulier, car il ne nécessite pas vraiment d’apprentissage en soi.

Il fonctionne en considérant les observations comme un nuage de points à N dimensions, où N est le nombre de paramètres connus. À chaque point, on associe une propriété intéressante (la qualité d’un produit, par exemple ) à prédire.

Lorsqu’un nouveau point lui est soumis, pour lequel il faut prédire la valeur de la propriété d’intérêt, l’algorithme cherche les K points connus les plus proches du nouveau point. K étant un entier strictement positif, 5 par exemple. La notion de proximité implique celle de distance : d’autres distances que l’euclidienne peuvent être utilisées.

La valeur prédite est alors une “moyenne” (pondérée ou non par l’inverse de la distance) des valeurs des K points retenus. La notion de moyenne dépend de la situation. Par exemple, si la valeur à prédire est binaire, la “moyenne” peut consister en un vote à la majorité simple.

Les points faibles de cet algorithme sont : d’une part, son coût en puissance de calcul (pour prédire l’image d’un nouveau point, on doit calculer sa distance à tous les autres), d’autre part le fait de devoir conserver toutes les données d’entraînement en mémoire (k-NN  convient donc plutôt aux problèmes d’assez petite taille).

En résumé

On vient de voir sur un algorithme simple comment l’entraîner sur des données pour ensuite optimiser les paramètres de cet algorithme à l’aide d’un jeu de données test.

N’hésitez pas à entraîner ce modèle à votre tour sur d’autres jeux de données !

Aucune réponse

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *