Reconnaissance des formes Discrimination A. Belaïd LORIA - Nancy
Discrimination linéaire Notion d hyperplan
Discrimination linéaire Principe Une forme x R d (vecteur forme) Rôle de la Trouver D : R d x D : Algorithme de décision { 1,..., K} D( x) avec un algorithme D «performant» : C est la classe ω =D(x) où ω {1..K} x d R, D(x) = "la Soit C le coût de la règle de décision D : C( D) = k = 1 Choisir D qui minimise cette fonction de coût K meilleure décision" C( D k ) P( D k = x) 3
Discrimination linéaire Comment ça marche? ω 1 ω 2 4
Discrimination linéaire Définition C est une fonction qui est une combinaison linéaire des composants de la forme x g(x) = w t x + w 0 (1) où w est un vecteur poids du système et w 0 le biais Un classifieur bi-classes entre (ω 1,ω 2 ) avec une fonction discriminante de type (1) utilise la règle suivante décide que x ω 1 si g(x) > 0 et x ω 2 si g(x) < 0 décide ω 1 si w t x > -w 0 et ω 2 autrement si g(x) = 0 x est affectée à ces deux classes 5
Discrimination linéaire et surface de décision 6 Définition L équation g(x) = 0 définit la surface de décision qui sépare les points affectés à la classe ω 1 des points affectés à la classe ω 2 Quand g(x) est linéaire, la surface de décision est un hyperplan d j= 1 w i x j + b = 0 ( = produit scalaire) Règle de décision linéaire d wi x j + b > 0 ( ronds rouges) j= 1 d wi x j + b 0 ( croix vertes) j= 1
Discrimination linéaire et surfaces de décision Le cas multi-classes On définit c fonctions linéaires discriminantes g i t = i i ( x) w x + w 0 i = 1,...,c et affecte x à ω 1i si g i (x) > g j (x) j i; En cas d'égalité, le classement est indéfini Dans ce cas, le classifieur est une machine linéaire Une machine linéaire divise l espace de paramètres en c régions de décision, avec g i (x) étant le discriminant le plus grand si x est dans la région R i 7
H 25 H 12 H 15 R 2 R 1 R 3 ω 5 H 35 H 13 R 1 ω 1 ω 2 R 3 ω 3 H 23 R 4 ω 4 R 3 ω 2 ω 1 ω 3 H 23 H 13 H 34 R 2 H 24 H 14 Frontières de décision créées par un système pour 3 classes et 5 classes 8
Discrimination linéaire et surfaces de décision Exemple : classif_lineaire.m Il s agit de classer des fleurs par la longueur et la largeur de leurs pétales Le fichier est donné par MatLab : load fisheriris On dispose de données composées d une matrice «meas» de 150 lignes (échantillons), 50 par type de fleur des Iris dans cet ordre : Setosa, versicolor, virginica 9
Opération 1 : distribution dans le plan gscatter(x, y, groupe) crée un nuage de points de x et y, regroupés par groupe gscatter(meas(:,1), meas(:,2), species,'rgb','osd'); % species : permet de récupérer les espèces dans le fichier et de faire un groupement spécifique par groupe de fleurs
Opération 2 : repérage des mauvaises classifications : 3 étapes % 1) Classification par rapport aux espèces ldaclass = classify(meas(:,1:2),meas(:,1:2),species); % 2) Repérage des mauvaises classifications bad = ~strcmp(ldaclass,species); ldaresuberr = sum(bad) / N; % 3) Création d une matrice de confusion [ldaresubcm,grporder] = confusionmat(species,ldaclass) Setosa Versicolor virginica Seto Vers, virgi 49 1 0 0 36 14 0 15 35 On affiche avec des croix les mauvaises classifs
Sur les 150 observations de la base, 20% ou 30 observations sont mal classées par la fonction discriminante linéaire
Opération 3 afficher les hyperplans séparateurs On prend deux à deux les points appartenant à des classes différentes, puis on dessine à chaque fois le plan bissecteur Ainsi, de couple en couple, on finit par construire les hyperplans + + + o o o o +
Opération 3 : en matlab On crée une grille de coordonnées (x, y) et on applique la fonction de classification sur cette grille [x,y] = meshgrid(4:.1:8,2:.1:4.5); x = x(:); y = y(:); j = classify([x y],meas(:,1:2), species); gscatter(x,y,j,'grb','sod')
Discrimination probabiliste Classifieur bayésien naïf
Décision bayésienne Principe Cette méthode suppose que le problème de représentation des formes admet un modèle probabiliste Elle définit l appartenance d une forme x à une classe avec un minimum d erreur et évalue le risque 16
Règle de Bayes à une dimension Propriétés la probabilité a priori P(ω i ) vérifie P(ω i ) 0 i Σ i P(ω i ) = 1 la densité de probabilité de x conditionnée par une classe p(x ω i ), aussi appelée vraisemblance de ω i par rapport à x + ωi ωi - p(x ) 0 i p(x )dx = 1 i 17
Vraisemblance d'une caractéristique pour deux classes Exemple : deux classes ω 1 et ω 2 les frontières de décision ne sont plus aussi lisibles qu avant : on parle en termes de probabilité d appartenance Vraisemblances Un elt. de ω 1 peut être affecté à ω 2 et vice versa P(x/w 1 ) P(x/w 2 ) 18
Classifieur Bayésien naïf Règle de Bayes Elle permet de calculer la probabilité a posteriori de chaque classe, c'est-à-dire la probabilité conditionnée par l'observation de x, soit P( ω x) = i px ( ωi ) P( ωi ) px ( ) où p(x)= Σ j p(x ω j )P(ω j ) est appelée évidence et est un facteur de normalisation qui assure que px ( ω ) P( ω ) px ( ω ) Pw ( ) i i i i i P( ω i i x) = = = 1 i px ( ) px ( ωj) P( ωj) 19
Décision optimale : bayes naïf Principe Étant donnés une caractéristique observée x d'un objet à identifier (par ex. moyenne du profil de la projection horizontale sur les mots ) l'ensemble des classes possibles {ω 1,ω 2,...ω c } La décision revient à formuler une fonction δ(x)=ω i Comment définir δ de manière optimale? en minimisant sa probabilité d erreur 20
Probabilité d'erreur Pour une caractéristique observée x, la probabilité d'erreur d'une décision δ(x)=ω i est égale à P( erreur x ) = P( ω x ) = 1 P( ω x ) j i j La probabilité d'erreur globale pour le système est + P ( erreur) = P( erreur x) p( x) dx i 21
Décision optimale (pour le naïf) La décision optimale (au sens de la probabilité d'erreur) consiste donc à choisir δ(x)=ω i telle que p(ω i x) soit maximale, c.à.d : P( ω x ) P( ω x ), j i j p( x ω )P( ω ) p( x ω )P( ω ) j i i j j Si les probabilités a priori des classes sont équivalentes, on obtient simplement p( x ω ) p( x ω ) j i j 22
Illustration de l'erreur irréductible 23
Illustration de l'erreur irréductible Zone d erreur réductible La proba qu un élément de Fonte2 soit affecté à Fonte7 La proba qu un élément de Fonte7 soit affecté à Fonte2 X * X B 24 Fonte 7 Fonte 2
Manipulation MatLab Exemple : Distrib_normale 25
Estimation paramétrique On a supposé connu la distribution des caractéristiques pour chaque classe (vraisemblance) les probabilités a priori des classes de manière optionnelle, les coûts d'une (fausse) décision Problème : comment estimer ces grandeurs? la vraisemblance est rarement connue les probabilités a priori ne sont pas toujours connues Solution On utilise une loi connue dont on peut cerner le comportement et les paramètres : on utilise la loi normale 26
Loi normale à une dimension Définition intuitive C est une loi qui incite les éléments d une distribution quelconque à se rapprocher le plus du centre de la classe (autour de la moyenne) avec un certain taux de dispersion Définition mathématique La loi normale à une dimension, notée N(µ, σ 2 ) est définie par p( x) = 1 exp 2πσ 1 2 x 2 µ σ µ représente la moyenne σ 2 représente la variance 27
Loi normale à une dimension Comment utilise-t-on cette loi? On détermine µ et σ par calcul de la moyenne des échantillons et des écarts avec cette moyenne 28
Exemple 1 Soit la distribution Param4 des mots de la classe Fonte7 : moyenne=1.6562 écart type= 0.1272 La distribution normale correspondante 29 µ=1.6562
Exemple 1 : création sous Matlab Distributions >> Distr_normale_fonte Statistiques >> Distribution_normale >> Distrib_normal_Fonte7 Fonte7=[ ]; x = Fonte7(1):0.1:Fonte7(end); [mu,s,muci,sci] = normfit(x); pdfnormal = normpdf(x, mu, s); figure; plot(x,pdfnormal); mu = 6.4693 s =2.8723 30
Décision bayésienne Estimation non paramétrique
Introduction La reconnaissance Bayesienne suppose des connaissances sur La probabilité a priori des classes P(ω i ) La densité de probabilité des caractéristiques P(x ω i ) Généralement, les connaissances sur les densités de probabilité font défaut ou sont imprécises Souvent elles peuvent être estimées à partir d'échantillons d'apprentissage D i Le nombre d'échantillons pose problème, surtout dans les espaces de dimension élevée il n'y a jamais assez d'information pour déterminer P(x ω i ) en toute généralité 32
Estimation non paramétrique Problème Il n'est pas toujours possible de trouver une fonction de densité qui s ajuste sur les données et de pouvoir modéliser sous forme paramétrique surtout dans les cas de distributions complexes ou multimodales (avec plusieurs maxima locaux) Solution L'apprentissage non paramétrique consiste à estimer ces densités directement à partir des échantillons d'apprentissage Deux techniques seront étudiées la méthode des fenêtres de Parzen la méthode des k plus proches voisins 33
Fenêtres de Parzen Idée Subdiviser l espace en régions R et faire des estimations locales, plus faciles à maîtriser Ensuite, généraliser l estimation à l ensemble de l espace k=3 V n n=37 Observations 34
Fenêtres de Parzen Estimation de la densité dans une fenêtre L idée de l estimation de la densité est que la probabilité P qu un échantillon x tombe dans la région R est donnée par P = p( x) dx R Si maintenant, on suppose que R est tellement petit que p(x) varie peu à son intérieur, alors on peut écrire P = R p( x) dx p( x) dx = R p( x) V où V est le volume de R 35
Fenêtres de Parzen D un autre côté, supposons maintenant que n échantillons x 1,, x n considérés de manière indépendante interviennent dans le calcul de la fonction de densité de probabilité p(x), et qu il y a k échantillons qui tombent dans la région R P = k / n Ainsi, on arrive à l estimation évidente de p(x) k / n p( x) = V En général, on fixe V et on compte k dans chaque V 36 V = 1 n
Fenêtres de Parzen Comment on calcule effectivement Considérez que R soit un carré (ou un hypercube dans l espace) Soit h le côté du carré (x 1 -h/2, x 2 +h/2) (x 1 -h/2, x 2 -h/2) x (x 1 +h/2, x 2 +h/2) (x 1 +h/2, x 2 +h/2) On définit 37 x x x x ik i φ( ) = 1 si h h 0 qui indique si x i est à l intérieur du carré ou pas k 1/ 2, k = 1,2 sinon
38 Fenêtres de Parzen Le nombre total k d échantillons tombant dans R, est donné par L estimation de la densité dans la fenêtre de Parzen est donnée par = = n i i h x x k 1 ) φ( = = = n i i h x x h n V n k x p 1 2 ) ( 1 1 / ) ( φ est appelée fonction fenêtre ou noyau ) ( h x i x φ
Fenêtres de Parzen Généralisation On peut généraliser l idée et permettre l utilisation d autres fonctions noyau, comme une gaussienne, Dans ce cas, ( x φ i h x) = 1 n n i= 1 1 exp( 2πσ ( x i 2σ x) 2 2 ) 39
Fenêtres de Parzen Si on considère le nuage observé séquentiellement On pourrait estimer des suites d éléments par des petites gaussiennes, puis généraliser à l ensemble x 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x 11 x 12 40
Les k plus proches voisins (Kppv/K-nn) Particularités Contrairement aux fenêtres de Parzen, ici, on ne fixe pas V, mais k : Principe : Utiliser les exemples déjà connus Regarder la classe des k exemples les plus proches (k = 1, 3,...) Affecter la classe majoritaire au nouvel exemple Exemple : deux classes, k=1 41
K-ppv Exemple : deux classes, k=3 42
Kppv Notations Soit L={(x,c x R d, c C} l ensemble d apprentissage Soit x l exemple dont on souhaite déterminer la classe Algorithme début pour chaque (exemple (x, c) L) faire Calculer la distance D(x, x ) fin pour chaque {x kppv(x)} faire compter le nombre d occurrences de chaque classe fin Attribuer à x la classe la plus fréquente fin 43
K-ppv Quelle décision prendre en cas d égalité? Augmenter la valeur de k de 1 pour trancher. L ambiguïté peut persister Tirer au hasard la classe parmi les classes ambiguës Pondération des exemples par leur distance au point x 44
Fenêtres de Parzen vs K-ppv Illustration des méthodes 1. des fenêtres de Parzen 2. des k plus proches voisins 45
Tests en Matlab Illustration des méthodes Étape 1 : Affichage spatial de la distribution des fleurs load fisheriris x = meas(:,3:4); gscatter(x(:,1),x(:,2),species) set(legend,'location','best') 46 http://www.mathworks.fr/help/toolbox/stats/bsehyju-1.html#bsfh8js-1
Étape 2 : placer un point : newpoint = [5 1.45]; line(newpoint(1),newpoint(2),'marker','x','color','k',... 'markersize',10,'linewidth',2) 47
Étape 3 : chercher les 10 échantillons proches de ce point [n,d] = knnsearch(x,newpoint,'k',10) line(x(n,1),x(n,2),'color',[.5.5.5],'marker','o',... 'linestyle','none','markersize',10) Knnsearch a trouvé que 8 points 48
Étape 3 : pour rendre plus visible l'affichage : xj = x +.05*(rand(150,2)-.5); gscatter(xj(:,1),xj(:,2),species) set(gca,'xlim',[4.5 5.5],'ylim',[1 2]); axis square 49
Étape 4 : trouver les éléments des différentes parmi les 10 voisins tabulate(species(n)) Value Count Percent virginica 2 20.00% versicolor 8 80.00% 50
Étape 4 : mettre un cercle autour des voisins % Define the center and diameter of a circle, based on the % location of the new point: ctr = newpoint - d(end); diameter = 2*d(end); % Draw a circle around the 10 nearest neighbors: h = rectangle('position',[ctr,diameter,diameter],... 'curvature',[1 1]); set(h,'linestyle',':') 51
Étape 5 : en utilisant la même base, trouver les plus proches voisins de trois points figure newpoint2 = [5 1.45;6 2;2.75.75]; gscatter(x(:,1),x(:,2),species) legend('location','best') [n2,d2] = knnsearch(x,newpoint2,'k',10); line(x(n2,1),x(n2,2),'color',[.5.5.5],'marker','o',... 'linestyle','none','markersize',10)line(newpoint2(:,1),newpoint2(:,2), marker','x','color','k',... 'markersize',10,'linewidth',2,'linestyle','none') 52
53 Étape 6 : Trouvez les classes des 10 plus proches voisins pour chaque nouveau point: