在某些情况下,PCA比t-SNE更合适吗?


39

我想看看7种文本纠正行为的度量标准(纠正文本所花费的时间,击键次数等)如何相互关联。措施是相关的。我运行PCA来查看这些度量如何投影到PC1和PC2上,避免了在度量之间运行单独的双向相关性测试的重叠。

我被问到为什么不使用t-SNE,因为某些度量之间的关系可能是非线性的。

我可以看到允许非线性如何改善这一点,但是我想知道是否有充分的理由在这种情况下使用PCA而不是t-SNE?我不希望根据文本与度量的关系来聚类文本,而是对度量本身之间的关系感兴趣。

(我想EFA也可以是一种更好/另一种方法,但这是不同的讨论。)与其他方法相比,此处关于t-SNE的文章很少,因此这个问题似乎值得提出。


3
t-SNE不能随数据集的大小很好地扩展,而PCA却可以。这来自使用scikit-learn实现在大型数据集上运行它们的经验。

@Mai大概适用于大型数据集吗?我的数据集偏小(几百个数据点)。
user3744206 '16

Answers:


65

t -SNE是机器学习的重要组成部分,但是可以找到许多代替PCA的原因。在我的头上,我要提到五个。与使用的其他大多数计算方法一样, -SNE并非灵丹妙药,在某些情况下,有很多原因使其成为次优选择。让我简要提及一些要点:t

  1. 最终解的随机性。PCA是确定性的; -SNE不是。人们得到一个很好的可视化,然后她的同事得到另外的可视化,然后他们得到艺术看起来更好,如果相差的的分歧是有意义的......在PCA的正确答案提出的问题得到保证。 -SNE可能有多个最小值,这可能导致不同的解决方案。这需要多次运行,并引起有关结果可重复性的问题。t0.03%KL(P||Q)t

  2. 映射的可解释性。这与以上几点有关,但让我们假设一个团队已经同意了特定的随机种子/运行。现在的问题变成了这显示的内容... -SNE试图正确地仅映射本地/邻居,因此我们从该嵌入中得出的见解应非常谨慎;全球趋势无法准确表示(这对于可视化而言可能是一件好事)。另一方面,PCA只是我们初始协方差矩阵的对角旋转,特征向量代表了由原始数据跨越的空间中的新轴系。我们可以直接解释特定PCA的功能。t

  3. 适用于新的/看不见的数据。 -SNE 没有从原始空间学习到新的(较低的)一维函数,这是一个问题。就此而言, -SNE是一种非参数学习算法,因此用参数算法近似是一个不适定的问题。通过直接在低维空间上移动数据来学习嵌入。这意味着没有一个特征向量或类似的构造可用于新数据。相反,使用PCA,特征向量提供了一个新的坐标轴系统,该系统可直接用于投影新数据。[显然,可以尝试训练一个深层网络来学习ttt-SNE映射(您可以在此视频的〜46'处听到van der Maaten博士的建议,这很像),但显然不存在简单的解决方案。]

  4. 数据不完整。本地 -SNE不会处理不完整的数据。公平地讲,PCA也不处理它​​们,但是针对不完整数据的PCA的许多扩展(例如概率PCA)已经存在,并且几乎是标准的建模例程。 -SNE当前无法处理不完整的数据(显然首先要训练概率PCA并将PC分数传递给 -SNE作为输入)。ttt

  5. 该不是(太)小的情况下。k -SNE解决了一个称为拥挤问题的问题,实际上使较高维度中的某些相似点在较低维度上彼此折叠(更多信息请参见此处)。现在,随着使用尺寸的增加,拥挤问题也变得不那么严重了。您试图通过使用 -SNE 解决的问题得到了缓解。您可以变通解决此问题,但这并不容易。因此,如果您需要一个维向量作为约简集,并且不太小,则生产解决方案的最优性是有问题的。PCA,另一方面报价总是ttkkk最佳线性组合方差解释。(感谢@amoeba注意到当我第一次尝试概述这一点时我一团糟。)

我没有提到有关计算要求的问题(例如速度或内存大小),也没有提及有关选择相关超参数的问题(例如困惑)。我认为这些是 -SNE方法的内部问题,与其他算法比较时无关紧要。t

总而言之, -SNE很棒,但是由于所有算法在适用性方面都有其局限性。我几乎在任何新的数据集上都使用 -SNE作为解释性数据分析工具。我认为,尽管它有一定的局限性,但并不像PCA那样适用。让我强调一下,PCA也不完美。例如,基于PCA的可视化效果通常不及 -SNE的可视化效果。ttt


@amoeba:我删除了这一点,因为它太费力了; -SNE 的想法使我大受鼓舞,因为在使用较大尺寸时(而不是),拥挤问题不太严重,因此提供了混乱的见解,但我混淆了我的观点试图做。而且,由于可以从LLE进行重建(Roweis&Saul,2000),为什么t-SNE不能重建?tk=2,3,4
usεr11852说恢复单胞菌

@amoeba:谢谢你提到它。我相应地更新了我的答案。
usεr11852说恢复单胞菌

3
关于您的观点3:这是2009年关于参数t-sne lvdmaaten.github.io/publications/papers/AISTATS_2009.pdf的论文。看来它并没有真正起步(它的引用量比原始t-sne论文少25倍),但实际上,使用当今的技术/库很容易实现。我在Keras上启动它并运行它。在过去的几周中,我一直在研究(可能会扩展)它。
变形虫说莫妮卡(Reonica Monica)

凉!(+1)如果您要进行arXiv预打印浮动,请让我知道(此处或10倍),我会对结果感到很好奇。是的,在撰写此答案时,我已经看过该论文(实际上我会说这是著名论文),但是正如您所说,它似乎没有被占用。同样,第3点仍然完全有效:您需要构建DNN,才能通过单个矩阵叉积来获得PCA提供的功能。
usεr11852恢复单胞菌说,

12

https://stats.stackexchange.com/a/249520/7828

是一个很好的一般答案。

我想更多地关注您的问题。你显然希望看到怎样的样本相对于你的7个输入变量相关。这是t-SNE无法做到的。SNE和t-SNE的想法是使邻居彼此靠近,(几乎)完全忽略全局结构。

这对于可视化效果非常好,因为相似的项目可以彼此相邻地绘制(而不是彼此重叠,参见拥挤)。

这不利于进一步分析。全局结构丢失,某些对象可能已被阻止移动到它们的邻居,并且不同组之间的间隔不能定量保留。这就是为什么在投影上进行聚类通常效果不佳的原因。

PCA恰恰相反。它试图保留全局属性(具有高方差的特征向量),同时可能会丢失邻居之间的低方差偏差。


嗯,这正是我的假设。我对数据点在空间中的位置不感兴趣,而对度量本身如何相互关联感兴趣。当然,这两件事是联系在一起的,但是就可视化和解释这些关系而言,我怀疑只有PCA可以满足我的要求。例如,度量之间既有积极关系也有消极关系,而我真正感兴趣的是关联的绝对值,我再次认为,如果使用PCA,则更容易解释/查看。
user3744206 '16

1
对于该用例,最好看一下相关矩阵本身,即只进行成对比较。然后,您还可以处理非线性,例如通过使用Spearman相关。
Anony-Mousse

我们可以使用T-SNE解决集群问题吗?据我了解,我们可以预测一个新的起点,并尝试在较小的维度上聚类?可能吗 ?
Catbuilts

不会。因为tSNE不是线性的,所以您不能仅针对新数据进行计算(请参见上文)。并进行了长时间的讨论,认为将投影的数据聚类也可能会产生误导。
Anony-Mousse

1

为了给出一个施加角度,PCA和t-SNE不互斥。在某些生物学领域,我们正在处理高维数据(例如,scRNA-seq为数千维),而t-SNE根本无法扩展。因此,我们首先使用PCA来减少数据的维数,然后,使用最主要的原理分量,计算邻域图,然后使用t-SNE(或类似的非线性降维方法)将图嵌入二维图(例如UMAP)以可视化数据。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.