16/03/2019
K-Nearest Neighbor(KNN)
Classification
Férihane Kboubi
[email protected]
Machine Learning - 1MISIE – FSEGT - UTM
2018-2019
Introduction
• K Nearest Neighbor (KNN) est un algorithme d’apprentissage
automatique très simple, facile à comprendre et polyvalent.
• Utilisé dans diverses applications telles que la finance, la santé, les
sciences politiques, la reconnaissance d’images et la reconnaissance
vidéo.
• Utilisé pour les problèmes de classification et de régression.
• Basé sur la similarité des caractéristiques.
Ferihane Kboubi - Machine Learning -
2
1MISIE - FSEGT - 2019
1
16/03/2019
K-Nearest Neighbor Algorithm
How does the KNN algorithm work?
Eager Vs Lazy learners
How do you decide the number of neighbors in KNN?
Curse of Dimensionality
Pros and Cons
How to improve KNN performance?
Classifier Building in Scikit-learn
PLAN
Ferihane Kboubi - Machine Learning -
3
1MISIE - FSEGT - 2019
K-Nearest Neighbors
• KNN est un algorithme d’apprentissage non-paramétrique et paresseux.
• Non paramétrique
– il n’y a pas d’hypothèse pour la distribution sous-jacente des données.
– La structure du modèle est déterminée à partir de l’ensemble de données.
– Cela sera très utile dans la pratique où la plupart des ensembles de données
du monde réel ne suivent pas les hypothèses théoriques mathématiques.
• Paresseux
– il n’a pas besoin d’entrainement pour la génération de modèle.
– Toutes les données d’apprentissage sont utilisées dans la phase de test.
– Cela rend l’apprentissage plus rapide et la phase de test plus lente et plus
coûteuse en temps et en mémoire.
Ferihane Kboubi - Machine Learning -
4
1MISIE - FSEGT - 2019
2
16/03/2019
How does the KNN algorithm work?
• Dans KNN, K est le nombre de voisins les plus proches.
• Le nombre de voisins est le facteur déterminant de base.
• K est généralement un nombre impair si le nombre de classes est 2.
• Lorsque K=1, on parle de l’algorithme du voisin le plus proche.
• C’est le cas le plus simple.
• Supposons que P1 soit le point pour
lequel l’étiquette doit être prévu.
• D’abord, vous trouvez le point le plus
proche de P1, puis l’étiquette du point le
plus proche sera attribuée à P1.
Ferihane Kboubi - Machine Learning -
5
1MISIE - FSEGT - 2019
How does the KNN algorithm work?
• Lorsque K>1
• Tout d’abord, il faut trouver les k points les plus proches de P1 et ensuite classer
P1 par vote majoritaire de ses k voisins.
• Chaque voisin vote pour sa classe et la classe avec le plus de votes est prise
comme prédiction.
• Pour trouver les points similaires les plus proches, il faut calculer la distance
entre les observations en utilisant des mesures de distance telles que: la
distance euclidienne, Hamming distance, Manhattan distance et Minkowski.
• Principe de KNN :
1. Calculer la distance
2. Trouver les voisins les plus proches
3. Voter pour les étiquettes
Ferihane Kboubi - Machine Learning -
6
1MISIE - FSEGT - 2019
3
16/03/2019
How does the KNN algorithm work?
Ferihane Kboubi - Machine Learning -
7
1MISIE - FSEGT - 2019
Eager Vs. Lazy Learners
• L’apprentissage enthousiaste« Eager » :
– Construit un modèle généralisé à partir des données d’apprentissage avant
d’effectuer des prévisions sur de nouveaux points à classer.
• L’apprentissage paresseux «par l’exemple », « Lazy » :
– Stocke les données d’apprentissage, et tout le processus est fondé sur des exemples.
– il n’est pas nécessaire d’apprendre ou d’entrainer le modèle
– toutes les données d’apprentissage sont utilisées au moment de la prévision.
– Ne stocke que l’ensemble de données d’apprentissage et attend jusqu’à ce que la
classification doit être effectuée.
– Effectue une généralisation que lors de la réception des données de test pour
classer le tuple en fonction de sa similitude avec les tuples d’entraînement stockés.
– Contrairement aux méthodes d’apprentissage enthousiastes, travaille moins dans la
phase d’apprentissage et plus dans la phase de test pour faire une classification.
Ferihane Kboubi - Machine Learning -
8
1MISIE - FSEGT - 2019
4
16/03/2019
Techniques inductives et transductives
Ferihane Kboubi - Machine Learning -
9
1MISIE - FSEGT - 2019
Malédiction de la dimensionnalité
• KNN réussit mieux avec un petit nombre de caractéristiques qu’un grand nombre.
• Lorsque le nombre de caractéristiques augmente ceci nécessite plus de données.
• L’augmentation des dimensions conduit au problème du sur-apprentissage (overfitting)
• Pour éviter l’overfitting, les données devront croître de façon exponentielle à mesure
que vous augmentez le nombre de dimensions.
• Ce problème est connu comme la malédiction de la dimensionnalité.
• Pour traiter le problème de la malédiction de la dimensionnalité
– Utiliser l’analyse en composantes principales
– Utiliser une approche de feature selection.
• Des recherches ont montré que avec de grandes dimensions la distance euclidienne n’est
plus utile.
• D’autres mesures telles que le cosinus sont moins touchés par ce problème.
Ferihane Kboubi - Machine Learning -
10
1MISIE - FSEGT - 2019
5
16/03/2019
How do you decide the number of
neighbors in KNN?
• Comment choisir le nombre optimal de voisins?
• Et quels sont ses effets sur le classificateur ?
• K est un hyperparamètre choisit au moment de la construction du modèle.
– K est une variable de contrôle pour le modèle de prédiction.
• Aucun nombre optimal de voisins ne convient à toutes sortes d’ensembles de
données.
– Chaque ensemble de données a ses propres exigences.
• Dans le cas d’un petit nombre de voisins, le bruit aura une plus grande
influence sur le résultat
• Dans le cas d’un grand nombre de voisins le problème devient
computationnellement couteux.
Ferihane Kboubi - Machine Learning -
11
1MISIE - FSEGT - 2019
How do you decide the number of
neighbors in KNN?
• Généralement, les Data scientists
choisissent k comme un nombre
impair si le nombre de classes est
paire.
• On peut également vérifier en
générant le modèle sur différentes
valeurs de k et vérifier leurs
performances (gridsearch)
• Vous pouvez également essayer la
méthode Elbow ici.
Ferihane Kboubi - Machine Learning -
12
1MISIE - FSEGT - 2019
6
16/03/2019
Elbow method
Ferihane Kboubi - Machine Learning -
13
1MISIE - FSEGT - 2019
Avantages
• La phase d’entrainement de KNN est beaucoup plus rapide
que d’autres algorithmes de classification.
• Il n’est pas nécessaire de former un modèle de
généralisation, c’est pourquoi KNN est connu comme
l’algorithme d’apprentissage simple et basé sur l’exemple.
• KNN peut être utile en cas de données non linéaires.
• Il peut être utilisé avec le problème de régression.
• La valeur de sortie de l’objet est calculée par la valeur
moyenne des k voisins les plus proches.
Ferihane Kboubi - Machine Learning -
14
1MISIE - FSEGT - 2019
7
16/03/2019
Inconvénients
• La phase de test de KNN est plus lente et plus coûteuse en termes de
temps et de mémoire.
• Il nécessite une grande mémoire pour stocker l’ensemble entier de
données d’entraînement pour la prédiction.
• KNN nécessite une normalisation des données parce qu’il utilise la
distance euclidienne entre deux points de données pour trouver les
voisins les plus proches.
– La distance euclidienne est sensible aux grandeurs. Les caractéristiques avec
des grandeurs élevées pèseront plus que des caractéristiques avec de faibles
grandeurs.
• KNN ne convient pas non plus pour les grandes données dimensionnelles
Ferihane Kboubi - Machine Learning -
15
1MISIE - FSEGT - 2019
Comment améliorer le résultat de KNN?
• Il est fortement recommandé de normaliser les données à la même
échelle. Généralement, entre 0 et 1.
• En cas de données de grandes dimensions appliquer un mécanisme de
réduction de la dimensionnalité pour améliorer les performances.
• Le traitement des valeurs manquantes nous aidera à améliorer les
résultats.
Ferihane Kboubi - Machine Learning -
16
1MISIE - FSEGT - 2019
8
16/03/2019
DISTANCE ET SIMILARITÉ
Ferihane Kboubi - Machine Learning -
17
1MISIE - FSEGT - 2019
Dissimilarité : distance
• Une mesure de distance est une mesure de dissimilarité, mais l’inverse n’est pas
nécessairement vrai.
• Propriété d’une distance :
– d(x,y) ≥ 0
– d(x,y) = 0 ssi x=y
– d(x,y) = d(y,x)
– d(x,z) ≤ d(x,y) + d(y,z)
• Définir une distance sur chacun des champs (numériques, binaires, nominals)
– ex (numérique, e.g., âge, poids, taille, etc.):
d(x,y) =|x-y| ;
d(x,y) = |x-y|/dmax (dist. normalisée)
Ferihane Kboubi - Machine Learning -
18
1MISIE - FSEGT - 2019
9
16/03/2019
Mesures de distance
• Soit i et j deux objets p-dimentionnels définis par p attributs quantitatifs comme suit:
– i = (xi1, xi2, …, xip) et j = (xj1, xj2, …, xjp)
• la distance de Minkowski :
– où q un entier positif
• Si q = 1, d est la distance de Manhattan
• Si q = 2, d est la distance Euclidienne :
Ferihane Kboubi - Machine Learning -
19
1MISIE - FSEGT - 2019
Standardiser les données
Standardiser les données
Calculer l’écart absolu moyen:
Où
Calculer la mesure standardisée (z-score)
Ferihane Kboubi - Machine Learning -
20
1MISIE - FSEGT - 2019
10
16/03/2019
Exemple: standardisation
M Age = 60 S Age = 5
M Salaire = 11074 S Salaire = 37
Ferihane Kboubi - Machine Learning -
21
1MISIE - FSEGT - 2019
Exemple: distance de Manhattan
d(p1,p2)=120
d(p1,p3)=132
Conclusion:
p1 ressemble plus à p2 qu’à p3!!!
d(p1,p2)=6,7
d(p1,p3)=5,29
Conclusion:
p1 ressemble plus à p3 qu’à p2 !!!
Ferihane Kboubi - Machine Learning -
22
1MISIE - FSEGT - 2019
11
16/03/2019
Variables binaires
Une table de contingence pour les données binaires
Soit deux objets i et j à n attributs binaires et k un entier 1≤k≤n
Objet j
a = nb attributs où xik = xjk = 1
b = nb attributs où xik = 1 et xjk=0
Objet i c = nb attributs où xik = 0 et xjk=1
d = nb attributs où xik = xjk = 0
Exemple
i=(1,1,0,1,0) et j=(1,0,0,0,1)
a=1, b=2, c=1, d=1
Ferihane Kboubi - Machine Learning -
23
1MISIE - FSEGT - 2019
Variables binaires
Mesures de distances
Coefficient d’appariement (matching) simple
Exemple
i=(1,1,0,1,0) et j=(1,0,0,0,1)
d(i, j)=3/5
Coefficient de Jaccard
d(oi, oj)=3/4
Ferihane Kboubi - Machine Learning -
24
1MISIE - FSEGT - 2019
12
16/03/2019
Variables Nominales
Une généralisation des variables binaires, ex: rouge, vert et bleu
Méthode 1: Matching simple
m: # d’appariements, p: # total de variables
Méthode 2: utiliser un grand nombre de variables binaires
Créer une variable binaire pour chaque modalité
(ex: variable rouge qui prend les valeurs vrai ou faux)
Ferihane Kboubi - Machine Learning -
25
1MISIE - FSEGT - 2019
13