Soluções para identificação contínua de cluster online?

11

Deixe-me mostrar um exemplo de um aplicativo de cluster on-line hipotético:

insira a descrição da imagem aqui

No momento n, os pontos 1,2,3,4 são alocados ao cluster azul A e os pontos b, 5,6,7 são alocados ao cluster vermelho B.

No tempo n + 1, é introduzido um novo ponto a que é atribuído ao cluster azul A, mas também faz com que o ponto b também seja atribuído ao cluster azul A.

No final, os pontos 1,2,3,4, a, b pertencem a A e os pontos 5,6,7 a B. Para mim, isso parece razoável.

O que parece simples à primeira vista é realmente um pouco complicado - manter identificadores ao longo do tempo. Deixe-me tentar esclarecer esse ponto com um exemplo mais limítrofe:

insira a descrição da imagem aqui

O ponto verde fará com que dois pontos azuis e dois vermelhos sejam mesclados em um aglomerado que eu decidi arbitrariamente colorir azul - lembre-se de que esse já é o meu pensamento heurístico humano em ação!

Um computador para tomar essa decisão terá que usar regras. Por exemplo, quando os pontos são mesclados em um cluster, a identidade do cluster é determinada pela maioria. Nesse caso, enfrentaríamos um empate - azul e vermelho podem ser opções válidas para o novo cluster (aqui de cor azul).

Imagine um quinto ponto vermelho próximo ao verde. Então a maioria seria vermelha (3 vermelha vs 2 azul), então a cor vermelha seria uma boa escolha para o novo cluster - mas isso contradiz a escolha ainda mais clara de vermelho para o cluster mais à direita, pois as cores são vermelhas e provavelmente devem permanecer assim .

Acho suspeito pensar nisso. No final do dia, acho que não há regras perfeitas para isso - e sim heurísticas que otimizam alguns critérios de estabilidade.

Isso finalmente leva às minhas perguntas:

  1. Esse "problema" tem um nome ao qual pode ser referido?
  2. Existem soluções "padrão" para isso e ...
  3. ... existe talvez até um pacote R para isso?

Herança razoável de identidades de cluster no cluster repetitivo

Raffael
fonte
Cross-post de estatísticas stats.stackexchange.com/questions/111911/... E stackoverflow: stackoverflow.com/questions/24970702/...
parou - anony-Mousse
O problema que você está tentando manter é o máximo possível a identidade dos clusters a cada etapa do processo? Para que em N + 1 você possa dizer como um cluster mudou, porque há alguma relação entre os clusters em N e os de N + 1? E o mais complicado é o que acontece se os clusters se dividirem e se fundirem?
precisa saber é o seguinte
@Spacedman: BINGO :) joyofdata.de/blog/…
Raffael
Convido você a dar uma olhada nisto e isto
farhawa 29/09/16

Respostas:

1

Dilema de estabilidade-plasticidade, taxas de aprendizado e algoritmos de esquecimento:

Primeiro, deixe-me dizer que esta é realmente uma ótima pergunta e é o tipo de provocação que realmente melhora a compreensão dos algoritmos de ML.

  1. Esse "problema" tem um nome ao qual pode ser referido?

Isso geralmente é chamado de "estabilidade". O engraçado é que a estabilidade é realmente um conceito útil no cluster regular, ou seja, não está online. A "estabilidade" do algoritmo é frequentemente escolhida como critério de seleção para se o número certo de clusters foi selecionado. Mais especificamente, o problema de estabilidade de cluster online que você descreveu é chamado de stability-plasticity dilemma.

  1. Existem soluções "padrão" para isso e ...

Primeiro, a resposta geral é que muitos algoritmos de agrupamento on-line são surpreendentemente estáveis ​​quando são bem treinados com uma grande coorte de dados iniciais. No entanto, ainda é um problema se você realmente deseja identificar as identidades de pontos do cluster enquanto permite que o algoritmo reaja a novos dados. A dificuldade de seu ponto de vista é abordada brevemente em Introdução ao aprendizado de máquina por Ethem Alpaydin. Na página 319, ele deriva o algoritmo k-means on-line através da aplicação de descida estocástica de gradiente, mas menciona que isso stability-plasticity dilemmaocorre ao escolher um valor para a taxa de aprendizado. Uma pequena taxa de aprendizado resulta em estabilidade, mas o sistema perde a adaptabilidade, enquanto uma taxa maior de aprendizado ganha adaptabilidade, mas perde a estabilidade do cluster.

Acredito que o melhor caminho a seguir é escolher uma implementação de clustering on-line que permita controlar o algoritmo de descida de gradiente estocástico e, em seguida, escolher a taxa de aprendizado para maximizar a estabilidade e a adaptabilidade da melhor maneira possível, usando um procedimento sólido de validação cruzada.

Outro método que eu já vi empregado é algum tipo de algoritmo de esquecimento, por exemplo, esquecimento de pontos mais antigos à medida que o fluxo de dados amadurece. Isso permite um sistema bastante estável em escalas de tempo rápidas e permite a evolução em escalas de tempo mais lentas. Adaptive Resonance Theoryfoi criado para tentar resolver o stability-plasticity dilemma. Você pode achar este artigo interessante.

Não sou suficientemente versado em R para sugerir um algoritmo, mas sugiro que você procure um mini-batch k-meansalgoritmo que permita controlar a taxa de aprendizado em seu algoritmo de descida de gradiente estocástico.

Eu espero que isso ajude!

AN6U5
fonte