Mein Verständnis von t-SNE und der Barnes-Hut-Näherung ist, dass alle Datenpunkte erforderlich sind, damit alle Kraftwechselwirkungen gleichzeitig berechnet werden können und jeder Punkt in der 2d-Karte (oder der Karte mit der niedrigeren Dimension) angepasst werden kann.
Gibt es Versionen von t-sne, die effizient mit Streaming-Daten umgehen können? Wenn also meine Beobachtungen einzeln eintreffen, wird der beste Ort auf der 2D-Karte gefunden, um die neue Beobachtung zu platzieren, oder es werden kontinuierlich alle Punkte auf der 2D-Karte aktualisiert, um die neue Beobachtung zu berücksichtigen.
Wäre das überhaupt sinnvoll oder geht es gegen das Setup von t-sne.
Antworten:
Ich hatte genau die gleiche Frage und habe sie auf einem YouTube-Video eines CS231n-Vortrags gepostet, den Andrej Karpathy vor einigen Wochen gehalten hat. Hier ist die Frage, die ich gepostet habe, gefolgt von Andrejs Antwort:
https://www.youtube.com/watch?v=ta5fdaqDT3M&lc=z12ji3arguzwgxdm422gxnf54xaluzhcx
Q:
EIN:
quelle
Wenn Sie mit Streaming-Daten arbeiten, möchten / müssen Sie möglicherweise nicht alle Punkte im Verlauf in eine einzelne t-SNE-Karte einbetten. Alternativ können Sie eine Online-Einbettung durchführen, indem Sie die folgenden einfachen Schritte ausführen :
Wählen Sie ein Zeitfenster der Dauer T, das lang genug ist, damit jedes interessierende Muster mindestens ein paar Mal in der Fensterdauer erscheint.
Scrollen Sie durch das Fenster, während die Datenströme einlaufen, mit einem Zeitschritt dt, der viel kleiner als T ist. Berechnen Sie für jede Position des Fensters eine t-SNE-Einbettung der Datenpunkte im Zeitfenster.
Setzen Sie jede Einbettung mit dem Ergebnis der vorherigen ein. In t-SNE muss man die Anfangskoordinaten der Datenpunkte im niedrigdimensionalen Raum wählen. In unserem Fall teilen zwei aufeinanderfolgende Einbettungen die meisten ihrer Datenpunkte, da wir dt viel kleiner als T wählen. Ordnen Sie für alle gemeinsam genutzten Datenpunkte ihre Anfangskoordinaten in der aktuellen Einbettung ihren Endkoordinaten in der vorherigen Einbettung zu . Dieser Schritt stellt sicher, dass ähnliche Muster über aufeinanderfolgende Einbettungen hinweg konsistent dargestellt werden. (In der sklearn-Implementierung in Python ist der seed-Parameter "init". Standardmäßig legt die sklearn-Implementierung die Anfangsposition der Punkte nach dem Zufallsprinzip fest.)
Hinweis 1: Es ist wichtig, dass die Muster von Interesse in einem bestimmten Zeitfenster mindestens einmal auftreten, damit der Speicher der Darstellung nicht verloren geht, wenn das Fenster durch den Datensatz gleitet. Tatsächlich konvergiert t-SNE typischerweise nicht zu einer eindeutigen Lösung, sondern nur zu einem lokalen Minimum. Wenn der Speicher verloren geht, kann ein ähnliches Muster in zwei Instanzen einer Einbettung auf sehr unterschiedliche Weise dargestellt werden.
Anmerkung 2: Diese Methode ist besonders relevant, wenn es um instationäre Zeitreihen geht, bei denen Muster verfolgt werden sollen, die sich langsam im Laufe der Zeit entwickeln. In der Tat wird jede Einbettung speziell auf das kleine Zeitfenster zugeschnitten, in dem sie berechnet wird, um sicherzustellen, dass die zeitlich lokale Struktur optimal erfasst wird (im Gegensatz zu einer vollständigen Einbettung des gesamten nicht stationären Datensatzes).
Anmerkung 3: Bei dieser Methode können die aufeinanderfolgenden Einbettungen nicht parallelisiert werden, da das Ergebnis der vorherigen Einbettung benötigt wird, um die nächste Einbettung zu erhalten. Da jedoch der Startwert (dh die Anfangskoordinaten der Punkte) für die meisten Punkte (alle gemeinsamen Punkte zwischen aufeinanderfolgenden Einbettungen) gut ausgewählt ist, konvergiert eine Einbettung normalerweise sehr schnell, und zwar nur in wenigen Iterationen.
Ein Beispiel für die Anwendung dieser Methode auf instationäre Zeitreihen finden Sie in diesem Artikel ( ICLR 2016, Lernen stabiler Darstellungen in einer sich verändernden Welt mit online t-SNE: Proof of Concept im Singvogel ), in dem sie erfolgreich angewendet wurde die Entstehung von Silben über die Entwicklung im Singvogel zu verfolgen.
quelle
Es gibt eine kürzlich veröffentlichte Variante namens A-tSNE, die das dynamische Hinzufügen neuer Daten und das Verfeinern von Clustern unterstützt, entweder basierend auf Interessensgebieten oder durch Benutzereingaben. Das unten verlinkte Papier enthält einige hübsche Beispiele dafür:
Zitierweise: arXiv: 1512.01655
quelle
Die Barnes-Hut-Näherung macht t-SNE hoch skalierbar (zumindest können Sie es mit 100.000 Zeilen verwenden, ich habe es ausprobiert). Sie können es von R: Rtsne aufrufen
quelle
Die Barnes-Hut-Approximation ist jetzt die Standardmethode in scikit-learn ab Version 0.17.0:
quelle