Come interpretare la media della trama Silhouette?


34

Sto cercando di usare la trama silhouette per determinare il numero di cluster nel mio set di dati. Dato il set di dati Train , ho usato il seguente codice matlab

Train_data = full(Train);  
Result = [];  
for num_of_cluster = 1:20  
    centroid = kmeans(Train_data,num_of_cluster,'distance','sqeuclid');  
    s = silhouette(Train_data,centroid,'sqeuclid');  
    Result = [ Result; num_of_cluster mean(s)];  
end  
plot( Result(:,1),Result(:,2),'r*-.');`

Il diagramma risultante è riportato di seguito con l'asse x come numero di cluster e yaxis come valore di silhouette .

Come interpreto questo grafico? Come posso determinare il numero di cluster da questo?

inserisci qui la descrizione dell'immagine


Per determinare il numero di cluster, consultare il metodo MST (minimo spanning tree) in visualizzazione-software-per-clustering .
denis,

@Learner: la funzione silhouette è integrata in qualche libreria? In caso contrario, potresti pubblicarlo nella tua domanda se non ti dispiace?
Legenda,

@Legend: è disponibile nella casella degli strumenti Matlab Statistics.
Studente il

@Learner: Ooops ... Pensavo stessi usando Python :) Grazie per avermelo fatto notare.
Legenda,

1
+1 per mostrare il codice! Inoltre, poiché la media massima della tua silhouette si verifica quando k = 2, potresti voler controllare se i tuoi dati sono raggruppati, cosa che può essere fatta usando la statistica gap (un altro link ).
Franck Dernoncourt,

Risposte:


41

La risposta di Sergey contiene il punto critico, ovvero che il coefficiente di silhouette quantifica la qualità del clustering raggiunto, quindi è necessario selezionare il numero di cluster che massimizza il coefficiente di silhouette.


La lunga risposta è che il modo migliore per valutare i risultati delle attività di clustering è iniziare esaminando effettivamente - ispezione umana - i cluster formati e facendo una determinazione basata sulla comprensione di ciò che i dati rappresentano, ciò che rappresenta un cluster, e ciò che il clustering è destinato a raggiungere.

Esistono numerosi metodi quantitativi per valutare i risultati del clustering che dovrebbero essere utilizzati come strumenti, con piena comprensione dei limiti. Tendono ad essere abbastanza intuitivi in ​​natura e quindi hanno un fascino naturale (come i problemi di raggruppamento in generale).

Esempi: massa / raggio / densità del cluster, coesione o separazione tra cluster, ecc. Questi concetti sono spesso combinati, ad esempio il rapporto tra separazione e coesione dovrebbe essere elevato se il clustering ha avuto successo.

Il modo in cui viene misurato il clustering è informato dal tipo di algoritmi di clustering utilizzati. Ad esempio, la misurazione della qualità di un algoritmo di clustering completo (in cui tutti i punti sono inseriti in cluster) può essere molto diversa dalla misurazione della qualità di un algoritmo di cluster fuzzy basato su soglia (in cui alcuni punti potrebbero essere lasciati non cluster come 'rumore' ).


Il coefficiente di silhouette è una di queste misure. Funziona come segue:

Per ogni punto p, trova prima la distanza media tra p e tutti gli altri punti nello stesso cluster (questa è una misura di coesione, chiamala A). Quindi trova la distanza media tra p e tutti i punti nel cluster più vicino (questa è una misura di separazione dall'altro cluster più vicino, chiamalo B). Il coefficiente di sagoma per p è definito come la differenza tra B e A diviso per il maggiore dei due (max (A, B)).

Valutiamo il coefficiente di cluster di ciascun punto e da questo possiamo ottenere il coefficiente di cluster medio "complessivo".

Intuitivamente, stiamo cercando di misurare lo spazio tra i cluster. Se la coesione del cluster è buona (A è piccola) e la separazione del cluster è buona (B è grande), il numeratore sarà grande, ecc.

Ho costruito un esempio qui per dimostrarlo graficamente.

Coefficiente di clustering Risultati del clustering per nclusters = 2: 5

In questi grafici gli stessi dati vengono tracciati cinque volte; i colori indicano i cluster creati dal cluster k-mean, con k = 1,2,3,4,5. Cioè, ho costretto un algoritmo di clustering a dividere i dati in 2 cluster, quindi 3 e così via, e colorato il grafico di conseguenza.

La trama della silhouette mostra che il coefficiente di silhouette era più alto quando k = 3, suggerendo che è il numero ottimale di cluster. In questo esempio siamo fortunati ad essere in grado di visualizzare i dati e potremmo concordare sul fatto che tre cluster catturano meglio la segmentazione di questo set di dati.

Se non fossimo in grado di visualizzare i dati, forse a causa della maggiore dimensionalità, una trama silhouette ci darebbe comunque un suggerimento. Tuttavia, spero che la mia risposta un po 'prolissa abbia anche messo in evidenza che questo "suggerimento" potrebbe essere molto insufficiente o semplicemente sbagliato in alcuni scenari.


5
Grazie per la risposta dettagliata e soprattutto le trame sono molto utili. Tuttavia, non ho capito bene the average silhouette witdh "suggestion" could be very insufficient or just plain wrong in certain scenarios.come asserisci.
Zhubarb,

10

Dai un'occhiata al ToolBox Cluster Validity Analysis Platform (CVAP) e ad alcuni dei materiali (link) di CVAP:

Indice Silhouette (silhouette media complessiva) un valore Silhouette più grande indica una migliore qualità di un risultato di raggruppamento [Chen et al. 2002]

  • N. Bolshakova, F. Azuaje. 2003. Tecniche di validazione del cluster per i dati di espressione del genoma, Signal Processing. V.83. N4, P.825-833.
  • E. Dimitriadou, S. Dolnicar, A. Weingessel. Un esame degli indici per determinare il numero di cluster in set di dati binari. Psychometrika, 67 (1): 137-160, 2002.

Puoi anche controllare questo (semplice) strumento per stimare il numero di cluster

Dai un'occhiata agli esempi di entrambi i toolkit (puoi anche utilizzare altre tecniche di convalida del cluster)


6

Ho esaminato la stessa cosa oggi e ho trovato un'interpretazione qui . Ha un senso logico, ma non sono sicuro che possiamo applicare ciecamente l'interpretazione per i nostri set di dati. In sintesi, ciò che dice quell'articolo è il seguente:

0.71-1.0
A strong structure has been found

0.51-0.70
A reasonable structure has been found

0.26-0.50
The structure is weak and could be artificial. Try additional methods of data analysis.

< 0.25
No substantial structure has been found

Tuttavia, sembra che possiamo usare la larghezza della sagoma per catturare i valori anomali. In un'attività di raggruppamento di documenti che sto attualmente gestendo, quelli con larghezza della sagoma negativa sono valori anomali definiti (se incrociati con il loro significato semantico). Non sono sicuro che questa larghezza migliorerà dopo aver rimosso gli outlier (di nuovo, questo ha un senso logico, ma non l'ho fatto da solo).


4
Solo un'osservazione storica, il tavolo proviene originariamente da Sewell, Grandville e PJ Rousseau. "Trovare gruppi nei dati: un'introduzione all'analisi dei cluster". (1990). img546.imageshack.us/img546/4523/cnfg.png (forse pubblicato in precedenza in uno degli articoli degli autori)
Franck Dernoncourt

Il link nella risposta non è più disponibile. Potresti fornire un altro riferimento?
BajajG,

Ecco il link all'articolo dall'archivio web: web.archive.org/web/20111002220803/http://www.unesco.org:80/…
Justas

1

Se stai cercando di selezionare il numero di cluster per l'apprendimento non supervisionato, forse potresti provare a fare qualcosa di simile-

http://scikit-learn.org/stable/auto_examples/cluster/plot_kmeans_silhouette_analysis.html

Usano più della media della silhouette (usano la distribuzione) ma ha senso. Sembra preferire cluster più piccoli ma forse potresti provarlo con alcuni dati generati e vedere se funziona?

In alternativa, puoi controllare questo documento-

http://www.sciencedirect.com/science/article/pii/0377042787901257

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.