Al tratar con datos en flujo, puede que no desee/necesite incrustar todos los puntos del historial en un único mapa t-SNE. Como alternativa, puede realizar un incrustación en línea siguiendo estos sencillos pasos:
-
elija una ventana temporal de duración T, lo suficientemente larga como 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 entren los datos, con un paso de tiempo dt mucho menor que T. Para cada posición de la ventana, calcule una incrustación t-SNE de los puntos de datos en la ventana temporal.
-
sembrar cada incrustación con el resultado de la anterior. En t-SNE, hay que elegir las coordenadas iniciales de los puntos de datos en el espacio de baja dimensión. En nuestro caso, como 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, hacer coincidir sus coordenadas iniciales en la incrustación actual con sus coordenadas finales en la incrustación anterior . Este paso garantizará que patrones similares tengan una representación coherente en las sucesivas incrustaciones. (en la implantació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 de forma aleatoria)
Nota 1: Es importante que los patrones de interés aparezcan al menos una vez en cualquier ventana temporal, 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 no suele converger a una solución única, sino sólo a un mínimo local, por lo que si se pierde la memoria, un patrón similar podría representarse de forma muy diferente en dos instancias de una incrustación.
Nota 2: Este método es especialmente pertinente cuando se trata de series temporales no estacionarias, en las que se desea seguir patrones que evolucionan lentamente a lo largo del tiempo. De hecho, cada incrustación se adapta específicamente a la pequeña ventana temporal en la que se calcula, lo que garantiza que captura la estructura temporal local de la mejor manera posible (a diferencia de una incrustación completa de todo el conjunto de datos no estacionarios).
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, como 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 las incrustaciones sucesivas), una incrustación suele converger muy rápidamente, 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 cantor ), donde se aplicó con éxito para rastrear la aparición de sílabas a lo largo del desarrollo en el pájaro cantor.