Como posso testar se meu cluster de dados binários é significativo

12

Estou fazendo análises de carrinho de compras, meu conjunto de dados é um conjunto de vetores de transação, com os itens que os produtos estão sendo comprados.

Ao aplicar o k-means nas transações, sempre obterei algum resultado. Uma matriz aleatória provavelmente também mostraria alguns clusters.

Existe uma maneira de testar se o agrupamento que encontro é significativo ou pode ser muito bem uma coincidência. Se sim, como posso fazer isso.

Peter Smit
fonte

Respostas:

14

Em relação à análise do carrinho de compras, acho que o principal objetivo é individualizar as combinações mais frequentes de produtos comprados pelos clientes. Eles association rulesrepresentam a metodologia mais natural aqui (na verdade, eles foram realmente desenvolvidos para esse fim). A análise das combinações de produtos comprados pelos clientes e o número de vezes que essas combinações são repetidas leva a uma regra do tipo 'se condição e, em seguida, resulta' com uma medida de interesse correspondente. Você também pode considerar Log-linear modelspara investigar as associações entre as variáveis ​​consideradas.

Agora, quanto ao cluster, aqui estão algumas informações que podem ser úteis:

A princípio, considere Variable clustering. O clustering variável é usado para avaliar a colinearidade, redundância e para separar variáveis ​​em clusters que podem ser pontuados como uma única variável, resultando em redução de dados. Procure a varclusfunção (pacote Hmisc em R)

Avaliação da estabilidade clusterwise: function clusterboot{R package fpc}

Estatísticas baseadas em distância para validação de cluster: function cluster.stats{R package fpc}

Como o mbq mencionou, use as larguras da silhueta para avaliar o melhor número de clusters. Veja isso . Em relação às larguras das silhuetas, consulte também a função optsil .

Estimar o número de clusters em um conjunto de dados por meio da estatística de gap

Para calcular índices de dissimilaridade e medidas de distância, consulte dsvdis e vegdist

O algoritmo de clustering EM pode decidir quantos clusters a serem criados por validação cruzada (se você não puder especificar previamente quantos clusters serão gerados). Embora seja garantido que o algoritmo EM converja para o máximo, esse é um máximo local e pode não ser necessariamente o mesmo que o máximo global. Para uma melhor chance de obter o máximo global, todo o procedimento deve ser repetido várias vezes, com estimativas iniciais diferentes para os valores dos parâmetros. O valor geral da probabilidade de log pode ser usado para comparar as diferentes configurações finais obtidas: basta escolher o maior dos máximos locais . Você pode encontrar uma implementação do clusterer EM no projeto de código aberto WEKA

Este também é um link interessante.

Também procure aqui porFinding the Right Number of Clusters in k-Means and EM Clustering: v-Fold Cross-Validation

Por fim, você pode explorar os resultados do cluster usando o clusterfly

George Dontas
fonte
8

Este é um método usando Monte Carlo para mostrar se um resultado está correto.

Nossa hipótese nula H_0 é que nosso conjunto de dados não possui um cluster interessante. Nossa hipótese alternativa H_1 é que nosso conjunto de dados contém um cluster interessante.

Pensamos aqui interessante, mais interessante do que a estrutura de cluster de um conjunto de dados aleatório com as mesmas margens de linha e coluna. É claro que outras restrições poderiam ser escolhidas, mas liberar restrições tornará nosso resultado muito geral e restringir restrições restringirá muito o agrupamento, tornando o resultado insignificante automaticamente. As margens, como veremos, são uma boa escolha por causa dos métodos existentes para a randomização com ela.

Vamos definir como estatística de nosso teste o erro de agrupamento (distância ao quadrado do agrupamento), T de Π_0. O valor para o nosso conjunto de dados original é t .

Não sabemos nada sobre essa distribuição, exceto que podemos extrair amostras dela. O que o torna um bom candidato para Monte Carlo.

Agora, extraímos n (iid) amostras aleatórias de Π_0 e calculamos o valor p empírico com a fórmula p_emp = 1 / (n + 1) * (Σ_i = 1-n I (t_i> = t) + 1)

A amostragem aleatória pode ser feita por randomização de troca. Em palavras simples, um quadrado é pesquisado nos dois cantos opostos um 1 e nos outros dois cantos um 0. Então os cantos são invertidos. Isso mantém as margens da coluna e da linha. O procedimento é repetido várias vezes até que o conjunto de dados seja randomizado o suficiente (isso levará algumas experiências). Mais informações sobre isso podem ser encontradas em Avaliando resultados da mineração de dados via randomização de swap por Gionis et. al.

Um método para fazer isso é definir a distribuição dos seus dados e considerar o erro de cluster como estatística de teste t.

Por exemplo, se considerarmos todos os conjuntos de dados com as mesmas margens de linha e coluna como sendo nossa distribuição de dados, poderemos pegar n matrizes aleatórias Xi dessa distribuição e calcular o erro de agrupamento para elas. Então podemos calcular o valor empírico de p pela fórmula

Peter Smit
fonte
4

Existe algo como silhouette , que em certa medida define a estatística que determina a qualidade do cluster (por exemplo, é usada na otimização de k). Agora, um possível Monte Carlo seria o seguinte: você gera muitos conjuntos de dados aleatórios semelhantes ao original (por exemplo, alterando os valores entre as linhas em cada coluna), agrupa e obtém uma distribuição da silhueta média que pode ser usada para testar a significância de silhueta em dados reais. Ainda admito que nunca tentei essa idéia.


fonte
1
Isso me lembra um cartaz que vi na conferência Human Brain Mapping 2010. Tom Nichols usou o bootstrap paramétrico para avaliar a estabilidade da correlação e silhueta copenética no agrupamento hierárquico, mas veja seu pôster: j.mp/9yXObA .
chl
@chl Obrigado; de fato, recentemente, vi coisas semelhantes sendo feitas em meu laboratório; o resultado foi que os clusters não são significativos: - /
Concordo que isso soa como bootstrapping.
Vass
(FYI: interpretação do valor da silhueta ). Além disso, observe que o valor da silhueta não está definido para o cluster k = 1; portanto, não podemos comparar a hipótese k = 1 (ou seja, o conjunto de dados não está clusterizado) versus k> 1 (o conjunto de dados está clusterizado) usando o valor da silhueta.
Franck Dernoncourt 28/11