PCA算法

一、算法思想的理解

       一般教材对主成分分析法(PCA)的描述是通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。我认为通俗的说,就是通过线性变换将高维数据投影到低维空间中来实现数据降维的目的。其中的关键就是怎么投影能使得投影后的数据包含最多的原数据点,也就是使降维后的数据最接近原始数据。一个极端的例子,投影后所有的点都映射到一起,那么几乎所以的原始信息都丢失了,所以如果映射后数据点分散,就能保留更多的原始信息。

       使数据点分散,首先想到的就是使映射后的数据点方差值最大。首先分析最简单的情况:二维降到一维,找到一个投影方向使得方差最大就可以了。再考虑复杂一点的情况,三维降到二维,类比之前,我们会希望先找到一个方向使得投影后方差最大,然后再找第二个方差最大的方向。这是我们会发现找到的方向与第一个方向重合,这显然是没有意义的。因此,只有方差这一个约束条件此时显然不够了。为了使不同字段能尽可能多的表示原始数据,最好的情况就是不同的字段之间不存在相关性。为了达到这个目的,我们希望使投影后的各个字段间的协方差为零。一般情况下,在机器学习中,数据被表示成向量的,因此投影可通过矩阵的基变换来实现。至此,我们可以将PCA的优化目标简单总结为:将一组N维向量降维K为(K小于N),目标是选择K个单位正交基,使得原始数据变换到这组基上后,各字段两两之间协方差为0,各字段的方差尽可能的大。

二、具体算法步骤

(摘自PCA数学原理

  1. 将原始数据按列组成n行m列矩阵X
  2. 将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
  3. 求出协方差矩阵C=1/mXXT(X的转置)
  4. 求出协方差矩阵的特征值及对应的特征向量
  5. 将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
  6. Y=PX即为降维到k维后的数据  

三、具体实现


matlab中自带的二维降到一维的一个实现


PCA数学原理 http://blog.codinglabs.org/articles/pca-tutorial.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值