Esistono versioni di t-SNE per lo streaming dei dati?


19

La mia comprensione di t-SNE e dell'approssimazione di Barnes-Hut è che tutti i punti dati sono richiesti in modo che tutte le interazioni di forza possano essere calcolate contemporaneamente e ogni punto possa essere regolato nella mappa 2d (o di dimensione inferiore).

Esistono versioni di t-sne in grado di gestire in modo efficiente i dati di streaming? Quindi, se le mie osservazioni arrivano una alla volta, troveranno la posizione migliore sulla mappa 2D per posizionare la nuova osservazione o aggiorneranno continuamente tutti i punti sulla mappa 2D per tenere conto della nuova osservazione.

Ciò avrebbe senso o andrebbe contro l'impostazione di t-sne.


L'approssimazione di Barnes-Hut rende t-SNE altamente scalabile (almeno, puoi usarlo con 100000 linee, l'ho provato). Puoi chiamarlo da R: cran.r-project.org/web/packages/Rtsne/index.html
RUser4512

Ehi grazie! Sono felice di votare la tua risposta se la metti nella sezione delle risposte di questo.
Tom,

3
Vedi qui per una versione parametrica implementata con una tecnica neurale. lvdmaaten.github.io/publications/papers/AISTATS_2009.pdf
eyaler

Risposte:


15

Ho avuto esattamente la stessa domanda e l'ho pubblicato su un video di YouTube di una conferenza CS231n tenuta da Andrej Karpathy qualche settimana fa. Ecco la domanda che ho postato seguita dalla risposta di Andrej:

https://www.youtube.com/watch?v=ta5fdaqDT3M&lc=z12ji3arguzwgxdm422gxnf54xaluzhcx

D:

T-SNE necessita di un intero lotto di immagini (o più in generale di dati) per creare lo spazio delle caratteristiche a bassa dimensione? Con PCA è possibile creare uno spazio di funzionalità a bassa dimensione su un batch di dati e quindi proiettare nuovi punti di dati su quello stesso spazio senza "riqualificarli". È vero per t-SNE?

Lo chiedo perché ho notato che scikit-learn ha t-SNE come parte della sua multiforme classe, ma quel modulo non ha un metodo transform () come fa PCA. Quindi, almeno, in sklearn, sembrerebbe impossibile.

La mia domanda si riduce a questo. Come applicheresti t-SNE in una situazione di streaming o online in cui desideri aggiornare continuamente la visualizzazione con nuove immagini? Presumibilmente, non si vorrebbe applicare l'algoritmo sull'intero batch per ogni nuova immagine.

UN:

+ Evan Zamir sì, questo è possibile con t-SNE, ma forse non supportato immediatamente con le normali implementazioni di t-SNE. Normalmente la posizione di ciascun punto è un parametro nell'ottimizzazione, ma è anche possibile creare una mappatura da high-D -> low-D (ad es. Rete neurale) e backprop attraverso le location. Quindi si finisce con la funzione di incorporamento e si possono proiettare nuovi punti. Quindi nulla impedisce questo in linea di principio, ma alcune implementazioni potrebbero non supportarlo in quanto è un caso d'uso meno frequente.


11

Quando si ha a che fare con lo streaming di dati, potrebbe non essere necessario / necessario incorporare tutti i punti nella cronologia in una singola mappa t-SNE. In alternativa, puoi eseguire un incorporamento online seguendo questi semplici passaggi:

  1. scegli una finestra temporale di durata T, abbastanza lunga da far apparire ogni schema di interesse almeno un paio di volte nella durata della finestra.

  2. scorrere la finestra mentre i dati scorrono, con un intervallo di tempo dt molto più piccolo di T. Per ogni posizione della finestra, calcolare un incorporamento t-SNE dei punti dati nella finestra temporale.

  3. semina ogni incorporamento con il risultato del precedente. In t-SNE, è necessario scegliere le coordinate iniziali dei punti dati nello spazio a bassa dimensione. Nel nostro caso, poiché scegliamo dt molto più piccolo di T, due incorporamenti successivi condividono la maggior parte dei loro punti dati. Per tutti i punti dati condivisi, abbina le loro coordinate iniziali nell'incorporamento attuale alle coordinate finali nell'incorporamento precedente . Questo passaggio garantirà che modelli simili abbiano una rappresentazione coerente tra gli incastri successivi. (nell'implementazione di sklearn in Python, il parametro seed è "init". Per impostazione predefinita, l'implementazione di sklearn imposta la posizione iniziale dei punti in modo casuale)

Nota 1: è importante che i modelli di interesse appaiano almeno una volta in una determinata finestra temporale, in modo che la memoria della rappresentazione non vada persa mentre la finestra scorre attraverso il set di dati. In effetti, t-SNE in genere non converge in una soluzione unica ma solo in un minimo locale, quindi se si perde la memoria, un modello simile potrebbe essere rappresentato in modi molto diversi in due istanze di un incorporamento.

Nota 2: questo metodo è particolarmente rilevante quando si ha a che fare con serie temporali non stazionarie, in cui si desidera tenere traccia di schemi che si evolvono lentamente nel tempo. In effetti, ogni incorporamento è qui adattato in modo specifico alla piccola finestra temporale su cui è calcolato, assicurando che catturi la struttura temporale nel modo migliore (al contrario di un completo incorporamento dell'intero set di dati non stazionari).

Nota 3: in questo metodo non è possibile parallelizzare gli incorporamenti successivi, poiché per seminare il successivo è necessario il risultato dell'incorporamento precedente. Tuttavia, poiché il seme (ovvero le coordinate iniziali dei punti) è ben scelto per la maggior parte dei punti (tutti i punti condivisi tra gli incastri successivi), un inclusione in genere converge molto velocemente, solo in poche iterazioni.

Per un esempio di applicazione di questo metodo a serie temporali non stazionarie, vedere questo articolo ( ICLR 2016, Apprendimento delle rappresentazioni stabili in un mondo che cambia con t-SNE online: prova del concetto nell'uccello canoro ), dove è stato applicato con successo per tracciare l'emergere di sillabe attraverso lo sviluppo dell'uccello canoro.


2
Benvenuto nella community. L'auto-plagio non è freddo. Mi riferisco al tuo primo post qui . Certo, possiamo usare la stessa logica per più risposte, potenzialmente copiare e incollare una o due frasi o semplicemente collegare direttamente le risposte precedenti. Detto questo, tuttavia, non abbassare i tuoi post alla copia integrale delle risposte precedenti con la prima frase modificata. Riduce la qualità del contenuto del CV e mostra una cattiva sportività scolastica da parte tua.
usεr11852 dice Reinstate Monic il

5
@ usεr11852 Il problema è stato creato perché l'altro thread è un duplicato di questo. Ho quindi chiuso l'altro, l'ho unito a questo ed ho eliminato la risposta superflua. In generale, Stéphane, ogni volta che ti senti ispirato a pubblicare esattamente la stessa risposta in due thread, ti preghiamo di contrassegnarne uno come duplicato in modo da poterli combinare.
whuber

2
@ usεr11852 OK, scusami per la risposta duplicata, sono un nuovo collaboratore, quindi non conosco ancora le migliori pratiche.
Stéphane Deny il

1
@whuber Grazie per aver unito le domande e per l'heads up!
Stéphane Deny,

1
Di conseguenza, sembra che tu abbia perso 2 voti positivi. È un peccato. +1 :) Benvenuto in CV.
ameba dice Ripristina Monica il

7

Esiste una variante pubblicata di recente, denominata A-tSNE, che supporta l'aggiunta dinamica di nuovi dati e il perfezionamento dei cluster in base alle aree di interesse o mediante input dell'utente. Il documento collegato di seguito presenta alcuni esempi piuttosto belli di questo:

Citazione: arXiv: 1512.01655

TSNE approssimato e orientabile dall'utente per Visual Analytics progressivo Nicola Pezzotti, Boudewijn PF Lelieveldt, Laurens van der Maaten, Thomas Höllt, Elmar Eisemann, Anna Vilanova

Sommario:

Progressive Visual Analytics mira a migliorare l'interattività nelle tecniche di analisi esistenti mediante la visualizzazione e l'interazione con risultati intermedi. Un metodo chiave per l'analisi dei dati è la riduzione della dimensionalità, ad esempio, per produrre incorporamenti 2D che possono essere visualizzati e analizzati in modo efficiente. t-Distributed Stochastic Neighbor Embedding (tSNE) è una tecnica adatta per la visualizzazione di numerosi dati ad alta dimensione. tSNE può creare risultati intermedi significativi ma soffre di un'inizializzazione lenta che limita la sua applicazione in Progressive Visual Analytics. Introduciamo un'approssimazione tSNE controllabile (A-tSNE), che scambia velocità e precisione, per consentire l'esplorazione interattiva dei dati. Offriamo tecniche di visualizzazione in tempo reale, tra cui una soluzione basata sulla densità e una lente magica per ispezionare il grado di approssimazione. Con questo feedback, l'utente può decidere i perfezionamenti locali e guidare il livello di approssimazione durante l'analisi. Dimostriamo la nostra tecnica con diversi set di dati, in uno scenario di ricerca nel mondo reale e per l'analisi in tempo reale di flussi ad alta dimensione per illustrarne l'efficacia per l'analisi interattiva dei dati.


Benvenuti nel sito. Stiamo cercando di creare un archivio permanente di informazioni statistiche di alta qualità sotto forma di domande e risposte. Pertanto, siamo diffidenti nei confronti delle risposte solo link, a causa di linkrot. Puoi pubblicare una citazione completa e un riepilogo delle informazioni al link, nel caso in cui vada a mancare?
gung - Ripristina Monica

6

L'approssimazione di Barnes-Hut rende t-SNE altamente scalabile (almeno, puoi usarlo con 100000 linee, l'ho provato). Puoi chiamarlo da R: Rtsne

O(nlog(n))O(n2)


1
L'ho usato con 250K di linee 1K dense - in realtà era abbastanza buono, ma è legato dalla memoria.
Vladimir Chupakhin,

2

L'approssimazione di Barnes-Hut è ora il metodo predefinito in scikit-learn dalla versione 0.17.0:

Per impostazione predefinita, l'algoritmo di calcolo del gradiente utilizza l'approssimazione di Barnes-Hut in esecuzione nel tempo O (NlogN). method = 'esatta' verrà eseguito sull'algoritmo più lento, ma esatto, nel tempo O (N ^ 2). L'algoritmo esatto dovrebbe essere usato quando gli errori del vicino più vicino devono essere migliori del 3%. Tuttavia, il metodo esatto non può essere ridimensionato a milioni di esempi. Novità nella versione 0.17: metodo approssimativo di ottimizzazione tramite Barnes-Hut.


Questo non affronta la domanda. BH, sebbene più veloce, non supporta lo streaming. Forse intendevi che questo fosse un commento su questa risposta .
Merv,
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.