您当前的位置:首页 > 生活 > 内容

什么是PCA(何时应该使用PCA_PCA是如何工作的)

什么是PCA(何时应该使用PCA_PCA是如何工作的)

编辑注:大会数据科学讲师Matt Brems讲解了主成分分析的原理、数学和最佳实践。

在统计学经典教材《Casella Berger》的前言中,作者解释了他们选择以完美的方式编写这本教材的原因:

有人发现你在编教材,会问以下两个问题。第一个是你为什么写书?"第二个是什么你的书和现有的书有什么不同?"第一个问题很容易回答。写一本书,因为你对现有的文本不完全满意。

在统计学和数据科学中,主成分分析(PCA)是一种非常重要的技术.但是我在备课的时候,发现网上的资料技术性太强,不能完全满足我的需求,甚至提供了相互矛盾的信息。所以我可以有把握地说我是对现有文本不完全满意。

因此,我我要谈谈PCA的3W1H:什么是PCA(什么),什么时候应用PCA(什么时候),PCA如何工作(如何)以及为什么PCA有效(为什么)。另外,我还会提供一些资源来深入讲解这个话题。我特别想介绍这种方法的原理、它的数学基础、一些最佳实践和潜在的缺陷。

虽然我想让PCA尽可能的平易近人,但是我们要讨论的算法还是挺有技术含量的。熟悉以下知识可以更容易理解本文和PCA方法:矩阵运算/线性代数(矩阵乘法、矩阵转置、矩阵求逆、矩阵分解、特征向量/特征值)和统计学/机器学习(标准化、方差、协方差、独立性、线性回归、特征选择)。在文章中,我添加了解释这些主题的链接,但这些链接(我希望)主要是作为万一忘记时的复习,并不要求阅读。

什么是PCA?

假设你想预测美国今年的GDP。你有很多信息:美国2017年第一季度GDP数据,去年前年美国的GDP.你有所有的公共经济指标,比如失业率、通货膨胀率等等。你有2010年的人口普查数据,你可以估计每个行业有多少美国人工作,并在两次人口普查之间更新这些估计的美国社区调查数据。你知道每个政党在参议院和众议院有多少席位。你可以收集股价、首次公开募股的数量,以及有多少首席执行官似乎已经对参与政治感兴趣。

TL;DR——有很多变量需要考虑。

如果你以前处理过大量的变量,你就会知道这会产生问题。你了解所有变量之间的关系吗?你是否有如此多的变量,以至于过度拟合的风险显著增加?还是与建模策略的假设相反?

你可能会问,“quot如何才能只关注收集到的一小部分变量?"用专业术语来说,你想降低特征空间的维数。通过降低特征空间的维度,你需要考虑的变量之间的关系就没有那么多了,过拟合的风险也就没那么高了。(注:这不这并不意味着我们不知道。I don’我再也不需要考虑合身和其他事情了。但是,我们的方向是对的!)

毫不奇怪,降低特征空间的维数被称为降维。降维方法有很多种,但大多数降维技术属于:

特征消除

特征抽出

顾名思义,特征消去法通过消去特征来降低特征空间的维数。在上面引用的GDP例子中,我们可以保留三个我们认为最能预测美国GDP的特征,而丢弃其他所有特征,而不是考虑所有特征。特征消去法的优点是:简单,并且保持了变量的可解释性。

特征消除法的缺点是你可以不能从丢弃的变量中获取信息。如果我们只用去年美国的GDP、制造业人口比率(根据最新的美国社区调查数据)和失业率来预测今年我们将失去所有被丢弃的变量的信息,而这些信息可能对模型有所贡献。在消除特性的同时,我们也完全消除了丢弃变量可能带来的任何好处。

特征提取不存在这个问题。假设我们有十个独立变量。在特征提取期间,我们创建十个新自变量,每一个都是旧自变量。然而,我们以特定的方式创建这些新的自变量,并根据它们预测因变量的能力对它们进行排序。

你可能会说降维在哪里?"好吧,让保留所需的新的独立变量并丢弃最不重要的。因为我们根据因变量的预测能力进行排序,所以我们知道哪些变量最重要,哪些最不重要。但是——的关键部分来自3354由于这些新的独立变量是旧变量的组合,我们仍然保留旧变量中最有价值的部分,尽管我们丢弃了一个或几个新变量!

主成分分析(PCA)是一种特征提取技术。——以特定的方式组合输入变量,然后丢弃最不重要的变量,同时保留所有变量中最有价值的部分!这也带来了有益的副作用,所有的新PCA得到的变量是成对独立的。这是有益的,因为线性模型的假设需要独立变量。如果我们用这些新变量来拟合线性回归模型(参见主成分回归后来),这个假设肯定会得到满足。

什么时候应该使用五氯苯甲醚?

你想减少变量的数量,但你可以I don’我不知道哪些变量可以完全去掉?

是否要保证变量之间相互独立?

你能接受自变量不是那么好解释的吗?

如果这三个问题的答案是是的,那么PCA就是一个非常合适的选择。如果第三个问题的答案是不,那么就不应该使用PCA。

PCA是如何工作的?

下一节将讨论PCA为什么有效。让在解释算法之前,让我们简要总结一下整个过程:

我们将计算一个总结变量互相关的矩阵。

然后我们把这个矩阵分成两部分:方向和大小。之后,我们可以知道方向数据和它的尺寸(即如何重要每个方向都是)。下图显示了数据的两个主要方向:红色方向和绿色方向。在这种情况下,红色方向更重要。稍后我们将讨论这是为什么。然而,你能看出为什么吗?红色方向比绿色方向通过观察给定数据点的排列?(提示:最能拟合这些数据的直线是什么样的?)

图片来源:setosa.io

我们会沿着重要方向(原始变量的组合)对原始数据进行变换。下图是转换后的数据,X轴和Y轴跟随红色方向和绿色方向。最符合这些数据的直线会是什么样子?

图片来源:setosa.io

尽管这里的可视化示例是二维的(所以我们有两个方向),我们可以想象一下数据有更多维度的情况。通过识别哪个方向最重要的是,我们可以通过丢弃最不重要的"方向。通过将数据投影到更小的特征空间,我们降低了特征空间的维度。但是因为数据是根据这些不同的方向,我们确保模型保留所有原始变量。

下面我会详细解释推导PCA的算法。我尽量避免让这篇文章太专业,但这里的细节可以所以我的目标是尽可能清楚地解释它。下一节将深入讨论为什么这个算法是有效的直觉。

在开始之前,将数据排列成N行p 1列的表格形式,其中一列对应因变量(通常表示为Y),P列对应自变量(这个自变量矩阵通常表示为X)。

根据上一段的定义,将数据分为Y和X——。我们主要对付x。

在自变量矩阵X的每一列上,从每一项中减去该列的平均值。(这确保了每列的平均值为0。)

决定是否标准化。给定x的列,方差高的特征是否比方差低的特征更重要?(这里重要的一点是,特征可以更好地预测Y.如果特征的重要性与特征的方差无关,则将列中的每个观察值除以列的标准差。(结合第二步和第三步,我们对X的每一列进行标准化,保证每一列的平均值为零,标准差为1。)得到的矩阵称为z。

转置矩阵Z,并将转置后的矩阵与原矩阵相乘。(数学上写成ZTZ。)得到的矩阵就是Z的协方差矩阵(忽略常数差)。

(这可能是最难的一步。——跟紧了。)计算ZTZ的特征向量和相应的特征值。在大多数计算软件包中,这很容易实现——。ZTZ的本征分解其实就是把ZTZ分解成PDP-1,其中P是本征向量矩阵,D是对角线为本征值,其余值为零的对角矩阵。D对角线上的特征值对应p中对应的——列,即D对角线上的第一个元素是1,对应的特征向量是p的第一列,我们总是可以计算出这样的PDP-1。(奖励:对这个感兴趣的读者,我们总是可以计算出这样的PDP-1,因为ZTZ是对称正定矩阵。)

按降序排列特征值1,2…,p。并且相应地排列p中的相应特征向量。(例如,如果2是最大特征值,那么P的第二列排在第一位。)取决于计算包,这可以自动完成。我们将这个有序特征向量矩阵记为P*。(P*的列数应该和P的列数相同,但顺序可能不同。注意,这些特征向量是相互独立的。

计算Z*=ZP*。这个新矩阵Z*不仅是X的标准化版本,而且其中的每一个观测都是原变量的组合,其中的权重由特征向量决定。一个额外的好处是,由于P*中的特征向量是彼此独立的,所以Z*的每一列也是如此!

左边是原始数据X,右边是PCA转换的数据Z*(图片来源:setosa.io)

上图中,有两点值得注意:

因为我们的主成分是相互正交的,所以它们在统计上是相互独立的…这这就是为什么Z*中的列是相互独立的!

左图和右图显示的是相同的数据,但右图显示的是转换后的数据,坐标轴是主要分量。

无论是左图还是右图,主成分都是相互垂直的。事实上,所有主分量总是相互正交的(正交是垂直的正式数学术语)。

最后,我们需要决定保留多少特征,丢弃多少特征。有三种常见的方法来决定这件事。我们将讨论这三种方法,并在下面给出例子:

现在让让我们简单解释一下方差比的概念。因为每个特征值与对应特征向量的重要性大致相等,所以解释方差比等于保留特征的特征值之和除以所有特征的特征值。

基因的陡坡图(来源:improvedoutcomes.com)

考虑一下上面基因数据的陡峭斜率。红线表示每个特征的解释方差比,这个值可以用这个主成分的特征值除以所有特征值之和得到。仅主成分1的解释方差比为1/(1 2 … p),约为23%。仅主成分2的解释方差比为2/(1 2 … p),约为19%。

主成分1和主成分2的解释方差比为(1 2)/(1 2 … p),约为42%。也就是说,图中的黄线表示到目前为止所有主成分的解释方差比。例如,PC2处的黄点表示包含主成分1和主成分2可以解释模型总方差的42%。

下面,让让我们来看一些例子:

注意:有些陡坡图的Y轴是特征向量的大小,而不是方差比。这个陡坡图的结果是等价的,但是方差比需要手工计算。

图片来源:statsoft.com

方法1:假设我想在模型中保留五个主要组件。在上面的遗传数据例子中,这五个主成分可以解释总方差的66%(包括所有13个主成分的方差)。

方法2:假设我想包含足够的主成分来解释总方差的90%。在上面的遗传数据例子中,我将包括前10个主成分,并丢弃后3个变量。

方法3:这次我们要找到肘部。从上图可以看出,主成分2和主成分3的解释方差比例有很大的下降。在这种情况下,我们打算包含前两个特性,而放弃其余的特性。正如您所看到的,这种方法有些主观,因为没有数学上精确的定义肘,在本例中,包含前两个特征的模型只能解释总方差的42%。

方法1:随意选择想要保留多少维度。也许我想在二维平面上可视化数据,所以我可能只保留两个特征。这取决于用例。没有硬性规定。

方法二:计算每个特征的解释方差比(下面会简单解释这个概念),选择一个阈值,不断添加特征,直到达到阈值。(例如,如果您希望模型能够解释总方差的80%,则添加具有最大解释方差比的特征,直到解释方差比达到或超过80%。)

方法3:该方法与方法2密切相关。计算每个特征的解释方差比例,根据解释方差比例对特征进行排序,绘制保留更多特征的解释方差累积比例。(这个图叫陡坡图,见下图。)根据陡坡图,可以决定包含的特征个数,找到陡坡图中解释方差比明显小于上一点的点,然后选择到该点为止的特征。(这种方法叫做找肘法,因为它找到了弯曲或者肘以确定解释方差比例下降最大的地方。)

把我们要丢弃的转换变量丢弃,就可以收工了!这是PCA。

但是PCA为什么有效呢?

虽然PCA是一种非常依赖线性代数算法的技术性很强的方法,但是仔细想想其实也是一种比较直观的方法。

首先,协方差矩阵ZTZ包含Z中每个变量与其他变量之间相关性的估计。这是理解变量相关性的有力工具。

其次,特征值和特征向量非常重要。特征向量表示方向。想象一下在多维散点图上绘制数据。每个特征向量可以被认为是一个方向数据散点图。特征值表示大小或重要性。特征值越大,意味着方向越重要。

最后,我们做了一个假设,在一个特定方向上更多的差异与解释因变量行为的能力有关。差很多通常意味着信号,差一点通常意味着噪音。所以,某个特定方向上的差异越多,理论上就意味着这个方向上有一些我们想要检测的重要的东西。

因此,PCA是一种结合了以下概念的方法:

变量之间相关性的度量(协方差矩阵)。

数据离散的方向(特征向量)。

这些不同方向的相对重要性(特征值)。

PCA结合了预测器,这样我们就可以丢弃相对不重要的特征向量。

PCA有扩展吗?

是的,但是由于空间的限制,我赢了这里就不多说了。最常见的是主成分回归,在Z*中没有被丢弃的特征子集上进行。在这里,Z*的相互独立性起了作用;回到Z*上的y,我们知道自变量是可以满足的。然而,我们仍然需要检查其他假设。

另一种常见的变体是核PCA,即先用核函数增加维度,再用PCA降低维度,这样PCA就可以应用于非线性的情况。

标签:特征数据变量


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: beyerdynamic官网(请问拜亚动力客服电话号码是多少)

下一篇: 小米流量卡19元任性用(小米米粉移动卡,19元套餐里面的一元一天,任性用是否属实)



猜你感兴趣

推荐阅读

网站内容来自网络,如有侵权请联系我们,立即删除! | 软文发布 | 粤ICP备2021106084号