Cours - KNN - QKZK
Cours - KNN - QKZK
Cours - KNN - QKZK
1. Cours - kNN
1. Cours - kNN
Classification
Apprentissage
Exemple
Complexité
Lourdeur de l’algorithme
https://qkzk.xyz/docs/nsi/cours_premiere/algorithmique/knn/1_cours/ 1/9
31/03/2024 13:38 1. Cours - kNN | qkzk
Entrainer une machine à apprendre n’est pas une idée récente, la première référence remontant à 1959 et est due à l’informaticien
américain Arthur Samuel. Depuis le début des années 2000 ces méthodes rencontrent un important succès dû à la disponibilité de
nombreux jeux de données et à l’amélioration de la performance des machines.
Principe
L’algorithme des [Math Processing Error] plus proches voisins est un algorithme d’apprentissage supervisé.
On dispose de données labélisées qui servent à l’apprentissage et à la mesure de qualité des prédictions.
Une fois l’algorithme entrainé et testé on peut l’employer afin qu’il prédise le label d’une nouvelle donnée.
https://qkzk.xyz/docs/nsi/cours_premiere/algorithmique/knn/1_cours/ 2/9
31/03/2024 13:38 1. Cours - kNN | qkzk
Classification
Le jeu de données doit :
Dans l’exemple ci-dessous, les caractéristiques sont [Math Processing Error] et [Math Processing Error] et les labels sont [Math
Processing Error] et [Math Processing Error].
https://qkzk.xyz/docs/nsi/cours_premiere/algorithmique/knn/1_cours/ 3/9
31/03/2024 13:38 1. Cours - kNN | qkzk
Par bruit on entend bruit statistique, les faibles variations de mesure ou de qualité dans les données.
Apprentissage
Contrairement à de nombreux algorithmes plus complexes, la phase d’apprentissage est immédiate. Il suffit de découper notre jeu de
données initiales (labélisées) en deux lots. Le premier servira à apprendre le second à tester.
La phase de test permet de mesurer la qualité des prédictions contre des données pour lesquelles on connait déjà la classe.
Exemple
On considère deux espèces, les crocodiles et les alligators.
On a des raisons de supposer qu’on peut les distinguer en mesurant la largeur de leur gueule et la longueur de leur corps.
https://qkzk.xyz/docs/nsi/cours_premiere/algorithmique/knn/1_cours/ 5/9
31/03/2024 13:38 1. Cours - kNN | qkzk
On ajoute un nouvel animal dont on connait les caractéristiques mais pas l’espèce :
On complète les données précédentes avec la distance séparant cet animal des précédents.
distance classe
0.072 alligator
0.911 alligator
0.482 alligator
https://qkzk.xyz/docs/nsi/cours_premiere/algorithmique/knn/1_cours/ 6/9
31/03/2024 13:38 1. Cours - kNN | qkzk
distance classe
0.310 alligator
1.301 crocodile
1.752 crocodile
1.594 crocodile
2.012 crocodile
1.200 crocodile
Choisissons [Math Processing Error], on ne conserve que les trois animaux les plus proches de notre nouvel animal :
distance classe
0.072 alligator
0.310 alligator
0.482 alligator
La classe majoritaire est alligator , et c’est celle qu’on attribue à notre nouvel animal.
Complexité
Intéressons-nous à la complexité de cet algorithme. Le résultat sera décevant !
https://qkzk.xyz/docs/nsi/cours_premiere/algorithmique/knn/1_cours/ 7/9
31/03/2024 13:38 1. Cours - kNN | qkzk
Afin de calculer les distances, un parcourt du tableau suffit : [Math Processing Error]
Mais… on décide de converver les [Math Processing Error] plus proches… on pourrait être tenté de trier et la complexité deviendrait
[Math Processing Error] ou pire, [Math Processing Error] si on utilise un des tris étudiés cette année…
C’est une mauvaise idée, on peut parfaitement déterminer les plus proches en un seul parcours. À chaque fois qu’on rencontre une
donnée plus proche, on l’insère dans la liste à sa place.
Ainsi la complexité devient [Math Processing Error], mais [Math Processing Error] étant constant : [Math Processing Error].
L’algorithme de [Math Processing Error] plus proches voisins, bien implanté, est linéaire en la taille des données.
C’est en particulier le cas lorsqu’on utilise avec des données qualitatives (couleur des yeux, plat favori etc.).
Par ailleurs, ainsi qu’on peut le remarquer dans l’exemple précédent, les données ne sont pas toutes du même ordre de grandeur. Cela
engendre un problème : les données les plus grandes vont peser plus lourdement dans le calcul de distance.
Afin de pallier cette difficulté on normalise les données, c’est à dire qu’on divise toutes les données d’une même catégorie par leur valeur
maximale afin de les ramener entre 0 et 1.
Lourdeur de l’algorithme
Bien qu’il soit linéaire, l’algorithme kNN présente un défaut majeur :
https://qkzk.xyz/docs/nsi/cours_premiere/algorithmique/knn/1_cours/ 8/9
31/03/2024 13:38 1. Cours - kNN | qkzk
À chaque nouvelle donnée, il faut parcourir tout le tableau pour la classifier. Plus on ajoute de données, plus il est lent.
Vous regardez une vidéo en streaming et on vous propose d’autres vidéos similaires, succeptibles de vous intéresser. Comment faire ?
On attribue à chaque vidéo des caractéristiques et on lui donne un label en déterminant les autres vidéos dont elle est le plus proche.
On utilise plusieurs labels différents (“intérêt chez les moins de 18”, “nombre de scènes d’action” etc.) et on détermine les plus
représentatifs.
Bien sûr, d’autres traitements sont effectués afin d’accélérer le procédé sans perdre trop de précision sur les recommandations.
https://qkzk.xyz/docs/nsi/cours_premiere/algorithmique/knn/1_cours/ 9/9