码迷,mamicode.com
首页 > 其他好文 > 详细

主成份分析(Principal Components Analysis)

时间:2014-12-26 16:51:22      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:pca   算法   机器学习   

因子分析是基于概率模型的基础上,利用EM算法的迭代,对参数进行估计。主成份分析(Principal Components Analysis, PCA)仅仅通过的线性变幻,用少数几个主分量来近似的表示所有的变量,以达到降低维度的目的。

一、  规范化(normalize)

规范化的目的是将不同尺度的数据化为同一尺度。规范化的步骤如下:

(1)令技术分享

(2)将所有技术分享替换为技术分享

(3)令技术分享

(4)将所有技术分享替换为技术分享

其中,步骤(1)和步骤(2)将数据的均值转换为零;步骤(3)和步骤(4)使得数据都为单位方差,使得不同属性的数据视为同一规格。

步骤(3)(4)并不是必要步骤,执行与不执行步骤(3)(4)得出的结果可能不尽相同。Andrew Ng认为,如果我们在特定属性的尺度划分上有着明确的先验知识,那么,就无需进行步骤(3)(4),如:灰度图像的每个像素都是用集合{0,1,…,255}中的元素表示。

二、  示例

为了直观的理解主成份分析,我们以二维数据为例。假设图1述数据是已进行规范化后的数据:

技术分享

图1

假设我们将数据投影到直线技术分享(如图2所示),可以看出原始点投影到技术分享上的点具有较大的方差。

技术分享

图2

假设我们将数据投影到直线技术分享(如图3所示),可以看出原始点投影到技术分享上的点具有较小的方差。

技术分享

图3

因此在直线技术分享方向变异很大,而在直线技术分享方向变异很小。可以形象的认为图2像一块被压扁的近似直线的平面,其宽度很小,可以近似忽略。因此能够比较好的代表原始点的趋势。

三、  算法

主成份分析目的就是使得数据点在特定的向量上的投影方差最大。而我们就是要求出这个向量。

假设各样本技术分享已经进行了规范化,并且均值为零,且有单位向量u,点x在u上的投影可以表示成技术分享。那么我们需要使在各点x在u上投影的方程最大:

技术分享

其中,技术分享为样本的协方差。换个角度,我们也可以把该问题看作是下列优化问题:

技术分享

生成拉格朗日算子:

技术分享

技术分享技术分享的偏导:

技术分享

从上式可以看出,其实质就是要求出协方差矩阵的特征值。又由于协方差矩阵是正定的,因此其有n个特征值,经过从大到小排序,有技术分享。如果特征值为0,则说明在对应的分量在统计中不必讨论。而如果特征值很小,他的影响可以忽略不记。求出特征值后,与特征值技术分享相对应的特征向量技术分享就可求出。

下面引入累计贡献率

设协方差矩阵技术分享具有n个排序后的特征值技术分享,即技术分享: ,则称技术分享为第i个主成份的贡献率,称技术分享是前k个主成份的累计贡献率,累计贡献率表示这k个主成份能够多大程度上代表原始数据。对应的向量技术分享称为前k个主成份。我们通过设定累计贡献率的阈值来确定主成份的数量。

当确定k的值以后,可以通过对x的线性变幻求出新的向量y,y的维度为k,低于x的维度n。

技术分享

四、  应用

主成份分析主要有一下三种作用:

(1)   数据压缩

将高维的数据压缩至二维或三维,可以将数据进行可视化表达,帮助数据的使用者更加清晰直观的把握数据所反映的特征和规律。

(2)   降维

当数据的维度很大时,对高维数据的计算可能会耗费大量的计算资源,通过PCA可以降低计算的复杂性避免过拟合现象的发生。

(3)   降噪

PCA也可以看作是降噪算法:通过PCA,可以找到能够代表一个总体的主要特征,而避免无关紧要数据的干扰。

五、  总结

主成份分析就是求出原始数据矩阵的协方差矩阵对应的特征值和特征向量,对特征值进行由大而小的排序,再根据特征值对应的特征向量进行线性变换,得到新的向量(新的向量间相互正交)。通过设定阈值可以用低维的新向量近似表示高维的原向量(协方差矩阵为非奇异的);若协方差矩阵为奇异的,且零特征值较多,这种情况使用低维的新向量也可以完全表示高维原向量。

主成份分析(Principal Components Analysis)

标签:pca   算法   机器学习   

原文地址:http://blog.csdn.net/linkin1005/article/details/42171387

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!