我生成了一个数据集的 t-SNE 可视化(大约 10 个标准化(平均值 = 0,sd = 1)数字特征),然后得出了以下二维图。我没有很好的直觉,为什么这些点会以弧形组的形式对齐,例如参见所附图片的右下部分(或其最左边的部分)。
我在原始论文http://www.cs.toronto.edu/~hinton/absps/tsne.pdf中发现了类似的效果- 参见图 4.a。但是,我没有找到对这种现象的一个很好的解释。
关于为什么会发生这种情况的任何直觉?
我生成了一个数据集的 t-SNE 可视化(大约 10 个标准化(平均值 = 0,sd = 1)数字特征),然后得出了以下二维图。我没有很好的直觉,为什么这些点会以弧形组的形式对齐,例如参见所附图片的右下部分(或其最左边的部分)。
我在原始论文http://www.cs.toronto.edu/~hinton/absps/tsne.pdf中发现了类似的效果- 参见图 4.a。但是,我没有找到对这种现象的一个很好的解释。
关于为什么会发生这种情况的任何直觉?
如果您搜索“弹簧图布局”的图像,可以看到类似的现象,其中显示了许多此类弧的示例,例如来自 wikipedia 的这个。在图像右边缘的顶部附近,我们看到了这样一条弧线。诚然,这不是最好的例子。本文图片的右上角显示了一些效果
大多数这些图形可视化是通过模拟每对连接节点之间的弹簧力生成的,并允许节点根据该力移动。
在 t-SNE 中,对算法的类似解释是可能的——二维空间中的点有一个弹簧,其静止长度取决于原始高维空间中点的距离。因此,在 2D 空间中比在高维空间中更近的点被推得更远,在 2D 空间中比在高维空间中更远的点被拉到一起。
因此,弧的形成很可能是因为它们试图与数据中的另一组点保持恒定距离。
与上面的弹簧图布局不同,t-SNE 中的每一对点都有一个弹簧/力附加到它上面,所以问为什么弧不会聚集在一起形成斑点是一个有效的问题,如图可视化所示维基百科,其中边缘上的某些节点组形成了圆形簇而不是弧。
我怀疑其原因是 t-SNE 中的每个点都有一个附加的方差。与低维空间中的点相比,高维空间的稀疏区域中的点具有更高的方差。高方差点的弹簧上的力减小了,因此如果弧中的点位于原始空间的稀疏区域,则只有一个微弱的力试图将它们拉成一个簇,这可能无法克服其他反对势力。
此外,作者用来减少拥挤的方法是在 2D 空间中使用重尾分布,这意味着点不会因为彼此之间的距离超过应有的距离而受到过多的惩罚。这也减少了试图将电弧拉入集群的力。