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%
Respostas:
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:
(Eu removi a notação% e apenas coloquei valores entre 0 e 1, restritos para que todos somam 1.)
Agora, digamos que você largue o CatC.
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.
fonte
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.
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.
fonte
É 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.
fonte