主成分分析,2019-03-26
参考博文
https://blog.csdn.net/hustqb/article/details/78394058
https://www.cntofu.com/book/85/ml/clean-feature/pca.md
PCA是最重要的降维方法之一,在数据压缩、消除冗余和数据噪音消除等领域都有着广泛的应用。
1. 诞生原因
在处理高维数据时,为简化计算量以及存储空间,需要对高维数据进行一定程度上的降维,同时需要尽量使数据不失真。
2. 常用降维方法
- PCA:Principal Component Analysis,主成分分析
- ICA:Independent Component Analysis,独立成分分析
3. 用途
在机器学习中,用途广泛,可用于图像、语言、通信的分析处理(常用语机器学习中提取特征之后的降维操作)
4. 基本原理
找到一组基,这组基张成一个特征空间,将原始数据映射到新的该空间,申城新的数据
5. PCA-具体原理
通过线性变换,将原始数据变换为一组各维度线性无关的表示,以此来提取数据的主要线性分量
【需要用到:方差、协方差】
6. PCA-实现方法
- 特征值分解(局限较多,比如变换的矩阵必须是方阵)
- 奇异值(SVD)分解
7. PCA-算法步骤
设有n条m维数据,要降为k维:
- 将原始数据按列组成m行n列矩阵X;
- 将X的每一行(代表一个属性字段)进行零均值化;
- 求出协方差矩阵C = 1/m * (X*X^T);
- 求出协方差矩阵的特则值及对应的特征向量;
- 将特征向量按对应的特征值大小从上到小排列成矩阵,取前k行组成矩阵P;
- Y = P * X即为降维到k维后的数据。
8. PCA-算法总结
优点:
- 仅仅需要以方差衡量信息量,不受数据集以外的因素影响;
- 各主成分之间正交,可消除原始数据成分间的相互影响的因素;
- 计算方法简单,主要运算时特征值分解,易于实现。
缺点: - 主成分各个特征维度的含义有一定的模糊性,不如原始样本特征的解释性强;
- 方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃后可能对后续数据处理有影响。
作为一个非监督学习的降维方法,它只需要特征值分解,就可以对数据进行压缩,去燥。因此在实际场景应用很广泛。
为克服PCA的一些缺点,出现了很多PCA的变种,如为解决非线性降维的KPCA,还有为解决内存限制的增量PCA方法-Incremental PCA,以及解决稀疏数据降维的PCA方法-Sparse PCA等。
9. 实现代码
PCA的python实现代码:https://github.com/hustqb/data-modeling/blob/master/reduction/PCA.ipynb