Natura | Algoritmo di partizionamento dei dati ( d ) |
---|
Il partizionamento in k -means (o k -means in inglese) è un metodo di partizionamento dei dati e un problema di ottimizzazione combinatoria . Dati punti e un intero k , il problema è dividere i punti in k gruppi, spesso chiamati cluster , in modo da minimizzare una certa funzione. Consideriamo la distanza di un punto dalla media dei punti del suo ammasso; la funzione da minimizzare è la somma dei quadrati di queste distanze.
Esiste un'euristica classica per questo problema, spesso chiamata metodi k- medie , utilizzata per la maggior parte delle applicazioni. Il problema viene studiato anche come un classico problema di ottimizzazione, ad esempio con algoritmi di approssimazione .
Le k- medie vengono utilizzate in particolare nell'apprendimento senza supervisione in cui le osservazioni sono suddivise in k partizioni. I cluster dinamici sono una generalizzazione del principio per cui ogni partizione è rappresentata da un anello può essere più complessa della media. Un algoritmo di k -means classico è lo stesso dell'algoritmo di quantizzazione Lloyd-Max .
Dato un insieme di punti ( x 1 , x 2 ,…, x n ), proviamo a suddividere gli n punti in k insiemi S = { S 1 , S 2 ,…, S k } ( k ≤ n ) minimizzando il distanza tra i punti all'interno di ogni partizione:
dove μ i è il baricentro dei punti in S i .
Il termine " k -means" fu usato per la prima volta da James MacQueen nel 1967, sebbene l'idea originale fu proposta da Hugo Steinhaus nel 1957. L' algoritmo classico fu proposto da Stuart Lloyd nel 1957 ai fini della modulazione del codice a impulsi , ma non fu rilasciato al di fuori dei Bell Labs prima del 1982. nel 1965, EW Forgy pubblicò un metodo essenzialmente simile, motivo per cui a volte è chiamato "metodo di Lloyd Forgy". Una versione più efficiente, codificata in Fortran , è stata pubblicata da Hartigan e Wong nel 1975/1979.
Esiste un algoritmo classico per il problema, a volte chiamato metodo k-means , ampiamente utilizzato nella pratica e considerato efficiente sebbene non garantisca né l'ottimalità né il tempo di calcolo polinomiale .
L'inizializzazione è un fattore determinante nella qualità dei risultati (minimo locale). Molti lavori trattano questo punto. Esistono due metodi di inizializzazione usuali: il metodo Forgy da un lato e il partizionamento casuale dall'altro. Il metodo di Forgy assegna i k punti delle medie iniziali a k dati di input scelti casualmente. Il partizionamento casuale assegna in modo casuale un cluster a ciascun elemento di dati e quindi procede al (primo) calcolo dei punti medi iniziali.
K-means ++ è un algoritmo di inizializzazione del punto k che propone un'inizializzazione migliorando la probabilità di ottenere la soluzione ottimale (minimo globale). L'intuizione alla base di questo approccio è distribuire i k punti delle medie iniziali. Il punto medio iniziale del primo cluster viene scelto in modo casuale dai dati. Quindi ogni punto medio iniziale viene scelto dai punti rimanenti, con una probabilità proporzionale al quadrato della distanza tra il punto e l'ammasso più vicino.
Esiste un numero finito di possibili partizioni con k classi. Inoltre, ogni passaggio dell'algoritmo riduce rigorosamente la funzione di costo, positiva, e rivela una migliore partizione. Ciò consente di affermare che l'algoritmo converge sempre in tempo finito, cioè finisce.
Il partizionamento finale non è sempre ottimale. Inoltre, il tempo di calcolo può essere esponenziale nel numero di punti, anche nel piano. In pratica è possibile imporre un limite al numero di iterazioni o un criterio al miglioramento tra iterazioni.
A k fisso, la complessità liscia è polinomiale per alcune configurazioni, inclusi i punti nello spazio euclideo e il caso della divergenza di Kullback-Leibler . Se k fa parte dell'input, la complessità liscia è ancora polinomiale per il caso euclideo. Questi risultati spiegano in parte l'efficienza dell'algoritmo nella pratica.
Il problema delle k medie è NP-difficile nel caso generale. Nel caso euclideo esiste un algoritmo di approssimazione polinomiale, di rapporto 9, per ricerca locale .
Un possibile svantaggio dei k-means per il partizionamento è che i cluster dipendono dall'inizializzazione e dalla distanza scelta .
Il fatto di dover scegliere a priori il parametro k può essere percepito come uno svantaggio o un vantaggio. Nel caso, ad esempio, di calcolare il sacco di parole , ciò consente di fissare esattamente la dimensione del dizionario desiderato. Al contrario, in alcune partizioni dei dati , sarà preferibile fare a meno di tale vincolo.