18.01.2015 Views

Classification automatique - Fabrice Rossi

Classification automatique - Fabrice Rossi

Classification automatique - Fabrice Rossi

SHOW MORE
SHOW LESS

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é

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!