Я хотел бы уменьшить размерность почти на 1 миллион векторов с 200 измерениями ( doc2vec
). Я использую TSNE
реализацию из sklearn.manifold
модуля, и главная проблема - временная сложность. Даже при том method = barnes_hut
, что скорость вычислений все еще низка. Некоторое время даже не хватает памяти.
Я использую его на 48-ядерном процессоре с оперативной памятью 130G. Есть ли способ запустить его параллельно или использовать обильный ресурс для ускорения процесса.
Ответы:
Вы должны посмотреть на эту многоядерную реализацию t-SNE.
Я действительно попробовал это и могу ручаться за его превосходную работу.
источник
Проверьте t-SNE на основе интерполяции с ускорением FFT ( бумага , код и пакет Python ).
Из аннотации:
В статье также приведен пример набора данных с миллионами точек и 100 измерениями (аналогично настройке OP), и, похоже, это займет ~ 1 час.
источник
Поскольку в SO нет ответов, я задал себе вопрос на странице github, и проблема была закрыта, указав следующий ответ GaelVaroquaux.
источник
Попробуйте UMAP: https://github.com/lmcinnes/umap
Это значительно быстрее, чем t-SNE.
источник