PCA(Principal Component Analysis)之个人理解

来源:互联网 发布:java性能分析工具 编辑:程序博客网 时间:2024/05/22 12:30

今天看论文,看到了PCA,顺便记录下来,但是PCA最经不是经常使用了,因为他的鲁棒性太差,人脸识别上对光照、姿态、表情、噪声都不鲁棒。现在做人脸识别一般用LBP和LDA,LBP对光照鲁棒,而LDA的分类效果好一些。

可以用PCA对图片进行降维。

下面步入正题,开始说PCA:

PCA即主成分分析:

假如我现在有80张训练集,我要对每一张图片进行降维,也可以说求这张图片的特征。加入这80张图片是100*100的,我们可以定义一个80*10000的矩阵这里记为A

然后将这80张图片放入这个矩阵中,每一行一张图片。然后求这个矩阵的平均值矩阵,即也是80*10000的,记为B

然后A-B=C,这个C称为特征脸(在人脸识别中)。

我们计算C*C的转置得到一个10000*10000的矩阵,记为D,求这个矩阵的特征值,特征向量,取特征向量的前d个,则是降为d维。

假如d=20,我们现在就有一个10000*20的矩阵,记为E,

将B*E得到的矩阵就是我们想要的矩阵,一个80*20的矩阵,每一行就是一张图片的特征,就能代表这张图片,同样也从原来的100维降到了20维,目的达到了也。

下面我们用图来说明下:比较直观点



我们已经从训练图片中得到了自己想要的每一张图片的特征,即那个80*20的矩阵。每一行代表一个图片。

现在我们有一张测试集的图片,我们如何来进行测试呢??

加入我们测试集的图片也是100*100的, 那么我们就可以得到一个1*10000的矩阵,记为F,将F*E,我们就可以得到一个1*20的矩阵,利用这个矩阵和80*20矩阵中的每一行做欧式距离。这个我们就可以找出测试的这张图片是什么,他和谁的欧式距离越小,则说明他的哪张图片越接近。同样用图说明:



如果是人脸识别,就能知道这个人是谁。

0 0