ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

主成分分析法(PCA)

2020-12-04 19:35:30  阅读:239  来源: 互联网

标签:误差 reduce 矩阵 分析法 成分 投影 PCA 向量


主成分分析法(PCA)

PCA的思想

降维的作用

  • 数据压缩
  • 加速学习算法
  • 可视化

PCA的思想: 试图找到一个低维的平面,来对高维数据进行投影,以便最小化投影误差的平方,以及最小化每一个点与投影后的点之间的距离的平方值.

一个PCA的直观理解: 将二维空间映射到一维空间上

image-20201201143645366

如何理解降维: 对于本图,如果我们将每一个点朝着红色直线作垂线投影,那么就可以通过直线上的向量长度来区别每个点.

这种投影方式会忽略掉点到直线的垂直距离的大小,因此如果存在两个点的连线垂直于这条红线,那么这就不是一个非常优秀的降维(重构误差较大)

image-20201201144215767

更加高级的应用: 将 n 维空间映射到 k 维空间上,那么就需要找到k个向量作为基底,此时每个点都可以近似表示为这k个线性无关的向量的线性组合. 如图找到两个2维向量作基底,映射3维数据的例子

image-20201201144454494

在使用PCA时,我们希望每一个样本点到达投影面的距离都尽量地小,这有利于缩小重构误差.

PCA的实现

  • step1: 数据预处理

在进行PCA之前,首先需要对数据进行预处理,常用的数据预处理手段包括: 标准化,归一化,特征缩放

image-20201201145227019

  • step2:

假设我们想把n维数据降到k维数据,我们首先需要计算一个协方差矩阵(covariance matrix)

\[\Sigma = \frac{1}{m}\sum_{i=1}^{n}(x^{(i)})(x^{(i)})^T \]

这是一个n*n矩阵(x是n*1向量)

对于matlab和ocatave,使用如下代码进行计算

[U,S,V] = svd(Sigma); 
% svd是奇异值分解,对于这三个输出值,我们只需要结果U,它同样是一个n*n矩阵; 如果我们想将n维降到k维,只需要取前k个列向量;

image-20201201150736982

得到的矩阵我们称为U_reduce矩阵,它是一个n*k的矩阵

然后,我们再做运算\(Z = U\_reduce^T * X\),得到最终结果 , 即 k * 1向量

至此,将n维向量 X 降维到了 k 维向量 Z

对于整个样本集,共有m个这样的n维向量x,此时应该对每一个向量单独做PCA

压缩重现

如果在应用PCA时,如果点到投影面的距离不大,则重构误差较小,此时

\[X_{approx} = U_{reduce}*Z \\ 因为 Z = U_{reduce}^T * X \]

如何选择k值

优化目标: 最小化重构误差

\[J = \frac{1}{m}\sum_{i=1}^m ||x^{(i)}-x^{(i)}_{approx}||^2 \]

一个准则: 在满足下列表达式的情况下,所选的k可以尽量小

image-20201201152452571

标签:误差,reduce,矩阵,分析法,成分,投影,PCA,向量
来源: https://www.cnblogs.com/popodynasty/p/14087403.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有