Preciso descartar variáveis ​​correlacionadas / colineares antes de executar kmeans?

13

Estou executando kmeans para identificar grupos de clientes. Eu tenho aproximadamente 100 variáveis ​​para identificar clusters. Cada uma dessas variáveis ​​representa a% de gasto de um cliente em uma categoria. Portanto, se eu tiver 100 categorias, tenho essas 100 variáveis, de modo que a soma dessas variáveis ​​seja 100% para cada cliente. Agora, essas variáveis ​​estão fortemente correlacionadas entre si. Preciso soltar alguns deles para remover a colinearidade antes de executar os kmeans?

Aqui estão os dados de amostra. Na realidade, tenho 100 variáveis ​​e 10 milhões de clientes.

Customer CatA CatB CatC   
1         10%  70%  20%   
2         15%  60%  25%
Ashish Jha
fonte
1
Você já tentou a análise PCA para correlacionar seus dados?
Miroslav Sabo
2
"Colinear" não é o mesmo que "dobrado". Portanto, sua pergunta permanece incerta
ttnphns

Respostas:

10

Não descarte nenhuma variável, mas considere usar o PCA. Aqui está o porquê.

Em primeiro lugar, como apontado por Anony-mousse, o k-means não é muito afetado por colinearidade / correlações. Você não precisa jogar fora as informações por causa disso.

Em segundo lugar, se você soltar suas variáveis ​​da maneira errada, artificialmente aproximará algumas amostras. Um exemplo:

Customer CatA CatB CatC
1        1    0    0
2        0    1    0
3        0    0    1

(Eu removi a notação% e apenas coloquei valores entre 0 e 1, restritos para que todos somam 1.)

(10)2+(01)2+(00)2=2

Agora, digamos que você largue o CatC.

Customer CatA CatB 
1        1    0    
2        0    1    
3        0    0    

2(10)2+(00)2=1 . Você artificialmente tornou o cliente 3 mais parecido com o 1 e o 2, de uma forma que os dados brutos não suportam.

Em terceiro lugar, a colineraridade / correlações não são o problema. Sua dimensionalidade é. 100 variáveis ​​é grande o suficiente para que, mesmo com 10 milhões de pontos de dados, eu me preocupo que o k-means possa encontrar padrões espúrios nos dados e se ajuste a isso. Em vez disso, pense em usar o PCA para compactá-lo para um número mais gerenciável de dimensões - digamos 10 ou 12 para começar (talvez muito mais alto, talvez muito mais baixo - você terá que observar a variação ao longo de cada componente e brincar com ele. um pouco, para encontrar o número correto). Você artificialmente aproximará algumas amostras, sim, mas de maneira a preservar a maior parte da variação nos dados e que preferencialmente removerá correlações.

~~~~~

EDITAR:

Re, comentários abaixo sobre PCA. Sim, absolutamente tem patologias. Mas é bem rápido e fácil de tentar, então ainda não me parece uma aposta ruim se você deseja reduzir a dimensionalidade do problema.

Nessa nota, porém, tentei lançar rapidamente alguns conjuntos de 100 dados sintéticos dimensionais em um algoritmo k-means para ver o que eles criaram. Embora as estimativas de posição central do cluster não sejam tão precisas, a participação no cluster (ou seja, se duas amostras foram atribuídas ao mesmo cluster ou não, o que parece ser o que o OP está interessado) foi muito melhor do que eu pensava. Portanto, meu pressentimento anteriormente estava possivelmente errado - o trabalho de migração do k-significa muito bem nos dados brutos.

Pat
fonte
1
Eu acho que muito cuidado deve ser tomado ao eliminar variáveis ​​pelo PCA. Antes de mais nada, as variações devem ser normalizadas antes da eliminação, pois é possível eliminar variáveis ​​incorretamente, apenas porque elas têm escala diferente devido às suas unidades. Em segundo lugar, depois disso, eu eliminaria apenas as dimensões que possuem variação minúscula, porque, como o PCA assume uma base ortogonal, se você tiver variação em uma direção não ortogonal, isso será capturado por meios k, mas eliminado pelo PCA.
Cagdas Ozgenc #
1
(X1,X2)1ρ>0Y=X1X2(X1,X2)X1+X2X1X2YX1+X2
1
É uma discussão irrelevante no cenário não supervisionado. Para configuração supervisionada, sim, o PCA não se importa com o relacionamento com a variável de destino. Se a direção da dependência cair na direção da baixa variação, azar.
Cagdas Ozgenc
2

Em um exemplo de brinquedo em 2D ou 3D, isso não deve fazer muita diferença, apenas acrescenta alguma redundância aos seus dados: todos os seus pontos estão em um hiperplano ímpar (d-1) dimensional. O mesmo acontece com os meios de cluster. E a distância neste hiperplano dimensional (d-1) é um múltiplo linear da mesma distância, portanto não muda nada.

(x,y)(x,y,x+y)xy

Vejamos o exemplo mais simples: variáveis ​​duplicadas.

Se você executar o PCA em seu conjunto de dados e duplicar uma variável, isso significa efetivamente colocar um peso duplicado nessa variável. O PCA é baseado no pressuposto de que a variação em todas as direções é igualmente importante - portanto, você deve ponderar cuidadosamente as variáveis ​​(levando em consideração as correlações e também qualquer outro pré-processamento necessário) antes de executar o PCA.

Possui QUIT - Anony-Mousse
fonte
1
À luz da minha análise em stats.stackexchange.com/a/50583 , esse raciocínio parece estar incorreto.
whuber
Eu melhorei muito minha resposta, era muito baseada nos dados de exemplo de brinquedos.
QuIT - Anony-Mousse
1

É recomendável remover variáveis ​​se elas estiverem altamente correlacionadas .

Independentemente do algoritmo de agrupamento ou método de ligação, uma coisa que você geralmente segue é encontrar a distância entre os pontos. Manter as variáveis ​​que estão altamente correlacionadas é apenas dar a elas mais, dobre o peso ao calcular a distância entre dois pontos (como todas as variáveis ​​são normalizadas, o efeito geralmente será o dobro).

Em suma, a força das variáveis ​​para influenciar a formação do cluster aumenta se tiver uma alta correlação com qualquer outra variável.

Tarun Kumar Yellapu
fonte