Convergenza nel metodo k-media di Hartigan-Wong e altri algoritmi


10

Ho cercato di comprendere i diversi algoritmi di clustering di k-means principalmente implementati nel statspacchetto del Rlinguaggio.

Capisco l'algoritmo di Lloyd e l'algoritmo online di MacQueen. Il modo in cui li capisco è il seguente:

Algoritmo di Lloyd:

Inizialmente vengono scelte le osservazioni casuali "k" che serviranno da centroidi dei cluster "k". Quindi i seguenti passaggi si verificano nell'iterazione fino a quando i centroidi convergono.

  1. Viene calcolata la distanza euclidea tra ciascuna osservazione e i centroidi scelti.
  2. Le osservazioni più vicine a ciascun centroide sono etichettate all'interno di secchi 'k'.
  3. La media di tutte le osservazioni in ciascun secchio funge da nuovo centroide.
  4. I nuovi centroidi sostituiscono i vecchi centroidi e l'iterazione ritorna al passaggio 1 se i vecchi e nuovi centroidi non sono convergenti.

Le condizioni per la convergenza sono le seguenti: il vecchio e il nuovo centroide sono esattamente identici, la differenza tra i centroidi è piccola (dell'ordine di 10 ^ -3) o viene raggiunto il numero massimo di iterazioni (10 o 100).

Algoritmo di MacQueen:

Questa è una versione online in cui le prime istanze 'k' sono scelte come centroidi.

Quindi ogni istanza viene posizionata in bucket in base al centroide più vicino a tale istanza. Il rispettivo centroide viene ricalcolato.

Ripetere questo passaggio fino a quando ogni istanza non viene posizionata nel bucket appropriato.

Questo algoritmo ha solo un'iterazione e il ciclo continua per le istanze 'x'

Algoritmo di Hartigan-Wong:

  1. Assegna tutti i punti / istanze a bucket casuali e calcola il rispettivo centroide.
  2. A partire dalla prima istanza trova il centroide più vicino e assilla quel secchio. Se il bucket è stato modificato, ricalcolare i nuovi centroidi, ovvero il centroide del bucket appena assegnato e il centroide della vecchia assegnazione di bucket, in quanto questi sono due centroidi interessati dalla modifica
  3. Passa attraverso tutti i punti e ottieni nuovi centroidi.
  4. Esegui una seconda ripetizione dei punti 2 e 3 che eseguono una sorta di operazione di pulizia e riassegnano i punti randagi per correggere i bucket.

Quindi questo algoritmo esegue 2 iterazioni prima di vedere il risultato della convergenza.

Ora, non sono sicuro che ciò che penso al punto 4 dell'algoritmo di Hartigan-Wong sia il metodo corretto dell'algoritmo. La mia domanda è: se il seguente metodo per Hartigan-Wong è il metodo corretto per implementare k-mean? Ci sono solo due iterazioni per questo metodo? in caso contrario, qual è la condizione per la convergenza (quando fermarsi)?

Un'altra possibile spiegazione dell'implementazione è ciò che capisco.

  1. Assegna tutti i punti / istanze a bucket casuali e calcola il rispettivo centroide.
  2. A partire dalla prima istanza trova il centroide più vicino e assegna quel bucket. Se il bucket è cambiato, ricalcolare i nuovi centroidi, ovvero il centroide del bucket appena assegnato e il centroide della vecchia assegnazione di bucket, poiché questi sono due centroidi interessati dalla modifica.
  3. Dopo aver apportato una modifica al bucket per qualsiasi punto, tornare alla prima istanza e ripetere nuovamente i passaggi.
  4. L'iterazione termina quando tutte le istanze sono ripetute e nessuno dei punti cambia bucket.

In questo modo ci sono molte iterazioni che iniziano ripetutamente dall'inizio del set di dati ogni volta che un'istanza cambia bucket.

Qualsiasi spiegazione sarebbe utile e per favore fatemi sapere se la mia comprensione per uno di questi metodi è sbagliata.


Che cosa è un "secchio"?
Ha QUIT - Anony-Mousse il

@ Anony-Mousse "secchio" è un "cluster". Ad esempio: k-means viene utilizzato per dividere i dati in bucket / cluster "k"
Sid

Ma poi suona come l'algoritmo MacQueens.
Ha QUIT - Anony-Mousse il

@ Anony-Mousse. sì, a parte il primo passo, Hartigan-Wong sembra proprio l'algoritmo MacQueens. Ma non sono sicuro che questa sia la comprensione corretta. Potrebbe esserci qualche concetto che mi manca per le iterazioni e la convergenza.
Sid,

Risposte:


1

L'algoritmo di HW, dall'articolo del 1979, prende come input i cluster iniziali. Tuttavia, gli autori suggeriscono un metodo per ottenerli nella loro ultima sezione. Scrivono che è garantito che nessun cluster sarà vuoto dopo l'assegnazione iniziale nella subroutine . Va come segue:

  1. X¯
  2. X¯||Xio-X¯||2
  3. {1+(L-1)[M/K]}L=1,...,K[  ]1

Per quanto riguarda l'algoritmo principale, è descritto in un documento chiamato K-Mezzi di Hartigan contro K-Mezzi di Lloyd: è tempo di cambiare? di N Slonim, E Aharoni, K Crammer, pubblicato nel 2013 da AJCAI . Nota che questa versione utilizza semplicemente una partizione iniziale casuale. Va come segue.

XXK

  1. CXKCCvC

  2. XXX

    S=1

    XCC-=C{X}

    C+={un'rgmionC*(CC)C- 1nd(X,vC*)+1nΣyC*[d(y,vC*X)-d(y,vC*)]}{X}

    C+CCC-C*C+vCvC*S0

  3. S=0

C*un'rgmionXC*dvCvC*{X}

Penso che le risposte a tutte le tue domande siano implicite nell'algoritmo sopra ... Tuttavia, devo ancora assicurarmi che questa implementazione dell'algoritmo sia standard . In particolare se è quello implementato in R. Eventuali commenti / modifiche sono i benvenuti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.