主成分分析(PCA)

主成分分析(PCA)是一种常用的无监督学习方法,这一方法利用正交变换把由现行相关变量表示的观测数据转化为少数几个由线性无关变量表示的数据,线性无关的变量称为主成分。主成分的个数通常小于原始变量的个数,所以主成分分析属于姜维方法。主成分分析主要用于发现数据中的基本结构,即数据中变量之间的关系,是数据分析的有力工具,也用于其他机器学习方法的前处理。

一、总体主成分分析

1.基本想法

统计分析比中,数据的变量之间可能存在相关性,以致增加了分析的难度。于是,考虑由少数几个不相关的变量来代替相关的变量,用来表示数据,并且要求能够保留数据中的不部分信息。

主成分分析中,首先对给定数据进行规范化,使得数据每一变量的平均值为0,方差为1,。之后对数据进行正交变换,用来由线性相关表示的数据,通过正交变换变成若干个线性无关的新变量表示的数据。新变量是可能的正交变换中变量的方差和(信息保存)最大的,方差表示在新变量上信息的大小。将新变量一次成为第一主成分,第二主成分等。通过主成分分析,可以利用主成分近似地表示原始数据,这可理解为发现数据的“基本结构”;也可以把数据由少数主成分表示,这可理解为对数据降维。

方差最大的解释。假设有两个变量x_1,x_2,三个样本点A,B,C。样本分布在由x_1,x_2轴组成的坐标系中,对坐标系进行旋转变换,得到新的坐标轴y_1,表示新的变量y_1。坐标值的平方和OA^{\prime 2}+OB^{'2}+OC^{'2}表示样本在变量y_1上的方差和。主成分分析旨在选取正交变换中方差最大的变量,作为第一主成分,也是是旋转变换中坐标值的平方和最大的轴。注意到旋转变换中变换中样本点到原点距离的平方和OA^2+OB^2+OC^2不变,根据勾股定理,坐标值的平方和最大OA^{\prime 2}+OB^{'2}+OC^{'2}等价于样本点到y_1轴的距离平方和AA^{'2}+BB^{'2}+CC^{'2}最小。所以,等价地,主成分分析在旋转变换中选取离样本点的距离的平方和最小的轴,作为第一主成分。第二主成分等的选取,在保证与已有坐标轴正交的条件下,类似地进行

2.定义和导出

假设\boldsymbol x=(x_1,x_2,\dots,x_m)^T是m维随机变量,其均值是\boldsymbol{\mu}
,\boldsymbol \mu = E(x)=(\mu_1,\mu_2,\dots,\mu_m)^T
协方差矩阵是\Sigma
\Sigma = cov(\boldsymbol{(x,x)}=E[(\boldsymbol{x-\mu)(x-\mu)}^T]
考虑到m维随机变量\mathbf x到m维随机变量mathbf=(y_1,y_2,\dots,y_m)^T的线性变换
y_i = a_i^T \mathbf x = a_{1i}x_1+a_{2_i}x_2+\dots,a_{mi}x_m \space (1)
其中a_i^T = (a_{1i},a_{2_i},\dots,a_{mi}),i=1,2\dots,m

由随机变量的性质可知
\begin{aligned} E(y_i) = a_i^T\mu,i=1,2,\dots,m \\ var(y_i) = a_i^T\Sigma a_i,i=1,2,\dots,m \\ cov(y_i,y_j) = a_i^T\Sigma a_j,i=1,2,\dots,m,j=1,2,\dots,m \end{aligned}

总体主成分的定义给定式(1)所示的线性变换,如果他们满足下列条件

  1. 系数向量a_i^T是单位向量,即a_i^Ta_i =1,i=1,2,\dots,m
  2. 变量y_i与y_j互不相关,即cov(y_i,y_j)=0(i\ne j)
  3. 变量y_1\mathbf x的所有线性变换中方差最大的;y_2是与y_1不相关x的所有线性变换中方差最大的;一般地,y_i是与y_1,y_2,\dots,y_{i-1}(i=1,2,\dots,m)都不相关的\mathbf x的所有线性变换中方差最大的。这时分别称y_1,y_2,\dots,y_m\mathbf x的第一主成分,第二主成分,\dots,第m主成分

3.主要性质

\mathbf x是m维随机变量,\Sigma\mathbf x的协方差矩阵,\Sigma的特征值分别是\lambda_1 \ge \lambda_2 \ge \dots \ge \lambda_m \ge 0,特征值对应的单位特征向量分别是a_1,a_2,\dots,a_m,则\mathbf x的第k主成分是
y_k = a_k^T \mathbf x = a_{1k}x_1+a_{2k}x_2+\dots+a_{mk}x_m,k=1,2,\dots,m
\mathbf x的第k主成分的方差是
var(y_k)=a_k^T \Sigma a_k = \lambda k,k=1,2,\dots,m
即协方差矩阵\Sigma的第k个特征值

4.求主成分的方法

首先求\mathbf x的第一主成分y_1 = a_1^T \mathbf x,即求系数向量a_1。第一主成分的a_1是在a_1^Ta_1=1的条件下,\mathbf a的所有线性变换中使方差达到最大的
var(a_1^T \mathbf x) = a_1^T \Sigma a_1
求第一主成分就是求解最优化问题
\begin{aligned} \mathop{max}_{a_1} a_1^T\Sigma a_1 \\ s.t. \space a_1^T a_1 = 1 \end{aligned}
定义拉格朗日函数
a_1^T \Sigma a_1 - \lambda(a_1^T a_1 -1 )
其中\lambda是拉格朗日乘子,将拉格朗日函数对a_1求导,并令其为0,得
\Sigma a_1 -\lambda a_1 = 0
因此\lambda\Sigma的特征值,a_1是对应的单位特征向量。于是目标函数
a_1^T \Sigma a_1 = a_1^T \lambda a_1 =\lambda
假设a_1\Sigma的最大特征值\lambda_1对应的单位特征向量,显然a_1\lambda_1是最优化问题的解,所以,a_1^Tx构成第一主成分,其方差等于协方差矩阵的最大特征值
var(a_1^T \mathbf x) = a_1^T \Sigma a_1 = \lambda_1

接着求\mathbf x的第二主成分y_2 = a_2^T \mathbf x,第二主成分的a_2是在a_2^Ta_2=1a_2^T \mathbf xa_1^T \mathbf x不相关条件下,\mathbf x的所有线性变换中使达到最大
var(a_2^T \mathbf x) = a_2^T \Sigma a_2

求第二主成分需参求解约束最优化问题
\begin{aligned} \mathop{max}_{a_2} a_2^T\Sigma a_2 \\ s.t, a_1^T\Sigma a_2 = 0 ,a_2^T\Sigma a_1 = 0 \\ a_2^Ta_2 = 1 \\ a_1^T a_2 = 0 ,a_2^Ta_2 = 0 \end{aligned}
定义拉格朗日函数
a_2^T\Sigma a_2 -\lambda(a_2^T a_2 -1) -\Phi a_2^Ta_1
其中\lambda,\Phi对应拉格朗日乘子。对a_2求偏导,并令其为0,得
2\Sigma a_2 - 2\lambda a_2 -\phi a_1 = 0
将方程左则乘以a_1^T
2a_1^T\Sigma a_2 - 2\lambda a_1^T a_2 - \Phi a_1^T a_1 = 0
此式前两项为0,且a_1^T a_1 = 1,导出\Phi =0,因此式成为
\Sigma a_2 - \lambda a_2 = 0
由此,\lambda\Sigma的特征值,a_2是对应的特征向量,于是目标函数为
a_2^T \Sigma a_2 = a_2^T \lambda a_2 = \lambda a_2^T a_2 = \lambda
假设a_2\Sigma的第二大特征值\lambda_2的特征向量,显然a_2与\lambda_2是以上最优化问题的解。于是a_2^T x构成第二主成分,其方差等于协方差矩阵的第二大特征值,
var(a_2^T \mathbf x) = a_2^T \Sigma a_2 = \lambda_2

按照上述方法可以求得第一、第二、直到第m个主成分,其系数向量a_1,a_2,\dots,a_m分别是\Sigma的第一、第二、直到m个单位特征向量,\lambda_1,\lambda_2,\dots,\lambda_m分别是对应的特征值。并且,第k主成分的方差等于\Sigma的第k个特征值。
var(a_k^T \mathbf x) = a_k^T \Sigma a_k = \lambda_k ,k=1,2,\dots,m

5.主成分的个数

主成分分析的主要目的是降维,所以一般选择k(k \ll m)个主成分(线性无观变量),使问题得以简化,并能保留原有变量的大部分信息。这里所说的信息是指原有信息的方差。

对任意正整数q, 1 \le q \le m,考虑正交线性变换
\mathbf y = B^T \mathbf x
其中\mathbf y是q的维向量,B^T是q*m维矩阵,令\mathbf y的协方差矩阵为
\Sigma_{\mathbf y} = B^T\Sigma B
\Sigma_{\mathbf y}的迹tr(\Sigma_{\mathbf y})B = A_q时取最大值,其中矩阵A_q是由正交矩阵A的前q列组成。

这表明,当\mathbf x的线性变换\mathbf yB=A_q时,其协方差矩阵\Sigma_y的迹tr(\Sigma_y)取得最大值。也就是说,当A取前\mathbf x的前q个主成分时,能够最大限度地保留原有变量方差的信息。

以上作为选择k个主成分的理论依据。具体选择k的方法,通常利用方差贡献率。

第k主成分y_k的方差贡献率定义为y_k的方差与所有方差之和的比记作\eta
\eta_k = \frac{\lambda_k}{\sum_{i=1}^m \lambda_i}
k个主成分y_1,y_2,\dots,y_k的累计方差贡献率定义为k个方差之和和所有方差之和的比
\sum_{i=1}^k \eta_i = \frac{\sum_{i=1}^k \lambda_k}{\sum_{i=1}^m \lambda_i}

通常取k使得累计方差贡献率达到规定的百分比以上,例如70%~80%。累计方差贡献率反映了主成分保留信息的比例,但它不能反映对某个原有变量x_i保留信息的比例,这时通常利用k个主成分y_1,y_2,\dots,y_k对原有变量x_i的贡献率。

k个主成分y_1,y_2,\dots,y_k对原有变量x_i的贡献率为x_i,(y_1,y_2,\dots,y_k)的相关系数的平方,记作v_i

v_i = \rho^2(x_i,(y_1,y_2,\dots,y_k))
计算公式如下:
v_i = \rho^2(x_i,(y_1,y_2,\dots,y_k)) =\sum_{j=1}^k \frac{\lambda_j a_{ij}^2}{\sigma_{ii}}
其中,\sigma_{ii}是随机变量x_i的方差,即协方差矩阵\Sigma的对角元素。

6.规范化变量的总体主成分

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

\mathbf x =(x_1,x_2,\dots,x_m)^T为随机变量,x_i为第i个随机变量,i=1,2,\dots,m,令
x_i^* = \frac{x_i-E(x_i)}{\sqrt{var(x_i)}},i=1,2,\dots,m
其中,E(x_i),var(xi)分布是随机变量x_i的均值和方差,这时x_i^*就是x_i的规范化随机变量。

二、样本主成分分析

在实际问题中,需要在观测数据上进行主成分分析,这就是样本主成分分析。样本主成分也和总体主成分具体相同的性质。

使用样本主成分时,一般假设样本数据是规范化的,即对样本矩阵如下操作:
x_{ij}^* = \frac{x_{ij}-\bar{x_i}}{\sqrt{s_ii}},i=1,2,\dots,m,j=1,2,\dots,m
其中
\bar{x_i} =\frac{1}{n} \sum_{j=1}^n x_{ij},i=1,2,\dots,m
s_{ii} = \frac{1}{n-1}\sum_{j=1}^n(x_{ij}-\bar{i})^2,i=1,2,\dots,m
样本协方差矩阵S是中体协方差矩阵\Sigma的无偏估计,样本相关矩阵R是总体相关矩阵的无偏估计,S的特征值和特征向量\Sigma的特征值和特征向量的无偏估计。

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

传统的主成分分析通过数据的协方差矩阵或相关矩阵的特征值分解进行,现在常用的方法是通过数据矩阵的奇异值分解进行。下面介绍数据的协方差矩阵或相关矩阵的分解方法

给定样本矩阵\mathbf X,利用数据的样本的协方差矩阵或样本相关矩阵的特征值分解进行主成分分析

  1. 对观测数据进行规范化处理,得到规范化数据矩阵,仍以\mathbf X表示
  2. 依据规范化数据矩阵,计算样本相关矩阵R
    R =[r_{ij}]_{m*n}=\frac{1}{n-1}XX^T
    其中,r_{ij} = \frac{1}{n-1}\sum_{i=1}^n x_{il}x_{lj}
  3. 求相关矩阵R的k个特征值和对应的k个单位特征向量
    求解R的特征方程
    |R-\lambda| = 0
    得R的m个特征值
    \lambda_1 \ge \lambda_2 \ge \dots \ge \lambda_m
    求方差贡献率\sum_{i=1}^k \eta_i达到与预定值的主成分个数k。求前k个主成分对应的单位特征向量
    a_i= (a_{1i},a_{2i},\dots,a_{mi})^T,i=1,2,\dots,k
  4. 求k个主成分
    以k个单位特征矩阵为系数进行线性变换,求出k个样本主成分
    y_i = a_i^T \mathbf x ,i=1,2,\dots,k
  5. 计算k个主成分y_j与原变量x_i的相关系数\rho(x_i,y_j),以及k个主成分对原变量x_i的贡献率v_i
  6. 计算n个样本的k个主成分值
    将规范化样本数据代入k个主成分,得到n个样本的主成分值,第j个样本x_j = (x_{1j},x_{2j},\dots,x_{mj})^T的第i主成分值是
    y_{ij} = (a_{1i},a_{2i},\dots,a_{mi})(x_{1j},x_{2j},\dots,x_{mj})^T = \sum_{i=1}^m a_{li}x_{lj},i=1,2,\dots,m,j=1,2\dots,m

2.数据矩阵奇异值分解法

给定样本矩阵\mathbf X,利用数据矩阵奇异值分解进行主成分分析,这里没有假设k个主成分

对于m*n维实矩阵A,假设其秩为r,0 < k < r,则可将矩阵A进行截断奇异值分解
A \approx U_k\Sigma_k V_K^T
U_km*k矩阵,\Sigma_k是k阶对角矩阵,U_k,V_k分别由取A的完全奇异分解的矩阵U,V的前k列,\Sigma_k由完全奇异分解的矩阵\Sigma的前k个对角元素得到

定义一个新的n*m矩阵\mathbf X'
\mathbf X' = \frac{1}{\sqrt{n-1}}\mathbf X^T
\mathbf X'的每一列均值为0,
X^{'T}X' = \bigg(\frac{1}{\sqrt{n-1}}X^T)\bigg)^T\bigg(\frac{1}{\sqrt{n-1}}X^T\bigg)
X^{'T}X'等于X的协方差矩阵S_X
S_X = X^{'T}X'
主成分分析归结于求协方差矩阵S_X的特征值和对应的单位特征向量。

假设X'的截断奇异值分解为X'=U\Sigma V^T,那么V 的列向量就是S_X = X^{'T}X'的单位向量,因此V的列向量就是X的主成分。于是X求X的主成分可以通过X'的奇异值来实现

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 PCA是一种无参数的数据降维方法,在机器学习中很常用,这篇文章主要从三个角度来说明PCA是怎么降维的分别是方...
    WZFish0408阅读 51,977评论 6 36
  • 主成分分析( Principal components analysis),简称PCA,是最主要的数据降维方法之一...
    霞客环肥阅读 5,072评论 1 30
  • 一、前言 在许多领域的研究与应用中,往往需要对反映事物的多个变量进行大量的观测,收集大量数据以便进行分析寻找规律。...
    owolf阅读 2,729评论 0 3
  • 主成分分析(PCA) 在许多领域的研究与应用中,往往需要对反映事物的多个变量进行大量的观测,收集大量数据以便进行分...
    阿圆的一亩三分地阅读 2,908评论 0 3
  • 经过两天的挣扎,在浅薄的线性代数知识基础上,尝试着理解了一下主成分分析法。 一 算法流程 求样本x(i)的n'的主...
    A黄橙橙阅读 24,189评论 1 4