Existe-t-il des versions de t-SNE pour le streaming de données?

19

Ma compréhension du t-SNE et de l'approximation de Barnes-Hut est que tous les points de données sont nécessaires pour que toutes les interactions de force puissent être calculées en même temps et chaque point peut être ajusté dans la carte 2D (ou dimensionnelle inférieure).

Existe-t-il des versions de t-sne qui peuvent traiter efficacement les données en streaming? Donc, si mes observations arrivent une par une, il trouvera le meilleur emplacement sur la carte 2D pour placer la nouvelle observation, ou mettra à jour en permanence tous les points sur la carte 2D pour tenir compte de la nouvelle observation.

Est-ce que cela aurait du sens ou est-ce que cela irait à l'encontre de la configuration de t-sne?

Ger
la source
L'approximation de Barnes-Hut rend le t-SNE hautement évolutif (au moins, vous pouvez l'utiliser avec 100 000 lignes, je l'ai essayé). Vous pouvez l'appeler à partir de R: cran.r-project.org/web/packages/Rtsne/index.html
RUser4512
Hey, merci! Je suis heureux de voter pour votre réponse si vous la mettez dans la section des réponses.
Tom
3
Voir ici pour une version paramétrique implémentée avec un ntwork neuronal. lvdmaaten.github.io/publications/papers/AISTATS_2009.pdf
eyaler

Réponses:

15

J'avais exactement la même question et je l'ai postée sur une vidéo YouTube d'une conférence CS231n donnée par Andrej Karpathy il y a quelques semaines. Voici la question que j'ai postée suivie de la réponse d'Andrej:

https://www.youtube.com/watch?v=ta5fdaqDT3M&lc=z12ji3arguzwgxdm422gxnf54xaluzhcx

Q:

Le t-SNE a-t-il besoin d'un lot entier d'images (ou plus généralement de données) pour créer l'espace d'entités de faible dimension? Avec PCA, vous pouvez créer un espace d'entités de faible dimension sur un lot de données, puis projeter de nouveaux points de données sur ce même espace sans avoir à "recycler". Est-ce vrai pour t-SNE?

Je demande parce que j'ai remarqué que scikit-learn a t-SNE dans le cadre de sa classe de manifold, mais ce module n'a pas de méthode transform () comme le fait PCA. Donc, au moins, dans sklearn, il semblerait que ce ne soit pas possible.

Ma question se résume à ceci. Comment appliqueriez-vous t-SNE dans une situation de streaming ou en ligne où vous souhaitez mettre à jour en permanence la visualisation avec de nouvelles images? Vraisemblablement, on ne voudrait pas appliquer l'algorithme sur l'ensemble du lot pour chaque nouvelle image.

UNE:

+ Evan Zamir oui, cela est possible avec t-SNE, mais peut-être pas pris en charge avec les implémentations t-SNE régulières. Normalement, l'emplacement de chaque point est un paramètre dans l'optimisation, mais vous pouvez tout aussi bien créer un mappage à partir de haute-D -> faible-D (par exemple, réseau neuronal) et backprop à travers les emplacements. Ensuite, vous vous retrouvez avec la fonction d'intégration et pouvez projeter de nouveaux points. Donc rien n'empêche cela en principe, mais certaines implémentations peuvent ne pas le supporter car c'est un cas d'utilisation moins fréquent.

thecity2
la source
11

Lorsque vous traitez des données en streaming, vous ne voudrez peut-être pas / ne devrez pas intégrer tous les points de l'historique dans une seule carte t-SNE. Vous pouvez également effectuer une intégration en ligne en suivant ces étapes simples:

  1. choisissez une fenêtre temporelle de durée T, suffisamment longue pour que chaque motif d'intérêt apparaisse au moins deux fois dans la durée de la fenêtre.

  2. faites défiler la fenêtre au fur et à mesure que les données circulent, avec un pas de temps dt beaucoup plus petit que T. Pour chaque position de la fenêtre, calculez un t-SNE incorporant les points de données dans la fenêtre temporelle.

  3. ensemencer chaque incorporation avec le résultat de la précédente. Dans t-SNE, il faut choisir les coordonnées initiales des points de données dans l'espace de faible dimension. Dans notre cas, comme nous choisissons dt beaucoup plus petit que T, deux plongements successifs partagent la plupart de leurs points de données. Pour tous les points de données partagés, faites correspondre leurs coordonnées initiales dans l'incorporation actuelle à leurs coordonnées finales dans l'incorporation précédente . Cette étape garantira que les modèles similaires ont une représentation cohérente à travers les incorporations successives. (dans l' implémentation sklearn en python, le paramètre de départ est "init". Par défaut, l'implémentation sklearn définit la position initiale des points de manière aléatoire)

Remarque 1: Il est important que les modèles d'intérêt apparaissent au moins une fois dans une fenêtre de temps donnée, afin que la mémoire de la représentation ne se perde pas lorsque la fenêtre glisse dans l'ensemble de données. En effet, le t-SNE ne converge généralement pas vers une solution unique mais uniquement vers un minimum local, donc si la mémoire est perdue, un modèle similaire pourrait être représenté de manière très différente dans deux instanciations d'une incorporation.

Note 2: Cette méthode est particulièrement pertinente lorsqu'il s'agit de séries chronologiques non stationnaires, où l'on souhaite suivre des modèles qui évoluent lentement dans le temps. En effet, chaque incorporation est ici adaptée spécifiquement à la petite fenêtre temporelle sur laquelle elle est calculée, garantissant qu'elle capture la structure temporellement locale de la meilleure façon (contrairement à une incorporation complète de l'ensemble de données non stationnaire).

Remarque 3: Dans cette méthode, les plongements successifs ne peuvent pas être parallélisés, car il faut le résultat de l'incorporation précédente pour ensemencer le suivant. Cependant, parce que la graine (c.-à-d. Les coordonnées initiales des points) est bien choisie pour la plupart des points (tous les points partagés entre les intégrations successives), une incorporation converge généralement très rapidement, en quelques itérations seulement.

Pour un exemple d'application de cette méthode à des séries chronologiques non stationnaires, voir cet article ( ICLR 2016, Apprendre des représentations stables dans un monde en mutation avec t-SNE en ligne: preuve de concept chez l'oiseau chanteur ), où il a été appliqué avec succès pour suivre l'émergence des syllabes à travers le développement de l'oiseau chanteur.

Stéphane Deny
la source
2
Bienvenue dans la communauté. L'auto-plagiat n'est pas cool. Je me réfère à votre premier post ici . Bien sûr, nous pouvons utiliser la même justification pour plusieurs réponses, potentiellement copier-coller une phrase ou deux ou simplement un lien vers les réponses précédentes directement. Cela étant dit, ne réduisez pas vos messages en copie textuelle des réponses précédentes avec la première phrase modifiée. Cela diminue la qualité du contenu du CV et montre un manque de sportivité scolaire de votre part.
usεr11852 dit Réintégrer Monic le
5
@ usεr11852 Le problème a été créé car l'autre thread est un doublon de celui-ci. J'ai donc fermé l'autre, fusionné avec celui-ci et supprimé la réponse superflue. En général, Stéphane, chaque fois que vous vous sentez inspiré de publier exactement la même réponse dans deux fils, veuillez simplement en signaler un en double afin que nous puissions les combiner.
whuber
2
@ usεr11852 OK, désolé pour la réponse en double, je suis un nouveau contributeur donc je ne connais pas encore les meilleures pratiques.
Stéphane Deny
1
@whuber Merci d'avoir fusionné les questions et pour la tête haute!
Stéphane Deny
1
Vous semblez avoir perdu 2 votes positifs en conséquence. C'est malheureux. +1 :) Bienvenue sur CV.
amibe dit Réintégrer Monica
7

Il existe une variante récemment publiée, appelée A-tSNE, qui prend en charge l'ajout dynamique de nouvelles données et le raffinement des grappes, soit en fonction des domaines d'intérêt, soit en fonction des entrées de l'utilisateur. Le document lié ci-dessous en présente de très beaux exemples:

Citation: arXiv: 1512.01655

TSNE approximatif et orientable par l'utilisateur pour l'analyse visuelle progressive Nicola Pezzotti, Boudewijn PF Lelieveldt, Laurens van der Maaten, Thomas Höllt, Elmar Eisemann, Anna Vilanova

Sommaire:

Progressive Visual Analytics vise à améliorer l'interactivité dans les techniques d'analyse existantes au moyen de la visualisation ainsi que l'interaction avec des résultats intermédiaires. Une méthode clé pour l'analyse des données est la réduction de la dimensionnalité, par exemple, pour produire des incorporations 2D qui peuvent être visualisées et analysées efficacement. L'incorporation de voisin stochastique t-distribué (tSNE) est une technique bien adaptée pour la visualisation de plusieurs données de grande dimension. tSNE peut créer des résultats intermédiaires significatifs mais souffre d'une initialisation lente qui contraint son application dans Progressive Visual Analytics. Nous introduisons une approximation tSNE contrôlable (A-tSNE), qui compromis la vitesse et la précision, pour permettre l'exploration interactive des données. Nous proposons des techniques de visualisation en temps réel, y compris une solution basée sur la densité et une lentille magique pour inspecter le degré d'approximation. Avec cette rétroaction, l'utilisateur peut décider des raffinements locaux et orienter le niveau d'approximation pendant l'analyse. Nous démontrons notre technique avec plusieurs ensembles de données, dans un scénario de recherche du monde réel et pour l'analyse en temps réel de flux de grande dimension pour illustrer son efficacité pour l'analyse de données interactive.

cvlad
la source
Bienvenue sur le site. Nous essayons de construire un référentiel permanent d'informations statistiques de haute qualité sous forme de questions et réponses. Ainsi, nous nous méfions des réponses de lien uniquement, en raison de linkrot. Pouvez-vous publier une citation complète et un résumé des informations sur le lien, au cas où elles disparaissent?
gung - Rétablir Monica
6

L'approximation de Barnes-Hut rend le t-SNE hautement évolutif (au moins, vous pouvez l'utiliser avec 100 000 lignes, je l'ai essayé). Vous pouvez l'appeler à partir de R: Rtsne

O(nJournal(n))O(n2)

RUser4512
la source
1
Je l'ai utilisé avec 250K lignes 1K denses - était en fait assez bon, mais il est lié par la mémoire.
Vladimir Chupakhin
2

L'approximation de Barnes-Hut est désormais la méthode par défaut dans scikit-learn à partir de la version 0.17.0:

Par défaut, l'algorithme de calcul du gradient utilise l'approximation de Barnes-Hut exécutée en temps O (NlogN). method = 'exact' s'exécutera sur l'algorithme le plus lent, mais exact, en temps O (N ^ 2). L'algorithme exact doit être utilisé lorsque les erreurs du plus proche voisin doivent être supérieures à 3%. Cependant, la méthode exacte ne peut pas évoluer vers des millions d'exemples. Nouveau dans la version 0.17: Méthode d'optimisation approximative via le Barnes-Hut.

thecity2
la source
Cela ne règle pas la question. BH, bien que plus rapide, ne prend pas en charge le streaming. Peut-être que vous vouliez que ce soit un commentaire sur cette réponse .
merv