Algorithm 使用较大数据集(>;300k数据点)的t-SNE的最佳困惑

Algorithm 使用较大数据集(>;300k数据点)的t-SNE的最佳困惑,algorithm,scikit-learn,hyperparameters,dimensionality-reduction,dimension-reduction,Algorithm,Scikit Learn,Hyperparameters,Dimensionality Reduction,Dimension Reduction,我正在使用t-SNE从高维数据集(在本例中为30 dims)进行2D投影以进行可视化,我对“困惑”超参数有一个问题 我已经有一段时间没有使用t-SNE了,以前只在较小的数据集上使用过它(100k) 我真的很想听听你的经验,以及你用什么方法来确定最佳困惑(或最佳困惑范围) 一篇有趣的文章指出,最优困惑遵循一个简单的幂律(),你有兴趣知道其他人是怎么想的吗 感谢您的帮助这在很大程度上是经验性的,因此我建议您只是玩弄价值观。但我可以分享我的经验 我有一个大约40万条记录的数据集,每个记录大约70维。我

我正在使用t-SNE从高维数据集(在本例中为30 dims)进行2D投影以进行可视化,我对“困惑”超参数有一个问题

我已经有一段时间没有使用t-SNE了,以前只在较小的数据集上使用过它(100k)

我真的很想听听你的经验,以及你用什么方法来确定最佳困惑(或最佳困惑范围)

一篇有趣的文章指出,最优困惑遵循一个简单的幂律(),你有兴趣知道其他人是怎么想的吗


感谢您的帮助

这在很大程度上是经验性的,因此我建议您只是玩弄价值观。但我可以分享我的经验

我有一个大约40万条记录的数据集,每个记录大约70维。我用困惑值5、15、50、100重新运行了scikit learn对tsne的实现,我注意到50之后集群看起来是一样的。我发现5-15个太小了,50个就足够了,增加困惑也没什么区别。不过,运行时间是一场噩梦

实现速度要快得多,并且提供了一个有趣的指南,说明如何在同一个算法运行的不同阶段使用更小和更大的困惑值,以获得两者的优势。粗略地说,它所做的是启动高复杂度的算法,在少量步骤中找到全局结构,然后重复低复杂度的算法


我在150万条维度为200的记录的数据集上使用了这个实现。数据来自与我提到的第一个数据集相同的源系统。我没有在这里使用困惑值,因为32 cpu虚拟机上的总运行时间是几个小时,但是集群看起来与较小数据集上的集群非常相似(重新创建的二进制分类集群),所以我很高兴。

感谢您的回复。很高兴看到您使用的方法也是使用不同程度的困惑和检查。我正在调查的数据集在经历了大约200次的困惑之后似乎开始变得相似,但运行起来显然需要很长时间。将查看openTSNE,谢谢您的提示。