dimanche 29 septembre 2019

Machine Learning

KNN: K plus proches voisin

L'algorithme kN-voisin (KNN) est un algorithme d'apprentissage automatique supervisé simple et facile à mettre en œuvre qui peut être utilisé pour résoudre les problèmes de classification et de régression. Pause! Que veux-tu dire?.

Ne vous inquiétez pas, nous allons décomposer:

Un algorithme d'apprentissage automatique supervisé (par opposition à un algorithme d'apprentissage automatique non supervisé) est un algorithme qui repose sur des données d'entrée étiquetées pour apprendre une fonction qui produit une sortie appropriée lorsque de nouvelles données non étiquetées sont fournies.

Imaginez qu'un ordinateur soit un enfant, nous en sommes le superviseur (un parent, un tuteur ou un enseignant, par exemple) et nous souhaitons que l'enfant (l'ordinateur) apprenne à quoi ressemble un mouton. Nous montrerons à l'enfant plusieurs images différentes, dont certaines sont des moutons et le reste pourrait être des images de n'importe quoi (chats, chiens, etc.).

Quand on voit un mouton, on crie «mouton!» Quand ce n'est pas un mouton, on crie «non, pas mouton!». Après avoir répété cela plusieurs fois avec l'enfant, on leur montre une photo et leur demande «mouton? correctement (la plupart du temps), dites «mouton!» ou «non, pas mouton!» en fonction de la photo. C'est l'apprentissage automatique supervisé.


Des algorithmes d'apprentissage automatique supervisés sont utilisés pour résoudre des problèmes de classification ou de régression.

Classification? Régression? c'est quoi ça?  

Nous allons de suite expliquer ces termes et le lien avec notre algorithme KNN.

Un problème de classification a une valeur discrète en sortie. Par exemple, “aime l'ananas sur la pizza” et “n'aime pas l'ananas sur la pizza” sont discrets. Il n'y a pas de juste milieu. L'analogie ci-dessus consistant à apprendre à un enfant à identifier un mouton est un autre exemple de problème de classification.


Cette image montre un exemple de base de ce à quoi les données de classification pourraient ressembler. Nous avons un prédicteur (ou un ensemble de prédicteurs) et une étiquette. Dans l'image, nous essayons peut-être de prédire si quelqu'un aime l'ananas (1) sur sa pizza ou non (0) en fonction de son âge (le prédicteur).

La pratique courante consiste à représenter la sortie (étiquette) d'un algorithme de classification sous la forme d'un nombre entier tel que 1, -1 ou 0. Dans ce cas, ces nombres sont purement représentatifs. Les opérations mathématiques ne doivent pas être effectuées sur eux, car cela n'aurait aucun sens. Pensez un instant. Qu'est-ce que “aime l'ananas” + “n'aime pas l'ananas”? Exactement. Nous ne pouvons pas les ajouter, nous ne devrions donc pas ajouter leurs représentations numériques.

Un problème de régression a pour sortie un nombre réel (un nombre avec une virgule décimale). Par exemple, nous pourrions utiliser les données du tableau ci-dessous pour estimer le poids d’une personne en fonction de sa taille.


Les données utilisées dans une analyse de régression seront similaires aux données présentées dans l'image ci-dessus. Nous avons une variable indépendante (ou un ensemble de variables indépendantes) et une variable dépendante (ce que nous essayons de deviner compte tenu de nos variables indépendantes). Par exemple, nous pourrions dire que la hauteur est la variable indépendante et le poids, la variable dépendante.

En outre, chaque ligne est généralement appelée un exemple, une observation ou un point de données, tandis que chaque colonne (n'incluant pas l'étiquette / la variable dépendante) est souvent appelée un prédicteur, une dimension, une variable indépendante ou une entité.

Un algorithme d’apprentissage automatique non supervisé utilise des données d’entrée sans étiquette - en d’autres termes, aucun enseignant (étiquette) ne dit à l’enfant (ordinateur) quand il a raison ou quand il a commis une erreur pour s’auto-corriger.

Contrairement à l'apprentissage supervisé qui essaie d'apprendre une fonction qui nous permettra de faire des prédictions à l'aide de nouvelles données non étiquetées, l'apprentissage non supervisé essaie d'apprendre la structure de base des données pour nous donner plus d'informations.