Quali criteri di arresto per il clustering gerarchico agglomerativo vengono utilizzati nella pratica?


32

Ho trovato un'ampia letteratura che propone tutti i tipi di criteri (ad esempio Glenn et al. 1985 (pdf) e Jung et al. 2002 (pdf)). Tuttavia, la maggior parte di questi non è così facile da implementare (almeno dal mio punto di vista). Sto usando scipy.cluster.hierarchy per ottenere una gerarchia di cluster e ora sto cercando di decidere come formare cluster piatti da quello. Il mio obiettivo è scoprire modelli comuni nelle mie osservazioni, quindi non ho alcun riferimento per confrontare il clustering ottenuto. Qualcuno può suggerire una soluzione pragmatica?


Nella mia pagina web, c'è una raccolta zip "Criteri di clustering" con la descrizione (e le funzioni SPSS) di una serie di criteri di clustering interno popolari (regole di arresto). Per tua informazione.
ttnphns

Risposte:


18

La seguente voce di Wikipedia in realtà fa un ottimo lavoro nello spiegare i metodi più popolari e relativamente semplici:

L' euristica del metodo del gomito descritta qui è probabilmente la più popolare a causa della sua semplice spiegazione (quantità di varianza spiegata dal numero di cluster) unita al controllo visivo. Il metodo teorico dell'informazione non è difficile da implementare e la pagina ha alcuni pseudocodici che potresti usare per iniziare. Quest'ultimo è analogo a una probabilità penalizzata basata sulla complessità del modello, come nei noti criteri di informazione come AIC, BIC, ecc.


Grazie! L'articolo di Wikipedia sul clustering gerarchico non si collega a quello.
Björn Pollex,

2
Oh giusto. Risolto ora sotto i link "vedi anche", grazie per averlo sottolineato!
ars,

Nel metodo Elbow, cosa succede se gli oggetti da raggruppare sono abbastanza "complessi"? Voglio dire, non sono semplici punti, ma piuttosto complesse raccolte di dati. Ho capito la distanza a coppie (distanza definita). Come potrei calcolare la cosiddetta "varianza" qui per applicare il metodo Elbow?
Sibbs Gambling,

17

È piuttosto difficile fornire una soluzione chiara su come scegliere il numero "migliore" di cluster nei dati, qualunque sia il metodo di clustering utilizzato, poiché Cluster Analysis cerca di isolare gruppi di unità statistiche (siano esse individui o variabili ) a fini esplorativi o descrittivi, essenzialmente. Quindi, devi anche interpretare l'output del tuo schema di clustering e diverse soluzioni di cluster potrebbero essere ugualmente interessanti.

Ora, per quanto riguarda i consueti criteri statistici usati per decidere quando fermarsi ad aggregare i dati, come indicato da @ars la maggior parte sono criteri visivamente guidati , inclusa l'analisi del dendrogramma o l'ispezione dei profili dei cluster, chiamati anche grafici di silhouette (Rousseeuw, 1987) . Sono stati proposti anche diversi criteri numerici , noti anche come indici di validità, ad esempio l'indice di validità di Dunn, l'indice di validità di Davies-Bouldin, l'indice C, la gamma di Hubert, per citarne alcuni. Il clustering gerarchico viene spesso eseguito insieme a k-mean (in effetti, diverse istanze di k-mean poiché si tratta di un algoritmo stocastico), in modo da aggiungere supporto alle soluzioni di clustering trovate. Non so se tutte queste cose sono prontamente disponibili in Python, ma in R è disponibile una grande quantità di metodi (vediVista delle attività del cluster , già citata da @mbq per una domanda correlata, quali strumenti potrebbero essere utilizzati per applicare algoritmi di clustering su MovieLens? ). Altri approcci includono il clustering fuzzy e il clustering basato su modelli (chiamato anche analisi dei tratti latenti , nella comunità psicometrica) se cerchi un modo più robusto per scegliere il numero di cluster nei tuoi dati.

A proposito, mi sono appena imbattuto in questa pagina web, scipy-cluster , che è un'estensione di Scipy per la generazione, la visualizzazione e l'analisi di cluster gerarchici . Forse include altre funzionalità? Ho anche sentito parlare di PyChem che offre roba abbastanza buona per l'analisi multivariata.

Il seguente riferimento può anche essere utile:

Steinley, D., e Brusco, MJ (2008). Selezione delle variabili nell'analisi dei cluster: un confronto empirico di otto procedure. Psychometrika , 73 , 125-144.


Grazie per questa eccellente risposta! In effetti, il modulo di clustering gerarchico che hai mostrato fa già parte di Scipy. Inoltre, scipy fornisce un'implementazione di k-mean, quindi potrei facilmente usarlo.
Björn Pollex,

Ok, non ho esaminato in dettaglio questo. Per k-medie, è necessario prestare attenzione al fatto che in genere sono necessari due loop esterni per la convalida della soluzione di cluster (uno in cui si varia il numero di cluster e un altro per variare il seme - l'obiettivo è minimizzare l'RSS); quindi è possibile utilizzare la statistica gap per scegliere il numero ottimale di cluster.
chl

5

Di recente sono diventato il fondo del metodo di visualizzazione del clustergramma (implementato in R).

Lo uso come metodo aggiuntivo per valutare un "buon" numero di cluster. Estenderlo ad altri metodi di clustering non è così difficile (in realtà l'ho fatto, ma non sono riuscito a pubblicare il codice)

testo alternativo

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.