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