主成分分析也称主分量分析,旨在利用降维的思想,把多指标转化为少数几个综合指标。 在统计学中,主成分分析(principal components analysis,PCA)是一种简化数据集的技术。它是一个线性变换。这个变换把数据变换到一个新的坐标系统中,使得任何数据投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上,依次类推。主成分分析经常用减少数据集的维数,同时保持数据集的对方差贡献最大的特征这是通过保留低阶主成分,忽略高阶主成分做到的。这样低阶成分往往能够保留住数据的最重要方面但是,这也不是一定的,要视具体应用而定
主成分分析PCA是将多指标重新组合成一组新的无相关的几个综合指标,是根据实际需要从中选取尽可能少的综合指标,以达到尽可能多地反应原指标信息的分析方法。由于这种方法的第一主成分在所有的原始变量中方差最大,因而综合评价函数的方差总不会超过第一主成分的方差,所以该方法有一定的缺陷,且提取的主成分个数m通常应明显小于原始变量个数p(除非p本身较小),所以在变量较少时就不太适合先用主成分筛选变量,这个视数据情况而定
主成分分析实现步骤:
1、原始数据标准化,消除变量量纲不同的影响;
3、计算贡献率和累计贡献率。
疑问解答:
1计算特征值的含义?
PCA的本质是对角化协方差矩阵,后对一个n x n的对称协方差矩阵分解求特征值和特征向量,就会产生n个n维正交基,每个正交基对应一个特征值,吧矩阵投影在这n个基上,此时的特征值的横就表示在该基上的投影长度,特征值越大,说明矩阵对应的特征向量上的方差越大,样本点越离散,越容易区分,包含的信息量越多
2主成分系数
根据主成分系数判断主成分主要依赖的几个变量,根据主要依赖变量总结该主成分(综合指标)代表的性质
3主成分得分
主成分得分其实就是降维之后数据,可对降维之后的主成分得分进行聚类分析,得到相似的类别群体
spss的主成分分析主要应用在因子分析里,目的是将原来很多的因素,通过他们内在的相关分析,整合成新的一个或多个相对独立的综合因素,来代表原来散乱的因素。
例如我们测量客户满意度设计了10个题目,那数据收集完后,就可以通过因子分析,来看看这10个题目是否能综合成几个因素。通过spss的主成分分析,就可以得出相应结果。
结果可能是其中5个题目的相关显著,可以通过一个因素来归纳这5个因素,另外3个、 2个也可以分别组成一个,而且主成分对应的特征值大于1,这样就最后就可以通过3个综合因素来研究和分析客户满意度了。
主成分分析可以理解为一种数据的处理理论,也可以理解为一种应用方法。而因子分析则可以理解为一种应用方法,因为做因子分析采用的比较多的就是用主成分分析的方法来浓缩因子。
所以其实所谓的区别只不过是在学科研究当中存在的,因为同属于统计学的理论,所以一定要找出两者的区别来。但是如果你只是应用的话,那就没必要考虑两者有什么区别。
主成分分析( Principal components analysis),简称PCA,是最主要的数据降维方法之一。本文从PCA的思想开始,一步一步推导PCA。
对于 , 。我们希望 从 维降到 维,同时希望信息损失最少。比如,从 维降到 :
我们既可以降维到第一主成分轴,也可以降维到第二主成分轴。那么如何找到这这些主成分轴并且选择最优成分轴呢?
直观上,第一主成分轴 优于 第二主成分轴,即具有最大可分性。
下面解决一些基本概念。
欲获得原始数据新的表示空间,最简单的方法是对原始数据进行线性变换(基变换):
其中 是原始样本, 是基向量, 是新表达。
数学表达:
其中 是行向量,表示第 个基, 是一个列向量,表示第 个原始数据记录
当 时即 基的维度 < 数据维度时,可达到降维的目的。即:
以直角坐标系下的点(3,2)为例,欲将点(3,2)变换为新基上的坐标,就是用(3,2)与第一个基做内积运算,作为第一个新的坐标分量,然后用(3,2)与第二个基做内积运算,作为第二个新坐标的分量。
可以稍微推广一下,如果我们有m个二维向量,只要将二维向量按列排成一个两行m列矩阵,然后用“基矩阵”乘以这个矩阵,就得到了所有这些向量在新基下的值。例如(1,1),(2,2),(3,3),想变换到刚才那组基上,则可以这样表示:
回顾一下,我们的目的是希望在降维过程中损失最少,换言之,我们希望投影后的数据尽可能分散开。这种分散程度可以用方差来表达, 方差 越大,数据越分散。
随机变量 表达了 的取值与其数学期望之间的偏离程度。若 较小,意味着 的取值主要集中在期望 也就是 的附近,反之,若 较大,意味着 的取值比较分散。
为了避免过于抽象,我们以一个具体的例子展开。假设我们5个样本数据,分别是 ,将它们表示成矩阵形式:
为了后续处理方便,我们首先将每个字段内所有值都减去字段均值,其结果是将每个字段都变为均值为0
我们看上面的数据,设第一个特征为 ,第二个特征为 , 此时某一个样本可以写作:
且特征 的均值为2, 特征 的均值为3,所以变换后:
协方差 (Covariance)在 概率论 和 统计学 中用于衡量两个变量的总体 误差 。
比如对于二维随机变量 ,特征 除了自身的数学期望和方差,还需要讨论 之间互相关系的数学特征。
当 时,变量 完全独立,这也是我们希望达到的优化目标。
方差 是协方差的一种特殊情况,即当两个变量是相同的情况:
对于 二维 随机变量 ,
对于 n维 随机变量 ,
可见,协方差矩阵是 行 列的对称矩阵,主对角线上是方差,而协对角线上是协方差。
依然我们以一个具体的例子展开,还是这5个样本数据, , ,将它们去中心化后表示成矩阵形式:
那如果有 个样本的话,
对 做一些变换,用 乘以 的转置,并乘上系数1/m:
这不正是协方差矩阵嘛!
现在我们可以说:
回顾一下:
设 的协方差矩阵为 , 的协方差矩阵为 ,且 。
我们要找的 不是别的,而是能让原始协方差矩阵对角化的 。
现在所有焦点都聚焦在了 协方差矩阵对角化 问题上。
由上文知道,协方差矩阵 是一个是对称矩阵,在线性代数上,实对称矩阵有一系列非常好的性质:
1)实对称矩阵不同特征值对应的特征向量必然正交。
2)设特征向量 重数为 ,则必然存在 个线性无关的特征向量对应于 ,因此可以将这 个特征向量单位正交化。
由上面两条可知,一个 行 列的实对称矩阵一定可以找到 个单位正交特征向量,设这 个特征向量为 ,我们将其按列组成矩阵:
则对协方差矩阵 有如下结论:
其中 为对角矩阵,其对角元素为各特征向量对应的特征值(可能有重复)。
结合上面的公式:
其中, 为对角矩阵,我们可以得到:
是协方差矩阵 的特征向量单位化后按行排列出的矩阵,其中每一行都是 的一个特征向量。如果设 按照 中特征值的从大到小,将特征向量从上到下排列,则用 的前 行组成的矩阵乘以原始数据矩阵 ,就得到了我们需要的降维后的数据矩阵 。
总结一下PCA的算法步骤:
设有 条 维数据。
1)将原始数据按列组成 行 列矩阵X
2)将 的每一行(代表一个特征)进行零均值化,即减去这一行的均值
3)求出协方差矩阵
4)求出协方差矩阵 的特征值及对应的特征向量
5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前 行组成矩阵
6) 即为降维到 维后的数据
这里以上文提到的:
,将它们表示成矩阵形式:
我们用PCA方法将这组二维数据其降到一维。
为了后续处理方便,我们首先将每个特征内所有值都减去字段均值,其结果是将每个字段都变为均值为0
因为这个矩阵的每行已经是零均值,这里我们直接求协方差矩阵:
对于矩阵 :
和 分别是特征值和特征向量,
,则:
为了使这个方程式有非零解,矩阵 的行列式必须是 0 :
即:
则:
分解得:
找到2个特征值, , ,
when :
即:
则:
和 可以取任意值,我们取归一化的 和 ,即: ,
此时 和
when :
即:
则:
和 可以取任意值,我们取归一化的 和 ,即:
此时 和
所以:
可以验证协方差矩阵C的对角化:
最后我们用 的第一行乘以数据矩阵,就得到了降维后的表示:
降维投影结果如下图:
主成分分析(Principal Component Analysis,PCA), 是一种统计方法。
通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。
在实际课题中,为了全面分析问题,往往提出很多与此有关的变量(或因素),因为每个变量都在不同程度上反映这个课题的某些信息。
主成分分析首先是由K皮尔森(Karl Pearson)对非随机变量引入的,尔后H霍特林将此方法推广到随机向量的情形。信息的大小通常用离差平方和或方差来衡量。
在用统计分析方法研究多变量的课题时,变量个数太多就会增加课题的复杂性。人们自然希望变量个数较少而得到的信息较多。在很多情形,变量之间是有一定的相关关系的,当两个变量之间有一定相关关系时,可以解释为这两个变量反映此课题的信息有一定的重叠。主成分分析是对于原先提出的所有变量,将重复的变量(关系紧密的变量)删去多余,建立尽可能少的新变量,使得这些新变量是两两不相关的,而且这些新变量在反映课题的信息方面尽可能保持原有的信息。
设法将原来变量重新组合成一组新的互相无关的几个综合变量,同时根据实际需要从中可以取出几个较少的综合变量尽可能多地反映原来变量的信息的统计方法叫作主成分分析或称主分量分析,也是数学上用来降维的一种方法
最近在 3d face 模型生成研究中,经常使用PCA,所以就把PCA的学习记录了下来。主成分分析(PCA, Principal Component Analysis)为我们提供了一种压缩数据的方式,我们也可以将它看作学习数据表示的无监督学习算法。PCA学习一种比原始维度更低的表示,也学习了一种元素之间没有线性相关的表示。我们知道一个经典的无监督学习任务就是找到数据的最佳表示。最佳表示可以是在比本身表示的信息更简单或者更易访问受到一些惩罚火或限制的情况下,尽可能多地保留原始数据的信息。那么PCA就为我们提供了这样一种方法。
PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。依次类推,可以得到n个这样的坐标轴。通过这种方式获得的新的坐标轴,我们发现,大部分方差都包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。于是,我们可以忽略余下的坐标轴,只保留前面k个含有绝大部分方差的坐标轴。事实上,这相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。
我们有样本X和样本Y,那么可以得到样本X的均值:
样本X方差:
由以上的基础公式我们可以得出以下的结论:
协方差为正时,说明X和Y是正相关关系;协方差为负时,说明X和Y是负相关关系;协方差为0时,说明X和Y是相互独立,互不相关。Cov(X,X)就是X的方差。当样本是n维数据时,它们的协方差实际上是协方差矩阵(对称方阵)。例如,对于3维数据(x,y,z),计算它的协方差就是:
其实协方差矩阵和散度矩阵关系密切,散度矩阵就是协方差矩阵乘以(总数据量-1)。因此它们的 特征值 和 特征向量 是一样的。这里值得注意的是,散度矩阵是 SVD奇异值分解 的一步,因此PCA和SVD是有很大联系
其中,λ是特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。
其中,Q是矩阵A的特征向量组成的矩阵,而矩阵Σ则是一个对角阵,对角线上的元素就是特征值。
假设A是一个mn的矩阵,那么得到的U是一个 mm 的方阵,U里面的正交向量被称为左奇异向量。Σ是一个 mn 的矩阵,Σ除了对角线其它元素都为0,对角线上的元素称为奇异值。 Vt (t在右上角)是v的转置矩阵,是一个 nn 的矩阵,它里面的正交向量被称为右奇异值向量。而且一般来讲,我们会将Σ上的值按从大到小的顺序排列。
降到k维
注:这里除或不除样本数量n或n-1,其实对求出的特征向量没有影响。
的特征值与特征向量。
注:为什么使用:
降到k维
,当样本数多、样本特征数也多的时候,这个计算还是很大的。当我们用到SVD分解协方差矩阵的时候,SVD有两个好处:
对照就会发现,结果是不一样的。sklearn中的PCA是通过svd_flip函数实现的,sklearn对奇异值分解结果进行了一个处理,因为 ui σi vi=(-ui) σi (-vi) ,也就是u和v同时取反得到的结果是一样的,而这会导致通过PCA降维得到不一样的结果(虽然都是正确的)。具体了解可以自己分析一下sklearn中关于PCA的源码。
对于PCA可以做什么,对应于不同的业务,有不同的使用场景。
例如我最早接触时,用来分析2D人脸的矩阵化后里面的主要成分,提取出关键的维度,使用低维度的矩阵来表示人脸的特征。
当然对应于其他的数据,也是可以使用PCA的,例如在一个向量化好的用户信息矩阵中,需要提取出关键的维度来作为特征描写。所以他的使用场景就类似于他的名字,分析矩阵里面的主要成分,但是维度具体取多少,需要按照自己的数据来计算,也许需要多次的验证。
欢迎分享,转载请注明来源:品搜搜测评网