Vous êtes sur la page 1sur 20

Généralités sur la classication

K plus proche voisin (Knn)

Apprentissage automatique

Classication - K plus proches voisins

Gorgoumack SAMBE
Université Assane Seck de Ziguinchor

Version 1.0 - 2021

1/19 Gorgoumack SAMBE Apprentissage automatique


Généralités sur la classication
K plus proche voisin (Knn)

Objectifs

Objectif général
Appliquer et évaluer une classication par les plus proches
voisins sur un jeux de données.

2/19 Gorgoumack SAMBE Apprentissage automatique


Généralités sur la classication
K plus proche voisin (Knn)

Objectifs

Objectif général
Appliquer et évaluer une classication par les plus proches
voisins sur un jeux de données.
Objectifs spéciques
1 Appliquer une classication par les k plus proches voisins ;
2 Choisir un paramètre k optimal pour une classication par
Knn ;
3 Choisir une métrique adaptée pour une classication par Knn ;
4 Évaluer une classication par Knn
5 Sélectionner et évaluer une méthode de classication.

2/19 Gorgoumack SAMBE Apprentissage automatique


Plan

1 Généralités sur la classication

2 K plus proche voisin (Knn)


Plan

1 Généralités sur la classication

2 K plus proche voisin (Knn)


Généralités sur la classication
K plus proche voisin (Knn)

Les bases

Étude de la relation entre une variable Y catégorielle à m


1

modalités
Y = (y1 , . . . , yn )t yi ∈ {M1 , . . . , Mm }
et p variables explicatives supposées dans R :
X1 , . . . , Xp avec Xi = (xi1 , . . . , xin )

1 classication binaire : m=2 ;


2 classication multi-classes : m>2

1. Explication/classication
5/19 Gorgoumack SAMBE Apprentissage automatique
Généralités sur la classication
K plus proche voisin (Knn)

Applications

Systèmes de recommandations
Recommandations de lms (Vidéo à la Demande)
Recommandations d'amis (Réseaux sociaux)
Recommandations de produits (Grande distribution)
Reconnaissance de formes
Reconnaissance de texte manuscrit.
Reconnaissance de visage.
Diagnostic médical
Évaluation des risques de cancer
Évaluation des risques de diabète
Classication d'email (spam)
....

6/19 Gorgoumack SAMBE Apprentissage automatique


Généralités sur la classication
K plus proche voisin (Knn)

Exemple
Weather [Quinlan86]

7/19 Gorgoumack SAMBE Apprentissage automatique


Généralités sur la classication
K plus proche voisin (Knn)

Exemple
Classication (arbre de décision)

Source : http ://cedric.cnam.fr/vertigo/cours/ml2/coursArbresDecision.html#bf84

8/19 Gorgoumack SAMBE Apprentissage automatique


Généralités sur la classication
K plus proche voisin (Knn)

Les méthodes

K-plus proches voisins - knn 2

Arbres de décision
Réseaux de neurones
Machine à vecteur support - SVM 3

Régression logistique
Forêts aléatoires 4

...

2. K nearest neighbors
3. Support Vector Machine
4. Random forest
9/19 Gorgoumack SAMBE Apprentissage automatique
Généralités sur la classication
K plus proche voisin (Knn)

Critères de choix et d'évaluation

Types de données : données discrètes/données continues.


Complexité : rapidité de l'algorithme/occupation mémoire.
Robustesse : résistance aux valeurs extrêmes, valeurs
manquantes, valeurs aberrantes, doublons, . . . .
Scalabilité : gestion de la montée en charge.
Capacité de généralisation.
...

10/19 Gorgoumack SAMBE Apprentissage automatique


Plan

1 Généralités sur la classication

2 K plus proche voisin (Knn)


Généralités sur la classication
K plus proche voisin (Knn)

Les bases

Méthode simple : Attribuer la classe majoritaire des k-voisins


les plus "proches" à l'observation à classer.
Méthode non paramétrique
Usage en classication ou en régression.
Apprentissage "paresseux" (lazy learning ) : pas de 5

généralisation des données d'entrée.

5. s'oppose au eager learning dans lequel le système tente de construire une


fonction cible générale, indépendante de l'entrée, pendant l'apprentissage.
12/19 Gorgoumack SAMBE Apprentissage automatique
Généralités sur la classication
K plus proche voisin (Knn)

Algorithme

1 Calculer la distance entre observation à classer (prédire) et


données d'entraînement,
2 Sélectionner les k observations les plus  proches  de
l'observation,
3 Prendre les valeurs des observations retenues :
1 Classication : Déterminer l'étiquette de la classe majoritaire
des observations retenues.
2 Régression : Calculer la moyenne (ou la médiane) des valeurs
des observations retenues,
4 Assigner l'étiquette (la moyenne) à l'observation à classer
(prédire).

13/19 Gorgoumack SAMBE Apprentissage automatique


Généralités sur la classication
K plus proche voisin (Knn)

Métriques d'évaluation de la similarité

1 Les métriques classiques : q


Distance Euclidienne : n
(xi − yi )2
P
1
Pni=1
2 Distance de Manhatan : i=1 |xi − yi |
2 Autres métriques : qP
Distance de Minkowski : p ni=1 |xi − yi |p
Fonction de Jaccard : similarité entre ensembles
J(A, B) = (A ∩ B)/(A ∪ B)
Distance de hamming : diérence entre deux séquences de
symboles h(1011101,1001001)=2
Distance de levenshtein : diérence entre chaînes de caractères
lev(bonjour,bonsoir)=3
...
Critères de choix :
1 types de données.
2 sémantique du problème.
14/19 Gorgoumack SAMBE Apprentissage automatique
Généralités sur la classication
K plus proche voisin (Knn)

Choix de k

Déterminant sur les résultats (k=2/k=3)

Source : Wikipédia CC BY-SA 3.0

Méthodologie :
1 faire varier k,
2 calculer le taux d'erreur sur les données de test
3 sélectionner k qui minimise le taux d'erreur

15/19 Gorgoumack SAMBE Apprentissage automatique


Généralités sur la classication
K plus proche voisin (Knn)

Python sklearn

Classes :
1 Classication :
sklearn.neighbors.KNeighborsClassier(n_neighbors=5, *,
weights='uniform', algorithm='auto', leaf_size=30, p=2,
metric='minkowski', metric_params=None, n_jobs=None)
2 Régression :
sklearn.neighbors.KNeighborsRegressor(n_neighbors=5, *,
weights='uniform', algorithm='auto', leaf_size=30, p=2,
metric='minkowski', metric_params=None, n_jobs=None)

16/19 Gorgoumack SAMBE Apprentissage automatique


Généralités sur la classication
K plus proche voisin (Knn)

Exemple avec python et application

Exemple :
X = [[0], [1], [2], [3]]
y = [0, 0, 1, 1]
from sklearn.neighbors import KNeighborsClassifier
neigh = KNeighborsClassifier(n_neighbors=3)
neigh.fit(X, y)
#résultat : KNeighborsClassifier(...)
print(neigh.predict([[1.1]]))
#résultats : [0]
print(neigh.score([[1.1]],[0]))
#résultat : 1.0
print(neigh.predict_proba([[0.9]]))
#résultat : [[0.66666667 0.33333333]]
Application : Charger et décomposer iris en données d'apprentissage
(80%) et en données de test. Faire une classication par knn et évaluer le
score sur les données de test.

17/19 Gorgoumack SAMBE Apprentissage automatique


Généralités sur la classication
K plus proche voisin (Knn)

Exemple 2 : Weather [Quinlan86]

#Features (weather,temp) and target variables (play)


weather=['Sunny','Sunny','Overcast','Rainy','Rainy','Rainy','Overcast',
'Sunny','Sunny','Rainy','Sunny','Overcast','Overcast','Rainy']
temp=['Hot','Hot','Hot','Mild','Cool','Cool','Cool',
'Mild','Cool','Mild','Mild','Mild','Hot','Mild']
play=['No','No','Yes','Yes','Yes','No','Yes','No','Yes','Yes','Yes','Yes','Yes',
from sklearn import preprocessing
le = preprocessing.LabelEncoder()
# Converting string labels into numbers.
weather_encoded=le.fit_transform(weather)
temp_encoded=le.fit_transform(temp)
label=le.fit_transform(play)
#combinig weather and temp into single listof tuples
features=list(zip(weather_encoded,temp_encoded))
model = KNeighborsClassifier(n_neighbors=3)
# Train the model using the training sets
model.fit(features,label)
#Predict Output
predicted= model.predict([[0,2]]) # 0:Overcast, 2:Mild
print(predicted)

18/19 Gorgoumack SAMBE Apprentissage automatique


Généralités sur la classication
K plus proche voisin (Knn)

Avantages, inconvénients et domaines d'usage

Les plus
1 Simple et Facile à mettre en ÷uvre ;
2 Pas d'hypothèse sur les données ;
3 polyvalence (classication/régression).
Les moins
1 lent à mesure que le nombre d'exemples et/ou de prédicteurs
augmente.

Domaines d'usage : systèmes de recommandations, ratio


diabétique , ratio cancer, . . .

19/19 Gorgoumack SAMBE Apprentissage automatique

Vous aimerez peut-être aussi