主成分分析(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可以不用求协方差矩阵;