打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
新宇教你机器学习之 PCA
userphoto

2014.03.20

关注
General Description


当数据维数过大的时候,会有很多问题。比如说

  • Computational efficiency会变低
  • 可能会引起overfitting的问题
  • 无法visualize data

Principle Component Analysis主要是用来降低数据的维数,当然前提条件是尽量不改变数据的特性。


比如说有下列二维数据,每个“叉”代表一个数据点。PCA会分析出数据主要分布的轴和次要分布的轴。

下图的U1就是PCAprinciple componentU2是次要component。在PCA中,他们的关系总是orthogonal的。U1是通过最大化数据的variance来找到的。而U2在这里可以称为noise

这是一个二维的数据,如果你想用PCA降低维数,那么PCA的结果会忽略U2轴。以U1作为新的basis。所有数据变成单纯的一个U1方向的值。由此把一个二维数据转化为了一维数据。



得到新的一维数据的方法也很简单:就是拿原有数据的矩阵乘以向量U1。原始数据格式必须是m2列。这里m对应的是每一个observation2列对应的是数据的维数。

PCA中,改变后的数据我们称为scoresu1u2我们称为loadings


Implementation


Matlab自带的PCA处理function叫做princomp(),如果想要自己implement的话可以按照如下的方法:


1. 预处理:

Zero Mean Out

首先要把每一维的数据都减去各自的平均数。


Unit Variance (OPTIONAL)

当数据的各个维数单位不统一的时候,才需要这一步。如果是相同的单位,可以省略这个步骤。

把每一维数据都除以各自的variance

 

2.预处理之后,求出数据的covariance matrixcorrelation matrix单位不统一的话)

不熟悉如何求covariance的话,可以上网查或者去找一些统计学的资料看一下。在matlab中,可以通过cov()求出covariance matrix

 

3. 求出covarianceeigenvectoreigenvalue

每个eigenvalue都对应一组eigenvector。最大的eigenvalue对应的eigenvector就是PCAprinciple component

假设有一个N维的数据,你想要降低到k维。那么就取top k eigenvalue对应的eigenvector就可以了。

matlab中,可以通过eig()求出eigenvalueeigenvector

 

当数据量和数据维数非常大的时候,用covariance的方法解PCA会变得非常inefficient


Singular Value Decomposition(SVD)


线性代数中的Singular Value DecompositionSVD)为解决这个问题提供了非常好的方法。

SVD说,任意矩阵X都可以被分解成:



我们简单地推导一下:

可是这有什么意义呢?

 

回想一下:

如果有一个mn列的数据,mobservationnfeature维数。



Power Iteration

还有另一种方法可以计算Principle component,叫做Power Iteration

这种方法有点像牛顿迭代。是一个不停的循环,更新,直到收敛的方法。

假设你现在有一个mn列的数据,mobservationnfeature的维数。

首先normalize them

求出covariance matrix。假设它叫做A

接着需要猜一个初始的eigenvector的值,normalize it。任何值都可以,但是要n行一列。假设它叫做b0.

之后开始循环:



下面贴上我自己写的一个简陋的Power iteration代码。经测试和matlab自带princomp()得到相同结果:








本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
PCA数学原理
PCA降维算法总结以及matlab实现PCA(个人的一点理解)
降维算法:主成分分析 VS 自动编码器
几种常见模式识别算法整理和总结
matlab实现主成分分析 princomp函数 PCA中有这个函数
哈工大硕士生用 Python 实现了 11 种经典数据降维算法,源代码库已开放
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服