PCA
简要说明
PCA 的全称为主成分分析(Principal Component Analysis)。简单的来说,PCA 的本质是将原来的坐标系转变为新的坐标系,而新的坐标系的基的选择为原始数据中方差最大的方向。
原理
-
基变换的矩阵表示
之前我们说到 PCA 的本质就是基的变换,而基的变换是可以很清晰的使用矩阵相乘来表示的。
\[\left( \begin{array}{cc} p_1 \\ p_2 \\ ... \\ p_r \end{array} \right) \left( \begin{array}{c} a_1, a_2, ..., a_M \end{array} \right) = \left( \begin{array}{c} p_1a_1, p_1a_2, ..., p_1a_M \\ p_2a_1, p_2a_2, ..., p_2a_M \\ ..\\ p_na_1, p_na_2, ..., p_na_M \end{array} \right)\]其中 $p$ 为新的坐标系的基,为一组正交的 $M$ 维的行向量, $a$ 为原始数据,为 $M$ 维列向量。正样子我们就完成了原始数据的坐标转换。
-
保证转换后的值尽可能的分散且独立
这样子我们就应该保证最终数据的方差大且协方差小,这里我们让数据矩阵 $X$ 同自己的转置 $X^T$ 相乘,可以看到只要我们将其化成对角矩阵就满足了方差最大,协方差为 0 的效果。
-
进行简单的公式推导
\[\begin{split} D &= \frac{1}{m}YY^T \\ &= \frac{1}{m}(PX)(PX)^T\\ &=P(\frac{1}{m}XX^T)P^T\\ &=PCP^T \end{split}\]从这个公式我们就可以看出,最终的结果应该对原始数据进行 $\frac{1}{m}XX^T$ 的处理之后,在找一组基能把它画成对角矩阵。
-
降维
可以看到最终的数据的维度是和基的数量有关的,而基的数量又和最终的特征值有关,所以当我们只取前 $K$ 大的特征值就完成了,降维到 $K$ 维的目的。
实现手法
具体实现的伪代码如下:
1 |
|
1 |
|