本文记录的目的是方便自己学习和复习,有误之处请谅解,欢迎指出。
主成分分析(Principal Component Analysis,PCA)是中最常用的降维算法之一,也可以用于数据压缩、去除冗余信息、消除噪声等方面。PCA的目的是找出一组低维数据来代表原高维数据,且保留原始数据中的主要信息。例如有m个数据集,n维特征,我们希望将n维特征降低到d维,而且让损失的信息尽可能小,具体怎么做呢?
首先通过PCA找出第1个新坐标使得原始数据中方差最大;然后找出第2个新坐标与第1个坐标正交平面使得方差最大;再找出第3个坐标与1,2坐标正交平面使得方差最大,以此类推,得到d个新维度特征。
直接一点:就是求出样本集的协方差矩阵 的前d个特征值对应的特征向量,组成矩阵 ,然后对每个样本 进行变换 。
1)特征去中心化,即每个维度特征减去其均值:
2)计算协方差矩阵
3) 对协方差矩阵进行特征值分解
4)取前d个最大的特征值对应的特征向量组成矩阵 。
5)对每个样本数据进行变换,
6)得到降维后的数据
假定现有10个二维数据集 (25,24), (05,07), (22,29), (19,22), (31,30), (23, 27), (2, 16), (1, 11), (15, 16), (11, 09) ,需要用PCA降到1维。
首先样本去中心化,这里样本的均值为 (181, 191) ,所有的样本减去这个 均值 向量后,即中心化后的数据集为 (069, 049), (-131, -121), (039, 099), (009, 029), (129, 109), (049, 079), (019, -031), (-081, -081), (-031, -031), (-071, -101) 。
求协方差矩阵:
求出特征值为 (00490833989, 128402771) ,对应的特征向量分别为:
由于最大的k=1个特征值为128402771,对应的特征向量为 。这也就是特征矩阵 。
对每个数据样本进转换 得到降维后的数据 (-0827970186, 177758033, -0992197494, -0274210416, -167580142, -0912949103, 00991094375, 114457216, 0438046137, 122382056)
主成分分析( 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 ,由名字就可以看出来,这是一个挑重点分析的方法。主成分分析 法是通过 恰当 的数学变换 ,使新变量—— 主成分成为原变量 的线性 组合 ,并选 取少数 几个在变差总信息量中 比例较 大的主成分来分析 事物 的一种方法 。 主成分在变差信息量中的比例越大 , 它在综合评价 中的作用就越大
思想: 整体思想就是化繁为简,抓住问题关键,也就是降维思想。当然,既然是抓住关键,那么自然就是以牺牲精度为代价。
解决问题: 因为每个变量都在不同程度上反映了所研究问题的某些信息,并且指标之间彼此有一定的相关性,因而所得的统计数据反映的信息在一定程度上有重叠。 在用统计方法研究多变量问题时,变量太多会增加计算量和分析问题的复杂性。
人们希望在进行定量分析过程中,涉及的变量较少,得到的信息量较多。为了尽可能的减少冗余和噪音,一般情况可以从相关变量中选择一个,或者把几个相关变量综合为一个变量作为代表,用少数变量来代表所有变量。
原理: 因为评估所涉及的众多变量之间既然有一定的相关性,就必然存在着起支配作用的因素。根据这一点,通过对原始变量和相关矩阵的内部结构的关系研究 ,找出影响目标变量某一要素的几个综合指标,使综合指标为原来变量的线性拟合。 这样,综合指标不仅保留了原始变量的主要信息,且彼此间不相关,又比原始变量具有某些更优越的性质,使得我们在研究复杂目标变量评估问题时,容易抓住主要矛盾。
形象理解
比如,某学籍数据,有两列 M 和 F ,其中M 列的取值是如果学生为男性,则取值为 1 如果为女性,则取值为 0 。F 列,如果为男性则取值为 0 否则取值为一。 由这两种关系可以知道,这两列数据是强相关的。只要保留一列,就能够完全还原另外一列。 当然,不要局限于数据删除,还有数据转换,删除可以理解为在此方法中的一种方式。
当然,上述情况在真实数据中是不可能出现的。这里只是借此介绍一下这种思维。真实情况中, 我们需要考虑删除哪一列信息可以使得损失最小?或者是通过变换数据就能使得损失信息更小?又如何度量信息的丢失量?原始数据的处理降维有哪些步骤?
坐标示例:
我们来看下面这张图,这是一个椭圆的点阵。椭圆上面有一个长轴和一个短轴。现在我们要表示点阵的主要变化趋势,就可以以长短轴(或者平行于长短轴)构建新的坐标系。在极端的情况下,短轴变成了一个点,那么长轴就能代表这个点阵的趋势和特点。这样,一个二维数据,就变成了一维。
基础知识储备
内积与投影:
内积运算,将两个向量映射为一个实数。其几何意义就是 向量 A ,在向量 B 的投影长度。(下图是以二维向量为例,多维空间依然是如此。)
上式中,B 为单位向量
基 :
同样以上图 B为例,B向量为(3,2)其表示的其实为在 X 轴的投影值为3 ,在Y轴的投影值 为 2 。这其实加入了一个隐含信息,就是本坐标轴 分别是以 X Y轴为方向的单位向量。这里的 X Y 轴其实就是我们所提到的 基。只不过一般默认为 (1,0)和(0,1)
所以呢,要描述一组向量,首先是要确定一组基。然后求这个向量在这组基中的投影即可。对基的要求是线性无关,并不一定非要正交。但是因为正交基有较好的性质,所以一般情况我们都是用正交基。
基变换
上面我们了解了基的原理。如果同样把(3,2)放到新基里面描述,那就是把向量和新基相乘即可。
如果是在描述中,有多个基呢?那就是与基阵相乘。
如何实现降维
上面的思路,我们都清楚了。那么我们如何通过基变换来降维呢?这里我们来举个例子。假设我们有一个矩阵如下。
为了处理方面,我们现在把每个字段都减去字段平均值,那么就变成了如下所示
表示在坐标上如下图
那么,我们现在想用一维坐标来表示,而且要求尽可能的保留原来的信息,我们需要如何选择方向(基)呢?(二维降一维)
思路就是,希望投影后的值尽可能的分散,避免重合。
协方差:
在概率论与统计学中,协方差用于衡量两个随机变量的联合变化程度。而方差则是协方差的一种特殊情况,即变量与自身的协方差。
期望:在概率论和统计学中,一个离散性随机变量的期望值(或数学期望,亦简称期望,物理学中称为期待值)是试验中每次可能的结果乘以其结果概率的总和。比如骰子的期望值为 1 1/6 +21/6 + …+ 61/6 = 35
协方差公式为:
其中,E(X) = u E(Y) = v
协方差表示的是两个变量的总体的误差 ,这与只表示一个变量误差的方差不同。 如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。 如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。如果X 与Y 是统计独立的,那么二者之间的协方差就是0
流程和步骤
第一步:标准化
把输入数据集变量的范围标准化,以使它们中的每一个均可以大致成比例的分析。简单说,就是要把存在较大差异的数据转变为可比较的数据。比如把 0-100 的变量转化为 0-1 的变量。这一步一般可以通过减去平均值,再除以每个变量值的标准差来完成。标准差公式如下
那么常用的标准化指标变量公式可为
第二步:协方差矩阵计算
这一步的目的是:了解输入数据集的变量是如何相对于平均值变化的。或者换句话说,是为了查看它们之间是否存在任何关系。因为有时候,变量间高度相关是因为它们包含大量的信息。因此,为了识别这些相关性,我们进行协方差矩阵计算。
协方差矩阵是p×p对称矩阵(其中p是维数),其所有可能的初始变量与相关联的协方差作为条目。
好了,现在我们知道协方差矩阵只不过是一个表,汇总了所有可能配对的变量间相关性。下面就是计算协方差矩阵的特征向量和特征值,以筛选主要成分。
第三步:计算协方差矩阵的特征向量和特征值,用以识别主成分
特征向量和特征值都是线性代数概念,需要从协方差矩阵计算得出,以便确定数据的主成分。开始解释这些概念之前,让我们首先理解主成分的含义
主成分是由初始变量的线性组合或混合构成的新变量。该组合中新变量(如主成分)之间彼此不相关,且大部分初始变量都被压缩进首个成分中。所以,10维数据会显示10个主成分,但是PCA试图在第一个成分中得到尽可能多的信息,然后在第二个成分中得到尽可能多的剩余信息,以此类推。
例如,假设你有一个10维数据,你最终将得到的内容如下面的屏幕图所示,其中第一个主成分包含原始数据集的大部分信息,而最后一个主成分只包含其中的很少部分。因此,以这种方式组织信息,可以在不丢失太多信息的情况下减少维度,而这需要丢弃携带较少信息的成分。
在这里,方差和信息间的关系是,线所承载的方差越大,数据点沿着它的分散也越大,沿着线的散点越多,它所携带的信息也越多。简单地说,只要把主成分看作是提供最佳角度来观察和评估数据的新轴,这样观测结果之间的差异就会更明显。
协方差矩阵的特征向量实际上是方差最多的轴的方向(或最多的信息),我们称之为主成分。通过特征值的顺序对特征向量进行排序,从最高到最低,你就得到了按重要性排序的主成分。
第四步:特征向量
正如我们在上一步中所看到的,计算特征向量并按其特征值依降序排列,使我们能够按重要性顺序找到主成分。在这个步骤中我们要做的,是选择保留所有成分还是丢弃那些重要性较低的成分(低特征值),并与其他成分形成一个向量矩阵,我们称之为特征向量。
因此,特征向量只是一个矩阵,其中包含我们决定保留的成分的特征向量作为列。这是降维的第一步,因为如果我们选择只保留n个特征向量(分量)中的p个,则最终数据集将只有p维。
第五步:沿主成分轴重新绘制数据
在前面的步骤中,除了标准化之外,你不需要更改任何数据,只需选择主成分,形成特征向量,但输入数据集时要始终与原始轴统一(即初始变量)。
这一步,也是最后一步,目标是使用协方差矩阵的特征向量去形成新特征向量,将数据从原始轴重新定位到由主成分轴中(因此称为主成分分析)。这可以通过将原始数据集的转置乘以特征向量的转置来完成。
优缺点
优点:化繁为简,降低了计算量。
缺点:一定程度上损失了精度。并且只能处理“线性问题”,这是一种线性降维技术、
总结
假设我们拿到了一份数据集,有m个样本,每个样本由n个特征(变量)来描述,那么我们可以按照以下的步骤进行降维:
1、将数据集中的每个样本作为列向量,按列排列构成一个n行m列的矩阵;
2、将矩阵的每一个行向量(每个变量)都减去该行向量的均值,从而使得新行向量的均值为0,得到新的数据集矩阵X;
3、求X的协方差矩阵,并求出协方差矩阵的特征值λ和单位特征向量e;
4、按照特征值从大到小的顺序,将单位特征向量排列成矩阵,得到转换矩阵P,并按PX计算出主成分矩阵;
5、用特征值计算方差贡献率和方差累计贡献率,取方差累计贡献率超过85%的前k个主成分,或者想降至特定的k维,直接取前k个主成分。
参考文章: https://blogcsdnnet/Murray_/article/details/79945148
参考文章: https://wwwcnblogscom/Luv-GEM/p/10765574html
参考文章: https://wwwssffxcom/wangzhanjianshe/40715html
主成分分析法的步骤:对原始数据标准化、计算相关系数、计算特征、确定主成分、合成主成分。
主成分分析是指通过将一组可能存在相关性的变量转换城一组线性不相关的变量,转换后的这组变量叫主成分。
在实际课题中,为了全面分析问题,往往提出很多与此有关的变量(或因素),因为每个变量都在不同程度上反映这个课题的某些信息。主成分分析首先是由K皮尔森对非随机变量引入的,尔后H。霍特林将此方法推广到随机向量的情形。信息的大小通常用离差平方和或方差来衡量。
主成分分析法的原理
在用统计分析方法研究多变量的课题时,变量个数太多就会增加课题的复杂性。人们自然希望变量个数较少而得到的信息较多。在很多情形,变量之间是有一定的相关关系的,当两个变量之间有一定相关关系时,可以解释为这两个变量反映此课题的信息有一定的重叠。
主成分分析是对于原先提出的所有变量,将重复的变量(关系紧密的变量)删去多余,建立尽可能少的新变量,使得这些新变量是两两不相关的,而且这些新变量在反映课题的信息方面尽可能保持原有的信息。
欢迎分享,转载请注明来源:品搜搜测评网