主成分分析(PCA)
有任何问题可以联系jimmy_huang136@163.com或者在下方留言
1.概念
对信息进行降维处理,只保留一个维度的信息;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可以不用求协方差矩阵;