k-means - Laboratoire de Statistique Théorique et Appliquée

Transcription

k-means - Laboratoire de Statistique Théorique et Appliquée
Algorithmes de type k -means
5MS04 - Analyse des donnees
Master 2 spécialité Statistiques
Université Pierre et Marie Curie
B. Michel
1/21
(Dis)similarité et distances entre individus
Définition : Dissimilarité
Une dissimilarité sur un ensemble X est une fonction d : X ×X → R+
telle que
I
∀(xi , x` ) ∈ X × X , d(xi , x` ) = d(x` , xi ) (symétrie)
I
d(xi , x` ) = 0 ⇔ xi = x`
Définition : Similarité
Une similarité (normée) est une fonction s : X × X → [0, 1] telle que
I
∀(xi , x` ) ∈ X × X , s(xi , x` ) = s(x` , xi ) (symétrie)
I
s(xi , x` ) = 1 ⇔ xi = x`
Définition : Distance
Une distance est une dissimilarité d satisfaisant en plus l’inégalité triangulaire
∀(xi , x` , xm ) ∈ X 3 , d(xi , xm ) ≤ d(xi , x` ) + d(x` , xm )
2/21
Distances et normalisation de variables numériques
Distances définies comme des formes quadratiques
d 2 (xi , x` ) = (xi − x` )0 M(xi − x` )
I
I
Norme euclidienne usuelle : M = Ip
M = diag σ12 , . . . , σ12 où σj2 = Sjj
1
I
p
Distance de Mahalanobis : M = S −1 où S est la matrice de
variance-covariance des données (c.f. cours sur LDA)
3/21
Exemple pour la distance de Mahalanobis
● ●
2.5
Y
2.0
●
●
●
●
●●
●●
●
●
●
●
●
● ●
●
●●
●● ● ●
●●●● ●
●●
●
● ●● ●●
●● ● ●●
● ● ● ●●● ●
●
●
●
●● ●
●● ●
●
●●
●
●●
●
●●●●
●
●●●● ●
●●●●● ●
●●
●●
●●●
● ●●
●● ●
●
● ●
●
●
●●
● ●● ●● ●
●●
●● ● ●●
●
● ●●
●● ●
●●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●● ● ● ● ●●
● ●● ●
● ●●
● ●
●●●
●
● ●
●
●
●
●
● ●
●
●●
●
●●
●● ●
0.0
●
●
●
●
●
●
●
−5
●●
Z
X
0.5
1.0
1.5
●
●
●
●
●
●
0
5
kX − Y k2 = 1, 78
kX − Y k2,S −1 = 24, 94
kX − Z k2 = 6, 25
kX − Z k2,S −1 = 5, 92
Retenir que la standardisation / normalisation des données a
un impact très important sur le clustering obtenu.
4/21
Clustering et quantification
I
Pour une dissimilarité d sur X et r > 0, on définit la “coût"
de la quantification des données {x1 , . . . , xn } ⊂ X par le
“code" {c1 , . . . , cK } comme suit :
Φ({c1 , . . . , cK }) =
n
X
d r (xi , {c1 , . . . , cK })
i=1
où d(x, A) = mina∈A d(x, a).
I
Objectif des algorithmes de type k-means : trouver un
code (ou un partitionnement des données) qui minimise Φ.
5/21
Notion d’inerties dans le cas euclidien
I
Contexte : données dans Rp , norme euclidienne k · k , on
a donc ici beaucoup plus qu’une dissimilarité.
I
Soit C = {C1 , . . . , CK } une partition des données
{x1 , . . . , xn } en K classes.
I
On considère le coût de clustering
Φ(C) = Φ({m1 , . . . , mK }) =
n
X
kxi − {m1 , . . . , mK }k2
i=1
où mk =
1
|Ck |
P
xi est le centre de gravité de la classe Ck .
i∈Ck
6/21
Notion d’inerties dans le cas euclidien
Φ(C) = Φ({m1 , . . . , mK }) =
n
X
kxi − {m1 , . . . , mK }k2
i=1
I
Inertie totale : IT =
où x̄ =
I
1
n
n
P
1
n
n
P
kxi − x̄k 2
i=1
xi est le centre de gravité du nuage de points
i=1
Inertie interclasse : Iinter =
1
n
K
P
|Ck | × kmk − x̄ k2
k =1
V mesure la dispersion des centres des classes
I
Inertie intra-classe : Iintra =
1
n
K P
P
k =1 i∈Ck
kxi − mk k2 = n1 Φ(C)
V mesure la dispersion des points dans une même classe
6/21
1
∑ Dist (xi ,g)2
n
Inerties i
IG =
n

1
 sx2 = ∑ (xi − x )
n i

( Dist ( x , y ) étant une distance quadratique)
héorème de König-Huygens : Itot = Iintra + Iinter
Propriété de Huygens
Gc
n
2
+ I,g
intra 2
Dist(x
∑ Dist (x i, g)2 =IT∑=∑Iinter
i c ) + ∑ Gc Dist(gc , g)
c
i
i
c
G1
g1
G3
g3
G2
g
g
g2
g4
G4
Bisson (2001)
7/21
Inerties
Classification et inertie
Objectif
Minimiser l’inertie intra-classe
btenir des classes cohérentes et contrastées
⇐⇒
Maximisation de l’inertie inter-classes
}
équivalent puisque Itot = I intra + I inter
Maximiser l’inertie inter-classe
Minimisation de l’inertie intra-classes
Forte inertie inter-classes
Faible inertie intra-classes
Faible inertie inter-classes
Forte inertie intra-classes
g3
g1
g2
g4
Bisson (2001)
pplication de ce critère
8/21
Algorithmes des K-means (Algorithme de Lloyd)
I
Contexte : données dans Rp , norme euclidienne k k.
I
Impossible de parcourir toutes les partitions de X .
I
L’algorithme K-means propose une approximation du
problème de la minimisation de Φ.
9/21
Algorithmes des K-means (Algorithme de Lloyd)
Data: k , data set X , nombre d’iterations T .
Result: clustering C = {C1 . . . CK }.
Initialisation : choix de K noyaux initiaux c1 , . . . , cK ;
t = 0;
while clustering non stabilisé ou t < T do
t = t+1 ;
for x ∈ X do
for k = 1 to K do
Calculer toutes les distances aux centres kx − ck k;
end
Affecter x dans le groupe Ck pour lequel kx − ck k est
minimal ;
end
for k = 1 to K do
Mise à jour du barycentre dans Ck ;
end
end
Animation
9/21
Décroissance de l’inertie intra classe
Proposition :
L’inertie intraclasse Iintra (P (t) ) décroît à chaque étape.
⇒ convergence vers un minimum local de l’inertie intra-classe.
Preuve :
Les deux points clés sont :
I
(t−1)
si i passe de Ck
(t)
à Ck 0 alors
(t−1) 2
(t−1) 2
xi − mk 0 ≤ xi − mk
I
(t)
(t)
mk étant le centre de Ck
X X (t) 2
(t−1) 2
xi − mk ≤
xi − mk
(t)
i∈Ck
(t)
i∈Ck
10/21
Propriétés
I
Relativement efficace : Complexité O(KnT ) où T est le
nombre d’itérations
I
L’inertie intra-classe décroit avec les itérations de
l’algorithme
I
Découvre les classes compactes, bien séparées
I
(Spécification du nombre de classes K )
I
Influence du choix des noyaux initiaux
I
Convergence vers un minimum local
I
Peut produire des classes vides
I
Influence des outliers
Animation
Animation
11/21
Choix des noyaux initiaux
I
Stratégie “Furthest Point" : NON !
I
Sélection fondée sur des connaissances complémentaires
I
Etude préliminaire des données univariées (histogrammes,
...)
I
Réduction de dimension puis initialisation sur une structure
plus robuste (k-means sur les premières composantes de
l’ACP par ex.)
I
Répétition de la méthode N fois et sélection de la
classification ayant la plus faible inertie intra-classe.
I
k -means ++ : voir plus loin.
12/21
Variantes des k-means
I
Algorithme des k-médoïdes :
Le médoïde d’un groupe est le point du groupe le plus
proche de tous les autres (∼ médiane pour la norme k · k1 ).
13/21
Variantes des k-means
I
Algorithme des k-médoïdes
I
k-means ++ : Initialisation particulière de k-means.
Data: nombre de classes K , data set X
Result: clustering C = {C1 . . . CK }.
Choisir un premier centre c uniformément parmi les xi ;
Initialisation de la famille des centres C = {c} ;
for k = 2 to K do
for i ∈ {1 . . . n} do
Calculer d(xi , C) la distance au plus proche centre ;
end
Choisir c̃ dans les xi selon les proba
2
P d(xi ,C) 2
x∈X d(x,C)
;
C = C ∪ {c̃} ;
end
Effectuer k-means avec cette initialisation;
13/21
Variantes des k-means
I
Algorithme des k -médoïdes
I
k-means ++ : Garanties théoriques.
[Arthur, D. and Vassilvitskii, S. (2007)] : Soit C ++ la
partition d’un échantillon (x1 , . . . , xn ) fourni par k-means++
pour K clusters. Alors :
EΦ(C ++ ) ≤ 8(log K + 2) inf Φ(C)
|C|=K
où l’infimum est pris sur toutes les partitions de taille K de
l’échantillon.
13/21
Variantes des k-means
I
Algorithme des k -médoïdes.
I
k-means ++.
I
Mini batch k-means
Permet de traiter des échantillons très grands et beaucoup
de classes.
Principe : étape courante de k-means effectuée sur un
sous ensemble échantillon aléatoire.
13/21
Variantes des k-means
Mini batch k-means :
Data: nombre de classes K , data set X , iterations max T .
Result: clustering C = {C1 . . . CK }.
Initialiser les centres ck en les tirant unif. dans les xi ;
v = (0, . . . , 0) vecteur de zeros de longueur K ;
for t = 1 to T do
B : sous échantillon de taille b tiré unif. dans les xi ;
for x ∈ B do
kcx : indice du plus proche centre cx de x ;
end
for x ∈ B do
comptage actualisé du centre v [kcx ] = v [kcx ] + 1 ;
η = 1/v [kcx ] ;
cx = (1 − η)cx + ηx ;
end
end
13/21
Extension pour variables catégorielles
I
I
Données xi = (xi1 , . . . , xip )0 où x j est une variable
catégorielle à kj modalités.
P
On définit une similarité, par ex. d1 (xi , x` ) := pj=1 1x j 6=x j .
i
I
`
On veut minimiser
Φ({c1 , . . . , cK }) =
n
X
d1 (xi , {c1 , . . . , cK })
i=1
I
Un mode (souvent non unique) de {x1 , . . . , x` } est un
vecteur (m1 , . . . , mp )0 tel que mj un mode de {xij , . . . , xij }.
I
Pour k -means les classes représentées par centres de
gravité car métrique euclidienne.
Pour d1 on peut montrer que les “bons centres” sont les
modes.
14/21
Extension pour variables catégorielles
Algorithme des k -modes (Huang, 98)
Data: k , data set X , nombre d’iterations T .
Result: clustering C = {C1 . . . CK }.
Initialisation : choix de K modes initiaux m1 , . . . , mK ;
t = 0;
while clustering non stabilisé ou t < T do
t = t+1 ;
for x ∈ X do
for k = 1 to K do
Calculer toutes les distances d1 (x, mk );
end
Affecter x dans le groupe Ck pour lequel d1 (x, mk ) est
minimal ;
end
for k = 1 to K do
Mise à jour du mode de Ck ;
end
end
14/21
Extension pour variables mixtes
I
Algorithme K -prototype (Huang, 97) pour variables mixtes :
d(xi , x` ) = d1 (xi , x` ) + γd2 (xi , x` )
où d1 (resp. d2 ) est la dissimilarité sur les variables
quantitatives (resp. qualitatives) et γ un paramètre à fixer
pour éviter de favoriser un type de variables
15/21
Choix du nombre de classes
I
Choix a priori à partir de connaissances complémentaires
I
Pour chaque valeur de K ∈ {2, . . . , Kmax }, on obtient une
classification et on sélectionne finalement celle où on
observe un saut important de l’inertie intra-classe : " règle
du coude".
I
Choix par maximisation d’un indice. Exemple : silhouette.
16/21
Silhouette
I
C(K ) = {C1 , . . . , CK } une classif. de X en K groupes.
Pour i ∈ {1, . . . , n} soit Ck la classe de i :
I
a(i) =
1
|Ck |−1
P
d(xi , x` ) moyenne des distances entre i et
`∈Ck
`6=i
I
tous les individus appartenant à la même classe que i.
P
1
d(xi , x` )
b(i) = min
|C 0 |
0
k 6=k
I
s(i) =
k
`∈Ck 0
b(i)−a(i)
max(b(i),a(i)) ∈
1
n
P
[−1, 1]
s(i)
I
S(C(K )) =
I
Pour une collection de clustering C(2), . . . , C(Kmax ), le
nombre de classes retenu est
i=1...n
K̂ = argmax S(C(K ))
1≤K ≤Kmax
17/21
Exemple
18/21
4
3
2
1
0
-1
-2
-3
-4
-5
-5
-4
-3
-2
-1
0
1
2
3
19/21
4
3
2
1
0
-1
-2
-3
-4
-5
-5
-4
-3
-2
-1
0
1
2
3
19/21
4
3
2
1
0
-1
-2
-3
-4
-5
-5
-4
-3
-2
-1
0
1
2
3
19/21
4
3
2
1
0
-1
-2
-3
-4
-5
-5
-4
-3
-2
-1
0
1
2
3
19/21
4
3
2
1
0
-1
-2
-3
-4
-5
-5
-4
-3
-2
-1
0
1
2
3
19/21
4
3
2
1
0
-1
-2
-3
-4
-5
-5
-4
-3
-2
-1
0
1
2
3
19/21
4
3
2
1
0
-1
-2
-3
-4
-5
-5
-4
-3
-2
-1
0
1
2
3
19/21
4
3
2
1
0
-1
-2
-3
-4
Quitter animation
-5
-5
-4
-3
-2
-1
0
1
2
319/21
Le problème de l’initialisation des noyaux
4
●
● ●
●
●
●
●●
●
● ●
●
●
●
●
●
●
●
●
●
●●
● ●
●
●
●●●
●
●
● ●
●●
●
●
●
● ● ●
●
●
●
●
● ●● ● ●
●
●
●
●●
● ●
●● ●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
0
2
4
−4
−2
0
2
4
● ●
●
●
●
●●
2
0
●
●
●
● ●
●
●
● ●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●●
● ●
●
●
●●●
●
●
● ●
●●
●
●
●
●
●
●
●●
● ●
●● ●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
● ●
●
● ●●
● ● ●●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●●
● ●
●
●
● ●
●
●
●●
●
●
●
●
●
●
● ●●
●
●
●
● ●
●
●
●●
●
●
●
●
●
●● ● ● ●
●●
●
●
●●
●
●
●
●
●
●●
●
●● ●●
●● ● ●
●
●
● ●
●
●
●
●●
● ●
●
●
●
●
●
●
●●
● ●
●
●●
●
● ●●
●●
●
●●
● ●
●
●
●
●
●
●
● ●●● ●
●●
● ●●
●
●
●
● ●●
●
●●
●
●
●
●
●
●
●
●
● ● ●
●●● ● ●
●
●
●●
●
●
●
●
●
●
●
●
● ●
● ●●
●
●●
●
●
●
●
●
●●
●●
●
●●
●
●
●
●
●
● ●
●
● ●●
● ●
●
●
● ● ●
●
●
● ●
●●
●
●● ●
●
●
● ●
●
●
●
●●
●
●
●
●
● ●
●
●
●
● ●
● ●
●●●
●●
●
●
●
●
●
●●
●
● ●
●●
●
●
●
●
●
●●
●●
● ●
●●●
●
●
●
●
●
●
●●
●
● ● ●●
●
●
●●
●
●
● ●
● ● ●
● ●
●
● ●
● ●
●
● ●
● ● ● ●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●
●
●
●
●
●
●
●
● ● ●
●
●
●
●
● ●● ● ●
●
−4
−2
0
2
4
−4
−2
0
2
4
●
2
0
−2
−4
−4
−2
0
2
4
−2
●
●
●
●
−4
●
●●
●
●
●
●
● ●
●
4
2
0
−2
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
● ●
●
● ●●
● ● ●●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●●
● ●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
● ●
●
●
●●
●
●
●
●
●
●● ● ● ●
●●
●
●
●●
●
●
●
●
●
●●
●
●● ●●
●● ● ●
●
●
● ●
●
●
●
●●
● ●
●
●
●
●
●
●
●●
● ●
●
●●
●
● ●●
●●
●
●●
● ●
●
●
●
●
●
●
● ●●● ●
●●
● ●●
●
●
●
● ●●
●
●●
●
●
●
●
●
●
●
●
● ● ●
●●● ● ●
●
●
●●
●
●
●
●
●
●
●
●
● ●
● ●●
●
●●
●
●
●
●
●
●●
●●
●
●●
●
●
●
●
●
● ●
●
● ●●
● ●
●
●
● ● ●
●
●
● ●
●●
●
●● ●
●
●
● ●
●
●
●
●●
●
●
●
●
● ●
●
●
●
● ●
● ●
●●●
●●
●
●
●
●
●
●●
●
● ●
●●
●
●
●
●
●
●●
●●
● ●
●●●
●
●
●
●
●
●
●●
●
● ● ●●
●
●
●●
●
●
● ●
● ● ●
● ●
●
● ●
● ●
●
● ●
● ● ● ●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●
●
●
●
●
●
●
−4
●
●
● ●
●
●
● ●
●
●
●
●
●
●
●
−2
●
●
4
●
●
● ●
−4
●
●
●
●●
Quitter animation
20/21
4
3
2
1
0
-1
-2
-3
-4
-5
-5
-4
-3
-2
-1
0
1
2
3
4
21/21
4
3
2
1
0
-1
-2
-3
-4
-5
-5
-4
-3
-2
-1
0
1
2
3
4
21/21
4
3
2
1
0
-1
-2
-3
-4
-5
-5
-4
-3
-2
-1
0
1
2
3
4
21/21
4
3
2
1
0
-1
-2
-3
-4
-5
-5
-4
-3
-2
-1
0
1
2
3
4
21/21
4
3
2
1
0
-1
-2
-3
-4
-5
-5
-4
-3
-2
-1
0
1
2
3
4
21/21
4
3
2
1
0
-1
-2
-3
-4
-5
-5
-4
-3
-2
-1
0
1
2
3
4
21/21
4
3
2
1
0
-1
-2
-3
-4
-5
-5
-4
-3
-2
-1
0
1
2
3
4
21/21
4
3
2
1
0
-1
-2
-3
-4
-5
-5
-4
Quitter animation
-3
-2
-1
0
1
2
3
4
21/21