Clustering sull'output di t-SNE


78

Ho un'applicazione in cui sarebbe utile raggruppare un set di dati rumorosi prima di cercare effetti di sottogruppo all'interno dei cluster. Ho esaminato PCA per la prima volta, ma sono necessari circa 30 componenti per arrivare al 90% della variabilità, quindi il clustering su un paio di PC genererà molte informazioni.

Ho quindi provato t-SNE (per la prima volta), che mi dà una forma strana in due dimensioni che è molto suscettibile di raggruppamento tramite k-medie. Inoltre, l'esecuzione di una foresta casuale sui dati con l'assegnazione dei cluster come risultato mostra che i cluster hanno un'interpretazione abbastanza ragionevole dato il contesto del problema, in termini di variabili che compongono i dati grezzi.

Ma se ho intenzione di riferire su questi cluster, come li descrivo? I cluster K-significano sui componenti principali rivelano individui vicini l'uno all'altro in termini di variabili derivate che comprendono l'X% della varianza nel set di dati. Quale affermazione equivalente può essere fatta sui cluster t-SNE?

Forse qualcosa per l'effetto di:

t-SNE rivela una contiguità approssimativa in una varietà ad alta dimensione sottostante, quindi i cluster sulla rappresentazione a bassa dimensione dello spazio ad alta dimensione massimizzano la "probabilità" che gli individui contigui non siano nello stesso cluster

Qualcuno può proporre un blurb migliore di quello?


1
Avrei pensato che il trucco fosse descrivere i cluster in base alle variabili originali, piuttosto che alle variabili nello spazio ridotto.
Tim

1
Giusto, ma assente una descrizione concisa e intuitiva dell'obiettivo che l'algoritmo di assegnazione del cluster minimizza, potrei essere aperto alle accuse di scegliere un algoritmo di clustering che faciliti il ​​raggiungimento dei risultati che desidero.
generic_user

1
Per alcuni avvertimenti e belle immagini su t-SNE dai un'occhiata anche a distill.pub/2016/misread-tsne
Tom Wenseleers

Risposte:


96

Il problema con t-SNE è che non conserva distanze né densità. Conserva solo in una certa misura i vicini più vicini. La differenza è sottile, ma influisce su qualsiasi algoritmo basato sulla densità o sulla distanza.

Per vedere questo effetto, è sufficiente generare una distribuzione gaussiana multivariata. Se visualizzi questo, avrai una palla che è densa e diventa molto meno densa verso l'esterno, con alcuni valori anomali che possono essere davvero molto lontani.

Ora esegui t-SNE su questi dati. Di solito otterrai un cerchio di densità piuttosto uniforme. Se usi una bassa perplessità, potrebbe anche avere degli strani schemi. Ma non puoi più davvero distinguere gli outlier.

Ora rendiamo le cose più complicate. Usiamo 250 punti in una distribuzione normale a (-2,0) e 750 punti in una distribuzione normale a (+2,0).

Dati in ingresso

Questo dovrebbe essere un set di dati semplice, ad esempio con EM:

Clustering EM

Se eseguiamo t-SNE con perplessità predefinita di 40, otteniamo un modello stranamente sagomato:

t-SNE p = 40

Non male, ma anche non facile da raggruppare, vero? Avrai difficoltà a trovare un algoritmo di clustering che funziona esattamente come desiderato. E anche se chiedessi agli umani di raggruppare questi dati, molto probabilmente troveranno qui più di 2 cluster.

Se eseguiamo t-SNE con una perplessità troppo piccola come 20, otteniamo più di questi schemi che non esistono:

t-SNE p = 20

Questo raggrupperà ad esempio con DBSCAN, ma produrrà quattro cluster. Quindi attenzione, t-SNE può produrre modelli "falsi"!

La perplessità ottimale sembra essere intorno agli 80 per questo set di dati; ma non credo che questo parametro dovrebbe funzionare per ogni altro set di dati.

t-SNE p = 80

Ora questo è visivamente piacevole, ma non migliore per l'analisi . Un annotatore umano potrebbe probabilmente selezionare un taglio e ottenere un risultato decente; k-significa tuttavia fallirà anche in questo scenario molto semplice ! Puoi già vedere che le informazioni sulla densità vengono perse , tutti i dati sembrano vivere in un'area della stessa densità. Se invece aumentassimo ulteriormente la perplessità, l'uniformità aumenterebbe e la separazione ridurrebbe di nuovo.

In conclusione, utilizzare t-SNE per la visualizzazione (e provare diversi parametri per ottenere qualcosa di visivamente piacevole!), Ma piuttosto non eseguire il clustering in seguito , in particolare non utilizzare algoritmi basati sulla distanza o sulla densità, poiché queste informazioni erano intenzionalmente (!) perso. Gli approcci basati sul grafico di vicinato possono andare bene, ma quindi non è necessario eseguire prima t-SNE in anticipo, basta usare immediatamente i vicini (perché t-SNE cerca di mantenere questo nn-graph in gran parte intatto).

Più esempi

Questi esempi sono stati preparati per la presentazione del documento (ma non possono ancora essere trovati nel documento, come ho fatto questo esperimento in seguito)

Erich Schubert e Michael Gertz.
Intrinsic t-Stochastic Neighbor Embedding for Visualization and Outlier Detection - Un rimedio contro la maledizione della dimensionalità?
In: Atti della 10a Conferenza internazionale sulla ricerca e le applicazioni di similarità (SISAP), Monaco, Germania. 2017

Innanzitutto, abbiamo questi dati di input:

Pesce

Come puoi immaginare, questo deriva da un'immagine "color me" per i bambini.

Se eseguiamo questo tramite SNE ( NON t-SNE , ma il predecessore):

Pesce SNE

Wow, il nostro pesce è diventato un vero mostro marino! Poiché la dimensione del kernel è scelta localmente, perdiamo gran parte delle informazioni sulla densità.

Ma sarai davvero sorpreso dall'output di t-SNE:

pesce t-SNE

In realtà ho provato due implementazioni (ELKI e sklearn), ed entrambe hanno prodotto un tale risultato. Alcuni frammenti disconnessi, ma ognuno sembra in qualche modo coerente con i dati originali.

Due punti importanti per spiegare questo:

  1. SGD si basa su una procedura di perfezionamento iterativa e può rimanere bloccato in optima locale. In particolare, ciò rende difficile per l'algoritmo "capovolgere" una parte dei dati che ha rispecchiato, poiché ciò richiederebbe lo spostamento di punti attraverso altri che dovrebbero essere separati. Quindi, se alcune parti del pesce sono speculari e altre parti non sono speculari, potrebbe non essere possibile risolvere questo problema.

  2. t-SNE utilizza la distribuzione t nello spazio proiettato. Contrariamente alla distribuzione gaussiana utilizzata dal normale SNE, ciò significa che la maggior parte dei punti si respingono a vicenda , poiché hanno 0 affinità nel dominio di input (Gaussian ottiene rapidamente zero), ma> 0 affinità nel dominio di output. A volte (come in MNIST) questo rende la visualizzazione migliore. In particolare, può aiutare a "dividere" un set di dati un po ' più che nel dominio di input. Questa repulsione aggiuntiva spesso fa sì che i punti utilizzino più uniformemente l'area, il che può anche essere desiderabile. Ma qui in questo esempio, gli effetti repellenti in realtà causano la separazione di frammenti di pesce.

Possiamo aiutare (su questo set di dati giocattolo ) il primo problema usando le coordinate originali come posizionamento iniziale, piuttosto che coordinate casuali (come di solito usato con t-SNE). Questa volta, l'immagine è sklearn invece di ELKI, perché la versione di sklearn aveva già un parametro per passare le coordinate iniziali:

Pesce, t-SNE, con coordinate originali come inizializzazione

Come puoi vedere, anche con un posizionamento iniziale "perfetto", t-SNE "spezzerà" il pesce in un numero di punti originariamente collegati perché la repulsione di Student-t nel dominio di output è più forte dell'affinità gaussiana nell'input spazio.

Come puoi vedere, t-SNE (e anche SNE!) Sono interessanti tecniche di visualizzazione , ma devono essere gestite con cura. Preferirei non applicare k-mean sul risultato! perché il risultato sarà fortemente distorto e né le distanze né la densità saranno preservate bene. Invece, piuttosto usarlo per la visualizzazione.


1
Grazie per la risposta. Posso immaginare metodi di clustering adattivo basato sul vicinato, ma ci sono alcuni specifici ben sviluppati che potresti consigliare?
generic_user

1
CHAMAELEON è probabilmente il più citato, ma sembra che sia disponibile solo un binario per il passaggio principale. L'idea suona bene, ma sperimenterai rapidamente gli stessi effetti che t-SNE rende visibili. Come la tendenza a "affollare" come si vede con p = 20, problemi con hub e anti-hub, ecc.
Erich Schubert

2
@AlexR: la perplessità viene utilizzata per calcolare le somiglianze nello spazio ad alta dimensione che t-sne sta quindi cercando di abbinare in 2D. Cambiare perplessità significa cambiare somiglianze, quindi non vedo come il confronto delle divergenze KL risultanti possa essere significativo.
ameba dice Ripristina Monica il

1
@AlexR. "Solo la probabilità condizionale dello spazio dimensionale inferiore dipende dalla perplessità" - questa affermazione è sbagliata. La perplessità è usata per scegliere i sigmi necessari per eq (1), quindi influenza cond. probs. in tutto lo spazio.
ameba dice Ripristina Monica il

1
Per alcuni avvertimenti e belle immagini su t-SNE dai un'occhiata anche a distill.pub/2016/misread-tsne
Tom Wenseleers

34

Vorrei fornire un'opinione un po 'dissenziente alla risposta ben argomentata (+1) e altamente votata da @ErichSchubert. Erich non consiglia il clustering sull'output di t-SNE e mostra alcuni esempi di giocattoli in cui può essere fuorviante. Il suo suggerimento è invece di applicare il clustering ai dati originali.

usa t-SNE per la visualizzazione (e prova diversi parametri per ottenere qualcosa di visivamente piacevole!), ma piuttosto non eseguire il clustering in seguito, in particolare non utilizzare algoritmi basati sulla distanza o sulla densità, poiché queste informazioni sono state intenzionalmente (!) perse.

Sono ben consapevole dei modi in cui l'output di t-SNE potrebbe essere fuorviante (consultare https://distill.pub/2016/misread-tsne/ ) e sono d'accordo che in alcune situazioni può produrre risultati strani.

Ma consideriamo alcuni dati reali ad alta dimensione.

Prendi i dati MNIST : 70000 immagini a una cifra. Sappiamo che ci sono 10 classi nei dati. Queste classi sembrano ben separate da un osservatore umano. Tuttavia, il clustering dei dati MNIST in 10 cluster è un problema molto difficile. Non sono a conoscenza di alcun algoritmo di clustering che raggrupperebbe correttamente i dati in 10 cluster; ancora più importante, non sono a conoscenza di alcun euristico di cluster che indicherebbe che ci sono 10 (non più e non meno) cluster nei dati. Sono certo che gli approcci più comuni non sarebbero in grado di indicarlo.

Ma facciamo invece t-SNE. (Si possono trovare molte figure di t-SNE applicate a MNIST online, ma sono spesso non ottimali. Nella mia esperienza, è necessario eseguire l'esagerazione anticipata per un po 'di tempo per ottenere buoni risultati. Di seguito sto usando perplexity=50, max_iter=2000, early_exag_coeff=12, stop_lying_iter=1000). Ecco quello che ottengo, a sinistra senza etichetta, e a destra colorato secondo la verità di base:

MNIST t-SNE

Direi che la rappresentazione t-SNE senza etichetta suggerisce 10 cluster. L'applicazione di un algoritmo di clustering basato su una buona densità come HDBSCAN con parametri accuratamente selezionati consentirà di raggruppare questi dati 2D in 10 cluster.

Nel caso in cui qualcuno dubiti che la trama di sinistra sopra suggerisca davvero 10 cluster, ecco cosa ottengo con il trucco "esagerazione tardiva" in cui eseguo inoltre max_iter=200iterazioni exaggeration=4(questo trucco è suggerito in questo grande documento: https://arxiv.org /abs/1712.09005 ):

MNIST t-SNE con esagerazione tardiva

Ora dovrebbe essere molto ovvio che ci sono 10 cluster.

Incoraggio tutti coloro che pensano che il clustering dopo t-SNE sia una cattiva idea mostrare un algoritmo di clustering che otterrebbe risultati relativamente buoni.

E ora ancora più dati reali.

Nel caso MNIST conosciamo la verità fondamentale. Considera ora alcuni dati con verità di base sconosciute. Il clustering e il t-SNE sono abitualmente utilizzati per descrivere la variabilità cellulare nei dati RNA-seq a singola cellula. Ad esempio Shekhar et al. Il 2016 ha cercato di identificare i cluster tra 27000 cellule retiniche (ci sono circa 20k geni nel genoma del topo, quindi la dimensionalità dei dati è in linea di principio di circa 20k; tuttavia uno di solito inizia con la riduzione della dimensionalità con PCA fino a circa 50). Fanno t-SNE e fanno separatamente il clustering (una complessa pipeline di cluster seguita da alcune fusioni di cluster, ecc.). Il risultato finale sembra piacevole:

inserisci qui la descrizione dell'immagine

La ragione per cui sembra così piacevole è che t-SNE produce cluster chiaramente distinti e l'algoritmo di clustering produce esattamente gli stessi cluster. Bello.

Tuttavia, se dai un'occhiata agli integratori vedrai che gli autori hanno provato diversi approcci di clustering. Molti di loro sembrano orribili sul diagramma t-SNE perché ad esempio il grande cluster centrale viene suddiviso in molti sotto-cluster:

inserisci qui la descrizione dell'immagine

Quindi, in cosa credi: l'output del tuo algoritmo di clustering preferito insieme al tuo euristico preferito per identificare il numero di cluster o cosa vedi nel diagramma t-SNE? Ad essere onesti, nonostante tutte le carenze di t-SNE, tendo a credere di più a t-SNE. O in ogni caso, non vedo perché dovrei crederci meno .


2
E per l'ultimo esempio, non è essenzialmente quello che @ErichSchubert ha osservato sopra: puoi ottenere risultati visivamente "gradevoli" - che sono ovviamente sbagliati? Come per la perplessità 20? Che tSNE ama separare le parti (come nel pesce) che non sono state separate? Quindi conosci i cluster che vedi sono davvero cluster separati? Non mi piace questa "scatola nera" lì dentro. Sì, tendiamo a credere di più a tali trame, ma cosa succede se sono sbagliati?
Anony-Mousse,

1
Bene, tSNE è basato su NN. Un accordo con questo è prevedibile. tSNE è una buona scelta per visualizzare NN. Tuttavia, non conserva bene le somiglianze, quindi deve essere interpretato con cura, a quanto ho capito. Un gap in tSNE non implica una grande distanza.
Anony-Mousse,

1
+1 Curioso come si comporta UMAP rispetto a t-SNE.
Paul,

1
@Paul: l'autore afferma la superiorità di UMAP, in termini di tempo di calcolo, lo è. Sul set di dati MNIST, trovo che UMAP generi un incorporamento migliore di t-SNE, ma non sono sicuro su altri set di dati. Per quanto ne so, di recente esiste una versione CUDA di t-SNE, che è molto più veloce del precedente t-SNE più veloce, ma non sono riuscito a installarlo e testarlo.
SiXUlm

1
@SiXUlm github.com/KlugerLab/FIt-SNE funziona molto più velocemente di Barnes-Hut t-SNE ed è spesso più veloce di UMAP. Inoltre, in molti casi, è possibile ottenere un incorporamento molto simile con t-SNE utilizzando alcune modifiche aggiuntive, ad esempio su MNIST il t-SNE con esagerazione ridotta produce quasi la stessa cosa di UMAP, vedi esempio notebook Python nel repository FIt-SNE.
ameba dice Ripristina Monica il

6

Penso che con grande perplessità t-SNE possa ricostruire la topologia globale, come indicato in https://distill.pub/2016/misread-tsne/ .

Dall'immagine del pesce, ho campionato 4000 punti per t-SNE. Con una grande perplessità (2000), l'immagine del pesce è stata praticamente ricostruita.

Ecco l'immagine originale. Immagine originale

Ecco l'immagine ricostruita da t-SNE con perplessità = 2000. immagine ricostruita t-SNE (perplessità = 2000)


8
Se si scelgono perplessità così elevate, in realtà non è più tSNE. Ogni punto è approssimativamente il vicino di tutti i giorni. Non è più locale. Sì, un'immagine 2d può quindi essere approssimativamente ricostruita, perché è 2d. Ma non fare nulla è più facile.
Anony-Mousse,

1
La mia opinione è che tSNE con grande perplessità possa ricostruire la topologia globale. La seconda immagine è un esempio perché la sua dimensionalità intrinseca è 2. La vera applicazione di tSNE dovrebbe selezionare la perplessità corretta in base allo scopo di catturare le caratteristiche locali o globali.
renxwise,

1
Perplessità così alte significano che usi un "kernel" troppo grande, e in effetti usi solo le distanze. Probabilmente degenera in un MDS approssimativo e molto costoso. Allora usa MDS. SNE / tSNE dovrebbe davvero essere usato con piccole perplessità e quartieri locali.
Erich Schubert,

3
Esattamente. Quando la perplessità è abbastanza grande, tSNE è effettivamente approssimativo a MDS, il che dimostra che tSNE può anche catturare la struttura globale. Pertanto, le affermazioni secondo cui tSNE può catturare solo strutture locali non sono corrette. Diversamente da MDS, tSNE può bilanciare tra strutture locali e globali attraverso la selezione della perplessità. Ovviamente, la selezione della perplessità dipende dal set di dati.
renxwise,

Esiste una regola empirica per la scelta della plausibile perplessità?
Catbuilts

5

Sulla base delle prove matematiche che abbiamo, questo metodo potrebbe tecnicamente preservare le distanze! perché ignorate tutti questa funzione! t -SNE sta convertendo le distanze euclidee ad alta dimensione tra i campioni in probabilità condizionali che rappresentano somiglianze. Ho provato t -SNE con oltre 11.000 campioni (nel contesto della genomica) in parallelo con diversi algoritmi di clustering di consenso tra cui clustering spettrale, affinità e, soprattutto, con clustering GMM (che è un algoritmo di clustering basato sulla densità!). Di conseguenza, ho trovato un ottimo risultato concordante tra due approcci ( t-SNE vs. algoritmi di clustering di consenso). Credo che l'integrazione di t-SNE con algoritmi di clustering di consenso potrebbe fornire la migliore prova delle strutture di dati locali e globali esistenti.


Ci sono parametri che influenzeranno la probabilità di t-SNE di preservare le distanze?
Keith Hughitt il

Quelli non sono algoritmi di clustering di consenso. Il clustering di consenso è un tipo di apprendimento dell'ensemble che aggrega i risultati della ripetizione dell'algoritmo di clustering con alcune variazioni nei parametri o nei dati di input, per ottenere un risultato di clustering finale. Puoi usare gli approcci di clustering di consenso con clustering spettrale o GMM o qualsiasi algoritmo di clustering, ma il mio punto nella tua terminologia è un po 'fuori, tutto qui :)
Christopher John

1

È possibile provare l'algoritmo di clustering DBSCAN. Inoltre, la perplessità di tsne dovrebbe avere circa le stesse dimensioni del cluster previsto più piccolo.


0

Personalmente, l'ho sperimentato una volta, ma non con t-SNE o PCA. I miei dati originali sono nello spazio tridimensionale. Usando UMAP per ridurlo a incorporamenti 2D e 3D, ho ottenuto 2 cluster perfettamente e visivamente separati su grafici 2D e 3D. Troppo bello per essere vero. Ma quando ho "guardato" i dati originali dal diagramma di persistenza, mi sono reso conto che ci sono molti più cluster "significativi", non solo 2.

Il clustering sull'output della tecnica di riduzione della dimensione deve essere fatto con molta cautela, altrimenti qualsiasi interpretazione può essere molto fuorviante o sbagliata perché ridurre la dimensione comporterà sicuramente la perdita di funzionalità (forse funzionalità rumorose o vere, ma a priori, non non so quale). Secondo me, puoi fidarti / interpretare i cluster, se:

  • I cluster nei dati proiettati corrispondono / confermano a una classificazione definita a priori (si pensi al set di dati MNIST, in cui i cluster dei dati proiettati si abbinano molto bene alla classificazione delle cifre), e / o,

  • È possibile confermare la presenza di questi cluster nei dati originali utilizzando altri metodi, come i diagrammi di persistenza. Il conteggio del solo numero di componenti collegati può essere eseguito in un tempo abbastanza ragionevole.


Perché (ti sei fidato) del "diagramma di persistenza" più di UMAP? Non penso che guardare il diagramma di persistenza possa essere descritto come "guardare i dati originali" ...
Ameba dice Reinstate Monica

Hai ragione. Il diagramma di persistenza mostra solo alcune caratteristiche dei dati originali, molto spesso componenti collegati, fori monodimensionali e molto più rari, fori 2 o più dimensionali a causa di calcoli costosi. Quindi avrei dovuto dire che posso solo "guardare" parzialmente i dati originali guardando il diagramma di persistenza corrispondente. Ma posso fidarmi di ciò che osservo da questo diagramma di persistenza perché è costruito direttamente dai dati originali.
SiXUlm

Al contrario, utilizzando UMAP o qualsiasi altra tecnica di riduzione dimensionale, lavoriamo solo con una versione proiettata / modificata dei dati originali. Come sottolineato dalla risposta più votata, il clustering potrebbe essere diverso per le diverse scelte di parametri.
SiXUlm
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.