最近邻对 t-SNE 有意义吗?

数据挖掘 特纳
2021-10-02 05:43:46

此处的答案表明t-SNE 中的维度是没有意义的,并且点之间的距离不是相似度的度量

但是,我们可以根据它在 t-SNE 空间中的最近邻点来谈论一个点吗?这个关于为什么完全相同的点没有聚集的答案表明,点之间的距离比率在低维和高维表示之间是相似的。

例如,下图显示了我的一个数据集(15 个类)上的 t-SNE。

我可以说cro 479(右上角)是异常值吗?fra 1353(左下)是否与班级中的其他图像更相似cir 375等等fra或者这些只是人工制品,例如fra 1353卡在几个集群的另一边,无法强行进入另一个fra班级?

在此处输入图像描述

1个回答

不,这不是必须的,然而,这是 T-SNE 的目标。

在深入了解答案之前,让我们从数学上和直观上看一下一些基本定义。

最近邻:考虑一个度量空间Rd 和一组向量 X1,...,XnRd,给定一个新向量 xRd,我们想找到这样的点 ||X1x||...||Xnx||. 直观地说,它只是使用适当的范数定义的距离的最小值Rd.

现在来看看最近的邻居在应用降维时是否真的很重要。通常在我的回答中,我打算用数学、代码和直觉来合理化一些事情。让我们首先考虑事物的直观方面。如果你有一个距离d另外一点,根据我们对 t-sne 算法的理解,我们知道当我们过渡到更高维度时,这个距离会被保留。让我们进一步假设一个点y 是最近的邻居 x 在某个维度 d. 根据定义,距离之间存在关系dd+k. 因此,我们有直觉,即在不同维度上保持距离,或者至少,这就是我们的目标。让我们尝试用一些数学来证明它的合理性。

在这个答案中,我谈论了 t-sne 中涉及的数学,尽管没有详细说明(t-SNE:为什么相等的数据值在视觉上并不接近?)。这里的数学原理基本上是最大化两个点在投影空间中保持接近的概率,因为它们在原始空间中,假设点的分布是指数的。所以,看这个等式pj|i=exp(||xjxi||22σ2)kiexp(||xjxi||22σ2). 请注意,概率取决于两点之间的距离,因此它们之间的距离越远,它们被投影到较低维度时的距离就越远。请注意,如果它们在Rk,很有可能它们在投影维度上不会接近。所以现在,我们有一个数学上的理由来解释为什么这些点“应该”保持接近。但同样,由于这是一个指数分布,如果这些点相距甚远,则不能保证保持最近邻属性,尽管这是目标。

现在终于有一个简洁的编码示例也演示了这个概念。

from sklearn.manifold import TSNE
from sklearn.neighbors import KNeighborsClassifier
X = [[0],[1],[2],[3],[4],[5],[6],[7],[8],[9]]
y = [0,1,2,3,4,5,6,7,8,9]
neighs = KNeighborsClassifier(n_neighbors=3)
neighs.fit(X, y)
X_embedded = TSNE(n_components=1).fit_transform(X)
neighs_tsne = KNeighborsClassifier(n_neighbors=3)
neighs_tsne.fit(X_embedded, y)
print(neighs.predict([[1.1]]))
>>>[0]
print(neighs_tsne.predict([[1.1]]))
>>>[0]

虽然这是一个非常幼稚的例子,并没有反映出复杂性,但它确实可以通过一些简单的例子进行实验。

编辑:另外,就问题本身添加一些观点,所以没有必要这样,但是,通过数学合理化它可能会证明你没有具体的结果(没有明确的是或否) .

我希望这能消除您对 TSNE 的一些担忧。