Perché l'algoritmo di clustering k-mean usa solo la metrica della distanza euclidea?


62

Esiste uno scopo specifico in termini di efficienza o funzionalità perché l'algoritmo k-mean non utilizza ad esempio la cosine (dis) somiglianza come metrica della distanza, ma può usare solo la norma euclidea? In generale, il metodo K-mean sarà conforme e sarà corretto quando verranno prese in considerazione o utilizzate distanze diverse da Euclide?

[Aggiunta di @ttnphns. La domanda è duplice. La "distanza (non) euclidea" può riguardare la distanza tra due punti dati o la distanza tra un punto dati e un centro del cluster. Finora entrambi i modi sono stati tentati di affrontare le risposte.]


Questa domanda è stata posta circa 10 volte già su StackOverflow e questo sito. Si prega di utilizzare la funzione di ricerca.
Anony-Mousse

3
@ Anony-Mousse: anche se sono completamente d'accordo con te e recentemente ho sollevato un sacco di bandiere su SO, trovo inquietante la mancanza di una duplice chiusura su gran parte di queste domande.
Nikana Reklawyks il

4
Questa è la pagina che viene prima mentre google su questo argomento.
Hripkannan,

Risposte:


62

La procedura K-Means - che è un metodo di quantizzazione vettoriale spesso usato come metodo di clustering - non usa affatto esplicitamente distanze a coppie in punti di dati b / n (al contrario di gerarchici e altri cluster che consentono misure arbitrarie di prossimità). Ciò equivale ad assegnare ripetutamente punti al centroide più vicino usando quindi la distanza euclidea da punti dati a un centroide . Tuttavia, K-Means si basa implicitamente su distanze euclidee a coppie in punti dati b / n, poiché la somma delle deviazioni quadrate dal centroide è uguale alla somma delle distanze euclidee al quadrato a coppie divisa per il numero di punti. Il termine "centroide" deriva dalla geometria euclidea. È una media multivariata nello spazio euclideo. Lo spazio euclideo riguarda le distanze euclidee. Le distanze non euclidee generalmente non coprono lo spazio euclideo. Ecco perché K-Means è solo per le distanze euclidee.

Ma una distanza euclidea tra due punti dati può essere rappresentata in un numero di modi alternativi . Ad esempio, è strettamente legato al coseno o al prodotto scalare tra i punti. Se hai coseno, covarianza o correlazione, puoi sempre (1) trasformarlo in distanza euclidea (quadrata), e quindi (2) creare dati per quella matrice di distanze euclidee (mediante le coordinate principali o altre forme di metrica Multidimensional Scaling) per (3) immettere tali dati nel clustering di K-Means. Pertanto, è possibile far funzionare i K-Means con "coseni a coppie o simili; infatti, esistono tali implementazioni del clustering di K-Means. Guarda anche sull'implementazione di "K-medie per la matrice di distanza".

È possibile programmare K-medie in un modo che calcoli direttamente sulla matrice quadrata delle distanze euclidee a coppie, ovviamente. Ma funzionerà lentamente, e quindi il modo più efficiente è quello di creare dati per quella matrice di distanza (convertendo le distanze in prodotti scalari e così via - il passaggio che è delineato nel paragrafo precedente) - e quindi applicare la procedura K-media standard a quel set di dati.

Si noti che stavo discutendo dell'argomento se la dissomiglianza euclidea o nessunauclidea tra i punti dati sia compatibile con i mezzi K. È collegato, ma non è esattamente la stessa domanda, se le deviazioni di nessunauclidee dal centroide (in senso lato, centro o quasicentroid) possano essere incorporate nei mezzi K o modificate i "mezzi K".

Vedi la domanda correlata K-significa: Perché ridurre al minimo WCSS è massimizzare la distanza tra i cluster? .


Puoi citare alcuni esempi-documenti dell'approccio che stai citando?
curioso

4
@Douglas, per favore. Ho detto che k- mean non usa le distanze a coppie. È chiaramente indicato. Usa le distanze dal centroide. Ciò significa automaticamente che è implicitamente legato all'attività di ottimizzare le distanze a coppie all'interno dei cluster.
ttnphns,

1
@ttnphns: nel numero di personaggi che hai scritto But a Euclidean distance b/w two data points can be represented in a number of alternative ways. For example, it is closely tied with cosine or scalar product b/w the points. If you have cosine, or covariance, or correlation, you can always (1) transform it to (squared) Euclidean distance, avresti potuto scrivere altrettanto facilmente: distance(x,y) = 1 - cosine_sim(x,y)o qualcosa di simile, pithy e informativo.
stackoverflowuser2010

1
Sembra una critica valida e costruttiva: è meglio includere informazioni direttamente nel tuo post piuttosto che fare affidamento su un link; ed è generalmente meglio essere espliciti che vaghi. (cc @stackoverflowuser)
whuber

3
Cosa stai contendendo? Che in questo caso è meglio fare affidamento su un collegamento, o meglio essere vaghi o entrambi? E perché?
whuber

46

Vedi anche la risposta di @ttnphns per un'interpretazione di k-medie che coinvolge effettivamente distanze euclidee puntuali.

Il modo in cui k-medie è costruito non si basa sulle distanze .

K-mean minimizza la varianza all'interno del cluster. Ora, se guardi la definizione di varianza, è identica alla somma delle distanze euclidee quadrate dal centro. (La risposta di @ttnphns si riferisce a distanze euclidee a coppie!)

L'idea di base di k-medie è di minimizzare gli errori al quadrato . Non c'è "distanza" coinvolta qui.

Perché non è corretto usare le distanze arbitrarie: perché k-medie potrebbe smettere di convergere con altre funzioni di distanza . La prova comune della convergenza è la seguente: la fase di assegnazione e la fase di aggiornamento medio ottimizzano entrambe lo stesso criterio. È possibile un numero finito di incarichi. Pertanto, deve convergere dopo un numero finito di miglioramenti. Per utilizzare questa prova per altre funzioni a distanza, è necessario dimostrare che la media (nota: K- mezzi ) riduce al minimo le vostre distanze, anche.

Se stai cercando una variante di k-medie a distanza di Manhattan, ci sono k-mediane. Perché la mediana è il miglior stimatore L1 noto.

Se vuoi funzioni di distanza arbitrarie, dai un'occhiata ai k-medoidi (aka: PAM, partizionamento attorno ai medoidi). Il medoide minimizza le distanze arbitrarie (perché è definito come il minimo) e esiste anche solo un numero finito di possibili medoidi. Tuttavia è molto più costoso della media.


Ma al primo passo di k-significa che ogni punto viene messo nel cluster con la distanza euclidea più vicina al centroide del cluster ... Quindi c'è una metrica della distanza
curiosa

@AnonyMousse @ttnphns answer refers to pairwise Euclidean distances!Nella mia risposta, primo paragrafo, mi riferisco chiaramente sia alle interpretazioni "errore SS" (diretto) sia "interpretazione a coppie d ^ 2" (implicito).
ttnphns,

3
Sono d'accordo con la tua risposta. Nota che il tuo account operativo k-means may stop converging with other distance functionsè omologa al mio teorico Non-euclidean distances will generally not span euclidean space.
ttnphns,

ottima spiegazione. Non ho mai dato un secondo pensiero alla distanza euclidea e non mi sono reso conto che stava effettivamente riducendo al minimo la somma dei quadrati.
Verena Haunschmid,

Non riesco ancora a capire perché la media minimizzi le distanze in termini di distanze euclidee e in termini di coseno non fa parte della prova
curioso

9

Potrei essere un po 'pedante qui, ma K-significa è il nome dato a un particolare algoritmo che assegna etichette ai punti dati in modo tale che le varianze all'interno del cluster siano ridotte al minimo e non è il nome di una "tecnica generale".

L'algoritmo K-mean è stato proposto indipendentemente da diversi campi, con forti interpretazioni applicabili al campo. Si scopre semplicemente che è anche una distanza euclidea dal centro. Per una breve storia di K-mean, leggi il Clustering dei dati: 50 anni oltre K-mean

Esistono numerosi altri algoritmi di clustering che utilizzano metriche diverse da Euclidean. Il caso più generale che conosco riguarda l'uso delle divergenze di Bregman per il raggruppamento, di cui Euclide è un caso speciale.


"metriche diverse dall'euclideo" Potrei essere un po 'più pedante, ma quelle divergenze non sono metriche, in generale :)
mic

vero :); dovrei probabilmente modificare la risposta.
user1669710

8

Poiché questa è apparentemente ora una domanda canonica, e non è ancora stata menzionata qui:

Rdφ:RpHdd(x,y)=φ(x)φ(y)H{φ(xi)}. In molti casi, non siamo in grado di calcolare la mappa esplicitamente, ma siamo in grado di calcolare il kernel . Non tutte le metriche di distanza si adattano a questo modello, ma molte lo fanno e ci sono funzioni definite su stringhe, grafici, immagini, distribuzioni di probabilità e altro ancora ....φk(x,y)=φ(x),φ(y)H

In questa situazione, nell'algoritmo k-mean standard (Lloyd's), possiamo assegnare facilmente punti ai loro cluster, ma rappresentiamo implicitamente i centri del cluster (come combinazioni lineari dei punti di input nello spazio di Hilbert). Trovare la migliore rappresentazione nello spazio di input richiederebbe di trovare una media di Fréchet , che è piuttosto costosa. Quindi è facile ottenere assegnazioni di cluster con un kernel, più difficile ottenere i mezzi.

Il seguente documento tratta questo algoritmo e lo collega al clustering spettrale:

I. Dhillon, Y. Guan e B. Kulis. K-kernel significa, clustering spettrale e tagli normalizzati. KDD 2005.


Non capisco come il trucco del kernel possa essere usato con l'algoritmo di Lloyd. Mi sembra che per calcolare un centroide (anche implicitamente nello spazio di Hilbert), avremo bisogno della mappa esplicita φ (x_i)? Per assegnare punti ai cluster, abbiamo solo bisogno del kernel, ma per ricalcolare i centroidi, non possiamo cavarcela solo con il kernel, poiché il centroide è la media del {φ (x_i)} assegnato a quel cluster. Mi sto perdendo qualcosa?
user2428107

Hai ragione sul fatto che non possiamo calcolare esplicitamente i centroidi. Ma possiamo rappresentarli semplicemente come e calcolare le distanze su un punto come . 1nijCiφ(xj)xφ(x)1nijCiφ(xj)2=k(x,x)+1ni2j,jk(xj,xj)2nijk(x,xj)
Dougal,

5

Ho letto molti commenti interessanti qui, ma vorrei aggiungere che l'implementazione "personale" di Matlab di k-medie supporta 4 distanze non euclidee [tra punti dati e centri di cluster]. L'unico commento dalla documentazione che posso vedere al riguardo è:

Misura della distanza, nello spazio p-dimensionale, utilizzata per la minimizzazione, specificata come coppia separata da virgola costituita da "Distanza" e una stringa.

kmeans calcola i cluster centroidi in modo diverso per le diverse misure di distanza supportate. Questa tabella riassume le misure di distanza disponibili. Nelle formule, x è un'osservazione (ovvero una riga di X) e c è un centroide (un vettore riga).

Quindi un elenco di funzioni ce xseguenti. Pertanto, considerando che pè la dimensionalità dei dati di input, sembra che non sia stato eseguito in precedenza alcun incorporamento euclideo.

A proposito, in passato ho usato i k-media di Matlab con la distanza di correlazione e (non a caso) ha fatto quello che doveva fare.


2
Come nota, le distanze non euclidee supportate sono cosine(che è solo la distanza euclidea su punti di input normalizzati), correlation(euclidea su input standardizzati), cityblock( , nel qual caso viene utilizzata la mediana anziché la media) e (che è solo per input binari). L1hammingcityblock
Dougal,

@Dougal, Quanto è sistemata la mediana nell'algoritmo? Non cambia k- significa in un algo sostanzialmente diverso?
ttnphns,

1
Si noti inoltre che per i dati binari "hamming distance" = cityblock = sq. Euclidean distance.
ttnphns,

1
@ttnphns Sì, sicuramente non è più k-mean, ma ha esattamente la stessa struttura tranne che invece di calcolare i centroidi come se si calcolasse una mediana. E sì sugli input binari hamming , ma Matlab usa la mediana invece della media. =L22=L1
Dougal,

1
@Dougal, Notare che la procedura matlab collegata dice di varie distanze tra un punto dati e il centro del cluster; che non è la stessa cosa dei tipi di distanze a coppie.
ttnphns,

2

Da qui :

inserisci qui la descrizione dell'immagine

Consideriamo due documenti A e B rappresentati dai vettori nella figura sopra. Il coseno tratta entrambi i vettori come vettori unitari normalizzandoli, dandoti una misura dell'angolo tra i due vettori. Fornisce una misura accurata di somiglianza ma senza riguardo alla grandezza. Ma la grandezza è un fattore importante se si considera la somiglianza.


Questa è una risposta generale Non spiega perché in k-significhi che non esiste alcuna somiglianza del coseno. Ad esempio nel clustering gerarchico viene ampiamente utilizzato
curioso il

3
@DLDahly: a volte la grandezza è importante, a volte è rumore. Dipende dal campo di ricerca ed è un problema di standardizzazione dei dati.
ttnphns,
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.