Ci sono casi in cui non c'è k ottimale in k-medie?


11

Questo è stato nella mia mente per almeno alcune ore. Stavo cercando di trovare un k ottimale per l'uscita dall'algoritmo k-mean (con una metrica di somiglianza del coseno ), quindi ho finito per tracciare la distorsione in funzione del numero di cluster. Il mio set di dati è una raccolta di 800 documenti in uno spazio di 600 dimensioni.

Da quello che ho capito, trovare il punto del ginocchio o il punto del gomito su questa curva dovrebbe dirmi almeno approssimativamente il numero di cluster in cui devo inserire i miei dati. Ho messo il grafico qui sotto. Il punto in cui è stata tracciata la linea verticale rossa è stato ottenuto utilizzando il secondo massimo test derivativo . Dopo aver fatto tutto questo, ero bloccato in qualcosa di molto più semplice: cosa mi dice questo grafico sul set di dati?

Mi dice che non vale la pena raggruppare e che i miei documenti mancano di struttura o che devo impostare un k molto alto? Una cosa strana però è che anche con un basso k, vedo documenti simili raggruppati insieme, quindi non sono sicuro del motivo per cui sto ottenendo questa curva. qualche idea?

inserisci qui la descrizione dell'immagine


2
Ciò che onestamente non capisco è come sei stato in grado di impiegare k-mean clustering con input di matrice di prossimità (e che essere coseno!). K-significa che il clustering richiede input di dati non elaborati (variabili X degli oggetti) e opera internamente a distanza euclidea.
ttnphns,

2
@ttnphns: spero di aver capito il tuo punto, ma per quanto ne so, possiamo usare qualsiasi metrica di distanza con k-medie, non è vero? Lo sto facendo in Python ma sembra che ci sia persino una libreria disponibile per R: cran.r-project.org/web/packages/skmeans/index.html L'input non era una matrice di prossimità ma piuttosto un risultato terms x documentottenuto dopo aver eseguito un vettore singolare decomposizione. Per favore, correggimi se sbaglio.
Legenda,

Il clustering k-sferico , basato sulla misura del coseno, è nuovo per me, devo ammetterlo. Spero di leggere di più a riguardo un giorno.
ttnphns,

@ttnphns: grazie per essere tornato. Volevo solo assicurarmi di non usare mele e arance insieme :)
Legenda

Lp

Risposte:


12

Nella maggior parte dei casi, avrei pensato che una trama del genere significhi sostanzialmente che non esiste una struttura a cluster nei dati. Tuttavia, raggruppare in dimensioni molto elevate come questa è complicato, poiché per la metrica della distanza euclidea tutte le distanze tendono ad essere uguali all'aumentare del numero di dimensioni. Vedi questa pagina di Wikipedia per riferimenti ad alcuni articoli su questo argomento. In breve, potrebbe essere proprio l'alta dimensionalità del set di dati a costituire il problema.

Questa è essenzialmente "la maledizione della dimensionalità", vedi anche questa pagina di Wikipedia.

Un documento che potrebbe interessare è Sanguinetti, G., "Riduzione dimensionale di datset raggruppati", Transazioni IEEE su Pattern Analysis e Machine Intelligence, vol. 30 no. 3, pagg. 535-540, marzo 2008 ( www ). Che è un po 'come una versione non controllata di LDA che cerca uno spazio a bassa dimensione che enfatizzi la struttura del cluster. Forse potresti usarlo come metodo di estrazione delle caratteristiche prima di eseguire k-mean?


Oops scusa. Avrei dovuto menzionare che sto usando la somiglianza del coseno.
Legenda,

Penso che sia abbastanza probabile che la maledizione della dimensionalità si applichi anche alla somiglianza del coseno. Sostanzialmente afferma che occorrono (nel peggiore dei casi) più modelli esponenziali per definire una distribuzione all'aumentare del numero di dimensioni. Nel raggruppare ciò che stai effettivamente facendo è identificare le distribuzioni che rappresentano le sottopopolazioni, quindi il raggruppamento in dimensioni elevate è probabilmente intrinsecamente complicato.
Dikran Marsupial,

+1 Grazie per il link. Lo esaminerò e tornerò indietro. Ho applicato SVD sulla mia matrice originale prima di applicare k-medie per ridurre il numero di dimensioni.
Legenda,

3

Come usi esattamente la somiglianza del coseno? È questo ciò che viene definito K-sferico? Il tuo set di dati è piuttosto piccolo, quindi proverei a visualizzarlo come una rete. Per questo è naturale usare una somiglianza (anzi, ad esempio la somiglianza del coseno o la correlazione di Pearson), applicare un cut-off (considerare solo le relazioni al di sopra di una certa somiglianza) e visualizzare il risultato come una rete, ad esempio in Cytoscape o BioLayout . Questo può essere molto utile per avere un'idea dei dati. In secondo luogo, calcolerei i valori singolari per la tua matrice di dati, o gli autovalori di una matrice opportunamente trasformata e normalizzata (una matrice documento-documento ottenuta in qualche forma). La struttura del cluster dovrebbe (di nuovo) apparire come un salto nell'elenco ordinato di autovalori o valori singolari.


+1 Grazie per i puntatori. Non ero a conoscenza di Cytoscape. Ci proverò. E sì, sembra che i k-media con la somiglianza del coseno siano chiamati k-medie sferici. Ho applicato questo k-significa dopo aver applicato SVD e ridotto il numero di dimensioni. Il modo in cui ho ridotto il numero di dimensioni è stato quello di utilizzare la regola della varianza (selezionare i valori singolari che contribuiscono al 95% della varianza nei dati originali).
Legenda,

Se non ti dispiace, potresti indicare un tutorial che spiega come farlo (o almeno qualcosa del genere). Una volta generata la matrice, devo semplicemente esportarla, quindi importarla in Cytoscape ed eseguire ciò che mi hai suggerito? Ciò di cui sono curioso è se Cytoscape ha metodi integrati per la somiglianza del coseno o devo precompilare un formato di dati e fornirlo come input?
Legenda,

Quando lavoro con quei programmi, computo tutte le somiglianze a coppie esternamente, filtro per soglia e produco un file con formato <label1> <label2> <similarity>. Entrambi dovrebbero essere in grado di leggere quell'input. In BioLayout deve avere un suffisso .txt credo; in CytoScape usa 'import from table'.
Micans,

Inteso. Lo farò e tornerò presto. Grazie ancora.
Legenda,

Ci scusiamo per la domanda stupida, ma ho formattato i miei dati come <label1> <label2> <similarity> ma non sono in grado di capire come importarli esattamente. Ho fatto File-> Importa-> Rete da tabella e selezionato le colonne di origine e destinazione. Ho lasciato l'interazione come predefinita. Ma come posso importare pesi dei bordi insieme ai bordi? Avresti qualche suggerimento per favore?
Legenda,

2

Generalmente sì, k-medie potrebbe convergere in soluzioni molto distinte che potrebbero essere giudicate inadatte. Ciò accade in particolare per i cluster con forme irregolari.

Per ottenere più intuizione, potresti anche provare un altro approccio di visualizzazione: per k-mean puoi visualizzare diverse esecuzioni con k-mean usando Graphgrams (vedi il pacchetto di diagrammi WEKA - meglio ottenuto dal gestore dei pacchetti o qui . Un'introduzione ed esempi possono anche essere trovato qui .


1

Se capisco correttamente il grafico, è un grafico del numero di cluster, K sull'asse x e la distanza entro i cluster sull'asse y?

Poiché la tua funzione obiettivo K-significa è minimizzare il WCSS, questo diagramma dovrebbe sempre essere monotonicamente decrescente. Man mano che si aggiungono più cluster, la distanza tra i punti nel cluster diminuirà sempre. Questo è il problema fondamentale della selezione del modello, quindi è necessario impiegare un po 'più di raffinatezza.

Forse prova la statistica Gap: www-stat.stanford.edu/~tibs/ftp/gap.ps o altri simili.

Inoltre, potresti scoprire che K-mean non è lo strumento giusto per il lavoro. Quanti cluster ti aspetti di trovare? L'uso della regola di varianza per la riduzione della dimensionalità per il clustering non è appropriato. Vedi questo documento per quando la proiezione sui primi PC K-1 è una misura di preelaborazione appropriata: http://people.csail.mit.edu/gjw/papers/jcss.ps

Puoi vedere rapidamente se questa è la cosa giusta da fare tracciando la proiezione sui primi due componenti principali. Se c'è una netta separazione, allora K-mean dovrebbe essere ok, altrimenti devi cercare qualcos'altro. Forse K-subspaces o altri metodi di clustering del sottospazio. Tenete presente che questi metodi si applicano per la distanza euclidea. Non sono sicuro di come questo cambi per il coseno.

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.