Eu gostaria de fazer uma redução de dimensionalidade em quase 1 milhão de vetores, cada um com 200 dimensões ( doc2vec
). Estou usando a TSNE
implementação do sklearn.manifold
módulo para ele e o grande problema é a complexidade do tempo. Mesmo com method = barnes_hut
, a velocidade da computação ainda é baixa. Algum tempo até fica sem memória.
Estou executando-o em um processador de 48 núcleos com 130G de RAM. Existe um método para executá-lo paralelamente ou usar o recurso abundante para acelerar o processo.
Respostas:
Você deve examinar esta implementação multicore do t-SNE.
Na verdade, eu tentei e posso garantir seu desempenho superior.
fonte
Confira t-SNE baseado em interpolação acelerada por FFT ( papel , código e pacote Python ).
Do resumo:
O artigo também inclui um exemplo de um conjunto de dados com um milhão de pontos e 100 dimensões (semelhante à configuração do OP), e parece levar aproximadamente 1 hora.
fonte
Como não há respostas no SO, perguntei-me na página do github e o problema foi encerrado com a seguinte resposta de GaelVaroquaux ..
fonte
Experimente o UMAP: https://github.com/lmcinnes/umap
É significativamente mais rápido que o t-SNE.
fonte