Eu tenho uma matriz grande (650K linhas * 62 colunas) de dados binários (somente entradas de 0-1). A matriz é praticamente esparsa: cerca de 8% é preenchida.
Gostaria de agrupá-lo em 5 grupos - digamos, nomeado de 1 a 5. Tentei agrupar hierarquicamente e não foi capaz de lidar com o tamanho. Também usei o algoritmo de agrupamento k-means baseado na distância de hamming, considerando os vetores de 650K bits de comprimento 62. Não obtive resultados adequados com nenhum deles.
Por favor ajude.
clustering
dataset
k-means
binary-data
Não consolidado26
fonte
fonte
Respostas:
Você está fazendo a pergunta errada.
Em vez de perguntar "qual algoritmo", você deve perguntar "o que é uma categoria / cluster significativa em seu aplicativo".
Não estou surpreso que os algoritmos acima não funcionaram - eles foram projetados para casos de uso muito diferentes. O k-means não funciona com outras distâncias arbitrárias. Não use com distância de Hamming. Há uma razão pela qual é chamado k- means , só faz sentido usar quando a média aritmética é significativa (o que não é para dados binários).
Você pode tentar os modos k, em vez disso, o IIRC é uma variante que deve ser usada com dados categoriais e os dados binários são um tanto categoriais (mas a escarsidade ainda pode matá-lo).
Mas antes de tudo, você removeu duplicatas para simplificar seus dados e removeu colunas exclusivas / vazias, por exemplo?
Talvez APRIORI ou abordagens semelhantes também sejam mais significativas para o seu problema.
De qualquer forma, primeiro descubra o que você precisa e, em seguida, qual algoritmo pode resolver esse desafio. Trabalhe com base em dados , não experimentando algoritmos aleatórios.
fonte
Talvez eu esteja um pouco atrasado com a resposta, mas provavelmente seria útil para algum corpo no futuro.
A teoria da ressonância adaptativa é um bom algoritmo para problemas de classificação binária. Verifique o ART 1. Mais informações você pode ver no livro Neural Network Design gratuito no capítulo 19.
Essa rede combina ótima idéia biológica e boa implementação matemática. Além disso, esse algoritmo é fácil de implementar e, neste livro, você também pode encontrar instruções passo a passo sobre como criar esse classificador.
fonte
Um algoritmo clássico para agrupamento de dados binários é o modelo Bernoulli Mixture. O modelo pode ser ajustado usando métodos bayesianos e também usando EM (Maximização de Expectativas). Você pode encontrar um exemplo de código python em todo o GitHub, enquanto o primeiro é mais poderoso, mas também mais difícil. Eu tenho uma implementação C # do modelo no GitHub (usa Infer.NET que possui uma licença restritiva!).
O modelo é bastante simples. Primeiro, amostra o cluster ao qual um ponto de dados pertence. Em seguida, faça uma amostragem independente de quantos Bernoullis você tiver dimensões em seu conjunto de dados. Observe que isso implica independência condicional dos valores binários, dado o cluster!
Na configuração bayesiana, as atribuições anteriores ao cluster são uma distribuição Dirichlet. Este é o lugar para colocar priors se você acredita que alguns clusters são maiores que outros. Para cada cluster, você deve especificar uma distribuição Beta anterior para cada distribuição de Bernoulli. Normalmente, esse prioritário é Beta (1,1) ou uniforme. Por fim, não se esqueça de inicializar aleatoriamente as atribuições de cluster quando os dados forem fornecidos. Isso quebrará a simetria e o amostrador não ficará preso.
Existem vários recursos interessantes do modelo BMM na configuração bayesiana:
Cluster online (os dados podem chegar como um fluxo)
O modelo pode ser usado para inferir as dimensões ausentes
O primeiro é muito útil quando o conjunto de dados é muito grande e não cabe na RAM de uma máquina. O segundo pode ser usado em todos os tipos de tarefas de imputação de dados ausentes, por exemplo. imputando a metade ausente da imagem binária do MNIST.
fonte