如何对主成分应用回归来预测输出变量?

机器算法验证 回归 主成分分析
2022-03-13 19:13:08

我从tutorial1link1link2中了解了主成分分析的基础知识

我有 100 个变量的数据集(包括输出变量 Y),我想通过 PCA 将变量减少到 40,然后使用这 40 个变量预测变量 Y。

问题 1:获得主成分并选择前 40 个成分后,如果我对其应用回归,我会得到一些适合数据的函数。但是如何从原始数据中预测一些变量 Y 呢?要预测变量 YI 在输入中有 (100-1) 个变量,我如何知道从我原来的 100-1 个变量中选择哪 40 个变量?

问题 2:我对 PCA 进行了反转并从这 40 个主成分中获取数据。但是数据发生了变化,因为我只选择了前 40 个组件。对这些数据应用回归是否有意义?

我使用 Matlab/Octave。

1个回答

您不会选择原始 99 (100-1) 个变量的子集。

每个主成分都是所有 99 个预测变量(x 变量、IVs、...)的线性组合。如果您使用前 40 个主成分,它们中的一个都是所有 99 个原始预测变量的函数。(至少对于普通的 PCA - 有稀疏/正则化版本,例如 Zou、Hastie 和 Tibshirani 的SPCA,它们将产生基于较少变量的组件。)

考虑两个正相关变量的简单情况,为简单起见,我们假设它们是相同的变量。那么第一个主成分将是两个变量之和的(小数)倍数,第二个将是两个变量之和的(小数)倍数;如果两者的可变性不同,则第一个主成分将对可变性更大的一个赋予更大的权重,但它仍然会同时涉及两者。

因此,您从 99 个 x 变量开始,通过对每个原始变量应用相应的权重来计算 40 个主成分。[注意在我的讨论中,我假设已经居中。]yX

然后,您可以像使用任何多元回归问题一样使用 40 个新变量,就好像它们本身就是预测变量一样。(在实践中,有更有效的方法来获得估计,但是让我们把计算方面放在一边,只处理一个基本的想法)

关于你的第二个问题,不清楚你所说的“逆转 PCA”是什么意思。

您的 PC 是原始变量的线性组合。假设您的原始变量在中,并且您计算(其中并且组件的主成分权重),那么您通过回归估计XZ=XWXn×99W99×4040y^=Zβ^PC

然后你可以写说(其中,显然),所以你可以把它写成原始预测变量的函数;我不知道这是否是您所说的“反转”,但这是查看之间原始关系的一种有意义的方式。当然,它与通过估计原始 X 的回归得到的系数不同——它是通过进行 PCA 进行正则化的;即使您以这种方式获得每个原始 X 的系数,它们也只有您安装的组件数量的 df。y^=Zβ^PC=XWβ^PC=Xβ^β^=Wβ^PCyX

另请参阅有关主成分回归的维基百科