Preciso de algumas sugestões para o método de agrupamento (classificação não supervisionada) para um projeto de consultoria. Estou procurando um método que esperançosamente tenha as seguintes propriedades:
O assunto do meu estudo tem três propriedades. Um é representado por uma matriz de distância (não-euclidiana) e os outros dois estão na forma de vetores no espaço euclidiano. A matriz de distância vem de sequências e pode estar na forma de porcentagem de dissimilaridade ou outra medida da distância de sequências. O algoritmo deve ser capaz de pegar os vetores no espaço euclidiano e a distância não euclidiana como entrada. Por exemplo, o K-medoids pode funcionar com uma matriz de distância, mas o K-means não pode.
Gostaria que o algoritmo selecionasse o número de clusters e o peso para três propriedades automaticamente (com conhecimento e restrição anteriores).
Eu tenho informações de "centros de clusters" identificados anteriormente. Eu gostaria de incorporá-lo como valores anteriores ou iniciais.
Como estatístico, eu preferiria que o método tivesse uma função clara de probabilidade ou perda.
A coisa mais próxima que consigo pensar é ajustar um modelo de mistura na estrutura bayesiana usando o MCMC de salto reverso para determinar o número de clusters. Os vetores em R ^ d podem ser facilmente formulados com uma probabilidade normal, mas como lidar com a matriz de distância não está claro para mim. Posso restringir a média da probabilidade normal de cada observação de obter o MCMC funcionando, mas isso não tem um significado matemático / estatístico claro.
Alguém tem experiência com um problema semelhante? Sugestões para referências serão muito apreciadas!
fonte
Respostas:
Penso que usar um critério MAP / Bayesiano em combinação com uma mistura de gaussianos é uma escolha sensata. Pontos
Obviamente, você objetará que os MOGs exijam dados de entrada euclidianos . A resposta é encontrar um conjunto de pontos que dão origem à matriz de distância que você recebe. Um exemplo de técnica para isso é o dimensionamento multidimensional:argmin{xEu}∑i , j( | |xEu-xj||2-Deu j)2 Onde Deu j é a distância do ponto Eu apontar j .
fonte
Eu lidei com um problema da minha tese em que eu tinha que fazer cluster em um conjunto de dados para o qual eu só tinha uma matriz de similaridade (= distância inversa). Embora eu concorde 100% de que uma técnica bayesiana seria a melhor, o que eu usei foi um modelo discriminativo chamado Symmetric Convex Coding ( link ). Lembro-me de funcionar muito bem.
Na frente bayesiana, talvez você possa considerar algo semelhante ao agrupamento, mas não? Estou pensando na alocação de Dirichlet latente - um algoritmo realmente maravilhoso. Totalmente generativo, desenvolvido no contexto de modelagem de conteúdo de tópicos em corpora de documentos de texto. Mas encontra muitas aplicações em outros tipos de problemas não supervisionados de aprendizado de máquina. Claro, a função de distância nem é relevante lá ...
fonte
O DBSCAN funciona sem saber o número de clusters antes do tempo e pode aplicar uma ampla variedade de métricas de distância.
fonte
Você pode usar propagação de afinidade ou melhor propagação de afinidade adaptável. Aqui está o link da Wikipedia .
Existem duas vantagens principais para o seu caso e outra terceira que eu acho que é uma vantagem, mas pode não ser importante para você.
Você não fornece o número de clusters. O número final de clusters depende do valor da preferência e dos valores da matriz de similaridade. A maneira mais fácil de trabalhar com os valores de preferência é usar o valor mínimo da matriz de similaridade (que não é zero) para obter o menor número de clusters, depois tentar, por exemplo, o máximo para o maior número possível de clusters e continuar com a mediana value e assim por diante ... OU Use o algoritmo de propagação de afinidade adaptativa e tenha a preferência determinada pelo algoritmo.
Você pode fornecer qualquer medida de semelhança que possa inventar ou tomar o inverso de uma medida de distância (talvez se proteja contra a divisão por zero ao fazer isso).
3. (ponto extra) O algoritmo escolhe um exemplo que representa cada cluster e quais exemplos pertencem a ele. Isso significa que o algoritmo não fornece uma média arbitrária, mas um ponto de dados real. No entanto, você ainda pode calcular as médias posteriormente, é claro. E isso também significa que o algoritmo não usa médias intermitentes!
Software: Existem vários pacotes listados para Java, Python e R na página da Wikipedia. Se você ama o MATLAB, como eu, aqui está uma implementação.
fonte