PCA降维算法

一些多维信号的处理如图像,其维度等于其像素数,若直接用于识别的计算,计算量极大。PCA是降维的算法,等同于变换矩阵为协方差矩阵时的K-L变换,其妙处不次于图像压缩编码中的DCT变换。在人脸识别等应用中,PCA用于降维,带来的好处是维度减少,从而减少计算量。

以matlab中的应用为例,有一个4行8列(即样本数为4,维数为8)的矩阵X如下:

>> X=[28     8     8    34    11    26     5    40;23     39    30    37    45    49    48    43;0      15    13    22     7     3     0     4;16     26    32     4    41    22    38    19]


X =


    28     8     8    34    11    26     5    40
    23    39    30    37    45    49    48    43
     0    15    13    22     7     3     0     4
    16    26    32     4    41    22    38    19


%对其执行主成分分析

>> [C,S,L]=princomp(X)


C =


    0.1749    0.3266   -0.5260    0.5043   -0.0473   -0.1923    0.0683   -0.5366
    0.2961   -0.1630    0.4653    0.7100   -0.2288   -0.1257   -0.1855    0.2501
    0.2447   -0.2781   -0.0008   -0.3671   -0.4369   -0.2495   -0.5755   -0.3790
    0.0484    0.5227    0.6438   -0.1672    0.2200   -0.3282    0.0771   -0.3463
    0.4657   -0.2536   -0.1057   -0.0115    0.7979   -0.0779   -0.2540    0.0154
    0.4290    0.3071    0.1031   -0.0532   -0.0989    0.8163   -0.1290   -0.1244
    0.5730   -0.2497    0.0139   -0.2032   -0.2007   -0.1357    0.7134   -0.0127
    0.3005    0.5434   -0.2652   -0.1859   -0.1393   -0.2942   -0.1832    0.6083


S =


  -17.4956   30.4765   -8.2819         0         0         0         0         0
   47.5771    8.5765    9.2663         0         0         0         0         0
  -45.0906  -11.8355    9.5006         0         0         0         0         0

   15.0091  -27.2175  -10.4850         0         0         0         0         0


L =


  1.0e+003 *

    1.6094
    0.6277
    0.1182
         0
         0
         0
         0
         0

得到的C为特征向量(列向量)构成的矩阵,各特征向量(按其对应的特征值从大到小的顺序)从左向右排列。从S可以看出变换后只需要保留三个维度就能够达到主成分的贡献率100%。L是排序后特征值(从大到小的顺序)。

原始样本数据X的协方差矩阵的特征值非负,并且其正的特征值个数不大于min(样本数, 维数), 也就是说如果样本数小于维数,其PCA处理后的维数必然小于实际维数。




你可能感兴趣的:(算法及人工智能,代码/脚本/命令行/可执行文件)