假设我们有一个分类问题,首先我们想从数据中获得一些洞察力,我们做 t-SNE。t-SNE 的结果很好地分离了类。这意味着可以建立分类模型,该模型也可以很好地分离类(如果 t-SNE 不能很好地分离,那么它并不意味着太多)。
知道 t-SNE 专注于局部结构并且它可以很好地分离类:哪些分类算法应该可以很好地解决这个问题?Scikit 建议使用高斯 RBF 内核的 SVM,但其他的是什么?
假设我们有一个分类问题,首先我们想从数据中获得一些洞察力,我们做 t-SNE。t-SNE 的结果很好地分离了类。这意味着可以建立分类模型,该模型也可以很好地分离类(如果 t-SNE 不能很好地分离,那么它并不意味着太多)。
知道 t-SNE 专注于局部结构并且它可以很好地分离类:哪些分类算法应该可以很好地解决这个问题?Scikit 建议使用高斯 RBF 内核的 SVM,但其他的是什么?
首先是一个简短的答案,然后是更长的评论:
回答
SNE 技术在原始数据空间和低维嵌入空间中计算 N ×N 相似度矩阵,使得相似度在对象对上形成概率分布。具体来说,概率通常由根据输入数据或嵌入计算的归一化高斯核给出。在分类方面,这立即让人想起基于实例的学习方法。您列出了其中之一:带 RBF 的 SVM,@amoeba 列出了 kNN。还有径向基函数网络,我不是专家。
评论
话虽如此,我会更加小心地对仅查看 t-SNE 图的数据集进行推断。t-SNE 不一定关注局部结构。但是,您可以通过调整perplexity
参数来调整它,该参数(松散地)调节如何在数据的本地和全局方面之间平衡注意力。
在这种情况下,perplexity
它本身就是在黑暗中刺探每个观察可能有多少近邻,并且是用户提供的。原始论文指出:“t-SNE 的性能对 perplexity 的变化相当稳健,典型值在 5 到 50 之间。” 然而,我的经验是,充分利用 t-SNE 可能意味着分析具有不同困惑度的多个图。
换句话说,调整learning rate
和perplexity
,对于相同数量的训练步骤并使用相同的数据,可以获得看起来非常不同的二维图。
这篇Distill论文How to Use t-SNE Effectively很好地总结了 t-SNE 分析的常见缺陷。总结要点是:
那些超参数(例如学习率、困惑度)真的很重要
t-SNE 图中的簇大小没有任何意义
集群之间的距离可能没有任何意义
随机噪声并不总是看起来随机的。
你可以看到一些形状,有时
对于拓扑,您可能需要多个绘图
特别是从上面的第 2、3 和 6 点来看,我会三思而后行,通过查看单个 t-SNE 图来推断数据的可分离性。在许多情况下,您可以使用正确的参数“制造”显示清晰集群的图。