Compreendendo comparações de resultados de cluster


13

Estou experimentando a classificação de dados em grupos. Sou bastante novo neste tópico e estou tentando entender o resultado de algumas das análises.

Usando exemplos do Quick-R , vários Rpacotes são sugeridos. Eu tentei usar dois desses pacotes ( fpcusando a kmeansfunção e mclust). Um aspecto desta análise que eu não entendo é a comparação dos resultados.

# comparing 2 cluster solutions
library(fpc)
cluster.stats(d, fit1$cluster, fit2$cluster)

Eu li as partes relevantes do fpc manual e ainda não estou claro sobre o que devo procurar. Por exemplo, este é o resultado da comparação de duas abordagens diferentes de armazenamento em cluster:

$n
[1] 521

$cluster.number
[1] 4

$cluster.size
[1] 250 119  78  74

$diameter
[1]  5.278162  9.773658 16.460074  7.328020

$average.distance
[1] 1.632656 2.106422 3.461598 2.622574

$median.distance
[1] 1.562625 1.788113 2.763217 2.463826

$separation
[1] 0.2797048 0.3754188 0.2797048 0.3557264

$average.toother
[1] 3.442575 3.929158 4.068230 4.425910

$separation.matrix
          [,1]      [,2]      [,3]      [,4]
[1,] 0.0000000 0.3754188 0.2797048 0.3557264
[2,] 0.3754188 0.0000000 0.6299734 2.9020383
[3,] 0.2797048 0.6299734 0.0000000 0.6803704
[4,] 0.3557264 2.9020383 0.6803704 0.0000000

$average.between
[1] 3.865142

$average.within
[1] 1.894740

$n.between
[1] 91610

$n.within
[1] 43850

$within.cluster.ss
[1] 1785.935

$clus.avg.silwidths
         1          2          3          4 
0.42072895 0.31672350 0.01810699 0.23728253 

$avg.silwidth
[1] 0.3106403

$g2
NULL

$g3
NULL

$pearsongamma
[1] 0.4869491

$dunn
[1] 0.01699292

$entropy
[1] 1.251134

$wb.ratio
[1] 0.4902123

$ch
[1] 178.9074

$corrected.rand
[1] 0.2046704

$vi
[1] 1.56189

Minha principal pergunta aqui é entender melhor como interpretar os resultados dessa comparação de cluster.


Anteriormente, eu havia perguntado mais sobre o efeito de escalar dados e calcular uma matriz de distância. No entanto, isso foi respondido claramente por Mariana Softfer, e estou apenas reorganizando minha pergunta para enfatizar que estou interessado na interpretação da minha saída, que é uma comparação de dois algoritmos de clustering diferentes.

Parte anterior da pergunta : Se estou fazendo algum tipo de cluster, devo sempre dimensionar os dados? Por exemplo, estou usando a função dist()no meu conjunto de dados dimensionado como entrada para a cluster.stats()função, mas não entendo completamente o que está acontecendo. Eu li sobre dist() aqui e afirma que:

essa função calcula e retorna a matriz de distância calculada usando a medida de distância especificada para calcular as distâncias entre as linhas de uma matriz de dados.


Você está procurando esclarecimentos adicionais ou está descontente com a resposta de @ mariana? Eu acho que isso diz respeito à sua primeira pergunta (segundo parágrafo). Se for esse o caso, talvez você deva atualizar sua pergunta para que as pessoas entendam por que você está dando uma recompensa por essa questão.
chl

@chl Vou atualizá-lo para torná-lo mais claro. Estou apenas procurando algumas orientações sobre como interpretar as comparações de cluster, pois não entendo o significado da saída. A resposta de @ mariana foi muito útil para explicar alguns dos termos associados a este método.
22611 Celenius

Respostas:


13

Primeiro, deixe-me dizer-lhe que não vou explicar exatamente todas as medidas aqui, mas vou lhe dar uma idéia sobre como comparar quão bons são os métodos de cluster (vamos supor que estamos comparando 2 métodos de cluster com o mesmo número) de clusters).

  1. Por exemplo, quanto maior o diâmetro do cluster, pior o cluster, porque os pontos que pertencem ao cluster são mais dispersos.
  2. Quanto maior a distância média de cada cluster, pior o método de cluster. (Vamos supor que a distância média seja a média das distâncias de cada ponto no cluster até o centro do cluster.)

Essas são as duas métricas mais usadas. Verifique estes links para entender o que eles representam:

  • distância entre aglomerados (quanto maior, melhor, é a soma da distância entre os diferentes centróides do cluster)
  • distância intra-cluster (quanto menor, melhor, é a soma da distância entre os membros do cluster e o centro do cluster)

Para entender melhor as métricas acima, verifique isso .

Em seguida, leia o manual da biblioteca e as funções que você está usando para entender quais medidas representam cada uma delas ou, se não estiverem incluídas, tente encontrar o significado das inclusões. No entanto, eu não me incomodaria e continuaria com as que afirmei aqui.

Vamos continuar com as perguntas que você fez:

  1. Em relação à escala de dados: Sim, você sempre deve escalar os dados para agrupar, caso contrário, as diferentes escalas das diferentes dimensões (variáveis) terão influências diferentes na forma como os dados são agrupados. Quanto mais altos os valores na variável, mais influente será a variável. estará na maneira como o agrupamento é feito, embora, de fato, todos eles tenham a mesma influência (a menos que, por algum motivo estranho, você não queira dessa maneira).
  2. As funções de distância calculam todas as distâncias de um ponto (instância) para outro. A medida de distância mais comum é euclidiana; portanto, suponha que você queira medir a distância da instância 1 à instância 2 (suponha que você tenha apenas duas instâncias por uma questão de simplicidade). Também vamos supor que cada instância tem 3 valores (x1, x2, x3), por isso I1=0.3, 0.2, 0.5e I2=0.3, 0.3, 0.4por isso a distância euclidiana de I1 e I2 seria: sqrt((0.3-0.2)^2+(0.2-0.3)^2+(0.5-0.4)^2)=0.17, daí a matriz de distância irá resultar em:

        i1    i2
    i1  0     0.17
    i2  0.17  0

Observe que a matriz de distância é sempre simétrica.

A fórmula da distância euclidiana não é a única que existe. Existem muitas outras distâncias que podem ser usadas para calcular essa matriz. Verifique, por exemplo, na Wikipedia Manhattain Distance e como calculá-lo. No final da página da Wikipedia para Distância euclidiana (onde você também pode verificar sua fórmula), você pode verificar quais outras distâncias existem.


Obrigado por sua resposta muito abrangente - é muito útil.
22611 Celenius

Estou realmente feliz por ter sido útil para você.
Mariana soffer

@marianasoffer o link para a página de Stanford não funciona. Atualize-o ou torne-o acessível. Obrigado
Herman Toothrot

7

Eu acho que a melhor medida de qualidade para o clustering é a suposição de cluster, conforme fornecido por Seeger no Learning with Dataed Labeled and Unabeled Data :

Por exemplo, suponha X = Rd e a validade da “suposição de cluster”, ou seja, dois pontos x, x devem ter o mesmo rótulo t se houver um caminho entre eles em X que passe apenas por regiões de P relativamente alto (x )

Sim, isso derruba toda a idéia de centróides e centros. Afinal, esses são conceitos bastante arbitrários se você pensar no fato de que seus dados podem estar em uma subvariedade não linear do espaço em que você está realmente operando.

Você pode facilmente construir um conjunto de dados sintético onde os modelos de mistura são quebrados. Por exemplo, esta: um círculo dentro de uma nuvem.

Para encurtar a história: eu media a qualidade de um algoritmo de agrupamento de maneira minimax. O melhor algoritmo de agrupamento é aquele que minimiza a distância máxima de um ponto para o vizinho mais próximo do mesmo cluster, enquanto maximiza a distância mínima de um ponto para o vizinho mais próximo de um cluster diferente.

Você pode também estar interessado em Um algoritmo de agrupamento teórico de informações não paramétricas .


Como examino um ajuste de cluster usando uma abordagem minimax? Meu nível de conhecimento de clustering é muito básico, então, no momento, estou apenas tentando entender como comparar duas abordagens diferentes de clustering.
22411 Celenius

Você poderia compartilhar o código R da figura em anexo?
Andrej

@Andrej Meu palpite é uma nuvem gaussiana ( x<-rnorm(N);rnorm(N)->y) dividida em 3 partes por r (com uma delas removida).

Não conheço um algoritmo prático que se encaixe de acordo com essa medida de qualidade. Você provavelmente ainda deseja usar K-Means et al. Mas se a medida acima quebrar, você saberá que os dados que você está vendo não são (ainda!) Adequados para esse algoritmo.
bayerj

@ Andrej Eu não uso R (vindo de ML em vez de estatísticas :) mas o que o mbq sugere parece bem.
bayerj
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.