主成分分析(PCA )的数学推导

主成分分析,简称 PCA,是最常用的一种降维方法,属于无监督学习。主成分分析涉及到的数学知识较广,也是机器学习很好的学习材料。

主成分分析涉及到的数学知识有:基于线性变换的降维方法、奇异值分解、特征值、特征向量、协方差矩阵、数量积、投影、坐标、对阵矩阵、正交矩阵等。如果对这些知识不太熟悉,一定要补上。

主成分分析简而言之,就是使用一个新的坐标系去描述原来坐标系中的数据,在新的坐标系中舍弃一些不重要的分量,那些被保留的分量就称之为主成分,因此 PCA 的核心其实是坐标变换。

接下来,铺垫一些关于坐标变换的知识。

我们知道,如果坐标系是单位正交向量,这些单位正交向量可以看成是坐标轴的方向向量,那么坐标轴一个方向向量与某个点(这里可以认为是向量)做内积,得到的一个数(标量),就得到了这个点在这个坐标方向的坐标。做内积这件事情又叫做投影。

算法和公式推导

X U = Y XU=Y ,其中矩阵 X X U U Y Y 的含义如下:

  • X X 表示原始的特征矩阵,每一行表示一个数据,每一列表示一个特征,这里假设 X R m × n X \in \mathbb{R}^{m \times n} ,即有 m m 个数据, n n 个特征;
  • U U 是投影矩阵,每一列表示一个投影的方向,特征有 n n 个,因此就 n n 个投影方向,因此 U R n × n U \in \mathbb{R}^{n \times n}
  • Y Y 表示 X X 在新坐标系下的坐标,这里 Y R m × n Y \in \mathbb{R}^{m \times n}

说明:

  • 如果一个特征方差很小,说明这个特征没有区分度,送入机器学习的算法增加了计算量,但并不起多大作用;
  • PCA 把 n n 个投影方向按照投影以后数据的特征的方差按照从大到小进行重排,方差小的直接丢弃,此时 U U 的列数减少了,相应地 Y Y 的列数也就是减少了,即达到了降维的效果。

使用待定系数法计算投影变换矩阵 U

这里矩阵 Y Y 应该满足:
1、各个特征(各个列)不能线性相关,更强地,我们可以要求各个列正交;
2、各个特征(各个列)按照方差从大到小排序。

假设 Y = ( y 1 , y 2 , . . . y n ) Y = (y_1,y_2,...y_n) ,则上面的两点可以通过 Y Y 的协方差矩阵表示出来:

1 m 1 Y T Y = 1 m 1 ( y 1 2 y 1 y 2 y 1 y n y 2 y 1 y 2 2 y 2 y n y n y 1 y n y 2 y n 2 ) = 1 m 1 ( y 1 2 0 0 0 y 2 2 0 0 0 y n 2 ) . \frac{1}{m-1}Y^TY = \frac{1}{m-1} \begin{pmatrix} y_1^2 & y_1y_2 & \cdots & y_1y_n \\ y_2y_1 & y_2^2 & \cdots & y_2y_n \\ \vdots & \vdots & \ddots & \vdots \\ y_ny_1 & y_ny_2 & \cdots & y_n^2 \end{pmatrix} =\frac{1}{m-1} \begin{pmatrix} y_1^2 & 0 & \cdots & 0 \\ 0 & y_2^2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & y_n^2 \end{pmatrix}.

即:
1 m 1 Y T Y = Σ . \frac{1}{m-1}Y^TY=\Sigma.
其中 Σ \Sigma 表示一个对角矩阵。

X U = Y XU=Y 代入,得

1 m 1 U T X T X U = Σ = U T ( 1 m 1 X T X ) U = Σ . \frac{1}{m-1} U^TX^TXU=\Sigma=U^T(\frac{1}{m-1} X^TX)U=\Sigma.
又由于 1 m 1 X T X \frac{1}{m-1} X^TX 是对称矩阵,因此上式可以认为是对称矩阵的对角化问题,这件事情早在《线性代数》中解决了,即方阵 1 m 1 X T X \frac{1}{m-1} X^TX 的特征向量按列排成的矩阵就是 U U

如何降维

将矩阵 U U 去掉后面几个投影以后方差很小的投影方向,得到 U r e d u c e U_{reduce} ,于是 X U r e d u c e = Y r e d u c e XU_{reduce} = Y_{reduce} ,其中, X R m × n X \in \mathbb{R}^{m \times n} U r e d u c e R n × k U_{reduce} \in \mathbb{R}^{n \times k} Y R m × k Y \in \mathbb{R}^{m \times k} ,这里 k k 小于 n n ,就达到了降维的效果。

恢复成原来的矩阵

X U r e d u c e = Y r e d u c e XU_{reduce} = Y_{reduce} ,可以知道: X = Y r e d u c e U r e d u c e 1 X = Y_{reduce}U_{reduce}^{-1}
特别注意:这里 U r e d u c e R n × k U_{reduce} \in \mathbb{R}^{n \times k} ,其实是没有逆矩阵的,但是由于 U U 是正交矩阵,所以 U r e d u c e 1 = U r e d u c e T U_{reduce}^{-1}=U_{reduce}^T ,使得 X = Y r e d u c e U r e d u c e 1 = Y r e d u c e U r e d u c e T X = Y_{reduce}U_{reduce}^{-1} = Y_{reduce}U_{reduce}^{T} 是有意义的,即:
X = Y r e d u c e U r e d u c e T . X = Y_{reduce}U_{reduce}^{T}.

PCA 与 SVD 的关系

由于

X P = Y , XP=Y,
其中
X = U Σ V T , X = U \Sigma V^T,

X V = U Σ , XV = U \Sigma,
这里 P = V P=V 。而 U Σ U \Sigma 就是降维以后的坐标。

  • PCA 还可以从“最近重构性”、“最大可分性”、“逐一选取最大方差方向”来得到,这些在把周志华《机器学习》P229 主成分分析中都有介绍。

参考资料

参考资料:
1、张洋《PCA的数学原理》:http://blog.codinglabs.org/articles/pca-tutorial.html
(我是看这篇文章入门 PCA 的,这篇文章在网上引用比较多,也很好理解。)
2、刘建平:主成分分析(PCA)原理总结
https://www.cnblogs.com/pinard/p/6243025.html
(这篇文章把周志华《机器学习》中关于 PCA 介绍部分的公式推导写得很详细。)
3、如何通俗易懂地讲解什么是 PCA 主成分分析?
https://www.zhihu.com/question/41120789/answer/481966094

猜你喜欢

转载自blog.csdn.net/lw_power/article/details/82924146