主成分分析(PCA)
常用的无监督学习方法,利用正交变换将线性相关变量表示的观测数据转换为少数几个线性无关变量表示的数据,功能有降维和去相关性
引言
主成分分析中,首先对给定数据进行规范化,使得数据各个变量均值为0,方差为1,之后对数据进行正交变换(理解为旋转),将原来由线性相关变量表示数据变为若干个线性无关新变量表示的数据。新变量是可能的正交变换中变量方差和最大的(在信号处理中认为信号具有较大的方差,噪声有较小的方差),将新变量依次称为第一主成分,第二主成分等等。
主成分分析直观理解:样本中的数据可以用空间中的一个点表示(正交坐标系,每一个轴表示一个变量/特征),规范化处理后,样本数据分布在原点附近。对原坐标系进行主成分分析等价于进行坐标旋转变换,将数据投影到新的坐标轴上。新坐标系第一坐标轴,第二坐标轴分别表示第一主成分,第二主成分等,数据在每一个坐标轴上的平方表示相应变量的方差,且新的坐标系在所有可能的坐标系中,坐标轴上的方差和最大图中,数据由x1和x2表示,数据已经规范化处理,数据以原点为中心分布在倾斜的椭圆中,图中可知x1和x2是线性相关的(当知道其中一个变量x1的取值时对另一个变量x2的预测不是完全随机的)。主成分分析对数据进行正交变换,即对原坐标系进行旋转变换,将数据在新坐标系表示。数据在原坐标系的表示由x1和x2变为在新坐标系的c1和c2,主成分分析选择方差最大的方向(第一主成分)作为新坐标系的第一坐标轴,图中对应椭圆的长轴,之后选择与第一坐标轴正交,且方差次之的方向,图中对应的椭圆短轴作为新坐标系的第二坐标轴。在新坐标系中变量c1和c2是线性无关的。
方差最大等价于主成分分析在旋转变换中选取离样本点距离平方和最小的轴作为主成分
在数据总体上进行的主成分分析称为总体主成分分析,在有限样本数据上进行的主成分分析称为样本主成分分析(实际中的情况)
总体主成分分析
定理:设x是m维随机变量,即x=(x1,x2,…,xm)T,Σ是x的协方差矩阵,Σ的特征值分别为λ1≥λ2≥⋯≥λm≥0,特征值对应的单位特征向量分别为α1,α2,…,αm,则x的第k个主成分为yk=αTkα=α1kx1+α2kx2+⋯+αmkxm,k=1,2,…,mx的第k主成分的方差为var(yk)=αTkΣαk=λk,k=1,2,…,m
证明: 求第一主成分y1=αT1x的系数α1,根据主成分的定义,α1是在αT1α1=1的条件下,x的所有变换中使得方差var(αT1x)=αT1Σα1最大的系数α1。也即求下面的约束条件max⏟α1αT1Σα1s.t.αT1α1=1定义拉格朗日函数αT1Σα1−λ(αT1α1−1)对α1其求导得到Σα1−λα1=0即λ是Σ的特征值,α1是对应的单位特征向量。
求第二主成分y2=αT2x的系数α2,根据主成分的定义,α2是在αT2α2=1且αT2x与 αT1x不相关的条件下使得方差var(αT2x)=αT2Σα2最大的系数α2。也即求下面的约束条件max⏟α2αT2Σα2s.t.αT1Σα2=0,αT2Σα1=0αT2α2=1注意到αT1Σα2=αT2Σα1=αT2λ1α1=λ1αT2α1=λ1αT1α2其中αT2α1是标量,所以有(αT2α1)T=αT2α1。以及根据主成分定义有αT2α1=αT1α2=0(αi是正交的),可定义拉格朗日函数αT2Σα2−λ(αT2α2−1)−ϕαT2α1对α2求导并令其为0得到2Σα2−2λα2−ϕα1=0对上式左乘αT1有2αT1Σα2−2λαT1α2−ϕαT1α1=0可知前两项为0,且αT1α1=1因此有ϕ=0,带入拉格朗日求导等式中得到Σα2−λα2=0即λ是Σ的特征值,α2是对应的单位特征向量,同理对于其他的主成分也有类似的结论
推论:m维随机变量,即y=(y1,y2,…,ym)T的分量依次是x的第一主成分到第m主成分的充要条件是:
- y=ATx,A是正交矩阵[α11α12…α1mα21α22…α2m⋮⋮⋮αm1αm2…αmm]
- y的协方差矩阵为对角矩阵cov(y)=diag(λ1,λ2,…,λm)λ1≥λ2≥⋯≥λm其中λk是Σ(x的协方差矩阵)第k个特征值,αk是对应的单位特征向量
根据之前证明可知,有Σαk=λkαk 写成矩阵的形式为ΣA=AΛ其中Λ是对角矩阵(即y的协方差矩阵),因为A是正交矩阵,有ATA=AAT=I,可得到ATΣA=ATAΛ=Λ和Σ=AΛAT
总体主成分y的方差之和等于随机变量x的方差之和,即∑mi=1λi=∑mi=1σii其中σii是x的协方差矩阵Σ的对角元素(证明就不写了,比较简单,利用上一段讨论的结论)
主成分的个数
PCA
的主要目的是降维,所以一般选择k(k≪m)(线性无关)代替原来的m(线性相关)个变量,同时保留原有变量的大部分信息(信息指原有变量的方差),给出两个定义
- 第k个主成分yk的方差贡献率定义为yk的方差与所有方差之和的比,即ηk=λk∑mi=1λi
- k个主成分y1,y2,…,yk累积方差贡献率定义为k个方差之和与所有方差之和的比值,即k∑i=1ηi=∑ki=1λi∑mi=1λi
通常取k使得累积方差贡献率达到规定百分比以上,例如70%∼80%以上,累积方差贡献率反映主成分保留信息比例。
规范化变量
在实际问题中,不同变量可能有不同的量纲,直接求主成分有时产生不合理的结果,为了消除这个影响,通常对各个随机变量实施标准化,使其均值为0,方差为1,即x∗i=xi−E(xi)√var(xi)
样本主成分分析
实际问题中,需要在观测数据上进行主成分分析,也就是在样本上进行主成分分析
假设对m维随机变量x=(x1,x2,…,xm)T进行n次的独立观测,x1,x2,…,xn表示观测样本,其中xj=(x1j,x2j,…,xmj)T表示第j个观测样本,观测数据用样本矩阵X表示为X=[x1,x2,…,xn]=[x11x12…x1nx21x22…x2n⋮⋮⋮xm1xm2…xmn]给定样本矩阵X,可以估计样本均值ˉx及样本协方差矩阵S
ˉx=1nn∑j=1xjS=[sij]m×msij=1n−1n∑k=1(xik−¯xi)(xjk−¯xj),i,j=1,2,…,m其中¯xi=1n∑nk=1xik 是第i个变量样本均值,¯xj=1n∑nk=1xjk 是第j个变量样本均值。
样本矩阵的相关矩阵R(也叫相关系数矩阵,由矩阵各行的相关系数组成
)R=[rij]m×m,rij=sij√siisjj,i,j=1,2,…,m
相关矩阵的特征值分解算法
- 对观测数据进行规范化处理,得到规范化数据矩阵,以X表示x∗ij=xij−¯xi√sii¯xi=1nn∑j=1xij,i=1,2,…,msii=1n−1n∑j=1(xij−¯xi)2
- 根据规范化数据矩阵计算样本相关矩阵RR=[rij]m×m=1n−1XXTrij=1n−1n∑l=1xilxlj,i,j=1,2,…,m
- 求样本相关矩阵R的k个特征值,和对应的k个单位特征向量,根据|R−λI|=0得到R的m个特征值λ1≥λ2≥⋯≥λm并求累积方差贡献率∑ki=1ηi达到预定值的主成分个数k,并求前k个特征值对应的单位特征向量αi=(α1i,α2i,…,αmi)T,i=1,2,…,k
- 求k个样本主成分yi=αTix,i=1,2,…,k
- 计算k个主成分yi与原变量xi的相关系数ρ(xi,yi),以及k个主成分对原变量xi的贡献率νi
- 计算n个样本的k个主成分值,第j个样本xj=(x1j,x2j,…,xmj)T第i个主成分yij=(α1i,α2i,…,αmi)(x1j,x2j,…,xmj)T=m∑l=1alixlji=1,2,…,k,j=1,2,…,n
主成分分析结果可以用于其他机器学习算法的输入
数据矩阵奇异值分解算法
PCA
在过程中要计算协方差矩阵,当样本数和特征数很多的时候,这个计算量是相当大的, 给定样本矩阵X,利用数据矩阵奇异值分解进行主成分分析
假设有k个主成分,对于m×n的实矩阵A,假设其秩为r,有0<k<r,可将矩阵A进行截断奇异值分解A≈UkΣkVTk其中Uk是m×n矩阵,Vk是n×k矩阵,Σk是k阶对角矩阵,Uk,Vk分别取矩阵A的完全奇异值分解矩阵U,V的前k列,Σk由矩阵A的完全奇异值分解矩阵Σ的前k个对角元素
定义一个新的矩阵X′X′=1√n−1XT其中X′的每一列均值为0,可得到X′TX′=(1√n−1XT)T(1√n−1XT)=1√n−1XXT即X′TX′等于样本矩阵X的协方差矩阵SX,SX=X′TX′
根据之前讨论,主成分分析是求协方差矩阵SX的特征值和对应的单位特征向量,因此问题转化为求矩阵X′TX′的特征值和对应的单位特征向量
假设X′的截断奇异值分解为X′=UΣVT,则V的列向量就是SX=X′TX′的单位特征向量。因此求X的主成分可以通过求X′的奇异值来实现
证明:SX=X′TX′=(UΣVT)T(UΣVT)=VΣ2VT由于VVT=I,上式满足特征值分解公式,所以V的列向量是SX的单位特征向量
算法
输入:m×n样本矩阵X,其中每一行元素的均值为0
输出:k×n的样本主成分矩阵Y
参数:主成分的个数k
- 构造新的n×m矩阵X′=1√n−1XT其中X′的每一列的均值为0
- 对矩阵X′进行截断奇异值分解,得到X′=UΣVT有k个奇异值、奇异向量。矩阵V的前k列构成k个样本主成分
- 求k×n样本主成分矩阵Y=VTX
参考:统计学习方法(第二版)–李航