Como interpretar a média do gráfico Silhouette?


34

Estou tentando usar o gráfico de silhueta para determinar o número de cluster no meu conjunto de dados. Dado o conjunto de dados Train , usei o seguinte código 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*-.');`

O gráfico resultante é fornecido abaixo com xaxis como número de cluster e média yaxis do valor da silhueta .

Como interpreto esse gráfico? Como eu determino o número de cluster disso?

insira a descrição da imagem aqui


Para determinar o número de clusters, consulte o método mínimo da spanning tree (MST) em visualization-software-for-clustering .
Denis

@ Aluno: A função de silhueta está embutida em alguma biblioteca? Caso contrário, você poderia publicá-lo em sua pergunta se não se importar?
Legend

@Legend: Está disponível na caixa de ferramentas Estatísticas do Matlab.
Learner

@ Aluno: Opa ... Eu pensei que você estava usando Python :) Obrigado por me informar.
Legend

11
+1 por mostrar o código! Além disso, como a média máxima de sua silhueta ocorre quando k = 2, convém verificar se seus dados estão agrupados, o que pode ser feito usando a estatística de intervalo (outro link ).
Franck Dernoncourt

Respostas:


41

A resposta de Sergey contém o ponto crítico, que é o de que o coeficiente da silhueta quantifica a qualidade do agrupamento alcançado - portanto, você deve selecionar o número de clusters que maximiza o coeficiente da silhueta.


A resposta longa é que a melhor maneira de avaliar os resultados de seus esforços de cluster é começar realmente examinando - inspeção humana - os clusters formados e fazendo uma determinação com base no entendimento do que os dados representam, do que um cluster representa, e o que o clustering pretende alcançar.

Existem numerosos métodos quantitativos de avaliação dos resultados do agrupamento que devem ser usados ​​como ferramentas, com total compreensão das limitações. Eles tendem a ser bastante intuitivos por natureza e, portanto, têm um apelo natural (como problemas de agrupamento em geral).

Exemplos: massa / raio / densidade do cluster, coesão ou separação entre os clusters, etc. Esses conceitos geralmente são combinados, por exemplo, a taxa de separação para a coesão deve ser grande se o cluster for bem-sucedido.

A maneira como o clustering é medido é informada pelo tipo de algoritmo de clustering usado. Por exemplo, medir a qualidade de um algoritmo de clustering completo (no qual todos os pontos são colocados em clusters) pode ser muito diferente de medir a qualidade de um algoritmo de clustering fuzzy baseado em limites (no qual algum ponto pode ser deixado sem cluster como 'ruído' )


O coeficiente de silhueta é uma dessas medidas. Funciona da seguinte maneira:

Para cada ponto p, encontre primeiro a distância média entre pe todos os outros pontos no mesmo cluster (essa é uma medida de coesão, chame-a de A). Em seguida, encontre a distância média entre pe todos os pontos no cluster mais próximo (essa é uma medida de separação do outro cluster mais próximo, chame-o de B). O coeficiente de silhueta para p é definido como a diferença entre B e A dividida pela maior das duas (max (A, B)).

Avaliamos o coeficiente de cluster de cada ponto e, a partir disso, podemos obter o coeficiente médio 'geral' de cluster.

Intuitivamente, estamos tentando medir o espaço entre os clusters. Se a coesão do cluster for boa (A é pequena) e a separação do cluster for boa (B for grande), o numerador será grande etc.

Eu construí um exemplo aqui para demonstrar isso graficamente.

Coeficiente de cluster Resultados do armazenamento em cluster para nclusters = 2: 5

Nesses gráficos, os mesmos dados são plotados cinco vezes; as cores indicam os clusters criados pelo agrupamento k-means, com k = 1,2,3,4,5. Ou seja, forcei um algoritmo de clustering a dividir os dados em 2 clusters, depois 3 e assim por diante, e colori o gráfico de acordo.

O gráfico da silhueta mostra que o coeficiente da silhueta foi mais alto quando k = 3, sugerindo que esse é o número ideal de clusters. Neste exemplo, temos a sorte de poder visualizar os dados e podemos concordar que, de fato, três clusters capturam melhor a segmentação desse conjunto de dados.

Se não formos capazes de visualizar os dados, talvez por causa da dimensionalidade mais alta, um gráfico de silhueta ainda nos daria uma sugestão. No entanto, espero que minha resposta um tanto extenuada aqui também mostre que essa "sugestão" pode ser muito insuficiente ou simplesmente errada em certos cenários.


5
Obrigado por sua resposta detalhada, e especialmente os gráficos são muito úteis. No entanto, eu não entendi direito como the average silhouette witdh "suggestion" could be very insufficient or just plain wrong in certain scenarios.você afirma.
Zhubarb

10

Dê uma olhada na Caixa de Ferramentas da Plataforma de Análise de Validade de Cluster (CVAP) e alguns dos materiais (links) do CVAP:

Índice de silhueta (silhueta média geral), um valor maior de Silhueta indica uma melhor qualidade de um resultado de agrupamento [Chen et al. 2002]

  • N. Bolshakova, F. Azuaje. 2003. Técnicas de validação de cluster para dados de expressão do genoma, Processamento de Sinais. V.83 N4, P.825-833.
  • E. Dimitriadou, S. Dolnicar, A. Weingessel. Um exame de índices para determinar o Número de Cluster em conjuntos de dados binários. Psychometrika, 67 (1): 137-160, 2002.

Você também pode verificar esta (simples) Ferramenta para estimar o número de clusters

Basta dar uma olhada nos exemplos dos dois kits de ferramentas (você também pode usar outras técnicas de validação de cluster)


6

Estive pesquisando a mesma coisa hoje e encontrei uma interpretação aqui . Faz sentido lógico, mas não tenho certeza se podemos aplicar cegamente a interpretação para nossos conjuntos de dados. Em resumo, o que esse artigo diz é o seguinte:

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

No entanto, parece que podemos usar a largura da silhueta para capturar discrepâncias. Em uma tarefa de agrupamento de documentos que estou manipulando atualmente, aqueles com largura de silhueta negativa são valores discrepantes definidos (quando comparados com seu significado semântico). Não tenho certeza se essa largura melhorará após a remoção de outliers (novamente, isso faz sentido lógico, mas eu não fiz isso sozinho).


4
Apenas uma observação histórica, a tabela vem originalmente de Sewell, Grandville e PJ Rousseau. "Localizando grupos nos dados: uma introdução à análise de cluster." (1990). img546.imageshack.us/img546/4523/cnfg.png (talvez publicado anteriormente em um dos artigos dos autores)
Franck Dernoncourt

O link na resposta não está mais disponível. Você poderia fornecer outra referência?
BajajG

Aqui está o link para o artigo do arquivo da web: web.archive.org/web/20111002220803/http://www.unesco.org:80/…
Justas

1

Se você estiver tentando selecionar o número de clusters para aprendizado não supervisionado, talvez tente fazer algo como:

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

Eles usam mais do que apenas a média da pontuação da silhueta (eles usam a distribuição), mas faz sentido. Parece preferir clusters menores, mas talvez você possa tentar isso com alguns dados gerados e ver se funciona?

Como alternativa, você pode verificar este documento.

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.