一、什么是PCA
PCA,即PrincipalComponents Analysis,也就是主成份分析;
通俗的讲,就是寻找一系列的投影方向,高维数据按照这些方向投影后其方差最大化(方差最大的即是第一主成份,方差次大的为第二主成份...
如下图:数据点沿该方向投影后,方差最大,投影之后,由于各个点之间的距离之最大化的,因此彼此之间是最容易区分的
二、一些应用
1、数据降维
比如比较常见的人脸识别,假设有10副脸部图像,每副图像存贮为512*512大小的矩阵,经过特征提取后features可能为10000甚至更多,形成一个10*10000的矩阵;针对如此多的特征进行识别计算量很大同时也没有必要(因为一部分特征就已经反应了脸部的大部分信息)。但同时,人为的(指主观的)对这些特征进行筛选也很可能会把很多有用的信息剔除掉了;这时PCA就派上用场了,通过PCA降维的方法就可以控制特征的多少了(通常取Score>85%的前N个主成份就够了,还视具体情况而定吧)。关于PCA降维的应用与理论,PCA算法学习_1(OpenCV中PCA实现人脸降维),讲的很清楚了。
2、特征分析、选择
常用PCA进行数据降维,但使用PCA进行特征选择的案例并不常见。而使用PCA、小波变换等方法可以做到将维数降低、以简化后续分类等过程的复杂度,但这些降维方法本身的计算量也不小,在一些应用场景中需要在线实时的进行数据处理时,在保障模型预测准确性的基础上,模型当然越简单消耗的资源越少越好。面对海量特征,其中每个特征对模型预测准确性的贡献是有所不同的,某个特征与PCA主成分方向夹角越小(可用余弦相似性衡量),该特征对PCA主成分的贡献就越大,新特征F与原特征矩阵X的关系可用X的特征向量A联系:
F=Af
三维情况下,新特征F与原特征f变换关系表示为:
则原特征fj对新特征F的贡献通过下式计算:
贡献度Conj的大小及衡量了原有的某个特征对所有新特征的重要程度。
若原特征维数巨大,在线分析的应用中对其进行PCA的降维操作也有一定的计算量。在模型构建之初,即可使用PCA方法,通过计算特征贡献度Con,选取贡献度大的一些特征来直接训练模型以及后续的分类预测工作。
以上是个人实践中的一些总结,欢迎批评指正~