¿Hay alguna versión de t-SNE para la transmisión de datos?

19

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?

Ger
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é). Puede llamarlo desde R: cran.r-project.org/web/packages/Rtsne/index.html
RUser4512
¡Hey gracias! Me complace votar por su respuesta si la incluye en la sección de respuestas.
Tom
3
Vea aquí una versión paramétrica implementada con una red neuronal. lvdmaaten.github.io/publications/papers/AISTATS_2009.pdf
eyaler

Respuestas:

15

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:

¿T-SNE necesita un lote completo de imágenes (o más generalmente, datos) para crear el espacio de características de baja dimensión? Con PCA puede crear un espacio de características de baja dimensión en un lote de datos y luego proyectar nuevos puntos de datos en ese mismo espacio sin tener que "volver a entrenar". ¿Es eso cierto para t-SNE?

Pregunto porque noté que scikit-learn tiene t-SNE como parte de su clase múltiple, pero ese módulo no tiene un método transform () como PCA. Entonces, al menos, en sklearn, parece que esto no es posible.

Mi pregunta se reduce a esto. ¿Cómo aplicaría t-SNE en una situación de transmisión o en línea donde desea actualizar continuamente la visualización con nuevas imágenes? Presumiblemente, uno no querría aplicar el algoritmo en todo el lote para cada nueva imagen.

UN:

+ Evan Zamir sí, esto es posible con t-SNE, pero tal vez no sea compatible con las implementaciones regulares de t-SNE. Normalmente, la ubicación de cada punto es un parámetro en la optimización, pero también puede crear un mapeo desde alta D -> baja D (por ejemplo, red neuronal) y hacer un backprop a través de las ubicaciones. Luego terminas con la función de incrustación y puedes proyectar nuevos puntos. Por lo tanto, nada impide esto en principio, pero algunas implementaciones pueden no ser compatibles ya que es un caso de uso menos frecuente.

thecity2
fuente
11

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:

  1. 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.

  2. 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.

  3. 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.

Stéphane Deny
fuente
2
Bienvenido a la comunidad. El auto-plagio no es genial. Me refiero a tu primera publicación aquí . Claro, podemos usar el mismo razonamiento para múltiples respuestas, potencialmente copiar y pegar una o dos frases o simplemente vincular directamente a respuestas anteriores. Sin embargo, dicho esto, no baje sus publicaciones a una copia literal de las respuestas anteriores con la primera oración modificada. Reduce la calidad del contenido de CV y ​​muestra un espíritu deportivo pobre por parte de usted.
usεr11852 dice Reinstate Monic
55
@ usεr11852 El problema se creó porque el otro subproceso es un duplicado de este. Por lo tanto, cerré el otro, lo fusioné con este y eliminé la respuesta superflua. En general, Stéphane, cada vez que se sienta inspirado para publicar exactamente la misma respuesta en dos hilos, marque uno de ellos como un duplicado para que podamos combinarlos.
whuber
2
@ usεr11852 OK, perdón por la respuesta duplicada, soy un nuevo colaborador, así que todavía no conozco las mejores prácticas.
Stéphane Deny
1
@whuber ¡Gracias por fusionar las preguntas y por el aviso!
Stéphane Deny
1
Parece que has perdido 2 votos a favor como resultado. Eso es lamentable. +1 :) Bienvenido a CV.
ameba dice Reinstate Monica
7

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

Aprobado y orientable por el usuario tSNE para análisis visual progresivo Nicola Pezzotti, Boudewijn PF Lelieveldt, Laurens van der Maaten, Thomas Höllt, Elmar Eisemann, Anna Vilanova

Resumen:

Progressive Visual Analytics tiene como objetivo mejorar la interactividad en las técnicas analíticas existentes mediante la visualización, así como la interacción con resultados intermedios. Un método clave para el análisis de datos es la reducción de la dimensionalidad, por ejemplo, para producir incrustaciones 2D que se puedan visualizar y analizar de manera eficiente. La incrustación de vecinos estocásticos distribuidos en t (tSNE) es una técnica muy adecuada para la visualización de varios datos de alta dimensión. tSNE puede crear resultados intermedios significativos, pero sufre una inicialización lenta que restringe su aplicación en Progressive Visual Analytics. Introducimos una aproximación tSNE controlable (A-tSNE), que intercambia velocidad y precisión, para permitir la exploración interactiva de datos. Ofrecemos técnicas de visualización en tiempo real, incluyendo una solución basada en la densidad y una lente mágica para inspeccionar el grado de aproximación. Con esta retroalimentación, el usuario puede decidir sobre mejoras locales y dirigir el nivel de aproximación durante el análisis. Demostramos nuestra técnica con varios conjuntos de datos, en un escenario de investigación del mundo real y para el análisis en tiempo real de flujos de alta dimensión para ilustrar su efectividad para el análisis interactivo de datos.

cvlad
fuente
Bienvenido al sitio. Estamos tratando de construir un repositorio permanente de información estadística de alta calidad en forma de preguntas y respuestas. Por lo tanto, desconfiamos de las respuestas de solo enlace, debido a linkrot. ¿Puede publicar una cita completa y un resumen de la información en el enlace, en caso de que falle?
gung - Restablece a Monica
6

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

O(norteIniciar sesión(norte))O(norte2)

RUser4512
fuente
1
Lo usé con líneas densas de 250K 1K, en realidad era bastante bueno, pero está limitado por la memoria.
Vladimir Chupakhin
2

La aproximación de Barnes-Hut es ahora el método predeterminado en scikit-learn a partir de la versión 0.17.0:

Por defecto, el algoritmo de cálculo de gradiente utiliza la aproximación de Barnes-Hut que se ejecuta en tiempo O (NlogN). method = 'exacto' se ejecutará en el algoritmo más lento pero exacto en tiempo O (N ^ 2). El algoritmo exacto debe usarse cuando los errores del vecino más cercano deben ser mejores que el 3%. Sin embargo, el método exacto no puede escalar a millones de ejemplos. Nuevo en la versión 0.17: Método de optimización aproximado a través de Barnes-Hut.

thecity2
fuente
Esto no responde a la pregunta. BH, aunque es más rápido, no admite la transmisión. Tal vez quisiste decir que esto es un comentario sobre esta respuesta .
merv