Comment définir le nombre de clusters dans le clustering K-means?

19

Existe-t-il un moyen de déterminer le numéro de cluster optimal ou dois-je simplement essayer différentes valeurs et vérifier les taux d'erreur pour décider de la meilleure valeur?

berkay
la source
1
@berkay Comment définissez-vous un taux d'erreur pour cette méthode non supervisée? (ou voulez-vous dire au sein des SS?)
chl
@chl, je peux utiliser la somme des erreurs quadratiques pour tous les clusters ou la précision globale (dans ce cas, je connais les étiquettes de classe.)
berkay
3
@berkay Un algorithme simple pour trouver le nombre de clusters consiste à calculer le WSS moyen pour 20 exécutions de k-moyennes sur un nombre croissant de clusters (commençant par 2 et se terminant par disons 9 ou 10), et conservant la solution qui a WSS minimal sur cet ensemble de clusters. Une autre méthode est la statistique Gap . Mais si vous avez déjà des instances étiquetées, alors pourquoi essayez-vous une méthode non supervisée?
chl
@chl merci, bonne question, on peut deviner les clusters en fonction des fonctionnalités des intances, j'analyse les nouvelles caractéristiques d'intrusion, le mimétisme des applications légales.
berkay
2
J'ai répondu à un Q similaire avec une demi-douzaine de méthodes (en utilisant R) ici: stackoverflow.com/a/15376462/1036500
Ben

Réponses:

8

La méthode que j'utilise consiste à utiliser CCC (Cubic Clustering Criteria). Je cherche à augmenter le CCC au maximum lorsque j'augmente le nombre de clusters de 1, puis j'observe quand le CCC commence à diminuer. À ce stade, je prends le nombre de clusters au maximum (local). Cela reviendrait à utiliser un tracé éboulis pour sélectionner le nombre de composants principaux.


Rapport technique SAS A-108 Cubic Clustering Criterion ( pdf )

= nombre d'observations n k = nombre dans le cluster k p = nombre de variables q = nombre de clusters X = n × p matrice de données M = q × p matrice de cluster signifie Z = indicateur de cluster ( z i k = 1 si obs . i dans le cluster k , 0 sinon) n
nkk
p
q
Xn×p
Mq×p
Zzik=1ik

Supposons que chaque variable a une moyenne de 0:
, M = ( Z Z ) - 1 Z XZZ=diag(n1,,nq)M=(ZZ)1ZX

Matrice S S (totale) = T = X X S S (entre les grappes) matrice = B = M Z Z M S S (au sein des grappes) matrice = W = T - BSSTXX
SSBMZZM
SSWTB

R2=1trace(W)trace(T)
(trace = somme des éléments diagonaux)

Empilez des colonnes de dans une longue colonne. Régression sur le produit de Kronecker de Z avec la matrice d'identité p × p Calculer R 2 pour cette régression - même R 2X
Zp×p
R2R2

L'idée CCC est de comparer le vous obtenez pour un ensemble donné de clusters avec le R 2 que vous obtiendriez en regroupant un ensemble de points uniformément répartis dans un espace dimensionnel p .R2R2p

Ralph Winters
la source
2
Il existe d'autres critères que le CCC. Jetez un œil à Déterminer le nombre de clusters dans un ensemble de données , pour voir les principaux.
Vincent Labatut