在今天的模式识别课程中,我的教授谈到了PCA,特征向量和特征值。
我了解它的数学原理。如果要求我查找特征值等,则可以像机器一样正确地进行操作。但是我不明白。我没有达到目的。我没有感觉到它。
我坚信以下报价:
除非您可以向祖母解释,否则您并不会真正理解。 - 艾尔伯特爱因斯坦
好吧,我无法向外行或奶奶解释这些概念。
- 为什么要使用PCA,特征向量和特征值?什么是需要对这些概念?
- 您将如何向外行解释?
在今天的模式识别课程中,我的教授谈到了PCA,特征向量和特征值。
我了解它的数学原理。如果要求我查找特征值等,则可以像机器一样正确地进行操作。但是我不明白。我没有达到目的。我没有感觉到它。
我坚信以下报价:
除非您可以向祖母解释,否则您并不会真正理解。 - 艾尔伯特爱因斯坦
好吧,我无法向外行或奶奶解释这些概念。
Answers:
想象一下一个大型家庭晚餐,每个人都开始向您询问有关PCA的问题。首先,您要向您的曾祖母解释。然后给你奶奶 然后给你妈妈;然后给你的配偶;最后,给你的女儿(数学家)。每次下一个人都不是门外汉。对话可能会这样进行。
曾祖母:听说您正在学习“小便看得见”。我不知道那是什么...
您:啊,这只是汇总一些数据的一种方法。你看,我们桌上有一些酒瓶。我们可以通过颜色,强度,年龄等来描述每种葡萄酒(请参阅此处显示的葡萄酒属性的非常直观的视图)。我们可以在酒窖中组成每种葡萄酒的不同特性的完整列表。但是其中许多将测量相关属性,因此将是多余的。如果是这样,我们应该能够总结出具有较少特征的每种葡萄酒!这就是PCA所做的。
祖母:这很有趣!因此,PCA会检查哪些特征是多余的并将其丢弃?
您:好的问题,奶奶!不,PCA不会选择某些特征而放弃其他特征。取而代之的是,它构建了一些新特性,从而很好地总结了我们的葡萄酒清单。当然,这些新特性是使用旧特性构建的;例如,可以将新的特征计算为酒龄减去酒的酸度水平或类似的其他组合(我们称其为线性组合)。
实际上,PCA会找到可能的最佳特征,即尽可能概括所有葡萄酒的特征(在所有可能的线性组合中)。这就是为什么它如此有用的原因。
母亲:嗯,这听起来确实不错,但是我不确定我是否理解。当您说这些新的PCA特性“概括”葡萄酒清单时,您实际上是什么意思?
您:我想我可以给这个问题两个不同的答案。第一个答案是,您正在寻找某些葡萄酒之间的葡萄酒特性(特征)有很大差异。确实,想像一下您拥有与大多数葡萄酒相同的特性。这不是很有用,不是吗?葡萄酒有很大的不同,但是您的新特性使它们看起来都一样!这肯定是一个不好的总结。取而代之的是,PCA会寻找能够在不同葡萄酒之间显示出尽可能多差异的属性。
第二个答案是您寻找可以预测或“重建”原始葡萄酒特性的属性。再次,假设您想出了一个与原始特性无关的属性;如果仅使用此新属性,则无法重建原始属性!同样,这将是一个糟糕的总结。因此,PCA寻求能够尽可能重建原始特征的属性。
令人惊讶的是,事实证明这两个目标是相同的,因此PCA可以用一块石头杀死两只鸟。
配偶:但是,亲爱的,PCA的这两个“目标”听起来是如此不同!为什么它们相等?
你:嗯。也许我应该画一点儿(拿一张餐巾纸然后开始乱涂乱画)。让我们选择两个酒的特征,也许是酒的黑暗度和酒精含量-我不知道它们是否相关,但让我们想象一下它们是相关的。以下是不同葡萄酒的散点图:
“酒云”中的每个点表示一种特定的葡萄酒。您会看到两个属性(此图上的和)是相关的。可以通过在酒云的中心绘制一条线并将所有点投影到该线上来构建新属性。此新属性将由的线性组合,其中每行对应于和某些特定值。
现在,请非常仔细地看一下这里-这是不同行的这些投影的外观(红色点是蓝色点的投影):
如前所述,PCA将根据“最佳”的两个不同标准找到“最佳”行。首先,沿这条线的值变化应最大。注意线旋转时红点的“传播”(我们称之为“方差”)如何变化;你看到什么时候达到最大值?其次,如果我们从新的两个特征(一个红色的点的位置)重建原始的两个特征(一个蓝色的点的位置),则重建误差将由连接的红线的长度给出。观察红线旋转时这些红线的长度如何变化;可以看到总长度何时达到最小?
如果您盯着动画看一段时间,您会注意到同时达到“最大方差”和“最小误差”,即当线指向我在酒云两边标记的洋红色刻度时。该行对应于PCA将建造的新葡萄酒属性。
顺便说一下,PCA代表“主要成分分析”,而这个新属性称为“第一主要成分”。而且,我们通常不是说“财产”或“特征”,而是说“特征”或“变量”。
女儿:很好,爸爸!我想我可以理解为什么两个目标产生相同的结果:基本上是因为毕达哥拉斯定理,对吗?无论如何,我听说PCA在某种程度上与特征向量和特征值有关。他们在这张照片上在哪里?
您:出色的观察。在数学上,红点的扩散是从酒云中心到每个红点的平均平方距离来衡量的;如您所知,它称为方差。另一方面,将总重建误差测量为相应红线的平均平方长度。但是,由于红线和黑线之间的角度始终为,这两个量的总和等于酒云中心与每个蓝点之间的平均平方距离;这正是毕达哥拉斯定理。当然,该平均距离不取决于黑线的方向,因此方差越大,误差就越小(因为它们的和是恒定的)。这个挥手的论点可以说得很精确(看到这里)。
顺便说一下,您可以想象黑线是实心杆,每条红线是弹簧。弹簧的能量与它的平方长度成正比(这在物理学上称为胡克定律),因此,杆将定向,以使这些平方距离的总和最小。我模拟了在存在粘性摩擦的情况下的外观:
关于特征向量和特征值。您知道什么是协方差矩阵;在我的示例中,它是由给出的 ×矩阵这意味着变量的方差是,变量的方差是,它们之间的协方差是。由于它是一个方形对称矩阵,因此可以通过选择一个新的正交坐标系(由其特征向量给定)来对角线化(顺便说一下,这称为谱定理)
您也可以在旋转的图形上看到这一点:有一条灰色的线与黑色的线正交;它们一起形成一个旋转坐标系。尝试注意在此旋转框架中蓝点何时不相关。答案再次是,它恰好在黑线指向洋红色刻度线时发生。现在,我可以告诉您如何找到它们:它们标记了协方差矩阵的第一个特征向量的方向,在这种情况下,它等于。
根据普遍的要求,我分享了Matlab代码来制作上述动画。
...then to your mother; then to your wife; finally, to your daughter (who is a mathematician)...
我继续:晚饭后-给自己。在这里,您突然卡住了……
这份手稿由林赛·史密斯我“主成分分析的教程”真的帮了我神交PCA。我认为向您的祖母解释仍然太复杂,但这还不错。您应该跳过计算本征等的前几位。跳至第三章的示例,并查看这些图。
我有一些示例,其中我研究了一些玩具示例,因此我可以理解PCA与OLS线性回归。我会尝试将其挖掘出来并发布。
编辑: 您并没有真正询问过普通最小二乘(OLS)和PCA之间的区别,但是由于我挖出了笔记,因此在博客上发表了有关它的文章。非常短的版本是y〜x的OLS,它使垂直于独立轴的误差最小化(黄色线是两个误差的示例):
如果要回归x〜y(与第一个示例中的y〜x相反),它将使误差最小化,如下所示:
PCA有效地使与模型本身正交的误差最小化,如下所示:
就像其他人所说的那样,更重要的是,在您拥有大量独立变量的情况下,PCA可以帮助您确定这些变量的线性组合最重要。上面的示例仅在一个非常简单的情况下帮助可视化第一个主成分的外观。
在我的博客文章中,我具有用于创建上述图形和计算第一个主成分的R代码。建立PCA直觉可能值得一试。在编写可复制内容的代码之前,我往往并不真正拥有某些内容。
让我们先做(2)。PCA使椭圆适合数据。椭球是扭曲的球形形状的多维概括,例如雪茄,薄煎饼和鸡蛋。所有这些都通过其主要(半)轴的方向和长度(如雪茄或鸡蛋的轴或煎饼的平面)进行了很好的描述。无论如何旋转椭球,特征向量都指向那些主要方向,而特征值则为您提供长度。最小的特征值对应于变化最小的最薄方向,因此忽略它们(将它们折叠成平整)会丢失相对较少的信息:这就是PCA。
(1)除了简化(上面),我们还需要精巧的描述,可视化和洞察力。能够减少尺寸是一个很好的事情:它可以更容易地描述数据,如果我们很幸运,以减少他们三个或更少,让我们画一幅画。有时,我们甚至可以找到有用的方法来解释图片中由坐标表示的数据组合,从而可以深入了解变量的联合行为。
该图显示了一些每个包含个点的云,以及包含每个云的50%的椭球和与主方向对齐的轴。在第一行中,云基本上具有一个主要成分,占所有变化的95%:这些是雪茄形状。在第二行中,云基本上具有两个主要成分,一个约为另一个大小的两倍,合在一起构成所有差异的95%:这些是煎饼形状。在第三行中,所有三个主要成分都相当大:这些是蛋形。
任何不表现出簇,卷须或离群值的“连贯” 3D点云都将是其中之一。这些图之一可将所有 3D点云(如果并非所有点都重合)描述为识别进一步聚类或图案化的初始出发点。
即使很难或不可能可视化这些尺寸,从您构想的构想中得出的直觉也可以应用于更高的尺寸。
嗯,这是对PCA的完全非数学的理解...
想象一下您刚刚开了一家苹果酒商店。您有50种苹果酒,您想弄清楚如何将它们分配到架子上,以便将口味相似的苹果酒放在同一架子上。苹果酒中有很多不同的口味和质地-甜度,酸度,苦味,酵母味,果味,澄清度,起泡等。因此,您需要做的是将瓶子归类为两个问题:
1)识别苹果酒组最重要的素质是什么?例如,与基于果味分类相比,基于甜味的分类是否更容易将苹果酒分为相似的口味组?
2)是否可以通过合并其中一些变量来减少变量列表?例如,实际上是否存在一个由“酵母性,清晰度和起泡性”组合而成的变量,并且该变量确实可以很好地进行品种分类?
这实质上是PCA所做的。主成分是变量,可以有效地解释数据集中的变化-在这种情况下,可以有效地区分组。每个主成分是您原始的解释变量之一,或者是一些原始解释性变量的组合。
我用“外行的术语”来回答,说PCA旨在使直线适合数据点(每个人都知道直线是什么)。我们称这些直线为“主要成分”。主成分与变量一样多。第一个主成分是您可以适合数据的最佳直线。第二个主要成分是您可以适合第一个主要成分的误差的最佳直线。第三个主成分是最适合您适应第一个和第二个主成分等的误差的直线。
如果有人问您“最佳”或“错误”是什么意思,那么这表明您不是“外行”,因此可以深入了解更多技术细节,例如垂直错误,不知道错误在哪里x或y方向,大于2或3个维度等。此外,如果避免参考OLS回归(“外行”可能也不理解),则说明会更容易。
特征向量和特征值本身并不是必需的概念,而是恰好是已经存在的数学概念。当您解决PCA的数学问题时,它最终等同于找到协方差矩阵的特征值和特征向量。
我可以给您我自己的PCA解释/证明,我认为它很简单,精巧,除了线性代数的基本知识之外,不需要任何其他信息。出来的时间很长,因为我想用简单易用的语言编写。
0 X ' 我 = X 我 - μ Σ 中号我= 1 | | X ' 我 | | 2
现在选择行。对于某些向量,我们可以将任何线描述为满足等式的点集。请注意,如果我们将线移动到与正交的某个矢量,则线上的所有投影也将移动,因此投影的均值将移动,因此投影的方差将保持不变。这意味着我们可以使线平行于自身移动,而不会更改这条线上的投影方差。再次为方便起见,让我们将自己限制为仅穿过零点的线(这意味着用描述的线)。v ,瓦特γ v γ γ X = α v
好吧,现在假设我们有一个向量来描述一条线的方向,这是我们搜索的线的可能候选者。我们需要计算线上的投影的方差。我们将需要的是投影点及其均值。从线性代数我们知道,在这种简单情况下,在上的投影为。从现在开始,让我们将自己限制为仅单位向量。这意味着我们可以简单地将点在上的投影长度写为。
在先前的一些回答中,有人说PCA会将与所选直线的距离的平方和最小化。现在我们可以看到它是真的,因为投影的平方和与距所选线的距离的平方和等于从点的距离的平方和。通过最大化投影的平方和,我们最小化了距离的平方和,反之亦然,但这只是一个深思熟虑的题外话,回到现在的证明。
至于投影的均值,让我们观察到是空间的某些正交基础的一部分,并且如果我们在该基础上的每个向量上投影数据点,它们的总和将被抵消(就像那样,因为在来自基础的向量就像在新的正交基础上写入数据点一样。因此,向量上所有投影的总和(我们称之和为)和其他基础上其他向量的投影之和(我们称其为)为0,因为它是数据点的均值。但是与正交!这意味着。
因此,我们的预测平均值为。好吧,这很方便,因为这意味着方差就是投影长度的平方和,或者用符号
好吧,突然之间出现了协方差矩阵。让我们简单地用表示它。这意味着我们现在正在寻找对于某些半正定矩阵最大化的单位矢量。
现在,让我们采用矩阵的特征向量和特征值,分别用和表示它们,使得。如果值不重复,则特征向量形成正交基础。如果是这样,我们选择特征向量的方式应使其形成正交基础。
现在让我们为特征向量计算。我们有
很好,这给我们表示。现在让我们取一个任意向量。由于特征向量形成正交基,我们可以写成,并且我们有。让我们表示。
现在让我们计算。我们将重写为的线性组合,并得到:
最后一个方程来自特征向量选择成对正交的事实,因此它们的点积为零。现在,由于所有特征向量也具有单位长度,因此我们可以写出,其中均为正,并且总计为。
这意味着投影的方差是特征值的加权平均值。当然,它总是小于最大特征值,这就是为什么它应该是我们选择的第一个PCA向量的原因。
现在假设我们想要另一个向量。我们应该从与已经选择的空间正交的空间中选择它,这意味着子空间。通过类推,我们得出结论,投影的最佳向量是。等等等等...
顺便说一下,现在应该很清楚,为什么保留的方差可以用。
我们还应该证明对向量的贪婪选择。当我们想选择要投影的矢量时,最好先选择最佳矢量,然后再从剩余的物体中选择最佳矢量,这并不是最好的主意,依此类推。我想指出,在这种情况下,这是合理的,没有任何区别。让我们用表示我们要投影到的向量。另外,我们假设向量是成对正交的。众所周知,这些向量上投影的总方差可以表示为其中
现在,让我们以某种正交的方式编写,其中包括。让我们将其余基础表示为。我们可以看到。因为,我们有,因此对于所有。
现在我们有一个仅与一个向量相似的情况,我们现在知道投影的总方差为其中和。这是另一个加权平均值,并且肯定不超过,它对应于投影在对应于最大特征值的特征向量上。
好吧,我来试试看。几个月前,我翻阅了大量文献,找到了我可以向非统计学家解释的直观解释。我发现使用拉格朗日乘数的推导最直观。
假设我们有高维数据-假设对昆虫进行了30次测量。这些昆虫在某些维度上具有不同的基因型和略有不同的物理特征,但是由于具有如此高的维度数据,很难分辨哪些昆虫属于哪一类。
PCA是一种通过以下方法减小尺寸的技术:
或者,用数学术语:
寻找满足这些约束的线性组合会导致我们获得特征值。为什么?
我建议您查阅《多变量数据分析简介》一书中的完整推导(第50页),但基本思想是限制了连续优化问题(最大化方差),使得系数a的a'a = 1(以防止出现这种情况)。当方差可以是无限的时)并受约束以确保系数正交。
这导致使用拉格朗日乘数进行优化,从而揭示了为什么使用特征值。我懒得打出来(抱歉!),但是从这一点来看,这个PDF很好地通过了证明。
我永远不会尝试向祖母解释这一点,但是如果我不得不大谈降维技术,那我将指向这个琐碎的投影示例(不是PCA)。假设您的Calder手机非常复杂。3维空间中的某些点彼此靠近,而其他的则不是。如果我们将此移动电话悬吊在天花板上,并从一个角度照射光,那么我们会投影到较低尺寸的平面(二维墙)上。现在,如果此移动设备主要在一个方向上较宽,而在另一个方向上较窄,则可以旋转它以得到有用性不同的投影。直观地讲,投影在墙上的一维皮包骨头形状的用处不大,所有阴影都重叠并且没有给我们太多信息。但是,如果我们旋转它,使光线照在宽广的一侧,我们可以更好地了解降维数据-点分布得更多。这通常是我们想要的。我想我祖母可以理解:-)
尝试非技术性...想象您有一个多元数据,一个多维的点云。当您计算其中的协方差矩阵时,(a)将云居中,即将原点作为多维平均值,则坐标系轴现在在云的中心交叉,(b)加密有关云的形状的信息以及如何通过方差-协方差条目在空间中定向。因此,有关整个数据形状的大多数重要信息都存储在协方差矩阵中。
然后,对该矩阵进行特征分解,并获得特征值列表和相应的特征向量数量。现在,第一个主成分是新的潜在变量,可以将其显示为穿过原点并沿云的最大方差(厚度)方向定向的轴。沿该轴的方差,即轴上所有点的坐标的方差为第一个特征值,以及在空间中相对于原始轴(变量)所引用的轴的方向由第一个特征向量定义:其项是它与那些原始轴之间的余弦值。第一成分上的数据点的上述坐标为第一主成分值或成分分数。它们被计算为(居中的)数据矩阵与特征向量的乘积。
“之后”第一场比赛 组件被测量后,可以说是从云中“删除”了,并考虑了所有变化,云的维数下降了一个。接下来,用第二个特征值和第二个特征向量-第二个pr重复一切。组件被记录,然后“删除”。等等。
因此,再次:特征向量是主成分的方向余弦,而特征值是主成分的大小(方差)。所有特征值的总和等于方差-协方差矩阵对角线上的方差之和。如果将存储在特征值中的“原始”信息转移到特征向量上,然后再将其添加到存储在其中的“原始”信息中,则会得到所谓的主成分加载;这些负载(因为它们同时包含两种类型的信息)是原始变量和主成分之间的协方差。
稍后PS我想特别强调一下本征向量和载荷之间的术语差异。许多人和某些软件包(包括其中的某些软件包R
)轻率地互换使用这两个术语。这是一个不好的做法,因为对象及其含义是不同的。特征向量是方向余弦,即PCA等于正交“旋转”的角度。载荷是特征向量,其中填充了有关旋转数据的变异性或大小的信息。载荷是组件和变量之间的关联系数,它们可以直接与变量之间计算的关联系数相比较-协方差,相关性或其他标量积,您将基于该PCA。特征向量和载荷都相似,因为它们在通过分量预测变量时提供回归系数(反之亦然!)。特征向量是通过原始成分分数预测变量的系数。负荷是通过缩放(标准化)的组件评分来预测变量的系数(难怪:负荷已经积累了有关变异性的信息,因此,必须放弃使用的组件)。不混合特征向量和载荷的另一个原因是,除PCA之外,还有其他降维技术(例如某些形式的因子分析)直接绕过特征向量来计算载荷。特征向量是特征分解或奇异值分解的乘积。某些形式的因子分析不使用这些分解,而是以其他方式得出负荷。最后,它是载荷而不是特征向量,通过它们可以解释分量或因数(如果需要解释它们)。加载是将组件贡献到变量中:在PCA(或因子分析)中,组件/因子将自身加载到变量中,反之亦然。在全面的PCA结果中,应报告特征向量和载荷,如图所示。在这里或这里。
另请参见载荷与特征向量。
由于PCA中的特征向量矩阵是正交的,并且其逆矩阵是其转置的,所以可以说,这些相同的特征向量也是通过变量反向预测分量的系数。但是,对于加载却不是这样。
好吧,一个完全非数学的答案:
如果您在一堆主题上有一堆变量,并且想将它们减少到相同主题上的变量变少,同时又损失了尽可能少的信息,那么PCA就是一种做到这一点的工具。
尽管它们经常给出相似的结果,但它与因子分析不同,因为FA试图从大量观察到的与潜在变量相关的观测变量中恢复少量潜在变量。
在二维中进行数学运算是最简单的。
每个矩阵都对应一个线性变换。可以通过在平面上拍摄一个令人难忘的图形并查看该图形如何被线性变换变形来可视化线性变换:
(图片:弗拉尼根和卡兹丹)
处理真实数据的人们对特征向量和线性变换感兴趣的原因是,在不同的上下文中,“线性”()可以涵盖非常有趣的内容。例如,请考虑一下,如果给和赋予了新的含义,或者和来自某个有趣的字段,或者和来自某个有趣的空间,则该属性的含义是什么。例如:
PCA本身就是另一个例子,这是统计学家最熟悉的例子。其他一些答案(例如Freya的答案)给出了PCA的实际应用。
在此主题中JD Long发表出色文章之后,我寻找了一个简单的示例,以及生成PCA然后返回原始数据所必需的R代码。它给了我一些第一手的几何直觉,我想分享我所得到的。数据集和代码可以直接复制并粘贴到R形式的Github中。
我使用的数据集,我在网上找到的半导体这里,我修剪它只是两个维度- “原子序数”和“熔点” -以方便绘图。
需要说明的是,该思想仅是计算过程的例证:PCA用于将两个以上的变量简化为几个派生的主成分,或者在具有多个特征的情况下也可以识别共线性。因此,在两个变量的情况下,它不会找到太多应用,也不需要像@amoeba所指出的那样计算相关矩阵的特征向量。
此外,我将观测值从44缩短到15,以简化跟踪单个点的任务。最终结果是一个骨架数据框(dat1
):
compounds atomic.no melting.point
AIN 10 498.0
AIP 14 625.0
AIAs 23 1011.5
... ... ...
“化合物”列表示半导体的化学组成,并起着行名的作用。
可以将其复制如下(准备在R控制台上复制和粘贴):
dat <- read.csv(url("http://rinterested.github.io/datasets/semiconductors"))
colnames(dat)[2] <- "atomic.no"
dat1 <- subset(dat[1:15,1:3])
row.names(dat1) <- dat1$compounds
dat1 <- dat1[,-1]
然后对数据进行缩放:
X <- apply(dat1, 2, function(x) (x - mean(x)) / sd(x))
# This centers data points around the mean and standardizes by dividing by SD.
# It is the equivalent to `X <- scale(dat1, center = T, scale = T)`
线性代数的步骤如下:
C <- cov(X) # Covariance matrix (centered data)
相关函数cor(dat1)
在非定标数据上的输出与在定标数据上的函数相同cov(X)
。
lambda <- eigen(C)$values # Eigenvalues
lambda_matrix <- diag(2)*eigen(C)$values # Eigenvalues matrix
e_vectors <- eigen(C)$vectors # Eigenvectors
由于第一个特征向量最初返回为我们选择将其更改为以使其通过以下方式与内置公式保持一致:
e_vectors[,1] = - e_vectors[,1]; colnames(e_vectors) <- c("PC1","PC2")
所得特征值是和。在较少的简约条件下,此结果将有助于确定要包含的特征向量(最大特征值)。例如,第一特征值的相对贡献是,这意味着它占的数据可变性。第二个特征向量方向的变异性是。这通常显示在描绘特征值值的碎石图上:eigen(C)$values[1]/sum(eigen(C)$values) * 100
在此玩具数据集示例较小的情况下,我们将同时包含两个特征向量,要理解排除其中一个特征向量会导致尺寸降低-PCA的思想。
将分数矩阵确定为缩放数据(X
)与特征向量矩阵(或“旋转”)的矩阵相乘:
score_matrix <- X %*% e_vectors
# Identical to the often found operation: t(t(e_vectors) %*% t(X))
该概念需要对中心数据(在这种情况下为缩放比例)的每个条目(在这种情况下,是行/主题/观察/超导体)进行线性组合,并按每个特征向量的行加权,以便在分数矩阵,我们将从数据(整个X
)的每个变量(列)中找到一个贡献,但只有相应的特征向量会参与计算(即第一个特征向量将有助于(主成分1)和有助于,如下所示: PC[ 0.7 ,− 0.7 ] T PC
因此,每个特征向量将不同地影响每个变量,这将反映在PCA的“负载”中。在我们的情况下,第二个特征向量的第二个分量中的负号将更改产生PC2的线性组合中的熔点值的符号,而第一个特征向量的效果将始终为正:
特征向量缩放为:
> apply(e_vectors, 2, function(x) sum(x^2))
PC1 PC2
1 1
而(loading)是按特征值缩放的特征向量(尽管下面显示的内置R函数中的术语令人困惑)。因此,载荷可以计算为:
> e_vectors %*% lambda_matrix
[,1] [,2]
[1,] 0.9167086 0.497505
[2,] 0.9167086 -0.497505
> prcomp(X)$rotation %*% diag(princomp(covmat = C)$sd^2)
[,1] [,2]
atomic.no 0.9167086 0.497505
melting.point 0.9167086 -0.497505
有趣的是,旋转后的数据云(分数图)沿每个分量(PC)的方差等于特征值:
> apply(score_matrix, 2, function(x) var(x))
PC1 PC2
53829.7896 110.8414
> lambda
[1] 53829.7896 110.8414
利用内置函数,可以复制结果:
# For the SCORE MATRIX:
prcomp(X)$x
# or...
princomp(X)$scores # The signs of the PC 1 column will be reversed.
# and for EIGENVECTOR MATRIX:
prcomp(X)$rotation
# or...
princomp(X)$loadings
# and for EIGENVALUES:
prcomp(X)$sdev^2
# or...
princomp(covmat = C)$sd^2
或者,可以应用奇异值分解()方法来手动计算PCA。实际上,这是中使用的方法。这些步骤可以解释为:prcomp()
svd_scaled_dat <-svd(scale(dat1))
eigen_vectors <- svd_scaled_dat$v
eigen_values <- (svd_scaled_dat$d/sqrt(nrow(dat1) - 1))^2
scores<-scale(dat1) %*% eigen_vectors
结果显示如下,首先显示从各个点到第一个特征向量的距离,在第二个图上显示到第二个特征向量的正交距离:
相反,如果我们绘制分数矩阵(PC1和PC2)的值-不再是“ melting.point”和“ atomic.no”,而是实际上以特征向量为基础的点坐标的基础发生了变化,那么这些距离将是保留,但自然会垂直于xy轴:
现在的诀窍是恢复原始数据。这些点已通过特征向量通过简单的矩阵乘法进行了转换。现在,通过将特征向量矩阵的逆乘以数据点的位置,从而使数据旋转回去。例如,注意左上象限中粉红色点“ GaN”的变化(下图中左图的黑色圆圈),返回左下象限中的初始位置(下图右图的黑色圆圈)。
现在,我们终于将原始数据还原到此“反旋转”矩阵中:
除了在PCA中更改数据旋转坐标之外,还必须对结果进行解释,并且此过程趋向于涉及biplot
,在上相对于新的特征向量坐标绘制数据点,并且现在将原始变量叠加为向量。有趣的是,请注意上方第二排旋转图中各图之间的点位置相等(“ xy轴分数=特征向量”)(在随后的图的左侧),以及biplot
(对):
原始变量作为红色箭头的叠加提供给解释的路径PC1
如在方向(或具有正的相关性)的矢量与两个atomic no
和melting point
; 和的PC2
组成部分,沿着,atomic no
但与呈负相关 melting point
,与特征向量的值一致:
PCA$rotation
PC1 PC2
atomic.no 0.7071068 0.7071068
melting.point 0.7071068 -0.7071068
维克托·鲍威尔(Victor Powell)撰写的该交互式教程可提供有关修改数据云时本征向量变化的即时反馈。
从经常使用PCA的人(也试图向一些人解释),这是我自己神经科学领域的一个例子。
当我们从一个人的头皮上进行记录时,我们使用64个电极进行记录。因此,实际上,我们在列表中有64个数字,代表头皮释放的电压。现在,由于我们以微秒的精度进行记录,因此,如果我们进行了1个小时的实验(通常是4个小时),则可以得出1e6 * 60 ^ 2 == 3,600,000,000个在每个电极上记录电压的时间点,因此现在具有3,600,000,000 x 64矩阵 由于PCA的主要假设是变量是相关的,因此将这种荒谬的数据量减少到易于处理的数量是一种很棒的技术。正如已经多次说过的,特征值代表变量(列)解释的方差量。在这种情况下,特征值表示特定电极在特定时间点的电压变化。所以现在我们可以说,“哦,好电极x
在这个时间点y
上,我们应该集中精力进行进一步的分析,因为这是变化最大的地方。”希望这会有所帮助。喜欢那些回归图!
我可能不好回答这个问题,因为我是个众所周知的祖母,他向我解释了这个概念,而且不多,但是这里有:
假设您有一个人口。很大一部分人口的心脏病发作已经死亡。您正在尝试找出导致心脏病发作的原因。
您有两个数据:身高和体重。
现在,很明显体重与心脏病发作之间存在某种关系,但是这种关系并不是很牢固。有些人的心脏病很重,但有些人却没有。
现在,您进行了一次PCA,它告诉您体重除以身高(“体重”)比体重或身高更可能是心脏病发作的预测指标,因为事实上,“真实”是引起心脏病的体重。
本质上,您之所以要进行PCA,是因为您要衡量一堆东西,并且您真的不知道这些东西是否真的是主要成分,或者是否有未测量的更深层的底层成分。
[如果完全不符合要求,请随时进行编辑。我真的不比这更深入地理解这个概念。
这是给奶奶的:
在我们镇上,街道南北走动,东西向,甚至西北和东南走,从东北到西南。有一天,一个人测量了所有街道上的所有流量,他发现流量最大的是对角线,从西北到东南,第二大流量垂直于该流量,从东北到西南,其余的流量都很小。因此,他画了一个大方块,并从左到右画了一条大线,并说那是NW到SE,然后从中间垂直上下绘制另一条线。他说,这是交通拥挤的第二大方向(从东北到西南)。其余的很小,因此可以忽略。
左,右线是第一个特征向量,上下线是第二个特征向量。左右行驶的汽车总数是第一个特征值,上下行驶的汽车总数是第二个特征值。
这个答案给出了一种直观而不是数学的解释:
PCA将为您提供高维点云内的一组正交向量。向量的顺序由将所有点投影到向量之后传送的信息确定。
换句话说:在将所有点投影到向量上之后,第一个主成分向量将最多告诉您点云。这当然是一种直觉的解释。
看一下这个椭圆体(3D模型的跟随链接):
如果必须选择一个形成一维子空间的向量,椭圆点的点将投影到该向量上。您会选择哪一个,因为它可以传达有关3维原始集的最多信息?
我猜沿最长轴的红色。这实际上是计算出的第一主成分!下一个-我会沿着下一个最长的轴选择蓝色。
通常,您需要将一组点从高维空间投影到二维平面或三维空间中。
http://www.joyofdata.de/blog/illustration-of-principal-component-analysis-pca/
尽管提供了许多示例来提供对PCA的直观了解,但这一事实几乎一开始就使您更加难以掌握,至少对我而言。
“来自不同学科的所有这些不同示例在PCA方面有什么共同点?”
直觉上帮助我的是几个数学上的相似之处,因为显然数学对您来说很容易,尽管这无助于您的祖母解释...
考虑正则化问题,尝试获取
或者用英语将您的数据分解为另外两个矩阵,这些矩阵将以某种方式阐明这些数据吗?如果这两个矩阵工作良好,则它们与之间的误差应该不会太大。
出于其他人所说的所有原因,PCA为您提供了有用的分解因子。它将您拥有的数据矩阵分解为另外两个有用的矩阵。在这种情况下,将是一个矩阵,其中列是您保留的前 PC,而是一个矩阵,为您提供了使用列重构矩阵列的方法。 是的前行,所有转置。对角线上的特征值从根本上衡量哪些PC最重要。这就是数学公式明确告诉您哪些PC最重要的方式:它们各自由其特征值加权。然后,矩阵告诉PC如何组合。
我认为人们举了许多直观的例子,所以我只想分享一下。看到那帮助我了解了它是如何工作的。有很多有趣的算法和方法可以做与PCA类似的事情。稀疏编码是机器学习的一个子领域,主要涉及将矩阵分解为另外两个有用且有趣的子集,以反映模式。
我理解主要成分的方式是这样的:具有多个变量(高度,体重,年龄,温度,波长,存活百分比等)的数据可以在三个维度中显示,以绘制相关性。
现在,如果您想以某种方式理解“ 3D数据”,则可能想知道此3D数据的哪些2D平面(横截面)包含给定变量集的最多信息。这些2D平面是主要成分,包含每个变量的一部分。
将主要成分视为变量本身,并具有原始变量的综合特征(此新变量可描述为零件重量,零件高度,零件年龄等)。当您将一个主成分(X)与另一个(Y)作图时,您正在做的是构建一个2D地图,该地图可以用几何方式描述原始变量之间的相关性。现在有用的部分:由于要比较的每个主题(观察)都与每个变量的值相关联,因此,这些主题(观察)也可以在此XY映射中的某个位置找到。它们的位置基于每个基本变量的相对贡献(即,一个观测值可能受年龄和温度的严重影响,而另一个观测值可能受身高和体重的影响更大)。
在第二部分中,我将给出一个非数学的回答,并通过数学给出更详尽的鸟瞰图。
非玛西:
非数学解释是,PCA通过让您查看数据差异最大的方向来帮助处理高维数据。这些指示是主要组成部分。掌握了这些信息后,在某些情况下,您可以决定将主成分用作有意义的变量本身,并仅通过使主成分保持最大差异(解释能力)就可以大大降低数据的维数。
例如,假设您给出了一个包含30个问题的政治投票调查表,每个问题的回答为1(强烈不同意)至5(强烈同意)。您得到了大量的响应,现在您拥有30维数据,并且无法从中获得正面或反面的效果。然后,在无奈之下,您认为要运行PCA并发现90%的方差来自一个方向,并且该方向与您的任何轴都不对应。在进一步检查数据之后,您可以得出结论,这个新的混合轴对应于政治左右频谱,即民主/共和党频谱,然后继续研究数据中更微妙的方面。
玛蒂:
有时它有助于缩小并查看数学动机以阐明其含义。
有一个特殊的矩阵族,只需更改坐标轴即可将其转换为对角矩阵。自然,它们被称为对角化矩阵,并且足够优雅,执行此操作所需的新坐标轴确实是特征向量。
事实证明,协方差矩阵是对称的,并且总是对角化的!在这种情况下,特征向量被称为主成分,当您在特征向量坐标中写出协方差矩阵时,对角项(仅剩下的对角项)对应于特征向量方向上的方差。这使我们知道哪个方向的变化最大。此外,由于协方差矩阵在这些坐标中是对角线,因此您巧妙地消除了变量之间的所有相关性。
在实际应用中很常见,我们假设变量是正态分布的,因此尝试更改坐标以查看最简单的图片是很自然的。通过了解您的主要成分及其各自的特征值(方差),您将能够减少数据的维数(如果需要),并且可以快速概括一下数据变化的位置。
但在一天结束的时候,这一切可取的根源来自于一个事实,即对角矩阵的方式相比,他们的混乱,更普遍的堂兄弟更容易处理。
为什么是特征值/特征向量?
在进行PCA时,您想通过最大化每个基向量上的预计方差来计算一些正交基。
计算完先前的基向量后,您希望下一个为:
这是一个受约束的优化问题,拉格朗日乘数(这里是关于几何直觉的信息,请参阅维基百科页面)告诉您,在优化时,目标(投影方差)和约束(单位范数)的梯度应“平行”。
这与说下一个基向量应该是协方差矩阵的特征向量的说法是一样的。每个步骤的最佳选择是在其余步骤中选择特征值最大的步骤。
基本上,PCA会找到新变量,这些变量是原始变量的线性组合,因此在新空间中,数据的维数较少。想一想一个数据集,该数据集由以一定角度保持的平板表面上3个维度的点组成。在原始的x,y,z轴上,您需要3个维度来表示数据,但是通过正确的线性变换,您只需要2个即可。
基本上是@Joel所说的,但只是输入变量的线性组合。
一段时间以前,我试图了解PCA算法,并且想对特征向量和特征值做一个说明。该文件指出,EV的目的是将大型模型的模型转换为小型模型。
例如,与其先建造完整的桥梁,然后在其上进行实验和测试,不如使用电动汽车来创建一个很小的桥梁,所有因素/数量将以相同的幅度减少,而且可以根据原始模型的需要来计算并适当地扩大实际测试结果以及对其执行的应力相关测试。电动汽车以一种方式帮助创造原始的抽象。
对我来说,这种解释对我想做的事情具有深远的意义!希望它也对您有帮助!
想象一下,奶奶刚刚用圣诞节送给她的数码相机拍摄了她的第一张照片和电影,不幸的是,当按下按钮时她放下了右手,在电影拍摄过程中她也有些晃动。她注意到人,树,篱笆,建筑物,门口,家具等不是上下左右,也不是垂直的,并且地板,地面,大海,地平线也不是水平的,而且电影也很不稳定。她问您是否可以帮她解决这些问题,在家里和海滩(她是澳大利亚人)上拍摄全部3000张假日照片和大约100个视频,打开礼物,在乡下散步。她说,她拥有此照片软件,可让您做到这一点。您告诉她那将需要几天的时间,而且无论如何都无法处理这些视频,但您知道称为PCA和ICA的技术可能会有所帮助。您解释说,您的研究实际上只是将数据旋转到自然维度上,这些技术找到了数据中最重要的方向(在这种情况下为照片),然后旋转,所以最重要的一个是水平方向,第二个是水平方向是垂直的(尽管时间在电影中也是一个维度,但它甚至可以继续扩展到我们无法想象的更好的维度)。
-
技术方面。实际上,您可能会因此而获得博士学位,而Bell和Sejnowski(1997)的重要论文是关于与边缘相对应的图像的独立分量。将此与PCA关联:ICA首先使用PCA或SVD来降低尺寸和初始近似值,然后对它们进行改进,不仅考虑了PCA之类的二阶误差(SSE),而且考虑了高阶误差-如果的确如此ICA,所有较高阶,尽管许多算法将自己限制在3或4位置。低阶PCA分量确实容易受到水平和垂直方向的强烈影响。处理电影的相机运动也可以使用PCA / ICA。无论是2D照片还是2½D电影,您都需要几个代表性的技巧来实现。
您可以向奶奶解释的另一种应用是特征脸-高阶特征向量可以近似“ 7种基本情绪”(每种情绪的平均脸和“缩放旋转”或线性组合进行平均),但是通常我们会找到与性别和种族有关,有些可能区分个人或个人特征(眼镜,胡须等)。如果您几乎没有任何人的照片并且有很多情绪/表情,就会发生这种情况,但是如果您有很多带有中性表情的面孔,则会产生不同的偏见。使用ICA代替PCA似乎对基本情绪似乎并没有多大帮助,但是Bartlett和Sejnowsiki(1997)表明它发现了对面部识别有用的功能。
我认为每个人都从错误的一端开始解释PCA:从特征向量开始。我的答案从正确的地方开始:坐标系。特征向量和特征问题通常是用于解决当前实际问题(即错误的坐标系)的数学工具。我会解释。
让我们从一行开始。什么是线?这是一维的对象。因此,您只需要一个维度就可以从一个点移动到另一个点。尽管在平面上,您可以在直线的任意点附加两个坐标。那是因为相对于线本身,坐标系是任意选择的。我认为,坐标系不能反映线的内部一维性质。如果只要我总是将我的笛卡尔坐标系的原点放在直线上,然后旋转它使其x轴在直线上,那么我就不再需要y轴!我的所有点都在一个轴上,因为线是一维对象。
这就是PCA解释的起点。本征问题是执行我所描述的旋转的工具,变量的去含义将原点放在直线上。只要变量之间的关系是线性的, PCA就能帮助揭示数据的真实维度。
PCA基本上是高维空间到低维空间的投影,同时保留了尽可能多的信息。
我写了一篇博客文章,通过3D茶壶的投影来解释PCA ...
...在2D平面上,同时保留尽可能多的信息:
详细信息和完整的R代码可在以下文章中找到:http :
//blog.ephorie.de/intuition-for-principal-component-analysis-pca