赞
踩
本部分以知乎用户
论智
对
CrossValidated的人气答主 amoeba 的文章的翻译为基础,做了一定量的修改。 原文 Making sense of principal component analysis, eigenvectors & eigenvalues
amoeba设想了一个大家庭聚餐的场景,大家突然对PCA是怎么回事很感兴趣,于是你逐一向家庭成员(曾祖母,祖母,母亲,妻子,女儿)解释,每个人都比上一个人内行一点。
曾祖母:我听说你正研究P……C……A。我想知道它是什么……
你:呃,这只是一种总结某些数据的方法。看,桌子那边有一些红酒瓶。我们可以通过色泽、酒精度、年份等描述每瓶红酒。这样可以根据酒窖中每瓶红酒的不同特性编制一张完整的列表。但是其中很多属性是相关的,因此会出现一些冗余。因此我们可以通过更少的特性总结每瓶酒!这正是PCA做的。
祖母:很有趣!所以PCA会检查哪些特性是冗余的,然后丢弃它们?
你:问得好,奶奶!不,PCA并没有选择一些特性然后丢弃其余。相反,它创建一些新特性,结果这些新特性能够很好地总结我们的红酒列表。当然,这些新特性是由旧特性构建的;例如,一个新特性可能通过计算年份减去酸度或其它类似的组合得出(我们称之为线性组合)。
母亲:嗯,听起来不错,但我还没有很了解透彻。你说的“总结”红酒列表的新PCA特性具体指什么?
你:对于这个问题,我猜我可以给出两个不同的答案。第一个答案是寻找一些在所有红酒中很不相同的属性(特性)。事实上,想象你得到了一个对于大多数红酒而言都一样的特性。那帮助不大,对不对?红酒和红酒之间很不一样,而你的新属性让它们看起来都差不多了!这肯定是一个错误的总结。相反,PCA寻找能尽可能体现红酒差异的属性。
第二个答案是寻找一些属性,这些属性允许你预测,或者说“重建”原本的红酒特性。想象你得出了一个和原本的特性没什么关系的属性;如果你仅仅使用这一新属性,你不可能重建原本的特性!这也不是一个好的总结。所以PCA寻找能够尽可能重建原始特性的属性。
妻子:但是,亲爱的,这两个PCA的“目标”听起来可不一样,为什么它们会是等效的?
你:嗯。也许我应该画一点东西,这样会更形象一些(你拿了一张纸巾,然后开始涂鸦)。让我们挑选两个红酒特性,也许是颜色浓淡和酒精含量——我不知道它们是否相关,但是让我们想象它们是相关的。不同红酒的散点图可能是这样的:
这一片“红酒云”中的每个点代表一种特定的红酒。你可以看到,两种属性(x轴和y轴)是相关的。在这片红酒云的中央画一条直线,将所有点投影到这条直线上,我们可以构建一个新属性。这一新属性将由 w 1 w_1 w1x+ w 2 w_2 w2y的线性组合定义,每条线对应 w 1 w_1 w1和 w 2 w_2 w2的特定值。
接下来看好了——下面是不同的直线上的投影会是怎么样的(红点是蓝点的投影):
正如我之前所说的,PCA会根据两种不同的“最佳”的标准找到“最佳”的直线。首先,这条线上的差异应该最大化。注意观察当直线旋转的时候,红点是如何“散布”(我们称之为“方差”)的;你能看到它们何时最大化了吗?其次,如果我们基于新特性(红点的位置)重建原本的两个特性(蓝点的位置),连接红线的长度将给出重建误差。注意观察当直线旋转的时候,红线的长度是如何改变的;你能看到它们的总长度何时最小化了吗?
如果你注视上面的动画有一会儿的话,你会注意到“最大方差”和“最小误差”将同时达到,也就是当直线指向我在红酒云两侧标出的品红色短线时。这一直线对应于PCA将构建的新红酒属性。
顺便说下,PCA代表“主成分分析”(principal component analysis),而这个新属性称为“第一主成分”。同时,我们通常不说“属性”(property)或“特性”(characteristic),而说“特征”(feature)或“变量”(variable)。
女儿:爸爸好厉害!我想我知道为什么这两个目标产生一样的结果?本质上这是因为勾股定理,不是吗?我还听说PCA多少和本征向量、本征值有点关系;图中它们在哪里呢?
你:哈哈不愧是我的女儿!从数学上说,我们通过每个红点到红酒云中心的均方根距离来衡量红点的散布;正如你所知的,这叫做方差。另一方面,整体的重建误差通过相应的红线的均方根距离来衡量。然而由于红线和黑线间的角度永远是90度,两个量之和等于红酒云中心与每个蓝点的均方根距离;这正是勾股定理。当然,这些均方跟距离不依赖于黑线的朝向,因此方差越高,误差就越低(因为两者之和是常数)。这里有一个以上含糊论证的准确版本。
你可以把黑线想象成硬质杆,然后把红线想象成弹簧。弹簧的势能和它的长度平方成正比(物理学上这称为胡克定律),所以杆将调整自己的朝向以最小化这些平方距离的总和。我做了一个关于它的模拟,加上了一点摩擦力。
关于本征向量和本征值。你知道协方差矩阵吧;在我的例子中它是一个2x2的矩阵
[ 1.07 0.63 0.63 0.64 ] \left[
这意味着x变量的方差是1.07,而y变量的方差是0.64,它们之间的协方差是0.63。由于这是一个对称正方矩阵,给定它的本征向量,选用一个新的直角坐标系可以使其对角化(这称为谱定理)。对角上的值就是对应的本征值。在这个新坐标系中,协方差矩阵是对角化的,看起来大概是这样:
[ 1.52 0 0 0.19 ] \left[
这意味着,现在点之间的相关性为零。很明显,投影的方差将由特征值的加权平均决定。因此,选择第一组坐标轴上的投影将达到最大可能方差(1.52)。由此得出,第一主成分的方向由协方差矩阵的第一个本征向量指定.
你也可以在旋转的图像上观察到这一点,图像上有一条与黑色直线正交的灰色直线;它们一起组成了一个旋转坐标系。试着留意在这一旋转坐标系中,何时蓝点变得不相关。答案仍然是黑色直线指向品红色的短线的时候。现在我可以告诉你我如何找到这两根短线的:它们标记了协方差矩阵的第一个本征向量的方向,在这个例子中是(0.81, 0.58)
。
听了上面这个故事,相信大家现在对 PCA 有了一个初步的了解,
总结一下 PCA 的步骤:
设有m条n维数据。
1)将原始数据按列组成n行m列矩阵X
2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
3)求出协方差矩阵 C = 1 m X X T C=\frac{1}{m}XX^\mathsf{T} C=m1XXT
4)求出协方差矩阵的特征值及对应的特征向量
5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
6) Y = P X Y=PX Y=PX 即为降维到k维后的数据。
再举个例子加深下印象:
以
( − 1 − 1 0 2 0 − 2 0 0 1 1 )
为例,我们用PCA方法将这组二维数据其降到一维。
因为这个矩阵的每行已经是零均值,这里我们直接求协方差矩阵:
C = 1 5
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。