主成分分析(principal factor analysis),简称PCA,是机器学习中非常常见的压缩降维方法。为什么需要压缩降维?是由于高维的样本本身存在冗余、稀疏的特点,直接把高维样本用于拟合或者模式识别,极其容易出现过拟合。而在处理实际问题时,与学习任务相关的也许仅是高维样本的某个低维分布,因而需要降维。(举个例子,如……)
PCA的降维思想是,在高维的样本空间中,寻找一个低维的超平面,把所有高维样本投影于此超平面上,得到低维样本,并且使投影误差最小,或者使投影得到的样本最大可分。
紧接着上述提到的两种性质,在描述PCA的降维思想时,有以下两种定义方式:
- 最小误差形式
- 最大方差形式
可以从数学推导上证明,两种定义方式最终导出的结果等价,可以得到一样的算法。(两种方法的数学推导过程有时间再补充……)
(算法流程待补充……)
总结来说,主成分分析涉及到计算数据集的均值和协方差矩阵,然后寻找协方差矩阵的对应于个最大特征值的个特征向量,从而得到投影矩阵。
PCA与SVD的关系主要体现在求解特征向量的过程。在一般介绍PCA算法原理的资料中,均是要先求得样本的协方差矩阵,然后从协方差矩阵中求解得特征值和特征向量。然而,对于归一化的样本,协方差矩阵(待补充数学证明),而某些SVD的实现方法可以从样本矩阵中直接求得,而不用先计算协方差矩阵,降低计算量,提高计算效率。
奇异值分解(singular value decomposition),简称SVD,是线性代数里一个非常重要的概念。SVD的目的是求取矩阵的特征值和特征向量,与矩阵的特征分解有密切的联系。但与特征分解不同的是,特征分解要求矩阵必须为方阵,而奇异值分解则无此要求,所有矩阵都可以用SVD求得其特征值和特征向量。
(此处补充SVD的定义,左奇异矩阵、右奇异矩阵等,有必要再补充SVD的求解过程)
(简单的Python实现)
(举特征脸的例子)
列举一些相关网站
PCA:
http://www.cnblogs.com/LeftNotEasy/archive/2011/01/08/lda-and-pca-machine-learning.html
http://www.cnblogs.com/pinard/p/6239403.html
https://blog.csdn.net/puredreammer/article/details/52255025
http://scikit-learn.org/stable/modules/decomposition.html#pca
SVD:
http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html
https://www.cnblogs.com/pinard/p/6251584.html
http://www.ams.org/publicoutreach/feature-column/fcarc-svd
https://blog.csdn.net/u010099080/article/details/68060274