t-SNE:为什么相等的数据值在视觉上不接近?

数据挖掘 可视化 降维 特纳
2021-09-17 09:53:19

我有 200 个数据点,在所有功能上都具有相同的值

在 t-SNE 降维之后,它们看起来不再那么相等了,就像这样:在此处输入图像描述

为什么它们不在可视化中的同一点上,甚至似乎分布在两个不同的集群中?

1个回答

您是正确的,T-SNE 中的相同值可以分布在不同的点上,如果您看一下 T-SNE 运行的算法,就会清楚发生这种情况的原因。

为了解决您对算法应用到数据集后点实际上不一样的第一个问题。我会给你一个练习来自己验证它,考虑一个简单的数组x1=[0,1]x2=[0,1]并针对它运行实际算法,并亲自查看结果点实际上并不相同。您可以交叉引用您的答案。

import numpy as np from sklearn.manifold import TSNE m = TSNE(n_components=2, random_state=0) m.fit_transform(np.array([[0,1],[0,1]]))

您还会观察到更改random_state实际会修改模型的输出坐标。实际坐标与其输出之间没有任何真正的相关性。由于 TSNE 的第一步是计算条件似然。

现在让我们尝试使用算法合理化发生这种情况的原因,暂时只使用数学,没有任何直觉。注意xixj 在这种情况下都是向量。 pj|i=exp(||xjxi||22σ2)kiexp(||xjxi||22σ2). 现在,如果我们计算pij=pi|j+pj|i2N,我们可以看到该值为1。应用KL散度后,我们得到了上述值。现在,让我们对此应用一些直觉。pij 是,非正式地,条件概率 X一世 会选择 Xj因为它是邻居。这证明了结果 1 的合理性有两个原因。第一个,因为没有其他邻居,所以它必须在坐标列表中选择唯一的其他向量。此外,正如我们所见,这些点是相同的,并且它们被选为其他邻居的机会应该很高。

现在来看看绝对坐标是否在R2有任何意义。他们真的没有。随机性可以将点重新分配到您希望它们去的任何地方。然而,更有趣的是点之间的距离比是相对的,即使我们将其投影到更高的维度上也是相对的,这非常有趣。

因此,事实是,与其查看两个集群,不如查看它们之间的距离,因为这比坐标本身传达了更多的信息。

希望这回答了你的问题:)