PCA和火车/测试区


35

我有一个数据集,其中有多组二进制标签。对于每组标签,我训练一个分类器,并通过交叉验证对其进行评估。我想使用主成分分析(PCA)降低尺寸。我的问题是:

是否可以对整个数据集执行一次 PCA ,然后如上所述使用较低维度的新数据集进行交叉验证?还是我需要为每个训练集做一个单独的PCA(这意味着为每个分类器和每个交叉验证对折做一个单独的PCA)?

一方面,PCA不使用任何标签。另一方面,它确实使用测试数据进行转换,因此恐怕它可能会偏向结果。

我应该提到,除了为我节省一些工作之外,对整个数据集执行一次PCA可使我立即可视化所有标签集的数据集。如果每个标签集都有不同的PCA,则需要分别可视化每个标签集。


备查。请参阅有关如何操作做交叉验证与PCA R中这个问题caret包:PCA和插入符k折交叉验证
变形虫说莫妮卡(Reonica Monica)恢复了


Answers:


34

为了测量泛化误差,您需要做的是:对每个训练集使用单独的PCA(这意味着对每个分类器和每个CV折叠都进行单独的PCA)。

然后,将相同的变换应用于测试集:即,您不对测试集执行单独的PCA!您减去训练集的平均值(如果需要,除以标准偏差),如下所示:将PCA之后的测试集零集中在训练集上。然后,将数据投影到训练集的PC上。


  • 您需要为要使用的PC数量定义一个自动标准。
    由于这只是“实际”分类之前的第一个数据精简步骤,因此使用过多的PC可能不会损害性能。如果您从经验中期望有多少台PC可以使用,那么您可以使用它。

  • 之后,您还可以测试是否有必要针对每个代理模型重做PCA(仅对一个PCA模型重复进行分析)。我认为该测试的结果值得报告。

  • 我曾经测量过不重复PCA的偏见,发现在我的光谱分类数据中,当不为每个替代模型重做PCA时,我仅检测到一半的泛化错误率。

话虽如此,您可以为整个数据集构建一个附加的 PCA模型,以进行描述(例如,可视化)。只要确保将两种方法彼此分开即可。


我仍然很难感觉到整个数据集上的初始PCA将如何偏斜结果而没有看到类标签。

但是它确实看到了数据。并且如果类间方差与类内方差相比较大,则类间方差将影响PCA预测。通常,完成PCA步骤是因为您需要稳定分类。也就是说,在其他情况确实影响模型的情况下。

如果类之间的差异很小,那么这种偏差就不会太大,但在那种情况下,PCA也不会对分类有所帮助:PCA投影无法帮助强调类之间的分离。


谢谢,这正是我的想法,因此很高兴能从独立消息来源那里听到它。我仍然很难感觉到整个数据集上的初始PCA将如何偏斜结果而没有看到类标签。
2013年

@Bitwise:请参阅我的编辑
cbeleites支持Monica

@cbeleites,您好,我想将此线程作为PCA和训练/测试拆分(有很多!)问题的“规范”线程,并将其标记为重复。我随意在您的回答中添加一句话,这可能会消除重复问题中经常出现的误解。希望您对我的编辑满意,但请检查!+1,顺便说一句。
变形虫说恢复莫妮卡2014年

@amoeba,非常感谢。是的,这是您添加的重要一点。非常感谢您为清理问题所做的工作。
cbeleites支持Monica 2014年

1
@FelipeAlmeida:是的
cbeleites支持Monica

2

这个问题的答案取决于您的实验设计。只要您不需要在知道要预测的数据之前就建立模型,就可以对整个数据集进行PCA。如果您有一个数据集,其中有一堆样本,其中一些是已知的,而有些则是未知的,并且您要预测未知数,包括PCA中的未知数将使您对数据的多样性有更丰富的了解,并有助于提高性能模型的 由于PCA是不受监督的,因此它不是“峰值”,因为您可以对未知样本执行与已知样本相同的操作。

另一方面,如果您有一个数据集,现在必须在该数据集上构建模型,并且在将来的某个时候,您将获得必须使用该预构建模型进行预测的新样本,则您必须在每一折中进行单独的PCA确保它会泛化。由于在这种情况下,我们将不知道新功能的外观,也无法重建模型以说明新功能,因此对测试数据进行PCA将是“高峰”。在这种情况下,在实际使用模型时,未知样本的特征和结果都将不可用,因此在训练模型时,它们将不可用。


0

后者,每次PCA都要进行培训

在PCA中,我们学习归约矩阵U,这有助于我们获得投影Z_train = U x X_train

在测试时,我们使用从训练阶段中学到的相同的U,然后计算投影Z_test = U x X_test

因此,本质上,我们将测试集投影到训练过程中获得的缩减特征空间上

基本假设是测试集和训练集应来自同一分布,这解释了上面的方法。

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.