我对t-SNE和Barnes-Hut近似的理解是,需要所有数据点,以便可以同时计算所有力的相互作用,并且可以在2d(或更低维)图中调整每个点。
是否有任何版本的t-sne可以有效处理流数据?因此,如果我的观测一次到达一个观测,它将在2d地图上找到最佳位置以放置新观测,或者连续更新2d地图上的所有点以解决新观测。
这甚至有意义还是与t-sne的设置背道而驰?
我对t-SNE和Barnes-Hut近似的理解是,需要所有数据点,以便可以同时计算所有力的相互作用,并且可以在2d(或更低维)图中调整每个点。
是否有任何版本的t-sne可以有效处理流数据?因此,如果我的观测一次到达一个观测,它将在2d地图上找到最佳位置以放置新观测,或者连续更新2d地图上的所有点以解决新观测。
这甚至有意义还是与t-sne的设置背道而驰?
Answers:
我有完全相同的问题,并将其发布在YouTube视频上,该视频是几周前Andrej Karpathy讲的CS231n演讲的。这是我发布的问题,随后是安德烈(Andrej)的回复:
https://www.youtube.com/watch?v=ta5fdaqDT3M&lc=z12ji3arguzwgxdm422gxnf54xaluzhcx
问:
t-SNE是否需要整批图像(或更一般地说,数据)来创建低维特征空间?使用PCA,您可以在一批数据上创建一个低维特征空间,然后将新的数据点投影到相同的空间上,而无需“重新训练”。这对于t-SNE是正确的吗?
我之所以问是因为,我注意到scikit-learn将t-SNE作为其流形类的一部分,但是该模块没有PCA那样具有transform()方法。因此,至少在sklearn中,这似乎是不可能的。
我的问题可以归结为这一点。在流媒体或在线情况下,如果您想用新图像不断更新可视化效果,您将如何应用t-SNE?据推测,对于每个新图像,都不希望在整个批次中应用该算法。
A:
+ Evan Zamir是的,使用t-SNE可以实现,但常规t-SNE实施可能不支持。通常,每个点的位置都是优化中的一个参数,但是您也可以从高D->低D(例如神经网络)到反向传播通过这些位置创建映射。然后,您将获得嵌入功能并可以投影新点。因此,原则上没有什么可以阻止此操作的,但是某些实现可能不支持此操作,因为它的使用频率较低。
处理流数据时,您可能不希望/不需要将历史中的所有点都嵌入到单个t-SNE地图中。或者,您可以按照以下简单步骤执行在线嵌入:
选择持续时间T的时间窗口,该窗口足够长,以使每个感兴趣的模式在窗口持续时间中至少出现两次。
在数据流进入时滚动窗口,时间步长dt小于T。对于窗口的每个位置,计算时间窗口中数据点的t-SNE嵌入。
将每个嵌入与前一个的结果一起播种。在t-SNE中,需要选择低维空间中数据点的初始坐标。在我们的例子中,因为我们选择的dt比T小得多,所以两个连续的嵌入共享它们的大部分数据点。对于所有共享数据点,将它们在当前嵌入中的初始坐标与在先前嵌入中的最终坐标相匹配。此步骤将确保相似的图案在连续的嵌入中具有一致的表示。(在python 的sklearn实现中,seed参数为“ init”。默认情况下,sklearn实现随机设置点的初始位置)
注1:重要的是,感兴趣的模式在任何给定的时间窗口中至少出现一次,这样,当窗口在数据集中滑动时,表示的内存就不会丢失。实际上,t-SNE通常不会收敛到唯一的解决方案,而只会收敛到局部最小值,因此,如果内存丢失,则在嵌入的两个实例中可能以非常不同的方式表示相似的模式。
注意2:在处理非平稳时间序列时,此方法特别有用,因为该时间序列希望跟踪随时间缓慢变化的模式。实际上,每个嵌入在这里都专门针对计算它的较小时间窗口,以确保以最佳方式捕获时间局部结构(相反,是整个非平稳数据集的完全嵌入)。
注意3:在这种方法中,连续的嵌入无法并行化,因为一个种子需要前一个嵌入的结果才能播种下一个。但是,由于对于大多数点(成功嵌入之间的所有共享点)都很好地选择了种子(即点的初始坐标),因此嵌入通常仅在几次迭代中就非常快速地收敛。
有关将此方法应用于非平稳时间序列的示例,请参见本文(ICLR 2016,使用在线t-SNE学习不断变化的世界中的稳定表示形式:鸣禽中的概念证明),该方法已成功应用。跟踪音节在整个鸣禽开发过程中的出现。
最近发布了一个称为A-tSNE的变体,它支持根据兴趣区域或用户输入动态添加新数据并优化集群。下面链接的论文有一些很好的例子:
逐步可视化分析的近似和用户可控tSNE Nicola Pezzotti,Boudewijn PF Lelieveldt,Laurens van der Maaten,ThomasHöllt,Elmar Eisemann,Anna Vilanova
摘要:
渐进式可视化分析旨在通过可视化以及与中间结果的交互来改善现有分析技术中的交互性。数据分析的一种关键方法是降维,例如,生成可以有效可视化和分析的2D嵌入。t分布随机邻居嵌入(tSNE)是一种适用于可视化多个高维数据的技术。tSNE可以创建有意义的中间结果,但初始化速度慢,这限制了它在渐进式可视化分析中的应用。我们介绍了一种可控的tSNE近似值(A-tSNE),它在速度和准确性之间进行权衡,以实现交互式数据探索。我们提供实时可视化技术,包括基于密度的解决方案和用于检查近似度的魔术镜头。借助此反馈,用户可以决定局部优化并在分析过程中控制近似水平。我们在现实世界的研究场景中以及在对高维流进行实时分析的过程中,通过几个数据集展示了我们的技术,以说明其在交互式数据分析中的有效性。
Barnes-Hut逼近使t-SNE具有高度可扩展性(我尝试过,至少可以将其与10万条线一起使用)。您可以从R调用它:Rtsne