PCA 降维
PCA (Principal Component Analysis,主成分分析) 是一种常用的数据降维方法
基本思想
PCA 降维的核心思想是将 N 维空间映射到 k 维空间,这 k 个维度是正交的,称为主成分。主成分是原始特征的线性组合,能最大化保留原始数据方差信息。
数学原理
对于 n 个 m 维度的数据记为 X[n, m],如果要对其降到 k 维,就是要找到 k 个投影向量 v[m],计算 Xv,每个投影向量 v 均可得到一个坐标,k 个投影向量就可以得到 k 个坐标,即维度。
计算步骤
-
计算协防差矩阵
\[ cov_{x,y}= \frac{\sum(x_i - E(x)(y_i-E(y))}{n} \]cov[i, j] 表示第 i 个维度与第 j 个维度的协方差,有以下性质 1. cov[i,j] = cov[j,j] 2. cov[i,j] 表示该维度自身的方差
协方差矩阵表示数据在这些方向上的扩散情况,越大的协方差表示扩散越多,而主成分恰好就是那些扩散的多方向。
有了协方差矩阵,就可以求解协方差矩阵的特征向量。
对于一个矩阵 P,假设存在一个向量 v,使得 pv = y
-
计算解特征值
假设 Av = λv,即对于一个矩阵 A 来说,是否存在一些向量v,将矩阵投影在该向量上,只影响该向量的大小而不影响该向量的方向。那么该向量 v 就可以作为矩阵的特征向量。
\[ Av = λv $$ 由于 λ 是标量,可以引入单位向量 I,使得 $$ Av = λIv $$ $$ (A - λI)v = 0 \]由于向量 v 不应该为 0,所以只能
A-λI = 0假设
\[ conv = \begin{bmatrix} 2.0 & 0.8 \\ 0.8 & 0.6 \end{bmatrix} \]\[ A - λI = \begin{bmatrix} 2.0 & 0.8 \\ 0.8 & 0.6 \end{bmatrix} - λ \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} = \begin{bmatrix} 2.0-λ & 0.8 \\ 0.8 & 0.6-λ\end{bmatrix} = 0 \]计算这个行列式
\[ (2.0-λ)(0.6-λ) - 0.8*0.8 = 0 $$ $$ λ_1 = 2.36301458, λ_2 = 0.23698542 \] -
计算特征向量
以 λ_1 为例,计算该特征值对应的特征向量
\[ (Av - λI)v = 0 -> ( \begin{bmatrix} 2.0 & 0.8 \\ 0.8 & 0.6 \end{bmatrix} - 2.363 \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} ) \begin{bmatrix} v1 \\ v2 \end{bmatrix} = 0 \]\[ \begin{bmatrix} -0.363 & 0.8 \\ 0.8 & -1.763 \end{bmatrix} \cdot \begin{bmatrix} v1 \\ v2 \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \end{bmatrix} \]\[ \begin{equation} \begin{cases} -0.363v1 + 0.8v2 = 0\\ 0.8v1 -1.763v2 = 0 \end{cases} \end{equation} \]由于两个方程都是同方向上的约束,不能提供额外的信息,所以只需要求解单位 v1, v2 的单位特征向量。
取 v1 = 1,则 v2 = 0.45375
求 x, y 的归一化,a ,b $$ a = \frac{x}{\sqrt{x^2 + y^2}} \newline b = \frac{y}{\sqrt{x^2 + y^2}} $$ 得到 v= 0.9106, v2= -0.4132 $$ v = \begin{bmatrix} 0.9106 \newline -0.4132 \end{bmatrix} $$
同理可以得到第二个特征向量
\[ v = \begin{bmatrix} 0.41321628, \newline 0.91063291 \end{bmatrix} \] -
投影
将原始数据分别在这些特征向量上投影,得到新的坐标。
总结
- pca 降维的计算方法
- 计算协方差矩阵
- 计算特征值
- 计算特征向量
- 投影
-
为什么这个特征向量是由协方差矩阵算出来的
这涉及到数学推导,我看不懂这个推导,直观理解就是投影希望的结果是投影之后的矩阵仍然能保留最大的协方差