Me gustaría hacer una reducción de dimensionalidad en casi 1 millón de vectores cada uno con 200 dimensiones ( doc2vec
). Estoy usando la TSNE
implementación del sklearn.manifold
módulo para él y el principal problema es la complejidad del tiempo. Incluso con method = barnes_hut
, la velocidad de cálculo sigue siendo baja. Algún tiempo, incluso se queda sin memoria.
Lo estoy ejecutando en un procesador de 48 núcleos con 130G de RAM. ¿Existe algún método para ejecutarlo en paralelo o hacer uso del abundante recurso para acelerar el proceso?
Respuestas:
Debe mirar esta implementación multinúcleo de t-SNE.
De hecho, lo probé y puedo garantizar su rendimiento superior.
fuente
Consulte t-SNE basado en interpolación acelerada por FFT ( papel , código y paquete de Python ).
Del resumen:
El documento también incluye un ejemplo de un conjunto de datos con un millón de puntos y 100 dimensiones (similar a la configuración de OP), y parece tomar ~ 1 hora.
fuente
Desde entonces, no hay respuestas en SO, me he preguntado en la página de Github y el problema se ha cerrado al indicar la siguiente respuesta de GaelVaroquaux.
fuente
Pruebe UMAP: https://github.com/lmcinnes/umap
Es significativamente más rápido que t-SNE.
fuente