Scelta di un metodo di clustering


73

Quando si utilizza l'analisi dei cluster su un set di dati per raggruppare casi simili, è necessario scegliere tra un gran numero di metodi di clustering e misure di distanza. A volte, una scelta potrebbe influenzare l'altra, ma ci sono molte possibili combinazioni di metodi.

Qualcuno ha qualche consiglio su come scegliere tra i vari algoritmi / metodi di clustering e misure di distanza ? In che modo ciò è legato alla natura delle variabili (ad esempio, categoriche o numeriche) e al problema del clustering? Esiste una tecnica ottimale?


1
Puoi provare a dare una descrizione più specifica di ciò che vuoi raggruppare? o è solo uno stato dell'arte nel clustering di cui hai bisogno?
Robin Girard,

2
Non ho in mente un'applicazione immediata. Sono solo interessato a un approccio generale alla scelta di un metodo di clustering e misura della somiglianza.
Brett,

Controlla anche questa domanda simile.
ttnphns,

E alcuni avvertimenti hanno scritto metodi di clustering specificamente gerarchici.
ttnphns,

Risposte:


43

Non esiste una risposta definitiva alla tua domanda, poiché anche nello stesso metodo la scelta della distanza per rappresentare la (dis) somiglianza degli individui può produrre risultati diversi, ad esempio quando si usa euclideo e quadrato euclideo nel raggruppamento gerarchico. Come altro esempio, per i dati binari, è possibile scegliere l'indice Jaccard come misura di somiglianza e procedere con il clustering gerarchico classico; ma ci sono approcci alternativi, come la Mona ( Monothetic Analysis) che considera solo una variabile alla volta, mentre altri approcci gerarchici (ad es. HC classico, Agnese, Diana) usano tutte le variabili in ogni fase. L'approccio k-mean è stato esteso in vari modi, incluso il partizionamento attorno a medoidi (PAM) o oggetti rappresentativi piuttosto che a centroidi (Kaufman e Rousseuw, 1990) o cluster confuso (Chung e Lee, 1992). Ad esempio, la principale differenza tra i mezzi k e PAM è che PAM minimizza una somma di differenze piuttosto che una somma di distanze euclidee quadrate; il raggruppamento fuzzy consente di considerare "appartenenza parziale" (associamo ad ogni osservazione un peso che riflette l'appartenenza alla classe). E per i metodi che si basano su un framework probabilistico o sul cosiddetto clustering basato su modelli (o analisi del profilo latenteper gli psicometrici), c'è un ottimo pacchetto: Mclust . Quindi in modo definitivo, è necessario considerare come definire la somiglianza degli individui, nonché il metodo per collegare gli individui insieme (raggruppamento ricorsivo o iterativo, appartenenza a classi rigorose o sfocate, approccio non supervisionato o semi-supervisionato, ecc.).

Di solito, per valutare la stabilità dei cluster, è interessante confrontare diversi algoritmi che sostanzialmente "condividono" alcune somiglianze (ad esempio k-medie e cluster gerarchici, perché la distanza euclidea funziona per entrambi). Per valutare la concordanza tra due soluzioni di cluster, sono stati suggeriti alcuni suggerimenti in risposta a questa domanda, Dove tagliare un dendrogramma? (vedere anche i riferimenti incrociati per altri collegamenti su questo sito Web). Se stai usando R, vedrai che diversi pacchetti sono già disponibili in Task View su Cluster Analysis e diversi pacchetti includono vignette che spiegano metodi specifici o forniscono casi di studio.

Analisi cluster: concetti di base e algoritmi offre una buona panoramica di diverse tecniche utilizzate nell'analisi cluster. Per quanto riguarda un buon libro recente con illustrazioni R, consiglierei il capitolo 12 di Izenman, Modern Multivariate Statistical Techniques (Springer, 2008). Di seguito sono riportati alcuni altri riferimenti standard:

  • Cormack, R., 1971. Una revisione della classificazione. Giornale della Royal Statistical Society, A 134, 321–367.
  • Everitt, B., 1974. Analisi dei cluster . Londra: Heinemann Educ. Libri.
  • Gordon, A., 1987. Una revisione della classificazione gerarchica. Giornale della Royal Statistical Society, A 150, 119–137.
  • Gordon, A., 1999. Classificazione , 2a edizione. Chapman and Hall.
  • Kaufman, L., Rousseuw, P., 1990. Ricerca di gruppi nei dati: un'introduzione all'analisi dei cluster . New York, Wiley.

30

Una citazione di Hastie, Tibshirani e Friedman, Elements of Statistical Learning , p. 506:

"Un'adeguata misura di dissomiglianza è molto più importante per ottenere il successo con il clustering rispetto alla scelta dell'algoritmo di clustering. Questo aspetto del problema ... dipende dalle conoscenze specifiche del dominio ed è meno suscettibile alla ricerca generale."

(Detto questo, non sarebbe bello se (wibni) esistesse un sito in cui gli studenti potrebbero provare alcuni algoritmi e metriche su alcuni piccoli set di dati standard?)


Grazie chi; puoi suggerire un tag per "gli esempi possono essere eseguiti sul web"?
denis,

Intendi per ricodificare la domanda (non penso che sia una buona idea perché l'OP non cercava strumenti di benchmarking online, IMO) o per una nuova domanda che vuoi porre? Ad ogni modo, non ho idea di un buon tag al momento. Chiedi su Meta?
chl

1
Questa citazione potrebbe essere fuorviante - chiaramente non si applica agli esempi (certamente inventati) su Wikipedia . A causa del forte cluster non lineare nel secondo set di dati, gli algoritmi di collegamento e clustering di densità funzionano molto meglio di qualsiasi metodo basato su centroidi. Non esiste una misura di somiglianza che possa far funzionare meglio uno schema di clustering di centroidi. Questa citazione è applicabile solo se si presume che i cluster siano approssimativamente lineari (a volte un presupposto sicuro). Suggerirei prima di ispezionare visivamente i tuoi dati, se possibile.
naught101

@ naught101, certo - ispezionare visivamente i dati per vedere la somiglianza / dissomiglianza è più importante, ma più facile a dirsi che a
farsi

questa citazione proviene da quale edizione? puoi dare la sua citazione
MonsterMMORPG

12

Non puoi sapere in anticipo quale algoritmo di clustering sarebbe meglio, ma ci sono alcuni indizi, ad esempio se vuoi raggruppare immagini ci sono alcuni algoritmi che dovresti provare prima come Fuzzy Art, o se vuoi raggruppare facce dovresti iniziare con (GGCI) cluster geometrico globale per l'immagine.

Comunque questo non garantisce il miglior risultato, quindi quello che vorrei fare è usare un programma che ti permetta di eseguire metodicamente algoritmi di cluster diversi, come weka, RapidMiner o persino R (che non è visivo), lì imposterò il programma su lancio tutti i diversi algoritmi di clustering che posso, con tutte le possibili diverse distanze, e se hanno bisogno di parametri, sperimenta ognuno con una varietà di valori di parametro diversi (inoltre se non conosco la quantità di cluster, esegui ognuno con una varietà di numeri). Una volta risolto l'esperimento, lascialo in esecuzione, ma ricorda di archiviare da qualche parte i risultati di ogni esecuzione del clustering.

Quindi confrontare i risultati per ottenere il clustering risultante migliore. Questo è difficile perché ci sono diverse metriche che puoi confrontare e non tutte sono fornite da ogni algoritmo. Ad esempio gli algoritmi di cluster fuzzy hanno metriche diverse rispetto a non fuzzy, ma possono ancora essere confrontati considerando i gruppi risultanti fuzzy come non fuzzy, mi atterrò per il confronto con le metriche classiche come:

• SSE: somma dell'errore quadrato dagli elementi di ciascun cluster.

• Inter cluster distance: somma della distanza quadrata tra ciascun centroide del cluster.

• Distanza intra cluster per ciascun cluster: somma della distanza quadrata dagli elementi di ciascun cluster al suo centroide.

• Raggio massimo: distanza massima da un'istanza al centroide del cluster.

• Raggio medio: somma della distanza maggiore da un'istanza al centroide del cluster divisa per il numero di cluster.


4

Scegliere la giusta distanza non è un compito elementare. Quando vogliamo fare un'analisi del cluster su un set di dati, potrebbero apparire risultati diversi utilizzando distanze diverse, quindi è molto importante fare attenzione a quale distanza scegliere perché possiamo creare un falso buon artefatto che catturi bene la variabilità, ma in realtà senza senso nel nostro problema.

La distanza euclidea è appropriata quando ho variabili numeriche continue e voglio riflettere distanze assolute. Questa distanza tiene conto di ogni variabile e non rimuove le ridondanze, quindi se avessi tre variabili che spiegano la stessa (sono correlate), pondererei questo effetto per tre. Inoltre, questa distanza non è invariante per la scala, quindi generalmente devo ridimensionare in precedenza per usare la distanza.
Esempio ecologia: abbiamo diverse osservazioni da molte località, di cui gli esperti hanno preso campioni di alcuni fattori microbiologici, fisici e chimici. Vogliamo trovare modelli negli ecosistemi. Questi fattori hanno un'alta correlazione, ma sappiamo che tutti sono rilevanti, quindi non vogliamo rimuovere questi licenziamenti. Usiamo la distanza euclidea con dati in scala per evitare l'effetto delle unità.

La distanza di Mahalanobis è appropriata quando ho variabili numeriche continue e voglio riflettere distanze assolute, ma vogliamo rimuovere le ridondanze. Se abbiamo ripetute variabili, il loro effetto ripetitivo scomparirà.

La famiglia Hellinger , Species Profile e Chord distance sono appropriate quando vogliamo enfatizzare le differenze tra le variabili, quando vogliamo differenziare i profili. Queste distanze pesano per quantità totali di ciascuna osservazione, in modo tale che le distanze siano piccole quando variabili per variabili gli individui sono più simili, sebbene in grandezza assoluta fosse molto diverso. Attento! Queste distanze riflettono molto bene la differenza tra i profili, ma perdono l'effetto magnitudo. Potrebbero essere molto utili quando abbiamo campioni di dimensioni diverse. Esempio di ecologia: vogliamo studiare la fauna di molte terre e disponiamo di una matrice di dati di un inventario del gasteropode (posizioni di campionamento in file e nomi di specie in colonne). La matrice è caratterizzata dall'avere molti zeri e magnitudini diverse perché alcune località hanno alcune specie e altre hanno altre specie. Potremmo usare la distanza di Hellinger.

Bray-Curtis è abbastanza simile, ma è più appropriato quando vogliamo differenziare i profili e anche prendere in considerazione le dimensioni relative.


1
Per favore registrati e / o unisci i tuoi account 1 2 (puoi trovare informazioni su come farlo nella sezione Il mio account del nostro centro assistenza ). Quindi sarai in grado di tenere traccia delle tue risposte, delle risposte ad esse, ecc. E anche di altri vantaggi. Dato che sei nuovo qui, potresti voler partecipare al nostro tour , che contiene informazioni per i nuovi utenti.
gung - Ripristina Monica

Hai già pubblicato la risposta identica stats.stackexchange.com/a/253268/3277 in precedenza in una discussione simile. La duplicazione delle risposte non è considerata giusta. Vorrei suggerire di eliminare quello attuale. Ma puoi e puoi pubblicare un link ad altre tue risposte - come commento sotto la domanda di un PO o essere; devi una risposta in una discussione corrente.
ttnphns,

2

Per quanto mi riguarda, se si desidera una scelta sicura, i metodi di clustering spettrale hanno raggiunto i più alti tassi di precisione negli ultimi anni, almeno nel clustering di immagini.

Per quanto riguarda la metrica della distanza, dipende molto da come sono organizzati i dati. La scelta sicura è la semplice distanza euclidea ma se sai che i tuoi dati contengono molte varietà, dovresti mappare i punti tramite i metodi del kernel.

PS: sono tutti legati a valori numerici, non categorici. Non sono sicuro di come si farebbe per raggruppare i dati categorici.


2

Ecco un riepilogo di diversi algoritmi di clustering che possono aiutare a rispondere alla domanda

"quale tecnica di clustering dovrei usare?"

Non esiste un algoritmo di clustering oggettivamente "corretto" Rif

Gli algoritmi di clustering possono essere classificati in base al loro "modello di cluster". Un algoritmo progettato per un particolare tipo di modello generalmente fallisce su un diverso tipo di modello. Ad esempio, k-points non riesce a trovare cluster non convessi, può trovare solo cluster di forma circolare.

Pertanto, comprendere questi "modelli di cluster" diventa la chiave per comprendere come scegliere tra i vari algoritmi / metodi di clustering. I modelli di cluster tipici includono:

[1] Modelli di connettività: crea modelli basati sulla connettività a distanza. Ad esempio clustering gerarchico. Utilizzato quando abbiamo bisogno di partizioni diverse in base all'altezza del taglio dell'albero. Funzione R: hclust nel pacchetto stats.

[2] Modelli centroidi: crea modelli rappresentando ciascun cluster con un singolo vettore medio. Utilizzato quando è necessario il partizionamento nitido (al contrario del cluster fuzzy descritto più avanti). Funzione R: kmeans nel pacchetto stats.

[3] Modelli di distribuzione: crea modelli basati su distribuzioni statistiche come le distribuzioni normali multivariate utilizzate dall'algoritmo di massimizzazione delle aspettative. Utilizzato quando le forme dei cluster possono essere arbitrarie a differenza dei k-medie che presuppongono cluster circolari. Funzione R: emcluster nel pacchetto emcluster.

[4] Modelli di densità: crea modelli basati su cluster come aree dense connesse nello spazio dati. Ad esempio DBSCAN e OTTICA. Utilizzato quando le forme dei cluster possono essere arbitrarie a differenza dei k-medie che assumono cluster circolari. Funzione R dbscan nel pacchetto dbscan.

[5] Modelli di spazio secondario: crea modelli basati sia sui membri del cluster che sugli attributi pertinenti. Ad esempio il ciclismo (noto anche come co-clustering o clustering a due modalità). Utilizzato quando è necessario il clustering simultaneo di righe e colonne. Funzione R biclust nel pacchetto biclust.

[6] Modelli di gruppo: crea modelli basati sulle informazioni di raggruppamento. Ad esempio filtro collaborativo (algoritmo di raccomandazione). Funzione R Raccomandatore nel pacchetto recommenderlab.

[7] Modelli basati su grafici: costruisce modelli basati sulla cricca. Gli algoritmi di rilevamento della struttura della comunità cercano di trovare sottografi densi nei grafici diretti o non indirizzati. Ad esempio, la funzione R cluster_walktrap nel pacchetto igraph.

[8] Kohonen Mappa delle funzioni autoorganizzanti: costruisce modelli basati su reti neurali. Funzione R nel pacchetto kohonen.

[9] Clustering spettrale: crea modelli basati su una struttura a grappolo non convessa o quando una misura del centro non è una descrizione adatta dell'intero cluster. Funzione specc R nel pacchetto kernlab.

[10] clustering sottospaziale: per dati ad alta dimensione, le funzioni di distanza potrebbero essere problematiche. i modelli di cluster includono gli attributi rilevanti per il cluster. Ad esempio, la funzione hddc nel pacchetto R HDclassif.

[11] Clustering di sequenze: sequenze di gruppi correlate. pacchetto rBlast.

[12] Propagazione dell'affinità: crea modelli basati sul passaggio di messaggi tra punti dati. Non richiede il numero di cluster da determinare prima di eseguire l'algoritmo. È meglio per determinate attività di visione artificiale e biologia computazionale, ad esempio raggruppamento di immagini di volti umani e identificazione di trascrizioni regolamentate, rispetto a k- mean , Ref Rpackage APCluster.

[13] Streaming di cluster: costruisce modelli basati su dati che arrivano continuamente come registrazioni telefoniche, transazioni finanziarie ecc. Ad esempio pacchetto R BIRCH [ https://cran.r-project.org/src/contrib/Archive/birch/]

[14] Cluster di documenti (o cluster di testo): crea modelli basati su SVD. È stato utilizzato nell'estrazione di argomenti. Ad esempio Carrot [ http://search.carrot2.org] è un motore di clustering di risultati di ricerca open source che può raggruppare i documenti in categorie tematiche.

[15] Modello di classe latente: mette in relazione un insieme di variabili multivariate osservate con un insieme di variabili latenti. LCA può essere utilizzato nel filtro collaborativo. Funzione R Il raccomandatore nel pacchetto recommenderlab ha funzionalità di filtro collaborativo.

[16] Biclustering: utilizzato per raggruppare contemporaneamente righe e colonne di dati a due modalità. Ad esempio, funzione R ciclismo nella confezione ciclismo.

[17] Soft clustering (fuzzy clustering): ogni oggetto appartiene a ciascun cluster in una certa misura. Ad es. R Funzione Fclust nel pacchetto fclust.

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.