Comprendo t-SNE y la aproximación de Barnes-Hut es que se requieren todos los puntos de datos para que todas las interacciones de fuerza se puedan calcular al mismo tiempo y cada punto se pueda ajustar en el mapa 2d (o de dimensión inferior).
¿Hay alguna versión de t-sne que pueda manejar eficientemente la transmisión de datos? Entonces, si mis observaciones llegan una por una, encontrará la mejor ubicación en el mapa 2D para colocar la nueva observación, o actualizará continuamente todos los puntos en el mapa 2D para tener en cuenta la nueva observación.
¿Tendría sentido o iría en contra de la configuración de t-sne?
Respuestas:
Tenía exactamente la misma pregunta y la publiqué en un video de YouTube de una conferencia CS231n dada por Andrej Karpathy hace unas semanas. Aquí está la pregunta que publiqué seguido de la respuesta de Andrej:
https://www.youtube.com/watch?v=ta5fdaqDT3M&lc=z12ji3arguzwgxdm422gxnf54xaluzhcx
Q:
UN:
fuente
Al tratar con la transmisión de datos, es posible que no desee / necesite incrustar todos los puntos en el historial en un solo mapa t-SNE. Como alternativa, puede realizar una incrustación en línea siguiendo estos simples pasos:
elija una ventana de tiempo de duración T, el tiempo suficiente para que cada patrón de interés aparezca al menos un par de veces en la duración de la ventana.
Desplace la ventana a medida que los datos fluyen, con un paso de tiempo dt mucho más pequeño que T. Para cada posición de la ventana, calcule una incrustación t-SNE de los puntos de datos en la ventana de tiempo.
sembrar cada incrustación con el resultado del anterior. En t-SNE, uno necesita elegir las coordenadas iniciales de los puntos de datos en el espacio de baja dimensión. En nuestro caso, debido a que elegimos dt mucho más pequeño que T, dos incrustaciones sucesivas comparten la mayoría de sus puntos de datos. Para todos los puntos de datos compartidos, haga coincidir sus coordenadas iniciales en la incrustación actual con sus coordenadas finales en la incrustación anterior . Este paso asegurará que patrones similares tengan una representación consistente en incrustaciones sucesivas. (en la implementación de sklearn en python, el parámetro semilla es "init". Por defecto, la implementación de sklearn establece la posición inicial de los puntos al azar)
Nota 1: es importante que los patrones de interés aparezcan al menos una vez en una ventana de tiempo determinada, para que la memoria de la representación no se pierda a medida que la ventana se desliza por el conjunto de datos. De hecho, t-SNE generalmente no converge a una solución única sino solo a un mínimo local, por lo que si se pierde la memoria, un patrón similar podría representarse de maneras muy diferentes en dos instancias de una incrustación.
Nota 2: Este método es particularmente relevante cuando se trata de series de tiempo no estacionarias, donde uno desea rastrear patrones que evolucionan lentamente a través del tiempo. De hecho, cada incrustación se ajusta específicamente a la pequeña ventana de tiempo en la que se calcula, asegurando que captura la estructura local temporalmente de la mejor manera (al contrario de una incrustación completa de todo el conjunto de datos no estacionario).
Nota 3: en este método, las incrustaciones sucesivas no se pueden paralelizar, porque se necesita el resultado de la incrustación anterior para sembrar la siguiente. Sin embargo, debido a que la semilla (es decir, las coordenadas iniciales de los puntos) está bien elegida para la mayoría de los puntos (todos los puntos compartidos entre incrustaciones sucesivas), una incrustación generalmente converge muy rápido, solo en unas pocas iteraciones.
Para ver un ejemplo de aplicación de este método a series temporales no estacionarias, consulte este artículo ( ICLR 2016, Aprendizaje de representaciones estables en un mundo cambiante con t-SNE en línea: prueba de concepto en el pájaro cantante ), donde se aplicó con éxito para rastrear la aparición de sílabas a través del desarrollo en el pájaro cantor.
fuente
Existe una variante publicada recientemente, llamada A-tSNE, que admite la adición dinámica de nuevos datos y el refinamiento de clústeres, ya sea en función de las áreas de interés o por la entrada del usuario. El documento vinculado a continuación tiene algunos ejemplos bastante bonitos de esto:
Cita: arXiv: 1512.01655
fuente
La aproximación de Barnes-Hut hace que t-SNE sea altamente escalable (al menos, puede usarlo con 100 000 líneas, lo probé). Puedes llamarlo desde R: Rtsne
fuente
La aproximación de Barnes-Hut es ahora el método predeterminado en scikit-learn a partir de la versión 0.17.0:
fuente