PCA主成分分析

转载自http://blog.csdn.net/dlutbrucezhang/article/details/8718366

1. 问题

  • 比如拿到一个汽车的样本,里面既有以“千米/每小时”度量的最大速度特征,也有“英里/小时”的最大速度特征,显然这两个特征有一个多余。
  • 拿到一个数学系的本科生期末考试成绩单,里面有三列,一列是对数学的兴趣程度,一列是复习时间,还有一列是考试成绩。我们知道要学好数学,需要有浓厚的兴趣,所以第二项与第一项强相关,第三项和第二项也是强相关。那是不是可以合并第一项和第二项呢?
  • 而这里的特征存在噪声或者冗余。在这种情况下,需要一种特征降维的方法来减少特征数,减少噪音和冗余。主成分分析(PCA)可以解决上述问题,它的思想是将 n 维特征映射到k维上( k<n ),这 k 维是全新的正交特征,称为主元,是重新构造出来的特征,而不是简单地从n维特征中去除其余 nk 维特征。

    2. PCA计算过程

    假设我们得到的2维数据如下:

    行代表了样例,列代表特征,这里有10个样例,每个样例两个特征。可以这样认为,有10辆汽车, x 是千米/小时的速度,y是英里/小时的速度。

    第一步分别求 x y的平均值,然后对于所有的样例,都减去对应的均值。这里 x 的均值是1.81,y的均值是1.91,那么一个样例减去均值后即为(0.69,0.49),得到:

    第二步,求特征协方差矩阵, 这里只有 x y,求解得

    对角线上分别是 x y的方差,非对角线上是协方差。协方差大于0表示 x y若有一个增,另一个也增;小于0表示一个增,一个减;协方差为0时,两者独立。协方差绝对值越大,两者对彼此的影响越大,反之越小。

    第三步,求协方差的特征值和特征向量,得到

    上面是两个特征值,下面是对应的特征向量,特征值0.0490833989对应特征向量为第一列,这里的特征向量都归一化为单位向量。

    第四步,将特征值按照从大到小的顺序排序,选择其中最大的 k 个,然后将其对应的k个特征向量分别作为列向量组成特征向量矩阵。这里特征值只有两个,我们选择其中最大的那个,这里是1.28402771,对应的特征向量是第二列。

    第五步,将样本点投影到选取的特征向量上。假设样例数为 m ,特征数为n,减去均值后的样本矩阵为DataAdjust( mn ),协方差矩阵是 nn ,选取的 k 个特征向量组成的矩阵为EigenVectors(nk)。那么投影后的数据FinalData为
    FinalData(mk)=DataAdjust(mn)×EigenVectors(nk)

    得到结果是

    这样,就将原始样例的 n 维特征变成了k维,这 k 维就是原始特征在k维上的投影。上面的数据可以认为是特征融合为一个新的特征,该特征基本上代表了这两个特征。上述过程有个图描述:

    正号表示预处理后的样本点,斜着的两条线就分别是正交的特征向量(由于协方差矩阵是对称的,因此其特征向量正交),最后一步的矩阵乘法就是将原始样本点分别往特征向量对应的轴上做投影。

    如果取的 k=2 ,那么结果是

    这就是经过PCA处理后的样本数据,水平轴基本上可以代表全部样本点。整个过程看起来就像将坐标系做了旋转,当然二维可以图形化表示,高维就不行了。上面的如果 k=1 ,那么只会留下这里的水平轴,轴上是所有点在该轴的投影。

    这样PCA的过程基本结束。在第一步减均值之后,其实应该还有一步对特征做方差归一化。比如一个特征是汽车速度(0到100),一个是汽车的座位数(2到6),显然第二个的方差比第一个小。因此,如果样本特征中存在这种情况,那么在第一步之后,求每个特征的标准差 σ ,然后对每个样例在该特征下的数据除以 σ

    归纳一下,使用我们之前熟悉的表示方法,在求协方差之前的步骤是:

    其中 x(i) 是样例,共 m 个,每个样例n个特征,也就是说 x(i) 是n维向量。 x(i)j 是第i个样例的第j个特征。 μ 是样例均值。 σj 是第 j 个特征的标准差。

    3. PCA理论基础

    整个PCA过程貌似及其简单,就是求协方差的特征值和特征向量,然后做数据转换。但是有没有觉得很神奇,为什么求协方差的特征向量就是最理想的k维向量?这里主要有三个理论:分别是最大方差理论、最小错误理论和坐标轴相关度理论。这里简单探讨前两种,最后一种在讨论PCA意义时简单概述。

    3.1 最大方差理论

    在信号处理中认为信号具有较大的方差,噪声有较小的方差,信噪比就是信号与噪声的方差比,越大越好。如前面的图,样本在横轴上的投影方差较大,在纵轴上的投影方差较小,那么认为纵轴上的投影是由噪声引起的。因此我们认为,最好的 k 维特征是将n维样本点转换为k维后,每一维上的样本方差都很大。 比如下图有5个样本点:(已经做过预处理,均值为0,特征方差归一)

    下面将样本投影到某一维上,这里用一条过原点的直线表示(前处理的过程实质是将原点移到样本点的中心点)。

    假设我们选择两条不同的直线做投影,那么左右两条中哪个好呢?根据我们之前的方差最大化理论,左边的好,因为投影后的样本点之间方差最大。由于投影后均值为0,因此方差为:

    中间那部分很熟悉,就是样本特征的协方差矩阵( x(i) 的均值为0,一般协方差矩阵都除以 m1 ,这里用的是 m )。用λ来表示 1mΣmi=1(x(i)Tu)2 , Σ 表示 1mΣmi=1x(i)x(i)T ,那么上式写作
    λ=uTΣu
    由于 u 是单位向量,即uTu=1, 上式两这都左乘 u 得,uλ=Σu.
    We got it ! λ 就是 Σ 的特征值, u 是特征向量。最佳的投影直线是特征值λ最大时对应的特征向量,其次是 λ 第二大对应的特征向量,依次类推。因此,我们只要将协方差矩阵进行特征值分解,得到的前 k 大特征值对应的特征向量就是最佳的k维新特征,而且这 k 维新特征是正交的,得以前k u 后,样例xi通过以下变换可以得以新的样本。

    其中的第 j 维就是xi uj 上的投影。通过选取最大的 k u,使得方差较小的特征(噪声)被丢弃。

    3.2 最小平方误差

    假设有一些二维样本点,回顾我们前面探讨的是求一条直线,使得样本点投影到直线上的点的方差最大。本质是求直线,那么度量直线求的好不好,不仅仅只有方差最大化的方法。再回想我们最开始学习的线性回归等,目的也是求一个线性函数使得直线能够最佳拟合样本点,那么我们能不能认为最佳的直线就是回归后的直线呢?回归时我们的最小二乘法度量的是样本点到直线的坐标轴距离。比如这个问题中,特征是 x ,类标签是y。回归时最小二乘法度量的是距离 d 。如果使用回归方法来度量最佳直线,那么就是直接在原始样本上做回归了,跟特征选择就没什么关系了。因此,我们打算选用另外一种评价直线好坏的方法,使用点到直线的距离d来度量。

    (中间推导较复杂,但可以参照原作者的博客)结论就是:从不同的思路出发,最后得到同一个结果,对协方差矩阵求特征向量,求得后特征向量上就成为了新的坐标

    4. 总结

    PCA技术的一大好处是对数据进行降维的处理。可以对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果,同时最大程度的保持了原有数据的信息。PCA技术的一个很大的优点是,它是完全无参数限制的。在PCA的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关,与用户是独立的。但是,这一点同时也可以看作是缺点。如果用户对观测对象有一定的先验知识,掌握了数据的一些特征,却无法通过参数化等方法对处理过程进行干预,可能会得不到预期的效果,效率也不高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值