应用机器学习(九):主成分分析

主成分分析

主成分分析( Principal component analysis, PCA ), 是将一个可能存在相关性的变量集,通过适当的正交变换( Orthogonal transformation ), 变成线性无关的新变量,称这些新变量为主成分( Principal components ). 主成分的个数不超过原始变量个数。正交变换要满足:使第一主成分具有最大的方差,即,它代表最大的原始数据变异度。之后的主成分与前面的主成分正交,且具有最大方差。
主成分经常使用在探索性数据分析。通常,在对数据矩阵作中心化后,使用数据矩阵的协方差阵的特征值分解( Eigenvalue decomposition )或数据矩阵的奇异值分解( Singular value decomposition )来求主成分。

主成分的求法

特征值分解

总体的主成分

  • 主成分的定义

X=(X1,X2,,Xp) p 维随机向量,均值 E(X)=μ , 协方差阵 Σ . 称 Zi=αiX X 的第 i 主成分( i=1,2,,p ), 如果满足:

(1) αiαi=1 ;

(2) 当 i>1 时, αiΣαj=0(j=1,2,,i1) ;

(3) Var(Zi)=maxαα=1,αΣαj=0Var(αX) .

从代数学观点看,主成分就是 p 个原始变量的某些线性变换。从几何上看,这些线性变换正是把由 X1,X2,,Xp 构成的坐标系经旋转产生新的坐标系,新坐标轴具有最大的样本方差。

  • 主成分的求法

设协方差阵 Σ 是非负定的,那么它的全部特征值依次为 λ1λ2λp0 ,
α1,α2,,αp 为相应的单位正交特征向量,则 X 的第 i 主成分为

Zi=αiX(i=1,2,,p)
由主成分的求法可得主成分的充分必要条件:

Z=(Z1,Z2,,Zp) 的分量依次是 X 的第 i 主成分的充分必要条件是:

(1) Z=AX , A 为正交矩阵;

(2) Z 的协方差阵为对角阵 diag(λ1,λ2,,λp) ;

(3) λ1λ2λp .

  • 主成分的性质

性质1
cov(Z,Z)=Λ , 即, Var(Zi)=λi,i=1,2,,p ,且它们是不相关的。

性质2
i=1pσii=i=1pλi .

性质3
λki=1pλi 为主成分 Zk 的贡献率;称 i=1mλij=1pλj 为主成分 Z1,Z2,,Zm(m<p) 的累积贡献率。

样本的主成分

考虑 p 个变量的 n 次观测组成的 n×p 的数据矩阵 X ,按列中心化。记第 t 次观测向量 x(t)=(xt1,xt2,,xtp),t=1,2,,n . 称第 i 主成分 Zi 的系数向量 αi=(α1i,α2i,αpi) 为载荷向量( loadings ), 称 zti=αix(t) Zi 在观测向量 x(t) 的分数, t=1,2,,n . 以前 m(p) 个主成分的载荷向量为列向量组成矩阵 A , 令 Z=XA , 得到这些主成分的分数矩阵 Z=(zti) , 其中, 任意的 zti 为第 i 主成分在第 t 个观测向量的分数。

奇异值分解

奇异值分解

在线性代数中,奇异值分解( * singular value decomposition, SVD* )是一种对实矩阵的分解形式。它是对于实方阵的特征值分解推广到任意矩阵的分解。奇异值分解经常应用于信号处理和统计学。

假设 M 是一个 m×n 的实矩阵,称 M 的奇异值分解

M=UΣVT

这里,
U m×n 的正交阵, Σ n×n 对角元为非负值的对角阵, V n×n 的正交阵。称 Σ 的对角元为 M 的奇异值,通常按降序排列,由 M 唯一确定。 称 U 的各列为 M 的左奇异向量, V 的各列为 M 的右奇异向量。

MMT=UΣVTVΣUT=UΣ2UT

不妨设 Σ=diag(σ1,σ2,,σn) ,
Σ2=diag(λ1,λ2,,λn) .
不难看出, λi=σ2i,i=1,2,,n , 是方阵 MMT 的特征值, M 的左奇异向量是 MMT 的正交的特征向量。同理可知, M 的右奇异向量是 MTM 的正交的特征向量。 M 的非零奇异值是 MMT MTM 的非零特征值的平方根。

样本主成分

设矩阵 X n×p 的数据矩阵,行代表观测,列代表变量。由奇异值分解 X=UΣVT , 其中,
左奇异向量 U=(u1,u2,,up) , 右奇异向量 V=(v1,v2,,vp) 的列向量组成了 X p 个主成分, XV=UΣ 组成了主成分分数矩阵。假设由前 L 个主成分代替原始变量,设 UL=(u1,u2,,uL) , ΣL 由前 L 大的奇异值的子对角阵, VL=(v1,v2,,vL) , 那么,依 Eckart–Young theorem

||XULΣLVL0||2F,n

故而,可以用 ULΣLVL 近似 X , 称 ULΣLVL X 的低秩分解。

主成分个数的选择

主成分是一种重要的降维技术,即,用远少于原始变量个数的主成分代替原始变量,但这也不可避免的带来了信息损失的问题。如何在用较少的主成分且信息损失也较少之间达到平衡,这是主成分个数选择的问题。这里,介绍两个常见的标准:

  • 按累积贡献率达到一定程度来确定主成分的个数;

  • 取大于平均特征值或平均奇异值的主成分个数

第一个标准容易取太多的主成分,而第二个标准容易取太少的主成分,故最好是将这两个标准结合起来使用。

实例:美国法官评分的主成分分析

数据集 USJudgeRatings 包含了律师对美国高等法院法官的评分。该数据框包含43个观测,12个变量。下表列出了全部变量:


这里写图片描述

从实用的角度来看,你是否能够用较少的变量来总结这11个变量(从INTGRTEN )评估的信息呢?如果可以,需要多少个?如何对它们进行定义呢?因为我们的目标是简化数据,所以可使用主成分。数据保持初始得分的格式,没有缺失值。因此,下一步的决策便是判断需要多少个主成分。

最常见的是基于特征值的方法。每个主成分都与相关系数矩阵的特征值相关联,第一主成分与最大的特征值相关联,第二主成分与第二大的特征值相关联,依此类推。Kaiser-Harris 准则建议保留特征值大于1的主成分,特征值小于1的成分所解释的方差比包含在单个变量中的方差更少。 Cattell 碎石检验则绘制了特征值与主成分数的图形。这类图形可以清晰地展示图形弯曲状况,在图形变化最大处之上的主成分都可保留。最后,你还可以进行模拟,依据与初始矩阵相同大小的随机数据矩阵来判断要提取的特征值。若基于真实数据的某个特征值大于一组随机数据矩阵相应的平均特征值,那么该主成分可以保留,该方法称为平行分析”。

利用 fa.parallel() 函数,你可以同时对三种特征值判别准则进行评价。对于11种评分(删去了 CONT 变量),需要事先安装 psych 包,代码如下:

library(psych)
fa.parallel(USJudgeRatings[, -1], fa = "PC", n.iter = 100,
            show.legend = FALSE, 
            main = "Scree plot with parallel analysis")




评价美国法官评分中要保留的主成分个数。碎石图(直线与x符号)、特征值大于1准则(水平线)和100次模拟的平行分析(虚线)都表明保留一个主成分即可。三种准则表明选择一个主成分即可保留数据集的大部分信息。下一步使用 principal() 函数得到第一主成分。

library(psych)
pc <- principal(USJudgeRatings[, -1], nfactors = 1)
pc


这里写图片描述

此处,你输入的是没有 CONT 变量的原始数据,并指定获取一个未旋转的主成分。由于 PCA 只对相关系数矩阵进行分析,在获取主成分前,原始数据将会被自动转换为相关系数矩阵 。 PC1 栏包含了成分载荷,指观测变量与主成分的相关系数。如果提取不止一个主成分,那么
还将会有 PC2PC3 等栏。成分载荷( component loadings )可用来解释主成分的含义。此处可以看到,第一主成分( PC1 )与每个变量都高度相关,也就是说,它是一个可用来进行一般性评价的维度。

h2 栏指成分公因子方差——主成分对每个变量的方差解释度。 u2 栏指成分唯一性——方差无法被主成分解释的比例( 1-h2 )。例如,体能( PHYS )80% 的方差都可用第一主成分来解释,20% 不能。相比而言, PHYS 是用第一主成分表示性最差的变量。SS loadings 行包含了与主成分相关联的特征值,指的是与特定主成分相关联的标准化后的方差值(本例中,第一主成分的值为10)。最后, Proportion Var 行表示的是每个主成分对整个数据集的解释程度。此处可以看到,第一主成分解释了11个变量92%的方差。

阅读更多精彩内容,请关注微信公众号”统计学习与大数据”!

猜你喜欢

转载自blog.csdn.net/wong2016/article/details/72901898