我经常使用 -SNE(与聚类技术一起使用——最后会详细介绍)来识别/评估我的数据中是否存在聚类。不幸的是,据我所知,除了查看生成的降维数据集然后评估它是否有意义之外,没有标准的方法来选择正确的困惑度。有一些一般事实,例如。集群之间的距离大多是没有意义的,小的困惑值鼓励小的凝块状结构,但仅此而已。t
一个非常粗略的经验法则是检查与每个重建相关的误差值是多少。t-SNE 试图最小化原始域中数据之间的距离分布与降维域中数据之间的距离分布之间的 Kullback-Leibler 散度之和(实际上目标分布是一个点选择另一个点作为其邻居的概率,但这些概率与两点之间的距离成正比)。可以说,较小的 KL 散度值显示更好的结果。这个想法在实践中效果不佳,但理论上它有助于排除一些困惑值范围以及一些明显次优的算法运行。我解释了为什么这种启发式方法远非灵丹妙药,以及它如何可能有点用处:困惑度参数随着用于计算距离/概率的高斯方差单调增加。因此,当您增加整体的困惑度参数时,您将获得更小的绝对距离和随后的 KL 散度值。然而,如果您有 20 次运行具有相同的困惑并且您不能(不想)查看它们,您总是可以选择具有最小变量的运行,希望它更准确地保留原始距离。这同样适用于 然而,如果您有 20 次运行具有相同的困惑并且您不能(不想)查看它们,您总是可以选择具有最小变量的运行,希望它更准确地保留原始距离。这同样适用于 然而,如果您有 20 次运行具有相同的困惑并且您不能(不想)查看它们,您总是可以选择具有最小变量的运行,希望它更准确地保留原始距离。这同样适用于θ,Barnes-Hut 近似的近似参数,假设困惑度是固定的,改变然后检查产生的成本应该有点信息。归根结底,较低的成本与更忠实的重建有关。虽然一切都没有丢失......θ
对于您的特定用例,一个温和地自动化选择一个好的困惑值的过程的技巧如下:在降维数据集上运行一个小的聚类过程(比如 -means或 DBSCAN),然后评估该聚类的质量针对您尝试预测的内容使用某种索引(Cohen's、Rand index、Fowlkes-Mallows等)。这里的想法是,对于您手头的任务,数据的正确表示(依赖于困惑度的 -SNE 结果)应该在与属性的对齐方面提供最多信息的表示(以提到的指标之一的形式)你试着预测。这就是kktt毕竟 -SNE 是首先使用的,如果结果表示对于我们正在研究的属性没有信息,那么尽管它的重建误差低、视觉吸引力等,但它根本就没有好处。
让我指出,我所描述的是启发式。正如我在文章开头提到的,手动检查结果是评估结果降维/聚类质量的一种不可或缺的方式。