Convergência no método Hartigan-Wong k-means e outros algoritmos

10

Eu tenho tentado entender os diferentes algoritmos de clustering k-means, principalmente implementados no statspacote da Rlinguagem.

Entendo o algoritmo de Lloyd e o algoritmo on-line de MacQueen. A maneira como eu os entendo é a seguinte:

Algoritmo de Lloyd:

Inicialmente, são escolhidas observações aleatórias 'k' que servirão como centróides dos clusters 'k'. Em seguida, as etapas a seguir ocorrem na iteração até os centróides convergirem.

  1. A distância euclidiana entre cada observação e os centróides escolhidos é calculada.
  2. As observações mais próximas de cada centróide são marcadas nos intervalos 'k'.
  3. A média de todas as observações em cada balde serve como novos centróides.
  4. Os novos centróides substituem os antigos centróides e a iteração volta à etapa 1 se os antigos e novos centróides não convergirem.

As condições para convergir são as seguintes: os centróides antigos e os novos são exatamente idênticos, a diferença entre os centróides é pequena (da ordem de 10 ^ -3) ou o número máximo de iterações (10 ou 100) é atingido.

Algoritmo de MacQueen:

Esta é uma versão online em que as primeiras instâncias 'k' são escolhidas como centróides.

Em seguida, cada instância é colocada em baldes, dependendo do centróide mais próximo dessa instância. O centróide respectivo é recalculado.

Repita esta etapa até que cada instância seja colocada no balde apropriado.

Esse algoritmo possui apenas uma iteração e o loop continua nas instâncias 'x'

Algoritmo de Hartigan-Wong:

  1. Atribua todos os pontos / instâncias a intervalos aleatórios e calcule o respectivo centróide.
  2. A partir da primeira instância, encontre o centróide mais próximo e avalie esse balde. Se o balde for alterado, recalcule os novos centróides, isto é, o centróide do balde recém-atribuído e o centróide da atribuição de balde antigo, pois são dois centróides afetados pela alteração
  3. Passe por todos os pontos e obtenha novos centróides.
  4. Faça uma segunda iteração dos pontos 2 e 3, que executa uma espécie de operação de limpeza e reatribui pontos perdidos para corrigir as caçambas.

Portanto, esse algoritmo executa duas iterações antes de vermos o resultado da convergência.

Agora, não tenho certeza se o que penso no ponto 4 do algoritmo Hartigan-Wong é o método correto do algoritmo. Minha pergunta é: se o método a seguir para Hartigan-Wong é o método correto para implementar o k-means? Existem apenas duas iterações para este método? caso contrário, qual é a condição para convergência (quando parar)?

Outra explicação possível da implementação é o que eu entendo.

  1. Atribua todos os pontos / instâncias a intervalos aleatórios e calcule o respectivo centróide.
  2. A partir da primeira instância, encontre o centróide mais próximo e atribua esse balde. Se o balde for alterado, recalcule os novos centróides, isto é, o centróide do balde recém-atribuído e o centróide da atribuição antiga do balde, pois são dois centróides afetados pela alteração.
  3. Quando houver uma alteração no intervalo para qualquer ponto, volte para a primeira instância e repita as etapas novamente.
  4. A iteração termina quando todas as instâncias são iteradas e nenhum dos pontos altera os buckets.

Dessa forma, existem muitas iterações que começam do início do conjunto de dados repetidamente sempre que uma instância altera os buckets.

Quaisquer explicações seriam úteis e, por favor, deixe-me saber se eu entendi errado algum desses métodos.

Sid
fonte
O que é um "balde"?
QuIT - Anony-Mousse
@ Anony-Mousse "balde" é um "cluster". Por ex: k-meio é utilizado para dividir os dados em baldes 'K' / aglomerados
Sid
Mas então soa como o algoritmo MacQueens.
QuIT - Anony-Mousse
@ Anony-Mousse. sim, além do primeiro passo, Hartigan-Wong parece exatamente o algoritmo de MacQueens. Mas não tenho certeza se esse é o entendimento correto. Pode estar faltando algum conceito para iterações e convergência.
Sid

Respostas:

1

O algoritmo de HW, do artigo de 1979, toma como entrada os agrupamentos iniciais. No entanto, os autores sugerem um método para obtê-los em sua última seção. Eles escrevem que é garantido que nenhum cluster estará vazio após a atribuição inicial na sub-rotina . É o seguinte:

  1. Calcular a média geral x¯.
  2. Ordene as observações com relação à sua distância para x¯, isso é ||xEu-x¯||2 (em ordem crescente, eu acho?).
  3. Pegue os pontos em posição {1 1+(eu-1 1)[M/K]}, Onde eu=1 1,...,K, como centróides iniciais. ([  ] provavelmente se referem à função do piso, portanto, a 1 1 no inicio.)

Quanto ao algoritmo principal, ele é descrito em um artigo chamado K-Means de Hartigan versus K-Means de Lloyd - É hora de mudar? por N Slonim, E Aharoni, K Crammer, publicado em 2013 pela AJCAI . Observe que esta versão simplesmente usa uma partição inicial aleatória. É o seguinte.

Para os vetores xX e um número alvo de clusters K,

  1. Conjunto C para ser uma partição aleatória de X para dentro K agrupar e calcular o vetor centróide associado a cada CCdenote-os vC.

  2. Varredura X em ordem aleatória e para todos xX

    2.1 Defina o indicador de parada para s=1 1

    2.1 Remover provisoriamentex do seu cluster C, de locação C-=C{x}.

    2.2 Localizar

    C+={umargmEunC(CC)C- 1 1nd(x,vC)+1 1nyC[d(y,vCx)-d(y,vC)]}{x}

    2.3 Se C+C, redefinir CC- e CC+ e atualizar seus respectivos vetores vC e vC. Também redefinirs0 0.

  3. E se s=0 0, volte para 2.

Aqui eu faço um leve abuso de notação deixando C ser a solução do umargmEunno 2.2. Esta etapa, 2.2, simplesmente calcula a mudança na perda obtida sex é adicionado a C, em vez de ficar sozinho em seu próprio cluster (uma vez removido). dsignifica distância. Finalmente, as maneiras particulares de calcular os vetores atualizadosvC, vC{x}e assim por diante é fornecido no artigo citado acima. Eles podem ser feitos em tempo linear.

Acho que as respostas para todas as suas perguntas estão implícitas no algoritmo acima ... No entanto, ainda tenho que garantir que essa implementação do algoritmo seja padrão . Em particular se for o implementado em R. Quaisquer comentários / edição são bem-vindos.

Perochkin
fonte