主成分分析PCA原理推导解释(一看就懂,简单明了)

主成分分析(PCA)

有任何问题可以联系jimmy_huang136@163.com或者在下方留言

1.概念

对信息进行降维处理,只保留一个维度的信息;PCA的目的就是找到一个坐标系,使得数据在只保留一个维度时,保留的信息最多(如下图所示)
PCA算法概念

2.目标

点投影到新的坐标系时,点比较分散(方差最大),此时保留的信息最多。寻找坐标轴即是目标

3.基本步骤

  • 去中心化(把坐标原点放在数据的中心)
  • 找坐标系(找到方差最大的方向)

4.如何找到方差最大的方向

拉伸

\[SD = \begin{bmatrix} 2 & 0\\ 0 & 1\\ \end{bmatrix} * \left[ \begin{matrix} x_1 & x_2 & x_3 & x_4\\ y_1 & y_2 & y_3 & y_4\\ \end{matrix} \right]\tag{1} = \begin{bmatrix} 2x_1 & 2x_2 & 2x_3 &2x_4\\ y_1 & y_2 & y_3 & y_4\\ \end{bmatrix} \]

SD表示的是进行拉伸操作,其中S为拉伸矩阵(只有对角线上有数字)

旋转

\[RD = \begin{bmatrix} cos(𝜽)&-sin(𝜽)\\ sin(𝜽)&cos(𝜽)\\ \end{bmatrix} * \begin{bmatrix} x_1&x_2&x_3&x_4\\ y_1&y_2&y_3&y_4\\ \end{bmatrix}\tag{2} \]

RSD 即旋转且拉伸
旋转的角度决定了最大的方向的角度
拉伸决定了方差最大的方向是横或者纵

5.白数据变化过程

白数据即为x,y都是标准的正态分布,且x,y互不干涉,协方差为0

graph LR; 白数据D --> 拉伸SD --> 旋转RSD -->我们手上的数据D'=RSD

6.如何求R(反推法)

协方差矩阵的特征向量即R

协方差的定义

\[cov(x,y) = \frac{\sum^{n}_{i=1}(x_i-\overline{x})(y_i-\overline{y})}{n-1}\tag{3} \]

协方差表示的是:两个向量在变化过程是同方向变化?还是反方向变化?同向或反向程度如何?
协方差=0表示不相关;>0表示正相关;<0表示负相关
eg.比如x在增大,y也随着增大,那么协方差就大于0

\[x\uparrow \longrightarrow y\uparrow \longrightarrow cov(x,y) > 0 \]

协方差矩阵

这里的协方差矩阵对称阵,对角线是方差

\[C = \begin{bmatrix} cov(x,x)&cov(x,y)\\ cov(x,y)&cov(y,y)\\ \end{bmatrix}\tag{4} \]

eg.如下图所示,在拉伸旋转过程中,协方差矩阵里面的值也会跟着改变

协方差矩阵示例

协方差矩阵演算

代入cov可得:

\[C = \begin{bmatrix} \frac{\sum^n_{i=1}x_i^2}{n-1} & \frac{\sum^n_{i=1}x_iy_i}{n-1}\\ \frac{\sum^n_{i=1}x_iy_i}{n-1} & \frac{\sum^n_{i=1}y_i^2}{n-1}\\ \end{bmatrix} \]

\[=\frac{1}{n-1}\begin{bmatrix} x_1&x_2&x_3&x_4\\ y_1&y_2&y_3&y_4\\ \end{bmatrix} \begin{bmatrix} x_1&y_1\\ x_2&y_2\\ x_3&y_3\\ x_4&y_4\\ \end{bmatrix} \]

\[=\frac{1}{n-1}DD^T \]

得到如下结果:

\[C = \frac{1}{n-1}DD^T\tag{5} \]

于是我们手上的数据D ' 的协方差就为:

\[C' = \frac{1}{n-1}D'D^{'T} \]

代入D' = RSD,可得

\[C' = \frac{1}{n-1}RSD(RSD)^T \]

\[=\frac{1}{n-1}RSDR^TS^TD^T = RS(\frac{1}{n-1}DD^T)S^TR^T \]

将(5)带入其中,由于我们取D为白数据,所以C即为单位矩阵,可得:

\[= RSS^TR^T:\\ 又由于S(拉伸),R(旋转)的特质可得\\ \]

\[S = S^T \qquad R^T= R^{-1}\\ let:\qquad L = SS^T = \begin{bmatrix} a^2&0\\ 0&b^2\\ \end{bmatrix} \]

\[so:\qquad C' =RLR^{-1}\tag{6} \]

特征值与特征向量

由于C'是2*2的矩阵,所有就有两个特征值和特征向量,经过变化可得我们要求的R就是两个特征向量组合起来


所以需要求的R

\[R = \vec{v_1}\vec{v_2}\tag{7} \]

v1向量即为新坐标系的x轴方向,v2向量即为新坐标系的y轴方向,这里还有关于特征值的一点:

\[L = \begin{bmatrix} 𝛌_1&0\\ 0&𝛌_2\\ \end{bmatrix}=SS^T =\begin{bmatrix} a^2&0\\ 0&b^2\\ \end{bmatrix} \]

如果我们进行反推

\[\qquad 我们手中的数据D'\longrightarrow (逆旋转)R^{-1}D'\longrightarrow S^{-1}R^{-1}D' \longrightarrow 白数据D \]

这里可以这样推导协方差矩阵:

\[D'\longrightarrow C'\\ R^{-1}D' \longrightarrow C_1 = L \]

7.PCA具体流程

graph LR; 数据-->去中心化-->协方差矩阵; 协方差矩阵-->特征向量-->坐标轴方向; 协方差矩阵-->特征值-->坐标轴方差;

8.三维降二维(略)

9.PCA的缺点

离散点对于整个降维过程的影响比较大,如果数据离散点比较多,建议采用其他降维方法

10.PCA与SVD

奇艺值分解Singular Value Decomposition(SVD)

\[D^T = UΣV^T\\\tag{8} \begin{bmatrix} x_1&y_1\\ x_2&y_2\\ x_3&y_3\\ x_4&y_4\\ \end{bmatrix} = \begin{bmatrix} -&-&-&-\\ -&-&-&-\\ -&-&-&-\\ -&-&-&-\\ \end{bmatrix} \begin{bmatrix} a&0\\ 0&b\\ 0&0\\ 0&0\\ \end{bmatrix} \begin{bmatrix} -&-\\ -&-\\ \end{bmatrix} \]

Σ是一个对角矩阵,a,b为奇艺值,奇艺值就是特征值的开平方,最右边的矩阵为R矩阵
PCA计算量很大,运用SVD可以不用求协方差矩阵;

posted @ 2021-04-28 17:17  小白而已  阅读(1111)  评论(0编辑  收藏  举报