Rozumiem t-SNE i aproksymację Barnesa-Huta, że wszystkie punkty danych są wymagane, aby wszystkie oddziaływania sił mogły być obliczone w tym samym czasie, a każdy punkt można dostosować na mapie 2d (lub niższych wymiarach).
Czy są jakieś wersje T-sne, które mogą skutecznie radzić sobie z przesyłaniem danych? Więc jeśli moje obserwacje docierają pojedynczo, znajdzie najlepszą lokalizację na mapie 2d, aby umieścić nową obserwację, lub ciągle aktualizuję wszystkie punkty na mapie 2d, aby uwzględnić nową obserwację.
Czy to w ogóle miałoby sens, czy też byłoby sprzeczne z konfiguracją t-sne.
Odpowiedzi:
Mam dokładnie to samo pytanie i zamieściłem je na wideo na YouTube z wykładu CS231n wygłoszonego przez Andreja Karpathy'ego kilka tygodni temu. Oto pytanie, które opublikowałem, a następnie odpowiedź Andreja:
https://www.youtube.com/watch?v=ta5fdaqDT3M&lc=z12ji3arguzwgxdm422gxnf54xaluzhcx
P:
ZA:
źródło
Podczas przesyłania danych strumieniowych może nie być konieczne / konieczne osadzenie wszystkich punktów w historii na jednej mapie t-SNE. Alternatywnie możesz wykonać osadzanie online, wykonując następujące proste kroki:
wybierz przedział czasu trwania T, wystarczająco długi, aby każdy interesujący wzór pojawiał się co najmniej kilka razy w czasie trwania okna.
przewijaj okno w miarę przesyłania danych, z krokiem czasowym dt znacznie mniejszym niż T. Dla każdej pozycji okna, oblicz osadzenie punktów danych w oknie czasowym przez t-SNE.
zaszczepiaj każde osadzenie wynikiem poprzedniego. W t-SNE należy wybrać początkowe współrzędne punktów danych w przestrzeni niskiego wymiaru. W naszym przypadku, ponieważ wybraliśmy dt znacznie mniejszy niż T, dwa kolejne osadzenia współdzielą większość swoich punktów danych. Dla wszystkich współdzielonych punktów danych dopasuj ich początkowe współrzędne w bieżącym osadzeniu do ich ostatecznych współrzędnych w poprzednim osadzeniu . Ten krok zapewni spójną reprezentację podobnych wzorców w kolejnych osadzeniach. (w implementacji sklearn w pythonie parametr początkowy to „init”. Domyślnie implementacja sklearn określa losową pozycję punktów)
Uwaga 1: Ważne jest, aby interesujące wzorce pojawiały się co najmniej raz w dowolnym oknie czasowym, aby pamięć reprezentacji nie została utracona, gdy okno przesuwa się przez zestaw danych. Rzeczywiście, t-SNE zwykle nie jest zbieżny z unikalnym rozwiązaniem, ale tylko z lokalnym minimum, więc jeśli pamięć zostanie utracona, podobny wzorzec może być reprezentowany na bardzo różne sposoby w dwóch przypadkach osadzania.
Uwaga 2: Ta metoda jest szczególnie istotna w przypadku niestacjonarnych szeregów czasowych, w których chce się śledzić wzorce, które ewoluują powoli w czasie. Rzeczywiście, każde osadzanie jest tutaj specjalnie dostosowane do małego okna czasowego, w którym jest obliczane, zapewniając, że najlepiej przechwytuje lokalną strukturę czasową (w przeciwieństwie do pełnego osadzania całego niestacjonarnego zestawu danych).
Uwaga 3: W tej metodzie kolejne osadzanie nie może być zrównoleglone, ponieważ potrzeba wyniku poprzedniego osadzania, aby zaszczepić następne. Ponieważ jednak ziarno (tj. Początkowe współrzędne punktów) jest dobrze wybrane dla większości punktów (wszystkich wspólnych punktów między kolejnymi osadzeniami), osadzanie zazwyczaj zbiega się bardzo szybko, tylko w kilku iteracjach.
Przykład zastosowania tej metody do niestacjonarnych szeregów czasowych znajduje się w tym artykule ( ICLR 2016, Uczenie się stabilnych reprezentacji w zmieniającym się świecie za pomocą on-line t-SNE: dowód koncepcji w śpiewie ptaków ), gdzie została z powodzeniem zastosowana aby śledzić pojawianie się sylab w całym rozwoju ptaka śpiewającego.
źródło
Istnieje niedawno opublikowany wariant o nazwie A-tSNE, który obsługuje dynamiczne dodawanie nowych danych i udoskonalanie klastrów na podstawie obszarów zainteresowań lub na podstawie danych wprowadzonych przez użytkownika. Poniższy artykuł zawiera kilka całkiem dobrych przykładów:
Cytowanie: arXiv: 1512.01655
źródło
Przybliżenie Barnesa-Huta sprawia, że t-SNE jest wysoce skalowalny (przynajmniej możesz go użyć z 100 000 linii, próbowałem). Możesz to nazwać z R: Rtsne
źródło
Przybliżenie Barnesa-Huta jest teraz domyślną metodą w scikit-learn od wersji 0.17.0:
źródło