10

Ho un set di dati di grandi dimensioni che vorrei raggruppare. La mia dimensione di esecuzione della prova è di 2.500 oggetti; quando lo eseguo sul "vero affare" avrò bisogno di gestire almeno 20k oggetti.clustering con similarità coseno

Questi oggetti hanno una somiglianza del coseno tra di loro. Questa somiglianza coseno non soddisfa i requisiti di essere una metrica di distanza matematica; non soddisfa la disuguaglianza triangolare.

Vorrei raggrupparli in un modo "naturale" che mette insieme oggetti simili senza dover specificare in anticipo il numero di cluster che mi aspetto.

Qualcuno sa di un algoritmo che lo farebbe? In realtà, sto solo cercando un algoritmo che non richieda a) una metrica di distanza eb) un numero predefinito di cluster.

Grazie mille!

Questa domanda è stato chiesto prima qui: Clustering from the cosine similarity values (ma questa soluzione offre solo K-means), e qui: Effective clustering of a similarity matrix (ma questa soluzione era piuttosto vago)

+4

Da http://en.wikipedia.org/wiki/Cosine_similarity: "Sebbene il termine" somiglianza del coseno "sia stato utilizzato per questa distanza angolare, il termine è stranamente usato poiché il coseno dell'angolo è usato solo come Comodo meccanismo per calcolare l'angolo stesso e non fa parte del significato.Il vantaggio del coefficiente di similarità angolare è che, quando viene utilizzato come coefficiente di differenza (sottraendolo da 1) * la funzione risultante è una metrica di distanza appropriata *, che non è il caso per il primo significato. " – phs

+0

Grazie! avrebbe dovuto essere più specifico, sto usando una somiglianza simile al coseno che ho definito me stesso. Non soddisfa la disuguaglianza triangolare. – user1473883

risposta

3

Apache mahout ha un numero di algoritmi di clustering, inclusi alcuni che non richiedono di specificare N e che consentono di specificare la metrica di distanza.

Il cluster di spostamento medio è simile a k-significa ma senza un numero predefinito di cluster https://cwiki.apache.org/confluence/display/MAHOUT/Mean+Shift+Clustering.

Poi, più in generale, se si desidera provare una varietà di algoritmi, v'è una ricchezza assoluta di pacchetti sofisticati disponibili per R (comprese alcune implementazioni bayesiani variazionali di EM che selezionerà il miglior numero di cluster) che hanno si è rivelato molto utile per alcune delle mie ricerche in passato: http://cran.r-project.org/web/views/Cluster.html.

2

In realtà la maggior parte degli algoritmi che richiedono una "funzione di distanza" non hanno il requisito per essere metrica.

DBSCAN può essere generalizzato (vedere Wikipedia) a una versione in cui è addirittura estratto dalla distanza, ma deve solo avere una sorta di nozione "densa". (DBSCAN inoltre non ha bisogno di conoscere il numero di cluster in anticipo)

Ma anche per k-means - che ha requisiti piuttosto rigidi sulla distanza, anche oltre metriche - esiste una variante chiamata sferica k-means.

In ogni caso, in un contesto di database, i requisiti completi di "metrica" ​​sono utopici. In qualsiasi dato del mondo reale, potrebbero esserci due record con le stesse coordinate, quindi al massimo si avrebbe una pseudo metrica. La disuguaglianza triangolare svolge principalmente un ruolo di ottimizzazione (ad esempio utilizzando un indice M-tree, che ha requisiti rigorosi di disuguaglianza triangolare) o k-means accelerato che sfrutta questa proprietà.

2

Si potrebbe anche provare Propagazione di affinità (http://www.psi.toronto.edu/index.php?q=affinity%20propagation). L'algoritmo utilizza come matrice una matrice di similarità e può anche, credo, regolare automaticamente il numero di centroidi del cluster.

Problemi correlati