Ho cercato di comprendere i diversi algoritmi di clustering di k-means principalmente implementati nel stats
pacchetto del R
linguaggio.
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.
- Viene calcolata la distanza euclidea tra ciascuna osservazione e i centroidi scelti.
- Le osservazioni più vicine a ciascun centroide sono etichettate all'interno di secchi 'k'.
- La media di tutte le osservazioni in ciascun secchio funge da nuovo centroide.
- 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:
- Assegna tutti i punti / istanze a bucket casuali e calcola il rispettivo centroide.
- 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
- Passa attraverso tutti i punti e ottieni nuovi centroidi.
- 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.
- Assegna tutti i punti / istanze a bucket casuali e calcola il rispettivo centroide.
- 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.
- Dopo aver apportato una modifica al bucket per qualsiasi punto, tornare alla prima istanza e ripetere nuovamente i passaggi.
- 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.