Classification automatique - Fabrice Rossi
Classification automatique - Fabrice Rossi
Classification automatique - Fabrice Rossi
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Classification</strong> <strong>automatique</strong><br />
<strong>Fabrice</strong> <strong>Rossi</strong><br />
TELECOM ParisTech<br />
Mai 2009
Plan<br />
Introduction<br />
Similarités<br />
Définitions<br />
Données numériques<br />
Données non numériques<br />
Visualisation<br />
<strong>Classification</strong> hiérarchique<br />
Modèle<br />
Algorithmes<br />
Exploitation des résultats<br />
Optimisation directe d’un critère de qualité<br />
Critères de qualité<br />
Optimisation<br />
Classes floues<br />
2 / 114 F. <strong>Rossi</strong>
Plan<br />
Introduction<br />
Similarités<br />
Définitions<br />
Données numériques<br />
Données non numériques<br />
Visualisation<br />
<strong>Classification</strong> hiérarchique<br />
Modèle<br />
Algorithmes<br />
Exploitation des résultats<br />
Optimisation directe d’un critère de qualité<br />
Critères de qualité<br />
Optimisation<br />
Classes floues<br />
3 / 114 F. <strong>Rossi</strong> Introduction
<strong>Classification</strong><br />
Définition informelle<br />
Trouver dans un ensemble d’objets des groupes homogènes<br />
(classes) et bien distincts les uns des autres<br />
4 / 114 F. <strong>Rossi</strong> Introduction
<strong>Classification</strong><br />
Définition informelle<br />
Trouver dans un ensemble d’objets des groupes homogènes<br />
(classes) et bien distincts les uns des autres<br />
Arbre phylogénétique de la vie<br />
Bactéries<br />
Archées<br />
Eucaryotes<br />
proximité évolutive<br />
Bactéries<br />
vertes<br />
Myxomycètes<br />
Spirochètes filamenteuses<br />
Amibes<br />
Animaux<br />
Gram<br />
Champignons<br />
Methanosarcina<br />
positives<br />
Methanobacterium Halophiles<br />
Protéobactéries<br />
Plantes<br />
Methanococcus<br />
Cyanobactéries<br />
Ciliés<br />
T. celer<br />
Planctomyces<br />
Thermoproteus<br />
Flagellés<br />
Pyrodicticum<br />
Bacteroides<br />
Trichomonades<br />
Cytophaga<br />
Microsporides<br />
Thermotoga<br />
Diplomonades<br />
Aquifex<br />
source : Wikipédia<br />
4 / 114 F. <strong>Rossi</strong> Introduction
Quelques applications<br />
Analyse exploratoire de données (typologie) :<br />
marketing : typologie des clients<br />
bioinformatique : regroupement de gènes<br />
image : segmentation de zones homogènes<br />
Simplification de données :<br />
recherche d’information : regroupement de pages web (par<br />
ex. Clusty)<br />
données très volumineuses : chaque groupe est remplacé<br />
par un représentant<br />
5 / 114 F. <strong>Rossi</strong> Introduction
Clusty<br />
6 / 114 F. <strong>Rossi</strong> Introduction
Vocabulaire<br />
Classement<br />
À partir d’exemples d’objets répartis en groupes, construire un<br />
algorithme qui détermine le groupe adapté pour un nouvel objet<br />
7 / 114 F. <strong>Rossi</strong> Introduction
Vocabulaire<br />
Classement<br />
À partir d’exemples d’objets répartis en groupes, construire un<br />
algorithme qui détermine le groupe adapté pour un nouvel objet<br />
Collision Français et Anglais :<br />
Français<br />
<strong>Classification</strong><br />
Classement<br />
Anglais<br />
Clustering<br />
<strong>Classification</strong><br />
7 / 114 F. <strong>Rossi</strong> Introduction
Vocabulaire<br />
Classement<br />
À partir d’exemples d’objets répartis en groupes, construire un<br />
algorithme qui détermine le groupe adapté pour un nouvel objet<br />
Collision Français et Anglais :<br />
Français<br />
<strong>Classification</strong><br />
Classement<br />
Anglais<br />
Clustering<br />
<strong>Classification</strong><br />
Opposition entre<br />
supervisé (classement) : groupes fixés, exemples d’objets<br />
de chaque groupe<br />
non supervisé (classification) : on ne connaît pas de<br />
groupe<br />
7 / 114 F. <strong>Rossi</strong> Introduction
Ingrédients<br />
une mesure de similarité : comment comparer des objets <br />
une notion de groupe : comment regrouper les objets <br />
une structure de classification : comment organiser les<br />
groupes <br />
Beaucoup d’algorithmes s’appliquent à (presque) toute mesure<br />
similarité, mais correspondent à un choix précis des autres<br />
ingrédients<br />
8 / 114 F. <strong>Rossi</strong> Introduction
<strong>Classification</strong> et similarité<br />
La notion de similarité est au cœur de la classification :<br />
groupe homogène : les objets du groupe se ressemblent<br />
groupes bien distincts : les objets de groupes distincts ne<br />
se ressemblent pas<br />
notion relative :<br />
• a et b dans le groupe A, c et d dans le groupe B<br />
• si les groupes sont satisfaisants, la similarité entre a et b<br />
(resp. c et d) est grande devant celle entre a et c, a et d,<br />
etc.<br />
9 / 114 F. <strong>Rossi</strong> Introduction
<strong>Classification</strong> et similarité<br />
La notion de similarité est au cœur de la classification :<br />
groupe homogène : les objets du groupe se ressemblent<br />
groupes bien distincts : les objets de groupes distincts ne<br />
se ressemblent pas<br />
notion relative :<br />
• a et b dans le groupe A, c et d dans le groupe B<br />
• si les groupes sont satisfaisants, la similarité entre a et b<br />
(resp. c et d) est grande devant celle entre a et c, a et d,<br />
etc.<br />
Similarités distinctes ⇒ classifications distinctes :<br />
classification phylogénétique du vivant : distance évolutive<br />
classification classique : caractères (vertébrés versus<br />
invertébrés)<br />
9 / 114 F. <strong>Rossi</strong> Introduction
Nature :<br />
Groupes et structure<br />
complet versus incomplet : éléments sans groupe<br />
disjoint versus empiétant : éléments dans plusieurs<br />
groupes<br />
« net ou flou » : degré d’appartenance à un groupe<br />
Similarité :<br />
groupe homogène : similarité moyenne, minimale, ...<br />
groupes distincts : similarité moyenne, maximale, ...<br />
Structure :<br />
groupes disjoints et complets : partition des données<br />
emboîtés : structure hiérarchique<br />
10 / 114 F. <strong>Rossi</strong> Introduction
Exemple<br />
Iris de<br />
Fisher/Anderson<br />
source : Wikipédia<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
11 / 114 F. <strong>Rossi</strong> Introduction
Exemple : partitionnement<br />
Iris de<br />
Fisher/Anderson<br />
source : Wikipédia<br />
Sepal.Width<br />
2 3 4 5<br />
1<br />
2<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
12 / 114 F. <strong>Rossi</strong> Introduction
Exemple : partitionnement<br />
Iris de<br />
Fisher/Anderson<br />
source : Wikipédia<br />
Sepal.Width<br />
2 3 4 5<br />
1<br />
2<br />
3<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
12 / 114 F. <strong>Rossi</strong> Introduction
Exemple : partitionnement<br />
Iris de<br />
Fisher/Anderson<br />
source : Wikipédia<br />
Sepal.Width<br />
2 3 4 5<br />
1<br />
2<br />
3<br />
4<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
12 / 114 F. <strong>Rossi</strong> Introduction
Exemple : hiérarchie<br />
Iris de<br />
Fisher/Anderson<br />
source : Wikipédia<br />
Sepal.Width<br />
2 3 4 5<br />
1<br />
2<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
13 / 114 F. <strong>Rossi</strong> Introduction
Exemple : hiérarchie<br />
Iris de<br />
Fisher/Anderson<br />
source : Wikipédia<br />
Sepal.Width<br />
2 3 4 5<br />
1<br />
2<br />
3<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
13 / 114 F. <strong>Rossi</strong> Introduction
Exemple : hiérarchie<br />
Iris de<br />
Fisher/Anderson<br />
source : Wikipédia<br />
Sepal.Width<br />
2 3 4 5<br />
1<br />
2<br />
3<br />
4<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
13 / 114 F. <strong>Rossi</strong> Introduction
Exemple : flou<br />
Iris de<br />
Fisher/Anderson<br />
source : Wikipédia<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
14 / 114 F. <strong>Rossi</strong> Introduction
Exemple : flou<br />
Iris de<br />
Fisher/Anderson<br />
source : Wikipédia<br />
Sepal.Width<br />
2 3 4 5<br />
1<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
14 / 114 F. <strong>Rossi</strong> Introduction
Exemple : flou<br />
Iris de<br />
Fisher/Anderson<br />
source : Wikipédia<br />
Sepal.Width<br />
2 3 4 5<br />
2<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
14 / 114 F. <strong>Rossi</strong> Introduction
Plan<br />
Introduction<br />
Similarités<br />
Définitions<br />
Données numériques<br />
Données non numériques<br />
Visualisation<br />
<strong>Classification</strong> hiérarchique<br />
Modèle<br />
Algorithmes<br />
Exploitation des résultats<br />
Optimisation directe d’un critère de qualité<br />
Critères de qualité<br />
Optimisation<br />
Classes floues<br />
15 / 114 F. <strong>Rossi</strong> Similarités
Mesures de similarité<br />
Similarité<br />
sur un ensemble d’objets D<br />
fonction s de D × D dans R +<br />
maximale : s(a, a) ≥ s(a, b)<br />
symétrique : s(a, b) = s(b, a)<br />
16 / 114 F. <strong>Rossi</strong> Similarités
Mesures de similarité<br />
Similarité<br />
sur un ensemble d’objets D<br />
fonction s de D × D dans R +<br />
maximale : s(a, a) ≥ s(a, b)<br />
symétrique : s(a, b) = s(b, a)<br />
dissimilarité d :<br />
• opération « inverse »<br />
• axiomes équivalents d(a, a) = d(b, b), d(a, a) < d(a, b) et<br />
d(a, b) = d(b, a)<br />
transformations :<br />
• s(a, b) = e −d(a,b)<br />
• plus généralement, n’importe quelle fonction décroissante<br />
16 / 114 F. <strong>Rossi</strong> Similarités
Données numériques<br />
objets décrits par des vecteurs de R n , x = (x 1 , . . . , x n )<br />
dissimilarités naturelles basées sur les normes de R n :<br />
• distances de Minkowski<br />
√ √√√ n∑<br />
d p (x, y) = p |x i − y i | p<br />
i=1<br />
• p = 1 : distance Manhattan<br />
• p = 2 : distance Euclidienne<br />
• distance « sup » (de Chebyshev) :<br />
d ∞ (x, y) = sup |x i − y i |<br />
1≤i≤n<br />
17 / 114 F. <strong>Rossi</strong> Similarités
en R<br />
fonction dist (package stats) :<br />
• dist(X) renvoie la distance Euclidienne d 2<br />
• dist(X,method="métrique") permet de choisir une<br />
autre distance :<br />
• "maximum" : d ∞<br />
• "manhattan" : d 1<br />
• "minkowski" : d q en précisant p=q dans les paramètres<br />
• le résultat est un objet de classe "dist"<br />
• conversion possible en matrice par as.matrix<br />
package proxy :<br />
• implémentation plus rapide et plus riche<br />
• toujours par l’intermédiaire d’une fonction dist<br />
18 / 114 F. <strong>Rossi</strong> Similarités
Distances et dissimilarités<br />
Distance<br />
sur un ensemble d’objets D<br />
fonction d de D × D dans R +<br />
symétrie : d(a, b) = d(b, a)<br />
séparation : d(a, b) = 0 ⇔ a = b<br />
inégalité triangulaire : d(a, c) ≤ d(a, b) + d(b, c)<br />
19 / 114 F. <strong>Rossi</strong> Similarités
Distances et dissimilarités<br />
Distance<br />
sur un ensemble d’objets D<br />
fonction d de D × D dans R +<br />
symétrie : d(a, b) = d(b, a)<br />
séparation : d(a, b) = 0 ⇔ a = b<br />
inégalité triangulaire : d(a, c) ≤ d(a, b) + d(b, c)<br />
une dissimilarité ne vérifie pas nécessairement l’inégalité<br />
triangulaire :<br />
• très contre intuitif<br />
• téléportation : en passant par b, on va plus vite de a vers c<br />
qu’avec un chemin direct...<br />
une dissimilarité ne vérifie pas toujours la propriété de<br />
séparation<br />
19 / 114 F. <strong>Rossi</strong> Similarités
Dissimilarités et groupes<br />
idée naturelle : si ɛ est petit, le groupe suivant est<br />
homogène<br />
B(x, ɛ) = {y ∈ D|d(x, y) ≤ ɛ}<br />
la dissimilarité détermine la forme du groupe<br />
20 / 114 F. <strong>Rossi</strong> Similarités
Dissimilarités et groupes<br />
idée naturelle : si ɛ est petit, le groupe suivant est<br />
homogène<br />
B(x, ɛ) = {y ∈ D|d(x, y) ≤ ɛ}<br />
la dissimilarité détermine la forme du groupe<br />
dans R n<br />
−1.0 −0.5 0.0 0.5 1.0<br />
−1.0 −0.5 0.0 0.5 1.0<br />
−1.0 −0.5 0.0 0.5 1.0<br />
−1.0 −0.5 0.0 0.5 1.0<br />
−1.0 −0.5 0.0 0.5 1.0<br />
−1.0 −0.5 0.0 0.5 1.0<br />
d 1 d 2 d ∞<br />
20 / 114 F. <strong>Rossi</strong> Similarités
Exemple<br />
Données dans un<br />
carré<br />
0.0 0.2 0.4 0.6 0.8 1.0<br />
0.0 0.2 0.4 0.6 0.8 1.0<br />
21 / 114 F. <strong>Rossi</strong> Similarités
Exemple<br />
0.0 0.2 0.4 0.6 0.8 1.0<br />
Données dans un<br />
carré : d 1<br />
0.0 0.2 0.4 0.6 0.8 1.0<br />
21 / 114 F. <strong>Rossi</strong> Similarités
Exemple<br />
0.0 0.2 0.4 0.6 0.8 1.0<br />
Données dans un<br />
carré : d 2<br />
0.0 0.2 0.4 0.6 0.8 1.0<br />
21 / 114 F. <strong>Rossi</strong> Similarités
Exemple<br />
0.0 0.2 0.4 0.6 0.8 1.0<br />
Données dans un<br />
carré : d ∞<br />
0.0 0.2 0.4 0.6 0.8 1.0<br />
21 / 114 F. <strong>Rossi</strong> Similarités
Échelle<br />
pondération des variables :<br />
√ √√√ n∑<br />
d p (x, y) = p w i |x i − y i | p<br />
effet majeur sur les résultats :<br />
i=1<br />
Sepal.Width<br />
2 3 4 5<br />
1<br />
2<br />
3<br />
4<br />
Sepal.Width<br />
−2 −1 0 1 2 3<br />
1<br />
2<br />
3<br />
4<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
−2 −1 0 1 2 3<br />
Sepal.Length<br />
Sepal.Length<br />
22 / 114 F. <strong>Rossi</strong> Similarités
Données non numériques<br />
pas de solution générique<br />
pour chaque type de données la littérature scientifique<br />
propose de nombreuses (dis)similarités :<br />
• données binaires (présence/absence)<br />
• chaînes de caractères<br />
• textes<br />
• nœuds d’un graphe<br />
• etc.<br />
pas vraiment de consensus sur une bonne mesure pour un<br />
type donné<br />
données mixtes :<br />
• choisir les (dis)similarités individuelles<br />
• réaliser une combinaison (somme, moyenne, maximum,<br />
etc.)<br />
23 / 114 F. <strong>Rossi</strong> Similarités
Données binaires<br />
un objet est un vecteur de 0 et de 1, x = (x 1 , . . . , x n )<br />
x i ∈ {0, 1}<br />
pour comparer deux objets x et y on peut compter les<br />
co-occurences :<br />
x<br />
1 0<br />
y 1 a b<br />
0 c d<br />
chaque case compte les co-occurences, par ex. a est le<br />
nombre d’indices i pour lesquels x i = y i = 1<br />
on construit une similarité en combinant les a, b, c et d<br />
exemples :<br />
• a<br />
indice de Jaccard :<br />
• coefficient de Dice :<br />
a+b+c<br />
2a<br />
a+b+2c<br />
24 / 114 F. <strong>Rossi</strong> Similarités
Chaînes de caractères<br />
chaque objet est une chaîne de caractères dans un<br />
alphabet donné :<br />
• mot d’une langue ; alphabet de la langue<br />
• séquence ADN (protéine, gène) ; alphabet = {C, G, T , A}<br />
• trajectoire dans un site web ; alphabet = pages du site<br />
distance d’édition (Levenshtein, 1965) :<br />
• transformation de x en y par opérations élémentaires<br />
(insertion, suppression, substitution) : ATG → ACAG<br />
• d(x, y) : longueur de la plus petite séquence de<br />
transformations<br />
• calcul efficace par programmation dynamique (temps en<br />
produit des longueurs des chaînes)<br />
cf http://www.dcs.shef.ac.uk/~sam/stringmetrics.html pour<br />
de nombreux autres exemples<br />
généralisation aux arbres et aux graphes<br />
25 / 114 F. <strong>Rossi</strong> Similarités
Textes<br />
chaque objet est un texte (suite de mots)<br />
pré-traitement « linguistique » :<br />
• lemmatisation (passage à la racine linguistique)<br />
• suppression des mots « vides » (par ex. les articles)<br />
modèle vectoriel de Salton (1975) :<br />
• un texte est représenté par le vecteur des occurrences des<br />
lemmes<br />
• on applique ensuite des distances classiques sur R n (avec<br />
d’éventuelles pondérations) ou encore<br />
• la similarité cosinus :<br />
s cos(x, y) =<br />
• le coefficient de Tanimoto :<br />
s T (x, y) =<br />
x.y<br />
‖x‖‖y‖ :<br />
x.y<br />
‖x‖ 2 + ‖y‖ 2 − x.y<br />
26 / 114 F. <strong>Rossi</strong> Similarités
Nœuds d’un graphe<br />
chaque objet est un nœud d’un unique graphe<br />
exemple :<br />
• pages d’un site web<br />
• réactions chimiques dans un réseau métabolique<br />
• personnes dans un réseau social<br />
distances/similarités :<br />
• longueur du plus court chemin dans le graphe<br />
• temps moyen pour passer d’un nœud à un autre par une<br />
balade aléatoire<br />
• temps moyen symétrisé (avec retour)<br />
27 / 114 F. <strong>Rossi</strong> Similarités
en R<br />
package proxy :<br />
• nombreuses (dis)similarités pour les données binaires<br />
• distance d’édition<br />
package tm :<br />
• traitement du texte<br />
• s’appuie sur proxy pour les dissimilarités<br />
nœuds d’un graphe :<br />
• nombreux packages (igraph, graph, network, RBGL,<br />
etc.)<br />
• quelques distances mais rien de très complet<br />
package ade4 :<br />
• destiné à l’analyse de données écologiques<br />
• très nombreuses (dis)similarités et fonctions associées<br />
28 / 114 F. <strong>Rossi</strong> Similarités
Visualisation<br />
D = (d(x i , x j )) i,j est la matrice de (dis)similarités<br />
visualisation matricielle :<br />
• un pixel par couple<br />
• valeur représentée par la couleur (foncé : proche)<br />
palette uniforme<br />
palette proportionnelle<br />
29 / 114 F. <strong>Rossi</strong> Similarités
Ordre<br />
illisible sans un minimum d’ordre : problème de la sériation<br />
essayer de placer les petites dissimilarités autour de la<br />
diagonale<br />
30 / 114 F. <strong>Rossi</strong> Similarités
Ordre<br />
illisible sans un minimum d’ordre : problème de la sériation<br />
essayer de placer les petites dissimilarités autour de la<br />
diagonale<br />
aléatoire<br />
un peu d’ordre<br />
30 / 114 F. <strong>Rossi</strong> Similarités
Ordre<br />
illisible sans un minimum d’ordre : problème de la sériation<br />
essayer de placer les petites dissimilarités autour de la<br />
diagonale<br />
aléatoire<br />
problème associé à la classification<br />
un peu d’ordre<br />
30 / 114 F. <strong>Rossi</strong> Similarités
Exemple<br />
1.5 3.0 4.5 −0.5 1.0 2.5<br />
données Iris :<br />
dimension 4<br />
distance Euclidienne<br />
1.5 3.0 4.5<br />
Sepal.Length<br />
Sepal.Width<br />
4.5 6.0 7.5<br />
2 classes <br />
Petal.Length<br />
1 3 5 7<br />
−0.5 1.0 2.5<br />
Petal.Width<br />
4.5 6.0 7.5<br />
1 3 5 7<br />
31 / 114 F. <strong>Rossi</strong> Similarités
Exemple<br />
données Iris :<br />
dimension 4<br />
distance Euclidienne<br />
2 classes <br />
matrice non ordonnée<br />
31 / 114 F. <strong>Rossi</strong> Similarités
Exemple<br />
données Iris :<br />
dimension 4<br />
distance Euclidienne<br />
2 classes <br />
matrice non ordonnée<br />
sériation par 2 classes<br />
31 / 114 F. <strong>Rossi</strong> Similarités
Exemple<br />
1.5 3.0 4.5 −0.5 1.0 2.5<br />
données Iris :<br />
dimension 4<br />
distance Euclidienne<br />
1.5 3.0 4.5<br />
Sepal.Length<br />
Sepal.Width<br />
4.5 6.0 7.5<br />
2 classes <br />
matrice non ordonnée<br />
Petal.Length<br />
1 3 5 7<br />
sériation par 2 classes<br />
−0.5 1.0 2.5<br />
Petal.Width<br />
4.5 6.0 7.5<br />
1 3 5 7<br />
31 / 114 F. <strong>Rossi</strong> Similarités
En R<br />
fonction image (package graphics) :<br />
• s’applique à une matrice carrée<br />
• nombreuses options pour les couleurs, etc.<br />
• affichage « inversé » : diagonale montante<br />
package seriation :<br />
• nombreux algorithmes de sériation (fonction seriate)<br />
• fonction pimage en remplacement d’image dans l’ordre<br />
« naturel »<br />
32 / 114 F. <strong>Rossi</strong> Similarités
Projection/Plongement<br />
alternative à la représentation matricielle :<br />
• étant donnée D = (d(x i , x j )) i,j trouver un espace R p et des<br />
points (y i ) 1≤i≤N tels que ‖y i − y j ‖ ≃ d(x i , x j )<br />
• si possible avec p = 2 (ou p = 3)<br />
• très nombreuses variantes :<br />
• mesures de la qualité de la projection<br />
• préservation des similarités par des produits scalaires<br />
• etc.<br />
quand d(x i , x j ) = ‖x i − x j ‖ avec les (x i ) 1≤i≤N dans R q , on<br />
parle de projection<br />
sinon de plutôt de plongement<br />
un cas particulier important :<br />
• projection linéaire : y i = Px i pour un projecteur P fixé<br />
• mesure quadratique de la qualité de la projection<br />
• il s’agit de l’Analyse en Composantes Principales<br />
33 / 114 F. <strong>Rossi</strong> Similarités
Dissimilarités générales<br />
famille des algorithmes de Multi Dimensional Scaling<br />
méthode de Kruskal-Shepard : minimiser<br />
∑ (<br />
d(xi , x j ) − ‖y i − y j ‖ ) 2<br />
i≠j<br />
méthode de Sammon : minimiser<br />
(<br />
∑ d(xi , x j ) − ‖y i − y j ‖ ) 2<br />
i≠j<br />
d(x i , x j )<br />
ce qui favorise les petites distances<br />
nombreuses autres variantes<br />
34 / 114 F. <strong>Rossi</strong> Similarités
Exemple<br />
Données Iris<br />
PC2<br />
−3 −2 −1 0 1 2 3<br />
iris.sammon$points[,2]<br />
−3 −2 −1 0 1 2 3<br />
−3 −2 −1 0 1 2 3<br />
ACP<br />
PC1<br />
−4 −3 −2 −1 0 1 2 3<br />
iris.sammon$points[,1]<br />
Sammon<br />
35 / 114 F. <strong>Rossi</strong> Similarités
Exemple<br />
Club de karaté de<br />
Zachary<br />
liens d’amitié des 34<br />
membres<br />
distance du temps<br />
moyen d’aller-retour<br />
36 / 114 F. <strong>Rossi</strong> Similarités
Exemple<br />
Club de karaté de<br />
Zachary<br />
liens d’amitié des 34<br />
membres<br />
distance du temps<br />
moyen d’aller-retour<br />
sériation<br />
36 / 114 F. <strong>Rossi</strong> Similarités
Exemple<br />
Club de karaté de<br />
Zachary<br />
liens d’amitié des 34<br />
membres<br />
distance du temps<br />
moyen d’aller-retour<br />
Sammon<br />
36 / 114 F. <strong>Rossi</strong> Similarités
en R<br />
analyses factorielles :<br />
• fonction prcomp (package stats) pour l’ACP classique<br />
• package FactorMineR pour l’analyse factorielle en<br />
général (voir aussi les packages ade4 et vegan)<br />
Multi Dimensional Scaling et projections :<br />
• assez peu de choses modernes en R<br />
• sammon et isoMDS dans le package MASS<br />
• isomap et metaMDS dans le package vegan<br />
37 / 114 F. <strong>Rossi</strong> Similarités
Résumé<br />
classification : découverte de groupes homogènes et bien<br />
distincts les uns des autres dans un ensemble d’objets<br />
notion centrale en classification : (dis)similiarité<br />
ménagerie de (dis)similiarités :<br />
• normes dans R p<br />
• co-occurrences pour les données binaires<br />
• nombreuses solutions ad hoc pour divers types de données<br />
visualisation :<br />
• sériation : matrice des (dis)similiarités bien rangée<br />
• projection/plongement : représentation vectorielle de faible<br />
dimension<br />
38 / 114 F. <strong>Rossi</strong> Similarités
Plan<br />
Introduction<br />
Similarités<br />
Définitions<br />
Données numériques<br />
Données non numériques<br />
Visualisation<br />
<strong>Classification</strong> hiérarchique<br />
Modèle<br />
Algorithmes<br />
Exploitation des résultats<br />
Optimisation directe d’un critère de qualité<br />
Critères de qualité<br />
Optimisation<br />
Classes floues<br />
39 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Partition<br />
Partition<br />
Une partition de D est un ensemble de parties de D tel que :<br />
1. aucune partie n’est vide<br />
2. les parties sont disjointes deux à deux<br />
3. l’union des parties est D<br />
Remarque : en classification, les parties sont appelées les<br />
classes<br />
40 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Partition<br />
Partition<br />
Une partition de D est un ensemble de parties de D tel que :<br />
1. aucune partie n’est vide<br />
2. les parties sont disjointes deux à deux<br />
3. l’union des parties est D<br />
Remarque : en classification, les parties sont appelées les<br />
classes<br />
Ordre partiel sur les partitions<br />
Une partition est plus fine qu’une autre si chaque partie de la<br />
plus fine est incluse dans une partie de la moins fine<br />
40 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Partition<br />
Partition<br />
Une partition de D est un ensemble de parties de D tel que :<br />
1. aucune partie n’est vide<br />
2. les parties sont disjointes deux à deux<br />
3. l’union des parties est D<br />
Remarque : en classification, les parties sont appelées les<br />
classes<br />
Ordre partiel sur les partitions<br />
Une partition est plus fine qu’une autre si chaque partie de la<br />
plus fine est incluse dans une partie de la moins fine<br />
Exemple : { {1, 2}, {3, 4}, {5, 6} } ≺ { {1, 2, 3, 4}, {5, 6} }<br />
40 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Hiérarchie<br />
<strong>Classification</strong> hiérarchique<br />
Une classification hiérarchique de D est un ensemble de<br />
partitions totalement ordonnées de D, dont la partition la plus<br />
fine est l’ensemble des singletons et la plus grossière réduite à<br />
D tout entier<br />
41 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Hiérarchie<br />
<strong>Classification</strong> hiérarchique<br />
Une classification hiérarchique de D est un ensemble de<br />
partitions totalement ordonnées de D, dont la partition la plus<br />
fine est l’ensemble des singletons et la plus grossière réduite à<br />
D tout entier<br />
En pratique :<br />
une partition triviale au plus bas de la hiérarchie : chacun<br />
objet forme une classe<br />
à chaque niveau (passage à une partition moins fine) :<br />
fusion de classes<br />
une partition triviale au plus haut de la hiérarchie : tous les<br />
objets dans une seule classe<br />
41 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Dendrogramme<br />
Représentation graphique d’une<br />
classification hiérarchique par un<br />
arbre<br />
Phylogénie des cordés, par<br />
G. Nève & J.F. Mauffrey<br />
42 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Dendrogramme<br />
Représentation graphique d’une<br />
classification hiérarchique par un<br />
arbre<br />
A B C D E F<br />
Phylogénie des cordés, par<br />
G. Nève & J.F. Mauffrey<br />
42 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Dendrogramme<br />
Représentation graphique d’une<br />
classification hiérarchique par un<br />
arbre<br />
A B C D E F<br />
Phylogénie des cordés, par<br />
G. Nève & J.F. Mauffrey<br />
42 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Dendrogramme<br />
Représentation graphique d’une<br />
classification hiérarchique par un<br />
arbre<br />
A B C D E F<br />
Phylogénie des cordés, par<br />
G. Nève & J.F. Mauffrey<br />
42 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Dendrogramme<br />
Représentation graphique d’une<br />
classification hiérarchique par un<br />
arbre<br />
A B C D E F<br />
Phylogénie des cordés, par<br />
G. Nève & J.F. Mauffrey<br />
42 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Dendrogramme<br />
Représentation graphique d’une<br />
classification hiérarchique par un<br />
arbre<br />
A B C D E F<br />
Phylogénie des cordés, par<br />
G. Nève & J.F. Mauffrey<br />
42 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Dendrogramme<br />
Représentation graphique d’une<br />
classification hiérarchique par un<br />
arbre<br />
A B C D E F<br />
Phylogénie des cordés, par<br />
G. Nève & J.F. Mauffrey<br />
42 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Dendrogramme<br />
Représentation graphique d’une<br />
classification hiérarchique par un<br />
arbre<br />
A B C D E F<br />
Phylogénie des cordés, par<br />
G. Nève & J.F. Mauffrey<br />
42 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Dendrogramme<br />
résumé de la classification<br />
hiérarchique<br />
chaque palier correspond à<br />
une fusion de classes<br />
le niveau d’un palier donne une<br />
indication sur la qualité de la<br />
fusion correspondante<br />
A B C D E F<br />
43 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Dendrogramme<br />
résumé de la classification<br />
hiérarchique<br />
chaque palier correspond à<br />
une fusion de classes<br />
le niveau d’un palier donne une<br />
indication sur la qualité de la<br />
fusion correspondante<br />
coupure horizontale ⇒ partition<br />
A B C D E F<br />
43 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Dendrogramme<br />
résumé de la classification<br />
hiérarchique<br />
chaque palier correspond à<br />
une fusion de classes<br />
le niveau d’un palier donne une<br />
indication sur la qualité de la<br />
fusion correspondante<br />
coupure horizontale ⇒ partition<br />
A B C D E F<br />
43 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Dendrogramme<br />
résumé de la classification<br />
hiérarchique<br />
chaque palier correspond à<br />
une fusion de classes<br />
le niveau d’un palier donne une<br />
indication sur la qualité de la<br />
fusion correspondante<br />
coupure horizontale ⇒ partition<br />
attention : ordre des feuilles<br />
presque arbitraire !<br />
A B C D E F<br />
43 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Dendrogramme<br />
résumé de la classification<br />
hiérarchique<br />
chaque palier correspond à<br />
une fusion de classes<br />
le niveau d’un palier donne une<br />
indication sur la qualité de la<br />
fusion correspondante<br />
coupure horizontale ⇒ partition<br />
attention : ordre des feuilles<br />
presque arbitraire !<br />
D E B C A F<br />
43 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Algorithmes<br />
agrégation ou scission (ascendant ou descendant)<br />
ascendant :<br />
• la partition initiale est la plus fine<br />
• à chaque étape de l’algorithme, on fusionne (ou agrège)<br />
des classes dont l’union donne un groupe cohérent<br />
• construit naturellement une classification hiérarchique<br />
descendant :<br />
• la partition initiale est la plus grossière<br />
• à chaque étape de l’algorithme, on découpe (ou scinde)<br />
des classes trop peu cohérentes<br />
• construit naturellement une classification hiérarchique<br />
très nombreuses variantes : beaucoup d’algorithmes<br />
ascendants, assez peu d’algorithmes descendants<br />
44 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Approches ascendantes<br />
classification ascendante hiérarchique (CAH)<br />
algorithme (pour N objets) :<br />
1. partition initiale : chaque objet forme une classe<br />
2. pour i allant de 1 à N − 1 :<br />
2.1 choisir et fusionner deux classes parmi les N − i + 1<br />
question centrale : comment choisir les classes à<br />
fusionner <br />
45 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Approches ascendantes<br />
classification ascendante hiérarchique (CAH)<br />
algorithme (pour N objets) :<br />
1. partition initiale : chaque objet forme une classe<br />
2. pour i allant de 1 à N − 1 :<br />
2.1 choisir et fusionner deux classes parmi les N − i + 1<br />
question centrale : comment choisir les classes à<br />
fusionner <br />
solution :<br />
• choisir les deux classes les plus « proches »<br />
• extension de la dissimilarité entre objets à une dissimilarité<br />
entre classes<br />
la CAH s’applique à toute dissimilarité<br />
45 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Dissimilarités inter classes<br />
on considère deux classes A et B<br />
lien simple (saut minimum, single linkage) :<br />
d S (A, B) =<br />
min d(a, b)<br />
a∈A,b∈B<br />
lien complet (saut maximum, complete linkage) :<br />
d C (A, B) =<br />
lien moyen (average linkage) :<br />
d M (A, B) = 1<br />
|A||B|<br />
max d(a, b)<br />
a∈A,b∈B<br />
∑<br />
a∈A,b∈B<br />
d(a, b)<br />
niveau dans le dendrogramme : distance entre les classes<br />
fusionnées<br />
46 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Coût algorithmique<br />
boucle externe N − 1 étapes<br />
étape i :<br />
• N − i + 1 classes ⇒ (N−i+1)(N−i)<br />
2<br />
paires<br />
• recherche exhaustive en O ( N 2)<br />
coût total minimal en O ( N 3) avec une implémentation<br />
naïve<br />
comment calculer les d S∗ (A, B) en O (1) <br />
47 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Coût algorithmique<br />
boucle externe N − 1 étapes<br />
étape i :<br />
• N − i + 1 classes ⇒ (N−i+1)(N−i)<br />
2<br />
paires<br />
• recherche exhaustive en O ( N 2)<br />
coût total minimal en O ( N 3) avec une implémentation<br />
naïve<br />
comment calculer les d S∗ (A, B) en O (1) <br />
technique de mise à jour des dissimilarités :<br />
• tableau des dissimilarités entre classes<br />
• mise à jour à chaque fusion en O (N)<br />
• par exemple d S (A ∪ B, C) = min {d S (A, C), d S (B, C)}<br />
47 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Implémentation efficace<br />
file à priorités :<br />
• file de stockage avec insertion et suppression en O (log N)<br />
• un élément entre dans la file avec une priorité<br />
• obtention de l’élément de plus grande priorité en O (1)<br />
• l’élément de plus grande priorité sort en premier<br />
utilisation pour la CAH :<br />
• une file par classe : contient les distances aux autres<br />
classes<br />
• construction initiale en O ( N 2 log N )<br />
• recherche de la meilleure fusion en O (N)<br />
• mise à jour en O (N log N) (suppressions et insertions)<br />
coût total en O ( N 2 log N )<br />
des techniques basées sur des chaînes de plus proches<br />
voisinages conduisent à des algorithmes en O ( N 2)<br />
48 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
En R<br />
package stats :<br />
• fonction hclust(d,method="méthode")<br />
• d : une dissimilarité comme produite par dist (dans stats<br />
ou proxy, par exemple)<br />
• le paramètre method correspond au lien "single",<br />
"complete", "average" ou "ward"<br />
• fonctions d’affichage du dendrogramme (plot), de coupure<br />
(cutree), etc.<br />
package flashClust :<br />
• fonction flashClust d’interface identique à hclust<br />
• implémentation rapide en O ( N 2)<br />
• vitesses d’exécution incomparables (Core 2 Duo P8600) !<br />
N hclust flashClust<br />
1000 1.9 s 0.09 s<br />
5000 265 s 2.6 s<br />
49 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple<br />
Sepal.Width<br />
2 3 4 5<br />
Iris de Fisher/Anderson<br />
source : Wikipédia<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
50 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien simple<br />
hauteur<br />
0.1 0.2 0.3 0.4 0.5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
51 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien simple<br />
hauteur<br />
0.1 0.2 0.3 0.4 0.5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
52 classes<br />
51 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien simple<br />
hauteur<br />
0.1 0.2 0.3 0.4 0.5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
37 classes<br />
51 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien simple<br />
hauteur<br />
0.1 0.2 0.3 0.4 0.5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
15 classes<br />
51 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien simple<br />
hauteur<br />
0.1 0.2 0.3 0.4 0.5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
13 classes<br />
51 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien simple<br />
hauteur<br />
0.1 0.2 0.3 0.4 0.5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
10 classes<br />
51 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien simple<br />
hauteur<br />
0.1 0.2 0.3 0.4 0.5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
9 classes<br />
51 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien simple<br />
hauteur<br />
0.1 0.2 0.3 0.4 0.5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
5 classes<br />
51 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien simple<br />
hauteur<br />
0.1 0.2 0.3 0.4 0.5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
4 classes<br />
51 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien simple<br />
hauteur<br />
0.1 0.2 0.3 0.4 0.5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
3 classes<br />
51 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien simple<br />
hauteur<br />
0.1 0.2 0.3 0.4 0.5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
2 classes<br />
51 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Lien simple<br />
CAH par lien simple ⇔ arbre couvrant minimal<br />
effet de chaînage :<br />
• tendance à l’agrégation plutôt qu’à la création de nouvelles<br />
classes<br />
• classes très « longues »<br />
• classes déséquilibrées<br />
• mauvaise résistance au bruit<br />
52 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien complet<br />
hauteur<br />
0 1 2 3<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
53 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien complet<br />
hauteur<br />
0 1 2 3<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
52 classes<br />
53 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien complet<br />
hauteur<br />
0 1 2 3<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
37 classes<br />
53 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien complet<br />
hauteur<br />
0 1 2 3<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
15 classes<br />
53 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien complet<br />
hauteur<br />
0 1 2 3<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
13 classes<br />
53 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien complet<br />
hauteur<br />
0 1 2 3<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
10 classes<br />
53 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien complet<br />
hauteur<br />
0 1 2 3<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
9 classes<br />
53 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien complet<br />
hauteur<br />
0 1 2 3<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
5 classes<br />
53 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien complet<br />
hauteur<br />
0 1 2 3<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
4 classes<br />
53 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien complet<br />
hauteur<br />
0 1 2 3<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
3 classes<br />
53 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien complet<br />
hauteur<br />
0 1 2 3<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
2 classes<br />
53 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Lien complet<br />
comportement assez différent de celui du lien simple :<br />
• classes plus équilibrées<br />
• classes plus compactes mais proches les unes des autres<br />
54 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Lien complet<br />
comportement assez différent de celui du lien simple :<br />
• classes plus équilibrées<br />
• classes plus compactes mais proches les unes des autres<br />
Sepal.Width<br />
2 3 4 5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
lien simple<br />
5 classes<br />
Sepal.Length<br />
lien complet<br />
54 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Diamètre et séparation<br />
classification satisfaisante :<br />
• groupes homogènes<br />
• groupes bien séparés<br />
diamètre d’un groupe A<br />
D(A) =<br />
max d(a, b)<br />
a∈A, b∈A<br />
distances entre groupes déjà vues :<br />
• minimum<br />
• maximum<br />
• moyenne<br />
remarque : la distance moyenne entre élément sera<br />
étudiée plus loin...<br />
55 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Chaînage<br />
−4 −2 0 2 4<br />
2 4 6 8 10<br />
56 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Chaînage<br />
hauteur<br />
0.5 0.6 0.7 0.8 0.9 1.0<br />
−4 −2 0 2 4<br />
Lien simple<br />
2 4 6 8 10<br />
56 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Chaînage<br />
hauteur<br />
0.5 0.6 0.7 0.8 0.9 1.0<br />
−4 −2 0 2 4<br />
Lien simple<br />
2 4 6 8 10<br />
Diamètres 9, séparation 1<br />
56 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Chaînage<br />
hauteur<br />
0 2 4 6 8<br />
−4 −2 0 2 4<br />
Lien complet<br />
2 4 6 8 10<br />
56 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Chaînage<br />
hauteur<br />
0 2 4 6 8<br />
−4 −2 0 2 4<br />
Lien complet<br />
2 4 6 8 10<br />
Diamètres 3,64 et 5,10, séparation 0,5<br />
56 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Lien, diamètre et séparation<br />
lien simple :<br />
• D(A) n’est pas contrôlé par l’algorithme<br />
• classes avec des diamètres très différents<br />
• distances entre classes très faibles devant leur diamètre<br />
lien complet :<br />
• contrôle du diamètre : la fusion choisie est celle qui<br />
engendre l’accroissement le plus faible des diamètres des<br />
classes<br />
• pas de contrôle de la séparation : classes arbitrairement<br />
proches<br />
simple et complet : deux cas extrêmes<br />
lien moyen : intermédiaire<br />
57 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien moyen<br />
hauteur<br />
0.0 0.5 1.0 1.5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
58 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien moyen<br />
hauteur<br />
0.0 0.5 1.0 1.5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
52 classes<br />
58 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien moyen<br />
hauteur<br />
0.0 0.5 1.0 1.5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
37 classes<br />
58 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien moyen<br />
hauteur<br />
0.0 0.5 1.0 1.5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
15 classes<br />
58 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien moyen<br />
hauteur<br />
0.0 0.5 1.0 1.5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
13 classes<br />
58 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien moyen<br />
hauteur<br />
0.0 0.5 1.0 1.5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
10 classes<br />
58 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien moyen<br />
hauteur<br />
0.0 0.5 1.0 1.5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
9 classes<br />
58 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien moyen<br />
hauteur<br />
0.0 0.5 1.0 1.5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
5 classes<br />
58 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien moyen<br />
hauteur<br />
0.0 0.5 1.0 1.5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
4 classes<br />
58 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien moyen<br />
hauteur<br />
0.0 0.5 1.0 1.5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
3 classes<br />
58 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : lien moyen<br />
hauteur<br />
0.0 0.5 1.0 1.5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
2 classes<br />
58 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Comparaison<br />
simple complet moyen<br />
59 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Qualité globale<br />
le lien moyen donne généralement des résultats plus<br />
satisfaisants :<br />
• classes équilibrées (bon contrôle du diamètre)<br />
• bon équilibre entre la séparation et le diamètre<br />
inconvénient : pas de garantie globale sur la qualité d’une<br />
partition<br />
60 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Qualité globale<br />
le lien moyen donne généralement des résultats plus<br />
satisfaisants :<br />
• classes équilibrées (bon contrôle du diamètre)<br />
• bon équilibre entre la séparation et le diamètre<br />
inconvénient : pas de garantie globale sur la qualité d’une<br />
partition<br />
approche alternative : définir un critère de qualité d’une<br />
partition et essayer de l’optimiser<br />
exemple : l’inertie d’une partition P 1 , . . . , P K :<br />
K∑<br />
k=1<br />
1<br />
|P k |<br />
∑<br />
a∈P k , b∈P k<br />
d(a, b)<br />
60 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Méthode de Ward<br />
optimisation de l’inertie<br />
à chaque étape, on fusionne les classes produisent la<br />
partition d’inertie la plus faible<br />
algorithme similaire aux autres méthodes :<br />
• la dissimilarité est remplacée par la mesure ∆(A, B)<br />
d’accroissement d’inertie induit par la fusion de A et B<br />
• mise à jour des accroissements en O (1)<br />
• implémentation naïve en O ( N 3) , efficace en O ( N 2 log N ) ,<br />
optimale en O ( N 2)<br />
niveau dans le dendrogramme : accroissement d’inertie<br />
induit par la fusion correspondante<br />
61 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : méthode de Ward<br />
hauteur<br />
0 10 20 30 40<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
62 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : méthode de Ward<br />
hauteur<br />
0 10 20 30 40<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
52 classes<br />
62 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : méthode de Ward<br />
hauteur<br />
0 10 20 30 40<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
37 classes<br />
62 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : méthode de Ward<br />
hauteur<br />
0 10 20 30 40<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
15 classes<br />
62 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : méthode de Ward<br />
hauteur<br />
0 10 20 30 40<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
13 classes<br />
62 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : méthode de Ward<br />
hauteur<br />
0 10 20 30 40<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
10 classes<br />
62 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : méthode de Ward<br />
hauteur<br />
0 10 20 30 40<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
9 classes<br />
62 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : méthode de Ward<br />
hauteur<br />
0 10 20 30 40<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
5 classes<br />
62 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : méthode de Ward<br />
hauteur<br />
0 10 20 30 40<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
4 classes<br />
62 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : méthode de Ward<br />
hauteur<br />
0 10 20 30 40<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
3 classes<br />
62 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : méthode de Ward<br />
hauteur<br />
0 10 20 30 40<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
2 classes<br />
62 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Comparaison<br />
complet moyen Ward<br />
63 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Approches descendantes<br />
algorithme :<br />
1. partition initiale : tous les objets dans une même classe<br />
2. pour i allant de 1 à N − 1 :<br />
2.1 choisir une classe à scinder parmi les i<br />
2.2 scinder la classe<br />
moins répandues que les approches ascendantes :<br />
• choix de la classe à scinder<br />
• puis aspect combinatoire : N 2 fusions contre 2 N−1<br />
partitions binaires !<br />
quelques méthodes heuristiques, par exemple :<br />
• scinder la classe de plus grand diamètre<br />
• scission itérative : enlever l’élément le plus éloigné des<br />
autres en moyenne et itérer<br />
64 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : méthode Diana<br />
Kaufman et Rousseeuw<br />
hauteur<br />
0 1 2 3<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
dendrogramme<br />
65 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : méthode Diana<br />
Kaufman et Rousseeuw<br />
hauteur<br />
0 1 2 3<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
52 classes<br />
65 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : méthode Diana<br />
Kaufman et Rousseeuw<br />
hauteur<br />
0 1 2 3<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
37 classes<br />
65 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : méthode Diana<br />
Kaufman et Rousseeuw<br />
hauteur<br />
0 1 2 3<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
15 classes<br />
65 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : méthode Diana<br />
Kaufman et Rousseeuw<br />
hauteur<br />
0 1 2 3<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
13 classes<br />
65 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : méthode Diana<br />
Kaufman et Rousseeuw<br />
hauteur<br />
0 1 2 3<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
10 classes<br />
65 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : méthode Diana<br />
Kaufman et Rousseeuw<br />
hauteur<br />
0 1 2 3<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
9 classes<br />
65 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : méthode Diana<br />
Kaufman et Rousseeuw<br />
hauteur<br />
0 1 2 3<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
5 classes<br />
65 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : méthode Diana<br />
Kaufman et Rousseeuw<br />
hauteur<br />
0 1 2 3<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
4 classes<br />
65 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : méthode Diana<br />
Kaufman et Rousseeuw<br />
hauteur<br />
0 1 2 3<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
3 classes<br />
65 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple : méthode Diana<br />
Kaufman et Rousseeuw<br />
hauteur<br />
0 1 2 3<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
dendrogramme<br />
Sepal.Length<br />
2 classes<br />
65 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Comparaison<br />
moyen Ward Diana<br />
66 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
En R<br />
package cluster<br />
fonction diana(d) avec d une dissimilarité<br />
la fonction as.hclust transforme le résultat de diana en<br />
une structure hiérarchique compatible avec celle de<br />
hclust :<br />
• visualisation<br />
• coupure<br />
• etc.<br />
la fonction agnes du package propose aussi de la<br />
classification ascendante hiérarchique<br />
67 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Questions pratiques<br />
quelle dissimilarité <br />
quel lien choisir en CAH <br />
que faire du résultat <br />
• interprétation du dendrogramme<br />
• choix d’une classification<br />
68 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Choix du critère<br />
il vaut mieux éviter le lien simple<br />
pas de règle universelle sur les autres liens, mais on<br />
préfère souvent le lien moyen et la méthode de Ward au<br />
lien complet<br />
l’influence de la dissimilarité est au moins aussi importante<br />
que celle du lien<br />
le but est exploratoire :<br />
• tester plusieurs dissimilarités<br />
• tester plusieurs liens<br />
• comparer les classifications obtenues<br />
69 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Dendrogramme<br />
représentation très riche<br />
70 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Dendrogramme<br />
représentation très riche, mais :<br />
• l’ordre des branches (gauche à droite) est essentiellement<br />
arbitraire (2 N−2 possibilités)<br />
• l’arbre décrit le résultat de l’algorithme pas les données<br />
le niveau des paliers donne la valeur du critère utilisé pour<br />
les fusions<br />
70 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Dendrogramme<br />
représentation très riche, mais :<br />
• l’ordre des branches (gauche à droite) est essentiellement<br />
arbitraire (2 N−2 possibilités)<br />
• l’arbre décrit le résultat de l’algorithme pas les données<br />
le niveau des paliers donne la valeur du critère utilisé pour<br />
les fusions :<br />
• des paliers proches indiquent généralement des fusions<br />
équivalentes : l’ordre de celles-ci est arbitraire<br />
• des écarts importants entre les paliers correspondent<br />
souvent à la présence de « vraies » classes dans les<br />
données<br />
70 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Exemple<br />
complet<br />
moyen<br />
hauteur<br />
0 1 2 3<br />
hauteur<br />
0.0 0.5 1.0 1.5<br />
Ward<br />
Diana<br />
hauteur<br />
0 10 20 30 40<br />
hauteur<br />
0 1 2 3<br />
71 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Courbe des hauteurs des paliers<br />
complet<br />
moyen<br />
Hauteur<br />
0 1 2 3<br />
Hauteur<br />
0.5 1.0 1.5<br />
0 20 40 60 80 100 120<br />
Classes<br />
Ward<br />
0 20 40 60 80 100 120<br />
Classes<br />
Diana<br />
Hauteur<br />
0 10 20 30 40<br />
Hauteur<br />
0 1 2 3<br />
0 20 40 60 80 100 120<br />
Classes<br />
0 20 40 60 80 100 120<br />
Classes<br />
72 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Choix du nombre de classes<br />
littérature scientifique très riche<br />
73 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Choix du nombre de classes<br />
littérature scientifique très riche mais pas de solution<br />
consensuelle :<br />
• problème intrinsèquement mal posé : plus la partition est<br />
fine, « meilleure » elle est<br />
• algorithmes stables (cf les cours sur l’apprentissage<br />
supervisé)<br />
solution heuristique classique :<br />
• étudier l’évolution de l’inertie avec le nombre de classes<br />
• un saut « significatif » ou un « coude » dans la courbe<br />
indique le nombre de classes<br />
• formalisation possible par la Gap statistics de Tibshirani,<br />
Walther et Hastie<br />
73 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Courbe de l’inertie totale<br />
Inertie<br />
0 20 40 60 80 100 120<br />
complet<br />
Inertie<br />
0 20 40 60 80 100 120<br />
moyen<br />
0 20 40 60 80 100 120<br />
Classes<br />
Ward<br />
0 20 40 60 80 100 120<br />
Classes<br />
Diana<br />
Inertie<br />
0 20 40 60 80 100<br />
Inertie<br />
0 20 40 60 80<br />
0 20 40 60 80 100 120<br />
Classes<br />
0 20 40 60 80 100 120<br />
Classes<br />
74 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Résumé<br />
classification hiérarchique :<br />
• ensemble totalement ordonné de partitions<br />
• visualisation par un dendrogramme<br />
• algorithmes ascendants en O ( N 2)<br />
• quelques algorithmes descendants<br />
• applicables en général à toute mesure de dissimilarité<br />
questions génériques :<br />
• choix d’une (dis)similarité<br />
• choix d’une méthode hiérarchique<br />
• choix d’un nombre de classes<br />
solutions exploratoires : comparer les résultats par tous les<br />
moyens possibles (dendrogramme, courbe des paliers,<br />
courbe de l’inertie, sériation, projection/plongement)<br />
75 / 114 F. <strong>Rossi</strong> <strong>Classification</strong> hiérarchique
Plan<br />
Introduction<br />
Similarités<br />
Définitions<br />
Données numériques<br />
Données non numériques<br />
Visualisation<br />
<strong>Classification</strong> hiérarchique<br />
Modèle<br />
Algorithmes<br />
Exploitation des résultats<br />
Optimisation directe d’un critère de qualité<br />
Critères de qualité<br />
Optimisation<br />
Classes floues<br />
76 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Critères de qualité<br />
qu’est-ce qu’une bonne classification <br />
77 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Critères de qualité<br />
qu’est-ce qu’une bonne classification <br />
• classes homogènes<br />
• classes bien séparées<br />
77 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Critères de qualité<br />
qu’est-ce qu’une bonne classification <br />
• classes homogènes<br />
• classes bien séparées<br />
critères « naturels » :<br />
• non-homogénéité de A (doit être petit)<br />
∑<br />
d(a, b)<br />
a∈A, b∈A<br />
• séparation entre A et B (doit être grand)<br />
∑<br />
d(a, b)<br />
a∈A, b∈B<br />
77 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Critères de qualité<br />
qu’est-ce qu’une bonne classification <br />
• classes homogènes<br />
• classes bien séparées<br />
critères « naturels » :<br />
• non-homogénéité de A (doit être petit)<br />
∑<br />
d(a, b)<br />
a∈A, b∈A<br />
• séparation entre A et B (doit être grand)<br />
∑<br />
d(a, b)<br />
a∈A, b∈B<br />
classification : répartition des dissimilarités, petites dans<br />
les classes, grandes en dehors<br />
77 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Qualité d’une partition<br />
partition : chaque objet est dans une classe<br />
toutes les dissimilarités sont prises en compte :<br />
• pour toute partition P = (P 1 , . . . , P K )<br />
⎛<br />
⎞<br />
T = ∑ K∑<br />
d(a, b) = ⎝<br />
∑<br />
d(a, b) +<br />
∑<br />
d(a, b) ⎠<br />
a,b<br />
k=1 a∈P k ,b∈P k a∈P k ,b∉P k<br />
• donc maximiser l’homogénéité implique une maximisation<br />
de la séparation entre classes<br />
on préfère équilibrer les contributions de chaque classe et<br />
mesurer la non-homogénéité par l’inertie intra-classe<br />
K∑<br />
k=1<br />
1<br />
|P k |<br />
∑<br />
a∈P k ,b∈P k<br />
d(a, b)<br />
78 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Quantification vectorielle<br />
but : résumer (x i ) 1≤i≤N par (y i ) 1≤k≤K (le tout dans R p )<br />
un algorithme de quantification vectorielle produit :<br />
• les représentants (y i ) 1≤k≤K<br />
• une partition P = (P 1 , . . . , P K ) : les éléments de P k sont<br />
résumés par le vecteur y k<br />
critère d’erreur<br />
E(y, P) =<br />
K∑ ∑<br />
k=1<br />
pour P fixé, le minimum atteint pour<br />
ŷ k = 1<br />
|P K |<br />
x∈P k<br />
‖x − y k ‖ 2<br />
∑<br />
x∈P k<br />
x<br />
79 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Quantification et classification<br />
on montre que pour les ŷ k optimaux, on a<br />
E(ŷ, P) = 1 2<br />
K∑<br />
k=1<br />
1<br />
|P k |<br />
∑<br />
a∈P k ,b∈P k<br />
‖a − b‖ 2<br />
donc le critère de non homogénéité correspond au critère<br />
de quantification vectorielle pour d(a, b) = ‖a − b‖ 2<br />
on a aussi<br />
K∑ ∑<br />
‖x − ŷ k ‖ 2 + 1 ∑<br />
|P k ||P k |‖ŷ k − ŷ l ‖ 2 = constante,<br />
2<br />
x∈P k k,l<br />
k=1<br />
donc des classes homogènes ont des représentants bien<br />
séparés<br />
80 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
<strong>Classification</strong> et optimisation<br />
optimiser l’inertie intra-classe semble donc une bonne idée<br />
c’est le principe de l’algorithme de Ward, mais pas des<br />
autres CAH<br />
81 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
<strong>Classification</strong> et optimisation<br />
optimiser l’inertie intra-classe semble donc une bonne idée<br />
c’est le principe de l’algorithme de Ward, mais pas des<br />
autres CAH<br />
solution alternative aux méthodes hiérarchiques : optimiser<br />
directement l’inertie intra-classe<br />
difficulté :<br />
• optimisation combinatoire<br />
• par exemple 2 N−1 partitions en 2 classes pour N<br />
observations<br />
81 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Quantification vectorielle<br />
on cherche à minimiser<br />
K∑ ∑<br />
E(y, P) = ‖x − y k ‖ 2<br />
k=1 x∈P k<br />
si on fixe y ou P, le problème est facile :<br />
min<br />
P<br />
K ∑<br />
k=1<br />
∑<br />
x∈P k<br />
‖x − y k ‖ 2 = ∑ x<br />
min<br />
k<br />
‖x − y k ‖ 2<br />
min<br />
y<br />
K ∑<br />
k=1<br />
∑<br />
x∈P k<br />
‖x − y k ‖ 2 = 1 2<br />
K∑<br />
k=1<br />
1<br />
|P k |<br />
∑<br />
a∈P k ,b∈P k<br />
‖a − b‖ 2<br />
82 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Optimisation difficile<br />
optimiser directement<br />
P ↦→ 1 2<br />
K∑<br />
k=1<br />
1<br />
|P k |<br />
∑<br />
a∈P k ,b∈P k<br />
‖a − b‖ 2<br />
est un problème combinatoire difficile<br />
optimiser directement<br />
y ↦→ ∑ x<br />
min<br />
k<br />
‖x − y k ‖ 2<br />
est difficile car la fonction n’est ni convexe ni C 1 (nombreux<br />
minima locaux)<br />
83 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Optimisation alternée<br />
heuristique très simple : pour optimiser F(u, v) par rapport<br />
à u et v, on applique l’algorithme suivant :<br />
1. configuration initiale u 0 aléatoire<br />
2. v k = arg min v F (u k−1 , v)<br />
3. u k = arg min u F(u, v k )<br />
4. retour en 2 jusqu’à convergence<br />
on montre facilement que cet algorithme converge vers un<br />
minimum local<br />
84 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Optimisation alternée<br />
heuristique très simple : pour optimiser F(u, v) par rapport<br />
à u et v, on applique l’algorithme suivant :<br />
1. configuration initiale u 0 aléatoire<br />
2. v k = arg min v F (u k−1 , v)<br />
3. u k = arg min u F(u, v k )<br />
4. retour en 2 jusqu’à convergence<br />
on montre facilement que cet algorithme converge vers un<br />
minimum local<br />
plusieurs points de départ aléatoire : plus de chance de<br />
tomber dans un meilleur minimum<br />
aucune garantie de trouver un minimum global<br />
84 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Optimisation alternée<br />
heuristique très simple : pour optimiser F(u, v) par rapport<br />
à u et v, on applique l’algorithme suivant :<br />
1. configuration initiale u 0 aléatoire<br />
2. v k = arg min v F (u k−1 , v)<br />
3. u k = arg min u F(u, v k )<br />
4. retour en 2 jusqu’à convergence<br />
on montre facilement que cet algorithme converge vers un<br />
minimum local<br />
plusieurs points de départ aléatoire : plus de chance de<br />
tomber dans un meilleur minimum<br />
aucune garantie de trouver un minimum global<br />
mais les algorithmes hiérarchiques ne sont pas non plus<br />
optimaux !<br />
84 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
K-means<br />
l’un des algorithmes de classification les plus connus<br />
réinventé régulièrement<br />
optimisation alternée de l’inertie intra-classe euclidienne :<br />
1. choix aléatoire des y = (y k ) 1≤k≤K<br />
2. affectation<br />
3. représentation<br />
P k =<br />
{<br />
x<br />
∣<br />
}<br />
k = arg min ‖x − y k‖<br />
1≤l≤K<br />
y k = 1 ∑<br />
x<br />
|P K |<br />
x∈P k<br />
4. retour en 2 jusqu’à convergence<br />
les y = (y k ) 1≤k≤K sont les prototypes ou centroïdes<br />
85 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
5 6 7 8<br />
Sepal.Length<br />
86 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
5 6 7 8<br />
Sepal.Length<br />
86 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
5 6 7 8<br />
Sepal.Length<br />
86 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
5 6 7 8<br />
Sepal.Length<br />
86 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
5 6 7 8<br />
Sepal.Length<br />
86 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
5 6 7 8<br />
Sepal.Length<br />
86 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
5 6 7 8<br />
Sepal.Length<br />
86 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
5 6 7 8<br />
Sepal.Length<br />
86 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
5 6 7 8<br />
Sepal.Length<br />
86 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
5 6 7 8<br />
Sepal.Length<br />
86 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
5 6 7 8<br />
Sepal.Length<br />
86 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
5 6 7 8<br />
Sepal.Length<br />
86 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
5 6 7 8<br />
Sepal.Length<br />
86 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
5 6 7 8<br />
Sepal.Length<br />
86 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
5 6 7 8<br />
Sepal.Length<br />
86 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
En pratique<br />
convergence rapide<br />
coût algorithmique faible :<br />
• N données en dimension p, K classes<br />
• affectation : O (NKp)<br />
• représentation : O (Np)<br />
mais plus élevé qu’une CAH si on veut toutes les partitions<br />
pour K allant de 2 à N − 1<br />
87 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
En pratique<br />
convergence rapide<br />
coût algorithmique faible :<br />
• N données en dimension p, K classes<br />
• affectation : O (NKp)<br />
• représentation : O (Np)<br />
mais plus élevé qu’une CAH si on veut toutes les partitions<br />
pour K allant de 2 à N − 1<br />
choix aléatoire des y = (y k ) 1≤k≤K<br />
• parmi les x i<br />
• dans leur hypercube (hypersphère) englobant(e)<br />
tester de nombreux tirages et garder le meilleur (au sens<br />
de l’inertie intra-classe)<br />
87 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Plusieurs initialisations<br />
Sepal.Width<br />
2 3 4 5<br />
Sepal.Width<br />
2 3 4 5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.5 6.5 7.5<br />
Sepal.Length<br />
4.5 5.5 6.5 7.5<br />
Sepal.Length<br />
4.5 5.5 6.5 7.5<br />
Sepal.Length<br />
Sepal.Width<br />
2 3 4 5<br />
Sepal.Width<br />
2 3 4 5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.5 6.5 7.5<br />
Sepal.Length<br />
4.5 5.5 6.5 7.5<br />
Sepal.Length<br />
4.5 5.5 6.5 7.5<br />
Sepal.Length<br />
88 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
en R<br />
fonction kmeans dans le package stats :<br />
• kmeans(x,centers,iter.max=10,nstart=1)<br />
• nstart permet d’essayer plusieurs initialisations aléatoires<br />
• la valeur par défaut d’iter.max est souvent trop faible<br />
plusieurs autres implémentations :<br />
• package cclust<br />
• package flexclust<br />
• etc.<br />
89 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Dissimilarités<br />
l’algorithme des K-means ne s’applique qu’à des données<br />
de R p avec une norme de Minkowski<br />
par exemple pour d 1 , les y optimaux sont définis par<br />
y k = médiane(P k ) = arg min<br />
∑<br />
u∈R p<br />
x∈P k<br />
p∑<br />
|x j − u j |<br />
j=1<br />
généralisation :<br />
• quantification « non vectorielle »<br />
• trouver y = (y k ) 1≤k≤K et une partition P = (P 1 , . . . , P K ) qui<br />
minimisent<br />
K∑ ∑<br />
E(y, P) = d(x, y k )<br />
k=1 x∈P k<br />
90 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Dissimilarités<br />
l’algorithme des K-means ne s’applique qu’à des données<br />
de R p avec une norme de Minkowski<br />
par exemple pour d 1 , les y optimaux sont définis par<br />
y k = médiane(P k ) = arg min<br />
∑<br />
u∈R p<br />
x∈P k<br />
p∑<br />
|x j − u j |<br />
j=1<br />
généralisation :<br />
• quantification « non vectorielle »<br />
• trouver y = (y k ) 1≤k≤K et une partition P = (P 1 , . . . , P K ) qui<br />
minimisent<br />
K∑ ∑<br />
E(y, P) = d(x, y k )<br />
k=1 x∈P k<br />
• on contraint les y k à être des x i bien choisis<br />
90 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
K-medoids<br />
K-means pour une dissimilarité arbitraire<br />
optimisation alternée :<br />
1. choix aléatoire des y = (y k ) 1≤k≤K comme sous-ensemble<br />
des D = (x i ) 1≤i≤N<br />
2. affectation<br />
P k =<br />
{<br />
x<br />
∣<br />
}<br />
k = arg min d(x, y k)<br />
1≤l≤K<br />
3. représentation<br />
∑<br />
y k = arg min d(x, y)<br />
y∈D<br />
x∈P k<br />
4. retour en 2 jusqu’à convergence<br />
91 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
En pratique<br />
le choix des prototypes dans les données permet<br />
d’appliquer l’algorithme à tout ensemble sur lequel est<br />
défini une dissimilarité<br />
convergence rapide<br />
coût algorithmique élevé :<br />
• affectation en O (NK )<br />
• mais recherche exhaustive pour la représentation :<br />
O ( N 2 K )<br />
sensible à l’initialisation : tester plusieurs initialisations<br />
variante sur une heuristique voisine : Partition Around<br />
Medoids (PAM) de Kaufman et Rousseeuw<br />
92 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
Sepal.Width<br />
2 3 4 5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
d 2<br />
Sepal.Width<br />
2 3 4 5<br />
Sepal.Width<br />
2 3 4 5<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
d 1<br />
Sepal.Length<br />
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0<br />
Sepal.Length<br />
d max<br />
93 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Limitations<br />
pour la distance euclidienne, optimiser l’inertie intra-classe<br />
est équivalent à optimiser l’erreur de quantification<br />
c’est faux pour une dissimilarité arbitraire<br />
les K-medoids optimisent<br />
et n’optimisent pas<br />
K∑<br />
k=1<br />
K∑ ∑<br />
k=1<br />
1<br />
|P k |<br />
x∈P k<br />
d(x, y k )<br />
∑<br />
a∈P k ,b∈P k<br />
d(a, b)<br />
différences importantes si la dissimilarité n’est pas<br />
métrique<br />
94 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
En R<br />
pas d’implémentation des K-medoids<br />
package cluster :<br />
• fonction pam : implémente l’algorithme PAM<br />
• fonction clara : couche au dessus de PAM pour les<br />
grands jeux de données ; ne traite que les distances<br />
euclidiennes et Manhattan<br />
package flexclust :<br />
• cadre général pour des algorithmes de type K-means<br />
• fonction kcca : k-means pour distances euclidiennes,<br />
Manhattan et quelques autres<br />
95 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Autres stratégies<br />
beaucoup d’autres stratégies d’optimisation pour l’inertie<br />
intra-classe et l’erreur de quantification<br />
recuit :<br />
• méthodes inspirées de la physique statistique : introduire<br />
une forme d’agitation thermique pour éviter les minima<br />
locaux<br />
• recuit simulé ou recuit déterministe<br />
• méthodes associées comme Neural Gas<br />
algorithmes en ligne :<br />
• optimiser exemple par exemple<br />
• règles de la forme<br />
y k ← αy k + (1 − α)x i<br />
heuristiques : échanges, « bonne « configuration initiale,<br />
etc.<br />
96 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Résumé<br />
classification par prototypes :<br />
• K-means et K-medoids<br />
• applicables à toute mesure de dissimilarité<br />
• produit une partition<br />
• sensible aux conditions initiales<br />
point crucial : définir une mesure de qualité et l’optimiser<br />
comparée aux méthodes hiérarchiques :<br />
+ optimise un critère de qualité<br />
+ meilleurs résultats à K fixé<br />
= même ordre de grandeur pour le temps calcul<br />
= mêmes problèmes d’exploitation (nombre de classes,<br />
dissimilarités, etc.)<br />
- non déterministe<br />
- pas de structure générale de type dendrogramme<br />
97 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Classes « floues »<br />
degré d’appartenance : chaque objet appartient plus ou<br />
moins à chaque classe<br />
matrice d’affectation pour N objets dans K classes,<br />
M 1≤i≤N,1≤k≤K :<br />
• M i,k ∈ [0, 1] : degré d’appartenance entre 0 et 1<br />
• ∑ K<br />
k=1 M ik = 1 : appartenance totale de 1<br />
• cas classique : M i,k ∈ {0, 1}<br />
interprétations de M ik :<br />
• degré d’appartenance de x i à la classe k : logique floue<br />
• probabilité d’appartenance de x i à la classe k : approches<br />
dites à modèle<br />
98 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Quantification floue<br />
critère :<br />
E(y, M) =<br />
K∑<br />
k=1 i=1<br />
rôle de b :<br />
• intensité du mélange des classes<br />
• b = 1 : K-means classique<br />
• b > 1 : flou<br />
N∑<br />
Mik b ‖x i − y k ‖ 2<br />
l’optimisation doit se faire sous les contraintes sur M<br />
généralisation immédiate au cas d’une dissimilarité<br />
99 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
K-means flous<br />
optimisation alternée du critère :<br />
1. choix aléatoire des y = (y k ) 1≤k≤K<br />
2. calcul des d ik = ‖x − y k ‖ 2<br />
3. affectation floue (optimisation par rapport à M)<br />
M ik =<br />
(1/d ik) 1/(b−1)<br />
∑ K<br />
j=1 (1/d ij) 1/(b−1)<br />
4. représentation (optimisation par rapport à y)<br />
y k =<br />
1<br />
∑ N<br />
j=1 Mb jk<br />
5. retour en 2 jusqu’à convergence<br />
N∑<br />
i=1<br />
M b<br />
ik x i<br />
100 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
4 5 6 7 8<br />
Sepal.Length<br />
101 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
b=1.1<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
4 5 6 7 8<br />
Sepal.Length<br />
101 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
b=1.2<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
4 5 6 7 8<br />
Sepal.Length<br />
101 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
b=1.5<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
4 5 6 7 8<br />
Sepal.Length<br />
101 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
b=2<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
4 5 6 7 8<br />
Sepal.Length<br />
101 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
b=5<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
4 5 6 7 8<br />
Sepal.Length<br />
101 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
b=10<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
4 5 6 7 8<br />
Sepal.Length<br />
101 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
b=20<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
4 5 6 7 8<br />
Sepal.Length<br />
101 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
b=20<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
4 5 6 7 8<br />
Sepal.Length<br />
101 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
b=20<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
4 5 6 7 8<br />
Sepal.Length<br />
101 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
En R<br />
package cluster :<br />
• fonction fanny<br />
• applicable à toute dissimilarité<br />
package e1071 :<br />
• fonction cmeans<br />
• distance euclidienne ou Manhattan<br />
102 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Approche probabiliste<br />
modèle génératif des données :<br />
• choisir une distribution paramétrée pour les données<br />
• déterminer les paramètres optimaux par maximum de<br />
vraisemblance<br />
modèle pour des données réparties en classes :<br />
• K classes<br />
• probabilité a priori de la classe k, δ k ( ∑ K<br />
k=1 δ k = 1)<br />
• ensemble de paramètres noté θ k pour la classe k<br />
• densité des observations dans la classe k, p k (x|θ k )<br />
• modèle de mélange<br />
p(x|θ, δ) =<br />
K∑<br />
δ k p k (x|θ k )<br />
k=1<br />
• on engendre un x en tirant au hasard une classe, puis en<br />
utilisant la densité de cette classe pour fabrique x<br />
103 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Mélange de gaussiennes<br />
modèle le plus classique pour la classification<br />
dans une classe x est distribuée selon une loi normale<br />
N(µ, Σ) de densité<br />
p(x|µ, Σ) =<br />
pour des x dans R p<br />
1<br />
(2π) p/2 |Σ| 1/2 e− 1 2 (x−µ)T Σ −1 (x−µ)<br />
µ est le vecteur moyenne, Σ la matrice de covariance (|Σ|<br />
est son déterminant)<br />
dans R<br />
p(x|µ, σ) = 1 √<br />
2πσ<br />
e − 1<br />
2σ 2 (x−µ)2<br />
104 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Maximum de vraisemblance<br />
vraisemblance d’une observation x, la densité p(x)<br />
pour un ensemble d’observations indépendantes<br />
D = (x i ) 1≤i≤N , la vraisemblance est le produit ∏ N<br />
i=1 p(x i)<br />
on cherche le modèle (c.-à-d. les paramètres) les plus<br />
vraisemblables en maximisant la vraisemblance ou son<br />
logarithme<br />
105 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Maximum de vraisemblance<br />
vraisemblance d’une observation x, la densité p(x)<br />
pour un ensemble d’observations indépendantes<br />
D = (x i ) 1≤i≤N , la vraisemblance est le produit ∏ N<br />
i=1 p(x i)<br />
on cherche le modèle (c.-à-d. les paramètres) les plus<br />
vraisemblables en maximisant la vraisemblance ou son<br />
logarithme<br />
pour le modèle de mélange, on maximise par rapport à θ, δ<br />
L(D|θ, δ) =<br />
(<br />
N∑ K<br />
)<br />
∑<br />
ln δ k p k (x i |θ k )<br />
i=1<br />
k=1<br />
c’est un problème difficile en général<br />
105 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Algorithme EM<br />
optimisation par l’algorithme EM :<br />
• principe général proche de l’optimisation alternée<br />
• s’obtient par complétion de la vraisemblance : on ajoute<br />
des variables qui simplifient le problème<br />
maximum de vraisemblance général pour p(D|ω)<br />
si on complète les données D par d’autres données Z , on<br />
a<br />
p(D|ω) = ∑ p(x|ω, Z = z)p(Z = z|ω)<br />
z<br />
connaissant une estimation ω n de ω, on montre que<br />
p(D|ω n+1 ) ≥ p(D|ω n ) si<br />
ω n+1 = arg max<br />
ω<br />
∑<br />
p(z|ω n , D) ln p(D, z|ω)<br />
z<br />
106 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Commentaires<br />
optimiser directement p(D|ω) est généralement complexe<br />
car p(x|ω, Z = z) et p(Z = z|ω) dépendent de ω<br />
le passage au logarithme n’aide pas (logarithme d’une<br />
somme...)<br />
optimiser ∑ z p(z|ω n, D) ln p(D, z|ω) est souvent plus facile,<br />
car ω n’intervient que sur le terme p(D, z|ω)<br />
vocabulaire :<br />
• Expectation : calcul de ∑ z p(z|ω n, D) ln p(D, z|ω) qui est<br />
l’espérance de ln p(D, Z |ω) par rapport à la loi de Z |ω n , D<br />
• Maximization : calcul de ω n+1<br />
107 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Algorithme EM<br />
pour maximiser ln p(D|ω) :<br />
1. choisir aléatoirement ω 1<br />
2. Expectation : calculer<br />
3. Maximization : calculer<br />
Q(ω; ω n−1 ) = E Z |ωn−1 ,D(ln p(D, Z |ω))<br />
ω n = arg max Q(ω; ω n−1)<br />
ω<br />
4. retour en 2 jusqu’à convergence<br />
comme tous les algorithmes d’optimisation alternée, on<br />
trouve un maximum local<br />
très sensible à la configuration initiale<br />
108 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
EM pour un mélange<br />
dans le cas du mélange, on ajoute des variables aléatoires<br />
Z = (z ik ) 1≤i≤N,1≤k≤K :<br />
• z ik ∈ {0, 1} et ∑ N<br />
k=1 z ik = 1<br />
• z ik = 1 si et seulement si x i a été engendré par la classe k<br />
109 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
EM pour un mélange<br />
dans le cas du mélange, on ajoute des variables aléatoires<br />
Z = (z ik ) 1≤i≤N,1≤k≤K :<br />
• z ik ∈ {0, 1} et ∑ N<br />
k=1 z ik = 1<br />
• z ik = 1 si et seulement si x i a été engendré par la classe k<br />
vraisemblance complétée<br />
• p(z i |δ) = ∏ K<br />
k=1 δz ik<br />
k<br />
et donc<br />
soit<br />
p(D, Z |δ, θ) =<br />
N∏<br />
K∏<br />
i=1 k=1<br />
δ z ik<br />
k p k(x i |θ k ) z ik<br />
,<br />
ln p(D, Z |δ, θ) =<br />
N∑ K∑<br />
z ik (ln δ k + ln p k (x i |θ k ))<br />
i=1 k=1<br />
• formulation plus simple (découplage des paramètres)<br />
109 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Mélange de gaussiennes<br />
on obtient l’algorithme EM suivant :<br />
1. choisir aléatoirement les µ 1 k , Σ1 k et δ1 k<br />
2. Expectation : calculer<br />
γ n ik =<br />
δ n−1<br />
k<br />
∑ K<br />
l=1 δn−1 l<br />
p(x i |µ n−1 , Σ n−1<br />
k<br />
p(x i |µ n−1<br />
l<br />
k<br />
)<br />
, Σ n−1<br />
l<br />
)<br />
3. Maximization : calculer N k = ∑ N<br />
i=1 γn ik , δn k = N k/N et<br />
µ n k = 1 N k N ∑<br />
i=1<br />
γ n ikx i<br />
Σ n k = 1 ∑ N<br />
γ<br />
N<br />
ik(x n i − µ n k) T (x i − µ n k)<br />
k<br />
i=1<br />
4. retour 2 jusqu’à convergence<br />
110 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
5 6 7 8<br />
Sepal.Length<br />
111 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
1<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
5 6 7 8<br />
Sepal.Length<br />
111 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Exemple<br />
2<br />
Sepal.Width<br />
2.0 2.5 3.0 3.5 4.0<br />
5 6 7 8<br />
Sepal.Length<br />
111 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Approche probabiliste<br />
cadre général très souple :<br />
• modèle de type k-means si les Σ k s’écrivent Σ k = σ k Id<br />
• modèle général plus souple (formes plus complexes pour<br />
les classes)<br />
• modèles spécifiques pour différents types de données<br />
(texte, graphe, etc.)<br />
expertise mathématique utile :<br />
• pour maîtriser le modèle<br />
• pour construire un modèle spécifique<br />
implémentation délicate :<br />
• sensible à l’initialisation<br />
• convergence parfois très lente<br />
• schémas d’approximation sophistiqués pour les modèles<br />
évolués (non gaussiens)<br />
112 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
En R<br />
package mclust :<br />
• référence dans le domaine<br />
• très efficace<br />
• mais licence restrictive : seule l’utilisation strictement<br />
académique (recherche et enseignement) est autorisée<br />
sans paiement d’une licence annuelle<br />
package mixtools :<br />
• plus récent<br />
• moins complet et moins rapide<br />
• logiciel libre<br />
113 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité
Résumé<br />
optimisation d’un critère :<br />
• approche très générale et très fructueuse<br />
• deux aspects relativement indépendants :<br />
• choisir un bon critère<br />
• construire un algorithme d’optimisation efficace du critère<br />
• unification :<br />
• quantification vectorielle<br />
• approches floues<br />
• approches probabilistes<br />
• stratégie assez souple : optimisation alternée<br />
question ouverte principale : quel modèle <br />
114 / 114 F. <strong>Rossi</strong> Optimisation directe d’un critère de qualité