当前位置: 代码迷 >> 综合 >> 主成分分析(Principal Component Analysis, PCA)
  详细解决方案

主成分分析(Principal Component Analysis, PCA)

热度:8   发布时间:2023-12-14 20:50:56.0

主成分分析,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

  相关解决方案