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?
Réponses:
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:
UNE:
la source
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:
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.
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.
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.
la source
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
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: Rtsne
la source
L'approximation de Barnes-Hut est désormais la méthode par défaut dans scikit-learn à partir de la version 0.17.0:
la source