Ich würde gerne eine Dimensionsreduktion für fast 1 Million Vektoren mit jeweils 200 Dimensionen durchführen ( doc2vec
). Ich verwende dafür die TSNE
Implementierung aus dem sklearn.manifold
Modul und das Hauptproblem ist die zeitliche Komplexität. Trotzdem method = barnes_hut
ist die Rechengeschwindigkeit immer noch gering. Irgendwann geht ihm sogar der Speicher aus.
Ich lasse es auf einem Prozessor mit 48 Kernen mit RAM 130G laufen. Gibt es eine Methode, um es parallel auszuführen oder die reichlich vorhandenen Ressourcen zu nutzen, um den Prozess zu beschleunigen?
Antworten:
Sie müssen sich diese Multicore-Implementierung von t-SNE ansehen .
Ich habe es tatsächlich ausprobiert und kann für seine überlegene Leistung bürgen.
quelle
Sehen Sie sich das FFT-beschleunigte interpolationsbasierte t-SNE- Paket ( Papier- , Code- und Python-Paket ) an.
Aus dem Abstract:
Das Papier enthält auch ein Beispiel eines Datensatzes mit einer Million Punkten und 100 Dimensionen (ähnlich der OP-Einstellung), und es scheint ~ 1 Stunde zu dauern.
quelle
Da es in SO keine Antworten gibt, habe ich mich auf der Github-Seite gefragt und das Problem wurde durch die Angabe der folgenden Antwort von GaelVaroquaux geschlossen.
quelle
Versuchen Sie UMAP: https://github.com/lmcinnes/umap
Es ist deutlich schneller als t-SNE.
quelle