当我们可以减少特征数量时,为什么要使用 PCA 来加速学习算法?

机器算法验证 机器学习 主成分分析
2022-02-03 16:25:13

在机器学习课程中,我了解到 PCA(主成分分析)的一个常见用途是加速其他机器学习算法。例如,假设您正在训练一个逻辑回归模型。如果您有一个从 1 到 n 的 i 训练集并且结果向量 x 的维度非常大(假设是维度),您可以使用 PCA 来获得更小维度(比如说 k 维度)的特征向量 z。然后,您可以在训练集上从 1 到 n 训练逻辑回归模型。训练这个模型会更快,因为你的特征向量的维度更少。(x(i),y(i))(z(i),y(i))

但是,我不明白为什么不能通过随机选择 k 个特征并消除其余特征来将特征向量的维度减少到 k 个维度。

z 向量是 a 特征向量的线性组合。由于 z 向量仅限于 k 维表面,因此您可以将 ak 消除的特征值写为 k 个剩余特征值的线性函数,因此所有 z 都可以由您的 k 个特征的线性组合形成。那么,在具有消除特征的训练集上训练的模型是否应该与在通过 PCA 降维的训练集上训练的模型具有相同的能力?它是否仅取决于模型的类型以及是否依赖于某种线性组合?

3个回答

假设您最初有特征,但是这太多了,因此您希望将模型实际拟合到特征上。您可以选择个功能并放弃其余功能。如果是我们的特征矩阵,这对应于使用,其中准确地挑选出我们想要包含的列。但这忽略了其他列中的所有信息,所以为什么不考虑更一般的降维其中这正是 PCA 所做的:我们找到矩阵使得pd<pdXXDD{0,1}p×dXXVVRp×dVXV尽可能多地包含中的信息。并非所有线性组合都是平等创建的。除非我们的矩阵的秩如此之低,以至于一组随机的列可以(以高概率)跨越所有列的列空间,否则我们肯定无法像所有特征一样好。一些信息会丢失,因此我们应该尽可能少地丢失信息。使用 PCA,我们试图避免丢失的“信息”是数据的变化。XXdpp

至于为什么我们将自己限制为预测变量的线性变换,这个用例的重点是计算时间。进行花哨的非线性降维,我们可能也可以将模型拟合到所有上。因此,PCA 完美地结合了快速计算和高效。XX

PCA 减少了特征,同时保留了原始数据中的方差/信息。这有助于启用计算,同时不会丢失数据与现实的相似性。

PCA解决方案

首先,在为此目的使用 PCA 时要小心。正如我在回答一个相关问题时所写的那样, PCA不一定会导致选择对您打算进行的回归有用的特征(另请参见Jolliffe 1982)。

OP提出的解决方案

现在考虑提出的替代机制:reduce the dimension of your feature vector to k dimensions by just choosing k of your features at random and eliminating the rest.现在在问题陈述中,我们被要求假设dimension of your vector x is very large. 我们称这个维度p

方法可以从一组中选择个预测变量。举个例子,如果并且我们从数据集中选择预测变量,那么我们将必须拟合那是假设我们知道,而不是等等。简而言之,这不是你想要在大设置中蛮力的问题。pCkkpp=1000k=58.25×1012k=5k=6p

建议的解决方案

为了应对很大的回归,已经提出了许多惩罚回归策略。特别是LASSO 方法将构建回归模型时通过将对模型贡献不足的预测变量的贡献归零来进行降维。有一个非常聪明的算法(LARS)可以有效地拟合模型。p