Preciso agrupar unidades em clusters para minimizar a soma de quadrados dentro do grupo (WSS), mas preciso garantir que cada um dos clusters contenha pelo menos m unidades. Alguma idéia se alguma das funções de cluster de R permitir agrupar em k clusters sujeitos a uma restrição mínima de tamanho de cluster? O kmeans () parece não oferecer uma opção de restrição de tamanho.
fonte
Este problema é tratado neste documento:
Bradley, PS, KP Bennett e Ayhan Demiriz. "K-significa restrito agrupamento." Pesquisa Microsoft, Redmond (2000) : 1-8.
Eu tenho uma implementação do algoritmo em python.
fonte
rPython
pacote no R para criar uma interface para esta implementação que eu acessei do meu script R.Eu acho que seria apenas uma questão de executar os meios k como parte de um loop if com um teste para tamanhos de cluster, ou seja, Contar n no cluster k - lembre-se também de que os meios k fornecerão resultados diferentes para cada execução nos mesmos dados. você provavelmente deve executá-lo como parte de um loop de qualquer maneira para extrair o "melhor" resultado
fonte
Qual é o tamanho do seu conjunto de dados? Talvez você possa tentar executar um cluster hierárquico e decidir quais clusters serão retidos com base no seu dendrograma.
Se o seu conjunto de dados for grande, você também poderá combinar os dois métodos de cluster: um cluster não hierárquico inicial e, em seguida, um cluster hierárquico usando os grupos da análise não hierárquica. Você pode encontrar um exemplo dessa abordagem em Martínez-Pastor et al (2005)
fonte
Isso pode ser alcançado modificando a etapa de atribuição de cluster (E em EM), formulando-a como um problema de otimização de rede linear de fluxo de custo mínimo (MCF).
Eu escrevi um pacote python que usa o SimpleMinCostFlow das ferramentas de Pesquisa Operacional do Google, que é uma implementação rápida de C ++. Tem uma API padrão do scikit-lean.
fonte