Loading [MathJax]/jax/output/CommonHTML/jax.js

浅谈机器学习中主成分分析-PCA

主成分分析(PCA)

常用的无监督学习方法,利用正交变换将线性相关变量表示的观测数据转换为少数几个线性无关变量表示的数据,功能有降维去相关性

引言

主成分分析中,首先对给定数据进行规范化,使得数据各个变量均值为0,方差为1,之后对数据进行正交变换(理解为旋转),将原来由线性相关变量表示数据变为若干个线性无关新变量表示的数据。新变量是可能的正交变换中变量方差和最大的(在信号处理中认为信号具有较大的方差,噪声有较小的方差),将新变量依次称为第一主成分,第二主成分等等。
主成分分析直观理解:样本中的数据可以用空间中的一个点表示(正交坐标系,每一个轴表示一个变量/特征),规范化处理后,样本数据分布在原点附近。对原坐标系进行主成分分析等价于进行坐标旋转变换,将数据投影到新的坐标轴上。新坐标系第一坐标轴,第二坐标轴分别表示第一主成分,第二主成分等,数据在每一个坐标轴上的平方表示相应变量的方差,且新的坐标系在所有可能的坐标系中,坐标轴上的方差和最大主成分分析示例图中,数据由x1x2表示,数据已经规范化处理,数据以原点为中心分布在倾斜的椭圆中,图中可知x1x2是线性相关的(当知道其中一个变量x1的取值时对另一个变量x2的预测不是完全随机的)。主成分分析对数据进行正交变换,即对原坐标系进行旋转变换,将数据在新坐标系表示。数据在原坐标系的表示由x1x2变为在新坐标系的c1c2,主成分分析选择方差最大的方向(第一主成分)作为新坐标系的第一坐标轴,图中对应椭圆的长轴,之后选择与第一坐标轴正交,且方差次之的方向,图中对应的椭圆短轴作为新坐标系的第二坐标轴。在新坐标系中变量c1c2是线性无关的。
方差最大等价于主成分分析在旋转变换中选取离样本点距离平方和最小的轴作为主成分
在数据总体上进行的主成分分析称为总体主成分分析,在有限样本数据上进行的主成分分析称为样本主成分分析(实际中的情况)

总体主成分分析

定理:设xm维随机变量,即x=(x1,x2,,xm)TΣx的协方差矩阵,Σ的特征值分别为λ1λ2λm0,特征值对应的单位特征向量分别为α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α11)α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α21)ϕαT2α1α2求导并令其为0得到2Σα22λα2ϕα1=0对上式左乘αT12αT1Σα22λαT1α2ϕαT1α1=0可知前两项为0,且αT1α1=1因此有ϕ=0,带入拉格朗日求导等式中得到Σα2λα2=0λΣ的特征值,α2是对应的单位特征向量,同理对于其他的主成分也有类似的结论
推论m维随机变量,即y=(y1,y2,,ym)T的分量依次是x的第一主成分到第m主成分的充要条件是:

  1. y=ATxA是正交矩阵[α11α12α1mα21α22α2mαm1αm2αmm]
  2. 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其中σiix的协方差矩阵Σ的对角元素(证明就不写了,比较简单,利用上一段讨论的结论)

主成分的个数

PCA的主要目的是降维,所以一般选择k(km)(线性无关)代替原来的m(线性相关)个变量,同时保留原有变量的大部分信息(信息指原有变量的方差),给出两个定义

  1. k个主成分yk的方差贡献率定义为yk的方差与所有方差之和的比,即ηk=λkmi=1λi
  2. k个主成分y1,y2,,yk累积方差贡献率定义为k个方差之和与所有方差之和的比值,即ki=1ηi=ki=1λimi=1λi

通常取k使得累积方差贡献率达到规定百分比以上,例如70%80%以上,累积方差贡献率反映主成分保留信息比例。

规范化变量

在实际问题中,不同变量可能有不同的量纲,直接求主成分有时产生不合理的结果,为了消除这个影响,通常对各个随机变量实施标准化,使其均值为0,方差为1,即xi=xiE(xi)var(xi)

样本主成分分析

实际问题中,需要在观测数据上进行主成分分析,也就是在样本上进行主成分分析

假设对m维随机变量x=(x1,x2,,xm)T进行n次的独立观测,x1,x2,,xn表示观测样本,其中xj=(x1j,x2j,,xmj)T表示第j个观测样本,观测数据用样本矩阵X表示为X=[x1,x2,,xn]=[x11x12x1nx21x22x2nxm1xm2xmn]给定样本矩阵X,可以估计样本均值ˉx及样本协方差矩阵S
ˉx=1nnj=1xjS=[sij]m×msij=1n1nk=1(xik¯xi)(xjk¯xj),i,j=1,2,,m其中¯xi=1nnk=1xik 是第i个变量样本均值,¯xj=1nnk=1xjk 是第j个变量样本均值。
样本矩阵的相关矩阵R也叫相关系数矩阵,由矩阵各行的相关系数组成R=[rij]m×m,rij=sijsiisjj,i,j=1,2,,m

相关矩阵的特征值分解算法

  1. 对观测数据进行规范化处理,得到规范化数据矩阵,以X表示xij=xij¯xisii¯xi=1nnj=1xij,i=1,2,,msii=1n1nj=1(xij¯xi)2
  2. 根据规范化数据矩阵计算样本相关矩阵RR=[rij]m×m=1n1XXTrij=1n1nl=1xilxlj,i,j=1,2,,m
  3. 求样本相关矩阵Rk个特征值,和对应的k个单位特征向量,根据|RλI|=0得到Rm个特征值λ1λ2λm并求累积方差贡献率ki=1ηi达到预定值的主成分个数k,并求前k个特征值对应的单位特征向量αi=(α1i,α2i,,αmi)T,i=1,2,,k
  4. k个样本主成分yi=αTix,i=1,2,,k
  5. 计算k个主成分yi与原变量xi的相关系数ρ(xi,yi),以及k个主成分对原变量xi的贡献率νi
  6. 计算n个样本的k个主成分值,第j个样本xj=(x1j,x2j,,xmj)Ti个主成分yij=(α1i,α2i,,αmi)(x1j,x2j,,xmj)T=ml=1alixlji=1,2,,k,j=1,2,,n

主成分分析结果可以用于其他机器学习算法的输入

数据矩阵奇异值分解算法

PCA在过程中要计算协方差矩阵,当样本数和特征数很多的时候,这个计算量是相当大的, 给定样本矩阵X,利用数据矩阵奇异值分解进行主成分分析

假设有k个主成分,对于m×n的实矩阵A,假设其秩为r,有0<k<r,可将矩阵A进行截断奇异值分解AUkΣkVTk其中Ukm×n矩阵,Vkn×k矩阵,Σkk阶对角矩阵,UkVk分别取矩阵A的完全奇异值分解矩阵UV的前k列,Σk由矩阵A的完全奇异值分解矩阵Σ的前k个对角元素
定义一个新的矩阵XX=1n1XT其中X每一列均值为0,可得到XTX=(1n1XT)T(1n1XT)=1n1XXTXTX等于样本矩阵X的协方差矩阵SXSX=XTX
根据之前讨论,主成分分析是求协方差矩阵SX的特征值和对应的单位特征向量,因此问题转化为求矩阵XTX的特征值和对应的单位特征向量
假设X的截断奇异值分解为X=UΣVT,则V的列向量就是SX=XTX的单位特征向量。因此求X的主成分可以通过求X的奇异值来实现

证明:SX=XTX=(UΣVT)T(UΣVT)=VΣ2VT由于VVT=I,上式满足特征值分解公式,所以V的列向量是SX的单位特征向量

算法
输入:m×n样本矩阵X,其中每一行元素的均值为0
输出:k×n的样本主成分矩阵Y
参数:主成分的个数k

  1. 构造新的n×m矩阵X=1n1XT其中X的每一列的均值为0
  2. 对矩阵X进行截断奇异值分解,得到X=UΣVTk个奇异值、奇异向量。矩阵V的前k列构成k个样本主成分
  3. k×n样本主成分矩阵Y=VTX

参考:统计学习方法(第二版)–李航