Por que o algoritmo de agrupamento k-means usa apenas a métrica de distância euclidiana?

62

Existe um propósito específico em termos de eficiência ou funcionalidade porque o algoritmo k-means não usa, por exemplo, (des) semelhança de cosseno como uma métrica de distância, mas apenas pode usar a norma euclidiana? Em geral, o método K-means está em conformidade e correto quando outras distâncias além da Euclidiana são consideradas ou usadas?

[Adição por @ttnphns. A questão é dupla. "Distância (não) euclidiana" pode dizer respeito à distância entre dois pontos de dados ou à distância entre um ponto de dados e um centro de cluster. Ambas as formas foram tentadas abordar as respostas até agora.]

curioso
fonte
Esta pergunta já foi feita cerca de 10 vezes no stackoverflow e neste site. Por favor, use a função de pesquisa.
Anony-Mousse
3
@ Anony-Mousse: Embora eu concorde inteiramente com você e levantei um monte de bandeiras recentemente no SO, acho a falta de fechamento duplicado na maioria dessas perguntas perturbadora.
Nikana Reklawyks
4
Esta é a página que aparece em primeiro lugar ao pesquisar sobre este tópico.
precisa saber é o seguinte

Respostas:

62

O procedimento K-Means - que é um método de quantização vetorial frequentemente usado como um método de agrupamento - não usa explicitamente as distâncias entre pares, em pontos de dados em p / p (em contraste com os agrupamentos hierárquicos e alguns outros que permitem a medição arbitrária da proximidade). Isso equivale a atribuir pontos repetidamente ao centróide mais próximo, usando a distância euclidiana dos pontos de dados para um centróide . No entanto, K-Means é implicitamente baseado em distâncias euclidianas em pares , em pontos de dados, porque a soma dos desvios quadrados do centróide é igual à soma das distâncias euclidianas quadradas em pares, divididas pelo número de pontos. O termo "centróide" é ele próprio da geometria euclidiana. É uma média multivariada no espaço euclidiano. O espaço euclidiano é sobre distâncias euclidianas. As distâncias não euclidianas geralmente não abrangem o espaço euclidiano. É por isso que K-Means é apenas para distâncias euclidianas.

Mas uma distância euclidiana entre dois pontos de dados pode ser representada de várias maneiras alternativas . Por exemplo, está intimamente ligado ao produto cosseno ou escalar entre os pontos. Se você tem cosseno, covariância ou correlação, sempre pode (1) transformá-lo em distância euclidiana (ao quadrado) e, em seguida, (2) criar dados para essa matriz de distâncias euclidianas (por meio das coordenadas principais ou outras formas de métricas Escala Multidimensional) a (3) insira esses dados no cluster K-Means. Portanto, é possível fazer o K-Means "trabalhar com" cossenos aos pares ou algo assim; de fato, essas implementações do cluster K-Means existem. Veja também sobre a implementação "K-means for distance matrix".

É possível programar meios K de uma maneira que calcule diretamente na matriz quadrada de distâncias euclidianas aos pares, é claro. Mas ele funcionará lentamente e, portanto, a maneira mais eficiente é criar dados para essa matriz de distância (convertendo as distâncias em produtos escalares e assim por diante - o passe descrito no parágrafo anterior) - e depois aplicar o procedimento padrão de meios K para esse conjunto de dados.

Observe que eu estava discutindo o tópico sobre se a dissimilaridade euclidiana ou nãouclidiana entre pontos de dados é compatível com K-means. Está relacionado à questão, mas não exatamente a mesma, de saber se desvios nãouclidianos do centróide (no sentido amplo, central ou quase-centróide) podem ser incorporados em meios K ou "meios K modificados".

Veja a pergunta relacionada K-means: Por que minimizar o WCSS está maximizando a Distância entre os clusters? .

ttnphns
fonte
Você pode citar alguns exemplos de documentos da abordagem que você está mencionando?
curioso
4
@ Douglas, por favor. Eu disse que k-means não usa distâncias aos pares. Está claramente indicado. Ele usa distâncias para o centróide. Mas isso significa automaticamente que está implicitamente vinculado à tarefa de otimizar distâncias aos pares dentro de clusters.
ttnphns
11
@ttnphns: no número de caracteres que você escreveu But a Euclidean distance b/w two data points can be represented in a number of alternative ways. For example, it is closely tied with cosine or scalar product b/w the points. If you have cosine, or covariance, or correlation, you can always (1) transform it to (squared) Euclidean distance, você poderia ter escrito com a mesma facilidade: distance(x,y) = 1 - cosine_sim(x,y)ou algo similarmente expressivo e informativo.
stackoverflowuser2010
11
Parece crítica válida e construtiva: é melhor incluir informações diretamente em sua postagem, em vez de confiar em um link; e geralmente é melhor ser explícito do que vago. (@stackoverflowuser cc)
whuber
3
O que você está disputando? Que é melhor, neste caso, confiar em um link, ou melhor, ser vago, ou ambos? E porque?
whuber
46

Veja também a resposta @ttnphns para uma interpretação dos meios k que realmente envolve distâncias euclidianas ponto a ponto.

A maneira como k-means é construído não se baseia em distâncias .

K-means minimiza a variação dentro do cluster. Agora, se você olhar para a definição de variância, ela é idêntica à soma das distâncias euclidianas quadradas do centro. (@ttnphns resposta refere-se a distâncias euclidianas em pares!)

A idéia básica do k-means é minimizar os erros ao quadrado . Não há "distância" envolvida aqui.

Por que não é correto usar distâncias arbitrárias: porque o k-means pode parar de convergir com outras funções de distância . A prova comum de convergência é assim: a etapa de atribuição e a etapa de atualização média otimizam o mesmo critério. Existe um número finito de tarefas possíveis. Portanto, ele deve convergir após um número finito de melhorias. Para usar esta prova para outras funções de distância, você deve mostrar que a média (nota: k- significa ) também minimiza suas distâncias.

Se você está procurando uma variante de k-means à distância de Manhattan, existem k-medianas. Porque a mediana é um melhor estimador L1 conhecido.

Se você deseja funções de distância arbitrárias, dê uma olhada no k-medoids (aka: PAM, particionando em torno do medoids). O medóide minimiza distâncias arbitrárias (porque é definido como o mínimo), e só existe um número finito de possíveis medoóides também. É muito mais caro que a média, no entanto.

Anony-Mousse
fonte
Mas, no primeiro passo de k-significa que cada ponto é colocado no cluster com a distância euclidiana mais próximo com o centróide do cluster ... Então há uma distância métrica
curiosa
@AnonyMousse @ttnphns answer refers to pairwise Euclidean distances!Na minha resposta, parágrafo 1º, refiro-me claramente tanto a "erro SS" (direta) e "par a par d ^ 2" (implícitas) interpretações.
ttnphns
3
Eu concordo com você responder. Observe que sua conta operacional k-means may stop converging with other distance functionsé homóloga à minha teórica Non-euclidean distances will generally not span euclidean space.
precisa saber é o seguinte
muito boa explicação. Nunca pensei duas vezes na distância euclidiana e não percebi que estava realmente minimizando a soma dos quadrados que se formavam.
Verena Haunschmid
Eu ainda não posso ver porque a média minimiza distâncias em termos de distâncias euclidianas e em termos de cosseno ele faz não como parte da prova
curiosa
9

Eu posso ser um pouco pedante aqui, mas K-means é o nome dado a um algoritmo específico que atribui rótulos a pontos de dados, de modo que as variações de cluster sejam minimizadas, e não é o nome de uma "técnica geral".

O algoritmo K-means foi proposto de forma independente a partir de vários campos, com fortes interpretações aplicáveis ​​ao campo. Acontece que também é uma distância euclidiana do centro. Para uma breve história do K-means, leia Data Clustering: 50 anos além do K-means

Há uma infinidade de outros algoritmos de cluster que usam métricas diferentes do Euclidiano. O caso mais geral que conheço é o uso de Bregman Divergences para clustering, do qual Euclidean é um caso especial.

user1669710
fonte
"que não euclidiana métricas" Eu poderia ser um pouco mais pedante, mas essas divergências não são métricas, em geral :)
mic
verdadeiro :); eu provavelmente deveria editar a resposta.
user1669710
8

Uma vez que, aparentemente, essa é agora uma pergunta canônica, e ainda não foi mencionada aqui:

Uma extensão natural dos meios k para usar métricas de distância diferentes da distância euclidiana padrão em é usar o truque do kernel . Isso se refere à idéia de mapear implicitamente as entradas para um espaço Hilbert de alta ou infinita dimensão, onde as distâncias correspondem à função de distância que queremos usar e executar o algoritmo nesse local. Ou seja, deixando seja algum mapa de recursos, de modo que a métrica desejada possa ser escrita , executamos k-means nos pontos . Em muitos casos, não podemos calcular o mapa explicitamente, mas nós podemosRdφ:RpHdd(x,y)=φ(x)φ(y)H{φ(xi)}φcalcule o kernel . Nem todas as métricas de distância se encaixam nesse modelo, mas muitas se encaixam, e existem funções definidas em strings, gráficos, imagens, distribuições de probabilidade e muito mais ...k(x,y)=φ(x),φ(y)H

Nesta situação, no algoritmo k-means padrão (Lloyd's), podemos atribuir pontos facilmente aos seus clusters, mas representamos os centros de cluster implicitamente (como combinações lineares dos pontos de entrada no espaço de Hilbert). Encontrar a melhor representação no espaço de entrada exigiria encontrar uma média de Fréchet , o que é bastante caro. Portanto, é fácil obter atribuições de cluster com um kernel, mais difícil de obter os meios.

O artigo a seguir discute esse algoritmo e o relaciona ao agrupamento espectral:

I. Dhillon, Y. Guan e B. Kulis. K-means do kernel, cluster espectral e cortes normalizados. KDD 2005.

Dougal
fonte
Não entendo como o truque do kernel pode ser usado com o algoritmo de Lloyd. Parece-me que, para calcular um centróide (mesmo implicitamente no espaço de Hilbert), precisaremos do mapa explícito φ (x_i)? Para atribuir pontos aos clusters, precisamos apenas do kernel, mas para recalcular os centróides, não podemos nos safar apenas do kernel, pois o centróide é a média do {φ (x_i)} atribuído a esse cluster. Estou esquecendo de algo?
user2428107
Você está certo que não podemos computar explicitamente centróides. Mas podemos representá-los simplesmente como e computar distâncias até um ponto como . 1nijCiφ(xj)xφ(x)1nijCiφ(xj)2=k(x,x)+1ni2j,jk(xj,xj)2nijk(x,xj)
Dougal
5

Eu li muitos comentários interessantes aqui, mas deixe-me acrescentar que a implementação "pessoal" do k-means do Matlab suporta 4 distâncias não euclidianas [entre pontos de dados e centros de cluster]. O único comentário da documentação que posso ver sobre isso é:

Medida de distância, no espaço p-dimensional, usada para minimização, especificada como o par separado por vírgula que consiste em 'Distância' e uma sequência.

O kmeans calcula clusters de centróides de maneira diferente para as diferentes medidas de distância suportadas. Esta tabela resume as medidas de distância disponíveis. Nas fórmulas, x é uma observação (ou seja, uma linha de X) ec é um centróide (um vetor de linha).

Em seguida, uma lista de funções ce xsegue. Assim, considerando que pé a dimensionalidade dos dados de entrada, parece que nenhuma incorporação euclidiana é realizada previamente.

BTW no passado, eu usei o k-means do Matlab com distância de correlação e (sem surpresa) fez o que deveria fazer.

Francesco Napolitano
fonte
2
Como observação, as distâncias não euclidianas suportadas são cosine(que é apenas a distância euclidiana em pontos de entrada normalizados), correlation(Euclidiana em entradas padronizadas), cityblock( , caso em que a mediana é usada em vez da média) e (que é apenas para entradas binárias). L1hammingcityblock
Dougal 25/03
@ Dougal, como a mediana é acomodada no algoritmo? Não muda k- significa para algo basicamente diferente?
ttnphns
11
Observe também que para dados binários "distância de hamming" = cityblock = distância euclidiana quadrada.
ttnphns
11
@ttnphns Sim, definitivamente não é mais o K-means, mas tem exatamente a mesma estrutura, exceto em vez de computar os centróides como meio de calcular uma mediana. E sim nas entradas binárias hamming , mas o Matlab usa a mediana para isso, em vez da média. =L22=L1
Dougal 27/03
11
@ Dougal, observe que o procedimento matlab vinculado a várias distâncias entre um ponto de dados e o centro do cluster; que não é a mesma coisa que tipos de distâncias aos pares.
ttnphns
2

A partir daqui :

insira a descrição da imagem aqui

Vamos considerar dois documentos A e B representados pelos vetores na figura acima. O cosseno trata os dois vetores como vetores unitários normalizando-os, fornecendo uma medida do ângulo entre os dois vetores. Ele fornece uma medida precisa de similaridade, mas sem considerar a magnitude. Mas a magnitude é um fator importante, considerando a semelhança.

DL Dahly
fonte
Esta é uma resposta geral. Não explica por que em k-significa não há semelhança de cosseno. Por exemplo, no cluster hierárquico, ele está sendo amplamente utilizado
curioso
3
@ DLDahly: Às vezes a magnitude é importante, às vezes é ruído. Depende do campo de pesquisa e é uma questão de padronização de dados.
precisa saber é o seguinte