PCA 学习

来源:互联网 发布:淘宝甩手掌柜工具箱 编辑:程序博客网 时间:2024/05/16 01:20

PCA,也就是PrincipalComponents Analysis,主成份分析,是个很优秀的算法,按照书上的说法:

寻找最小均方意义下,最能代表原始数据的投影方法

然后自己的说法就是:主要用于特征的降维

另外,这个算法也有一个经典的应用:人脸识别。这里稍微扯一下,无非是把处理好的人脸图片的每一行凑一起作为特征向量,然后用PAC算法降维搞定之。


PCA的主要思想是寻找到数据的主轴方向,由主轴构成一个新的坐标系,这里的维数可以比原维数低,然后数据由原坐标系向新的坐标系投影,这个投影的过程就可以是降维的过程。

                                       http://www.cs.otago.ac.nz/cosc453/student_tutorials/principal_components.pdf

基础

  假设X是一个m*n的矩阵,是由样本数据构成的矩阵。其中m表示样本的属性维数,n表示样本的个数。现在要对X进行线性变换变成另一个矩阵Y,使得Y的协方差矩阵为对角矩阵,这样的Y就认为是对原始矩阵X提取主成分后的矩阵,实际过程中只需取Y的前面主要的行即可。

  X变换到Y的线性变换公式为:

  

  X和Y的协方差计算方法为:

  

  

  从下面的公式可以看出Cy和Cx的关系为:

  

  因为Cx是对称矩阵,对Cx进行特征值分解就可以将其变换成对角矩阵,见下面的公式推导:

   

  公式中的P和E满足:

   

  其中D是由Cx的特征向量构成的对角矩阵。P是线性变换矩阵,P的每一行都是Cx矩阵的特征向量,且P是正交矩阵,一般情况下把特征值大的特征向量排在矩阵前面几行。

  由此可知,求出P后就可以求出X主成分矩阵了。

  另外,还可以求出PCA的白化矩阵,PCA的白化矩阵就是特征向量去相关的矩阵,白化矩阵的协方差阵一般为单位矩阵,在PCA中可以这么求:inv(sqrt(D))*E'。普通的PCA算法可以将输入矩阵X变成主成分矩阵Y,尽管Y的协方差矩阵是个对角矩阵,但不一定是单位矩阵,如果对Y继续使用白化操作,则Y的协方差矩阵就变成了单位矩阵了。

0 0
原创粉丝点击