主成分分析(principal component analysis,PCA)是一种常用的无监督学习方法,这一方法利用正交变换把由线性相关变量表示的观测数据转换为少数几个由线性无关变量表示的数据,线性无关的变量称为主成分。
主成分的个数通常小于原始变量的个数,所以主成分分析属于降维方法。
主成分分析主要用于发现数据中的基本结构,即数据中变量之间的关系,是数据分析的有力工具,也用于其他机器学习方法的前处理。
16.1 总体主成分分析
16.1.1 基本想法
统计分析中,数据的变量之间可能存在相关性,以致增加了分析的难度。于是,考虑由少数不相关的变量来代替相关的变量,用来表示数据,并且要求能够保留数据中的大部分信息。
主成分分析中,首先对给定数据进行规范化,使得数据每一变量的平均值为0,方差为1。之后对数据进行正交变换,原来由线性相关变量表示的数据,通过正交变换变成若干个线性无关的新变量表示的数据。新变量是可能的正交变换中变量的方差的和(信息保存)最大的,方差表示在新变量上信息的大小。将新变量依次称为第一主成分、第二主成分等。
对原坐标系中的数据进行主成分分析等价于进行坐标系旋转变换,将数据投影到新坐标系的坐标轴上;新坐标系的第一坐标轴、第二坐标轴等分别表示第一主成分、第二主成分等,数据在每一轴上的坐标值的平方表示相应变量的方差;并且,这个坐标系是在所有可能的新的坐标系中,坐标轴上的方差的和最大的。
等价地,主成分分析在旋转变换中选取离样本点的距离平方和最小的轴,作为第一主成分。第二主成分等的选取,在保证与已选坐标轴正交的条件下,类似地进行。
在数据总体(population)上进行的主成分分析称为总体主成分分析,在有限样本上进行的主成分分析称为样本主成分分析,前者是后者的基础。
16.1.2 定义和导出
假设$x = (x_1,x_2,…,x_m)^T$是$m$维随机变量,其均值向量是$\mu$
协方差矩阵是$\Sigma$
考虑由$m$维随机变量$x$到$m$维随机变量$y = (y_1,y_2,…,y_m)^T$的线性变换
其中$\alpha_i^T = (\alpha_{1i},\alpha_{2i},…,\alpha_{mi}),i=1,2,…,m$。
由随机变量的性质可知,
定义 16.1(总体主成分) 给定一个如式$(16.1)$所示的线性变换,如果它们满足下列条件:
(1)系数向量$\alpha_i^T$是单位向量,即$\alpha_i^T\alpha_i = 1,i = 1,2,…,m$;
(2)变量$y_i$与$y_j$互不相关,即$cov(y_i,y_j) = 0(i \neq j)$;
(3)变量$y_1$是$x$的所有线性变换中方差最大的;$y_2$是与$y_1$不相关的$x$的所有线性变换中方差最大的;一般地,$y_i$是与$y_1,y_2,…,y_{i-1}(i = 1,2,…,m)$都不相关的$x$的所有线性变换中方差最大的;这时分别称$y_1,y_2,…,y_m$为$x$的第一主成分、第二主成分、… 、第$m$主成分。
定义中的条件$(1)$表明线性变换是正交变换,$\alpha_1,\alpha_2,…,\alpha_m$是其一组标准正交基,
条件$(2)(3)$给出了一个求主成分的方法:第一步,在$x$的所有线性变换
中,在$\alpha_1^T\alpha_1 = 1$条件下,求方差最大的,得到$x$的第一主成分;第二步,在与$\alpha_1^Tx$不相关的$x$的所有线性变换
中,在$\alpha_2^T\alpha_2 = 1$条件下,求方差最大的,得到$x$的第二主成分;第$k$步,在与$\alpha_1^Tx,\alpha_2^Tx,…,\alpha_{k-1}^Tx$不相关的$x$的所有线性变换
中,在$\alpha_k^T\alpha_k = 1$条件下,求方差最大的,得到$x$的第$k$主成分;如此继续下去,直到得到$x$的第$m$主成分。
16.1.3 主要性质
定理 16.1 设$x$是$m$维随机变量,$\Sigma$是$x$的协方差矩阵,$\Sigma$的特征值分别是$\lambda_1 \geq\lambda_2 \geq…\geq \lambda_m \geq 0$,特征值对应的单位特征向量分别是$\alpha_1,\alpha_2,…,\alpha_m$,则$x$的第$k$主成分是
$x$的第$k$主成分的方差是
即协方差矩阵$\Sigma$的第$k$个特征值。
推论 16.1 $m$维随机变量$y = (y_1,y_2,…,y_m)^T$的分量依次是$x$的第一主成分到第$m$主成分的充要条件是:
(1)$y = A^Tx$,$A$为正交矩阵
(2)$y$的协方差矩阵为对角矩阵
其中$\lambda_k$是$\Sigma$的第$k$个特征值,$\alpha_k$是对应的单位特征向量,$k = 1,2,…,m$。
下面叙述总体主成分的性质:
(1)总体主成分$y$的协方差矩阵是对角矩阵
(2)总体主成分$y$的方差之和等于随机变量$x$的方差之和,即
其中$\sigma_{ii}$是随机变量$x_i$的方差,即协方差矩阵$\Sigma$的对角元素。
(3)第$k$个主成分$y_k$与变量$x_i$的相关系数$\rho(y_k,x_i)$称为因子负荷量(factor loading),它表示第$k$个主成分$y_k$与变量$x_i$的相关关系。计算公式是
(4)第$k$个主成分$y_k$与$m$个变量的因子负荷量满足
16.1.4 主成分的个数
主成分分析的主要目的是降维,所以一般选择$k, k \ll m$个主成分(线性无关变量)来代替$m$个原有变量(线性相关变量),使问题得以简化,并能保留原有变量的大部分信息。这里所说的信息是指原有变量的方差。
定理 16.2 对任意正整数$q$,$1 \leq q \leq m$,考虑正交线性变换
其中$y$是$q$维向量,$B^T$是$q \times m$矩阵,令$y$的协方差矩阵为
则$\Sigma_y$的迹$tr(\Sigma_y)$在$B= A_q$时取得最大值,其中矩阵$A_q$由正交矩阵$A$的前$q$列组成。
定理16.2表明,当$x$的线性变换$y$在$B=A_q$时,其协方差矩阵$\Sigma_y$的迹$tr(\Sigma_y)$取得最大值,这就是说,当取$A$的前$q$列取$x$的前$q$个主成分时,能够最大限度地保留原有变量方差的信息。
定理16.3 考虑正交变换
这里$B^T$是$ p \times m$矩阵,$A$和$\Sigma_y$的定义与定理16.2相同,则$tr(\Sigma_y)$在$B = A_p$时取得最小值,其中矩阵$A_p$由$A$的后$p$列组成。
以上两个定理可以作为选择$k$个主成分的理论依据。具体选择$k$的方法,通常利用方差贡献率。
定义 16.2 第$k$主成分$y_k$的方差贡献率定义为$y_k$的方差与所有方差之和的比,记作$\eta_k$
$k$个主成分$y_1,y_2,…,y_k$的累计方差贡献率定义为$k$个方差之和与所有方差之和的比
通常取$k$使得累计方差贡献率达到规定的百分比以上,例如$70\%$ ~ $80\%$以上。累计方差贡献率反映了主成分保留信息的比例,但它不能反映对某个原有变量$x_i$保留信息的比例,这时通常利用$k$个主成分$y_1,y_2,…,y_k$对原有变量$x_i$的贡献率。
定义 16.3 $k$个主成分$y_1,y_2,…,y_k$对原有变量$x_i$的贡献率定义为$x_i$与$(y_1,y_2,…,y_k)$的相关系数的平方,记作$\nu_i$
计算公式如下:
16.1.5 规范化变量的总体主成分
在实际问题中,不同变量可能有不同的量纲,直接求主成分有时会产生不合理的结果。为了消除这个影响,常常对各个随机变量实施规范化,使其均值为$0$,方差为$1$。
设$x = (x_1,x_2,…,x_m)^T$为$m$维随机变量,$x_i$为第$i$个随机变量,$i = 1,2,…,m$,令
其中$E(x_i),var(x_i)$分别是随机变量$x_i$的均值和方差,这时$x_i^*$就是$x_i$的规范化随机变量。
显然,规范化随机变量的协方差矩阵就是相关矩阵$R$。主成分分析通常在规范化随机变量的协方差矩阵即相关矩阵上进行。
对照总体主成分的性质可知,规范化随机变量的总体主成分有如下性质:
(1)规范化变量主成分的协方差矩阵是
其中$\lambda_1^\geq \lambda_2^\geq…\geq\lambda_m^*\geq0$为相关矩阵$R$的特征值。
(2)协方差矩阵的特征值之和为$m$
(3)规范化随机变量$x_i^$与主成分$y_k^$的相关系数(因子负荷量)为
其中$e_k^ = (e_{1k}^,e_{2k}^,…,e_{mk}^)^T$为矩阵$R$对应于特征值$\lambda_k^*$的单位特征向量。
(4)所有规范化随机变量$x_i^$与主成分$y_k^$的相关系数的平方和等于$\lambda_k^*$
(5)规范化随机变量$x_i^$与所有主成分$y_k^$的相关系数的平方和等于1
16.2 样本主成分分析
在实际问题中,需要在观测数据上进行主成分分析,这就是样本主成分分析。样本主成分也和总体主成分具有相同的性质。
16.2.1 样本主成分的定义和性质
定义 16.4(样本主成分) 给定样本矩阵$X$。样本第一主成分$y_1 = a_1^Tx$是在$a_1^Ta_1 = 1$条件下,使得$a_1^Tx_j(j = 1,2,…,n)$的样本方差$a_1^TSa_1$最大的$x$的线性变换;样本第二主成分$y_2 = a_2^Tx$是在$a_2^Ta_2 = 1$和$a_2^Txj$与$a_1^Tx_j(j = 1,2,…,n)$的样本协方差$a_1^TSa_2 = 0$条件下,使得$a_2^Tx_j(j = 1,2,…,n)$的样本方差$a_2^TSa_2$最大的$x$的线性变换;一般地,样本第$i$主成分$y_i = a_i^Tx$是在$a_i^Ta_i = 1$和$a_i^Tx_j$与$a_k^Tx_j(k<i,j = 1,2,…,n)$的样本协方差$a_k^TSa_i = 0$条件下,使得$a_i^Tx_j(j = 1,2,…,n)$的样本方差$a_i^TSa_i$最大的$x$的线性变换。
样本主成分与总体主成分具有同样的性质。只要以样本协方差矩阵$S$代替总体协方差矩阵$\Sigma$即可。总体主成分定理$16.2$及定理$16.3$对样本主成分依然成立。
在使用样本主成分时,一般假设样本数据是规范化的,即对样本矩阵作如下变换:
其中
样本协方差矩阵$S$就是样本相关矩阵$R$
样本协方差矩阵$S$是总体协方差矩阵$\Sigma$的无偏估计,样本相关矩阵$R$是总体相关矩阵的无偏估计,$S$的特征值和特征向量是$\Sigma$的特征值和特征向量的极大似然估计。
16.2.2 相关矩阵的特征值分解算法
给定样本矩阵$X$,利用数据的样本协方差矩阵或者样本相关矩阵的特征值分解进行主成分分析。具体步骤如下:
(1)对观测数据按式$(16.48)$进行规范化处理,得到规范化数据矩阵,仍以$X$表示。
(2)依据规范化数据矩阵,计算样本相关矩阵$R$
其中
(3)求样本相关矩阵$R$的$k$个特征值和对应的$k$个单位特征向量。
求解$R$的特征方程
得$R$的$m$个特征值
求方差贡献率$\sum\limits_{i = 1}^k \eta_i$达到预定值的主成分个数$k$。
求前$k$个特征值对应的单位特征向量
(4)求$k$个样本主成分
以$k$个单位特征向量为系数进行线性变换,求出$k$个样本主成分
(5)计算$k$个主成分$y_j$与原变量$x_i$的相关系数$\rho(x_i,y_j)$,以及$k$个主成分对原变量$x_i$的贡献率$\nu_i$。
(6)计算$n$个样本的$k$个主成分值
将规范化样本数据代入$k$个主成分式$(16.50)$,得到$n$个样本的主成分值。第$j$个样本$x_j = (x_{1j},x_{2j},…,x_{mj})^T$的第$i$主成分值是
主成分分析得到的结果可以用于其他机器学习方法的输入。
16.2.3 数据矩阵的奇异值分解算法
给定样本矩阵$X$,利用数据矩阵奇异值分解进行主成分分析。
算法 16.1(主成分分析算法)
输入:$m \times n$样本矩阵$X$,其每一行元素的均值为零;
输出:$ k \times n $样本主成分矩阵$Y$。
参数:主成分个数$k$
(1)构造新的$n \times m$矩阵
$X^{‘}$的每一列的均值为零。
(2)对矩阵$X^{‘}$进行截断奇异值分解,得到
有$k$个奇异值、奇异向量。矩阵$V^T$和$X$的乘积构成样本主成分矩阵。
(3)求$k \times n$样本主成分矩阵