如何在监督式机器学习分类问题中使用主成分分析?

9

我一直在学习R语言中的主成分分析(PCA)概念。

对于应用PCA到(比如,有标签的)数据集并从矩阵中提取最有趣的前几个主成分作为数值变量这一点,我感觉很自在。

然而,最终的问题是:现在该怎么办呢?大部分关于PCA的阅读都在计算完成后立即停止,特别是涉及到机器学习方面。请原谅我的夸张,但我感觉每个人都认为这个技术很有用,但完成之后似乎没有人想要实际使用它。

更具体而言,这是我的真正问题:

我知道主成分是你所开始的变量的线性组合。那么,这个转换后的数据在监督式机器学习中扮演什么角色?有什么办法可以利用PCA来降低数据集的维度,并且然后将这些组件与一个有监督学习器(例如SVM)一起使用?

我对我们的标记采取了怎样的处理方式感到非常困惑。一旦我们进入特征空间,就很好。但我没有看到任何继续进行机器学习的方法,如果这种转换破坏了我们对分类的概念(除非我遇到了某种“是”或“否”的线性组合,但我并没有)。


做监督式主成分分析(PCA)吗? - bicepjai
2个回答

9

这是一个旧问题,但我认为它还没有得到令人满意的答案(而我刚刚通过谷歌找到了这里)。我曾经也遇到过和你相同的问题,不得不自己寻找答案。

主成分分析(PCA)的目标是用正交基W表示您的数据X;在这个新基础上,您的数据的坐标为Z,如下所示:

X = ZW'

由于正交性,我们可以通过转置简单地反转W并写成:

XW = Z

现在,为了降低维度,让我们选择一些小于p的组件数量k。假设我们在W中的基向量按从大到小的顺序排序(即,与最大特征值相对应的特征向量首先出现,等等),这就相当于只保留W的前k列。

XW = Z

现在,我们有了训练数据X的k维表示。现在,您可以使用Z中的新特征运行一些监督分类器。

Y=f(Z)

关键是要意识到W在某种意义上是从我们的p个特征空间向下转换为k个特征空间的规范变换(或者至少是我们可以使用训练数据找到的最佳变换)。因此,我们可以使用相同的W变换命中我们的测试数据,从而得到一个k维的测试特征集:

XW = Z

现在我们可以使用相同的分类器来对 k 维训练数据的表示进行训练,以便在 k 维测试数据的表示上进行预测:

Y=f(Z)

进行这整个过程的目的是因为您可能会有成千上万的特征,但是(1)它们并非都具有意义信号,而且(2)您的监督学习方法可能过于复杂,无法基于全功能集进行训练(要么时间太长,要么计算机没有足够大的内存来处理计算)。PCA 允许您显著减少表示数据所需的特征数,而不会消除真正增加价值的数据特征。


3

在使用PCA对部分数据进行计算转换矩阵后,您需要在提交数据到分类器之前将该矩阵应用于每个数据点。

当您的数据的内在维度远小于组件数,并且在分类期间获得的性能提高值得减少精度和PCA成本时,此方法非常有用。同时,请注意PCA的局限性:

  • 进行线性转换时,您隐含地假设所有组件以等效单位表示。
  • 除了方差之外,PCA无法识别数据结构。很可能会发现数据沿着低方差维度分裂。在这种情况下,分类器将无法从转换后的数据中学习。

1
所以,当我将该矩阵应用于我的每个数据点(在我的训练集中)之后,我会将它们提交给分类器...保留与这些数据点相关联的标签? - tumultous_rooster
没错。PCA变换只是简单地将您的点围绕原点旋转,不会影响它们的标签。 - Don Reba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接