使用 T-SNE 选择超参数进行分类

机器算法验证 机器学习 降维 无监督学习 特纳
2022-02-07 20:08:56

在我处理的特定问题(比赛)中,我有以下设置:21 个特征([0,1] 上的数字)和二进制输出。我有大约 100 K 行。环境似乎很嘈杂。

我和其他参与者应用了一段时间的特征生成,并且 t 分布的随机邻居嵌入在这种情况下被证明是相当强大的。

我偶然发现了这篇文章“如何有效地使用 t-SNE”,但我仍然无法真正得出关于如何在我的分类设置中选择最佳超参数的结论。

是否有任何经验法则(特征数量、嵌入维度 -> 困惑度的选择)?

我现在只是应用临时设置,因为迭代各种设置需要很长时间。感谢您的任何评论。

4个回答

我经常使用 -SNE(与聚类技术一起使用——最后会详细介绍)来识别/评估我的数据中是否存在聚类。不幸的是,据我所知,除了查看生成的降维数据集然后评估它是否有意义之外,没有标准的方法来选择正确的困惑度。有一些一般事实,例如。集群之间的距离大多是没有意义的,小的困惑值鼓励小的凝块状结构,但仅此而已。t

一个非常粗略的经验法则是检查与每个重建相关的误差值是多少。t-SNE 试图最小化原始域中数据之间的距离分布与降维域中数据之间的距离分布之间的 Kullback-Leibler 散度之和(实际上目标分布是一个点选择另一个点作为其邻居的概率,但这些概率与两点之间的距离成正比)。可以说,较小的 KL 散度值显示更好的结果。这个想法在实践中效果不佳,但理论上它有助于排除一些困惑值范围以及一些明显次优的算法运行。我解释了为什么这种启发式方法远非灵丹妙药,以及它如何可能有点用处:困惑度参数随着用于计算距离/概率的高斯方差单调增加。因此,当您增加整体的困惑度参数时,您将获得更小的绝对距离和随后的 KL 散度值。然而,如果您有 20 次运行具有相同的困惑并且您不能(不想)查看它们,您总是可以选择具有最小变量的运行,希望它更准确地保留原始距离。这同样适用于 然而,如果您有 20 次运行具有相同的困惑并且您不能(不想)查看它们,您总是可以选择具有最小变量的运行,希望它更准确地保留原始距离。这同样适用于 然而,如果您有 20 次运行具有相同的困惑并且您不能(不想)查看它们,您总是可以选择具有最小变量的运行,希望它更准确地保留原始距离。这同样适用于θ,Barnes-Hut 近似的近似参数,假设困惑度是固定的,改变然后检查产​​生的成本应该有点信息。归根结底,较低的成本与更忠实的重建有关。虽然一切都没有丢失......θ

对于您的特定用例,一个温和地自动化选择一个好的困惑值的过程的技巧如下:在降维数据集上运行一个小的聚类过程(比如 -means或 DBSCAN),然后评估该聚类的质量针对您尝试预测的内容使用某种索引(Cohen'sRand indexFowlkes-Mallows等)。这里的想法是,对于您手头的任务,数据的正确表示(依赖于困惑度的 -SNE 结果)应该在与属性的对齐方面提供最多信息的表示(以提到的指标之一的形式)你试着预测。这就是kktt毕竟 -SNE 是首先使用的,如果结果表示对于我们正在研究的属性没有信息,那么尽管它的重建误差低、视觉吸引力等,但它根本就没有好处。

让我指出,我所描述的是启发式正如我在文章开头提到的,手动检查结果是评估结果降维/聚类质量的一种不可或缺的方式。

我们通常将困惑度设置为数据集大小的 5%。因此,对于具有 100K 行的数据集,如果您没有可用的高性能计算机,我将从 5000 或至少 1000 的困惑度开始。我们的数据集来自流式细胞仪分析,它们通常有 50k 到 500k 个数据点,每个数据点有 10 到 20 个数值。

看看Cao 和 Wang 的“Automatic Selection of t-SNE Perplexity”可能会很有趣

t-Distributed Stochastic Neighbor Embedding (t-SNE) 是最广泛使用的数据可视化降维方法之一,但它具有需要手动选择的 perplexity 超参数。在实践中,正确调整 t-SNE 困惑度需要用户了解该方法的内部工作以及具有动手经验。我们为 t-SNE 困惑提出了一个模型选择目标,除了 t-SNE 本身之外,它需要可忽略不计的额外计算。我们凭经验验证,我们的方法发现的困惑设置与人类专家在多个数据集中引发的偏好一致。还分析了我们对贝叶斯信息标准 (BIC) 和最小描述长度 (MDL) 的方法的相似性。

我找到了一篇由生物信息学家和媒体作家Nikolay Oskolkov 撰写的非常易于理解的文章,解释了一些关于如何选择 tSNE 超参数的非常有见地的启发式方法。

如何调整 tSNE 的超参数(作者 Nikolay Oskolkov,2019 年 7 月 19 日起)

我希望你也会发现它有用!

只是把文章的摘要放上来供大家参考:

在这篇文章中,我们了解到尽管 tSNE 可能对其超参数很敏感,但有一些简单的规则可以为 scRNAseq 数据获得好看的 tSNE 图。可以通过表达式矩阵的随机化找到输入到 tSNE 的最佳 PC 数量。可以根据简单的幂律 Perplexity ~ N^(1/2) 从单元格的数量中计算出最优的 perplexity。最后,最佳迭代次数应提供约 100 个单位的数据点之间的最大距离。

但是,本文仅给出了一些粗略的启发式方法,用于在一般设置中选择给定的一组超参数值。关于在执行 tSNE 并为特定数据集(如您自己的数据集)选择最佳值时导航超参数空间,我同意上述建议,即使用诸如 k-means 之类的中间程序来判断相对于执行的聚类的质量您关心的分类目标。