gpt4 book ai didi

python - t-SNE 在不同的机器上产生不同的结果

转载 作者:行者123 更新时间:2023-12-04 18:36:00 27 4
gpt4 key购买 nike

我有大约 3000 个 100D 数据点,我使用 t-SNE 将它们投影到 2D。每个数据点属于三个类别之一。但是,当我在两台不同的计算机上运行脚本时,我不断得到不一致的结果。当我使用随机种子时,预计会出现一些不一致,但是其中一台计算机不断获得更好的结果(我在 Ubuntu 上使用 MacBook Pro 和固定机器)。

我使用 Scikit-learn 的 t-SNE 实现。脚本和数据是相同的,我已手动复制文件夹以确保。相关代码片段如下所示:

X_vectors, X_labels = self.load_data(spec_path, sound_path, subset)
tsne = TSNE(n_components=2, perplexity=25, random_state=None)
Y = tsne.fit_transform(X_vectors)
self.plot(X_labels, Y[:, 0], Y[:, 1], Y)

第一个图像是从 MacBook 生成的一个样本,我已经运行了几次,它总是在相同的 x/y 范围内生成类似的形状。第二个来自 Ubuntu,显然更好,我再次运行了几次以确保它继续生成更好的结果,与 Mac 相比始终处于更高的 x/y 范围。不确定我在这里没有看到什么,很可能是我错过了一些明显的东西。

Result from the MacbookPro Result from Ubuntu

最佳答案

TSNE 是一种启发式方法。与大多数启发式方法一样,它的行为可能会因微小的变化而大不相同。这里的核心特征是:只保证局部收敛! (不是很稳健)。后者在 docs 中表示(遵循基本优化理论):

t-SNE has a cost function that is not convex, i.e. with different initializations we can get different results.

虽然您解释说,非种子方法并不是您认为的罪魁祸首(很难衡量!基准测试很难),您应该检查您的 sklearn 版本,因为 t-sne code 是sklearn 中最活跃的部分之一,随着时间的推移发生了许多变化。

每一项更改都可能会引入像您这样的观察结果(当仅尝试一个示例时;当然,在比较 t-sne 实现时,更大的基准/测试集应该是更好的方法)

备注:但是其中一台计算机不断获得更好的结果:这是广泛的,因为至少有两种不同的解释:

  • 从视觉上/感知上对结果进行评分
  • 看看优化后实现的kl_divergence_

关于python - t-SNE 在不同的机器上产生不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46766714/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com