如何从线性回归的角度理解主成分分析

文摘   2024-11-24 08:30   荷兰  

从我两个月前开始读博时,导师在聊PCA的时候就经常喜欢把它比作回归模型。有关PCA的教科书里也经常提到这一点,比如,I.T.Jolliffe的书中就提到:

之前对这一点理解不深,但随着时间的推移,在我渐渐熟悉了PCA中的各种性质与过程后,我对这一点也有了自己的理解。今天就用这篇文章来归纳一下PCA作为一种线性回归模型的特点。


首先,假如我们有一个秩为rm*n矩阵X,我们可以对其进行如下SVD

其中Um*r矩阵,包含了rleft singular vectorsDr*r矩阵,包含了所有的Singular valuesVn*r矩阵,包含了rright singular vectors

如果我们现在要找一个秩为k(k<r),最接近Xm*n矩阵Mrank-k approximation of X),我们可以使用truncated SVD

其中Uk包含了U中的前kleft singular vectorsDk包含了D1k/列(就D[1:k, 1:k]),Vk包含了V中的前kright singular vectors。得出的Xk即为Xbest rank-k approximation,也就是说Xk保证了下式达到最小值:

Xk可以被拆解为两个部分:

其中Zkm*k矩阵,它包含了将X降维至k个主成分后,这k个主成分的数据。由于

我们也可以将上式改写为:

进一步地,通过一些推导,我们可以得出:

上式即可理解为,我们通过Vk矩阵,将原来的X矩阵(位于Rm*n空间中)投影到了更低维度的空间中(也就是Zk位于的Rm*k空间中)。


上述是从truncated SVD的角度对PCA进行总结,我们可以重新将目光聚焦于它的表达式上:

我们前面提到,truncated SVD得到了最好的approximation,最小化了对应的差异平方和。我们其实可以将这个差异看作回归模型中的残差,所以假如我们现在知道矩阵X及其对应的主成分矩阵Zk,当我们将X关于Zk进行回归时(不带截距项),估计出来的回归模型的beta系数会逐一对应Vk中的数值


现在,我们通过一个实例来验证如上的推论/性质。下面是代码,用到了我在高维课上用到的cheese数据集:

library(HDDAData) # for cheese datasetdata(cheese)svd_cheese <- svd(cheese) # svdU <- svd_cheese$u # extract UD <- diag(svd_cheese$d) # extract DV <- svd_cheese$v # extract Vk=3 # do truncated SVD with k=3Z_k <- U[,1:k]%*%D[1:k,1:k] # calculate Z_kV_k <- V[,1:k] # extract V_kbeta_mat <- vapply(1:ncol(cheese), function(i) lm(cheese[,i]~Z_k-1)$coef, numeric(k)) # estimate betas


下面是Vk矩阵:

下面是回归系数的矩阵:

回归系数的矩阵确实为Vk矩阵的转置,上述的推论也得到了印证!本篇文章的内容也到此结束!


PsychoStatisticia
一个统计学研究者的个人天地
 最新文章