Chciałbym zmniejszyć wymiarowość na prawie 1 milionach wektorów, każdy o 200 wymiarach ( doc2vec
). Używam do tego TSNE
implementacji z sklearn.manifold
modułu, a głównym problemem jest złożoność czasu. Mimo method = barnes_hut
to szybkość obliczeń jest wciąż niska. Czasami nawet kończy się pamięć.
Używam go na 48-rdzeniowym procesorze z 130G RAM. Czy istnieje metoda równoległego uruchomienia lub wykorzystania dużej ilości zasobów w celu przyspieszenia procesu?
Odpowiedzi:
Musisz spojrzeć na tę wielordzeniową implementację t-SNE.
Właściwie to wypróbowałem i mogę ręczyć za jego doskonałą wydajność.
źródło
Sprawdź akcelerowaną przez FFT interpolację opartą na interpolacji t-SNE ( papier , kod i pakiet Python ).
Z streszczenia:
Artykuł zawiera również przykład zestawu danych z milionem punktów i 100 wymiarami (podobnymi do ustawienia OP) i wydaje się, że zajmuje to około 1 godziny.
źródło
Ponieważ w SO nie ma odpowiedzi, zadałem sobie pytanie na stronie github, a problem został zamknięty, podając następującą odpowiedź GaelVaroquaux ..
źródło
Wypróbuj UMAP: https://github.com/lmcinnes/umap
Jest znacznie szybszy niż t-SNE.
źródło