主成分分析的基本思想
主成分分析的基本思想是设法将原来众多具有一定相关性(比如P个指标),重新组合成一组新的互相无关的综合指标来代替原来的指标。
主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。
在实际课题中,为了全面分析问题,往往提出很多与此有关的变量(或因素),因为每个变量都在不同程度上反映这个课题的某些信息。
主成分分析首先是由K.皮尔森(Karl Pearson)对非随机变量引入的,尔后H.霍特林将此方法推广到随机向量的情形。信息的大小通常用离差平方和或方差来衡量。
历史:
1846年,Bracais提出的旋转多元正态椭球到“主坐标”上,使得新变量之间相互独立。皮尔逊(Pearson)(1901)、霍特林(Hotelling)(1933)都对主成分的发展做出了贡献,霍特林的推导模式被视为主成分模型的成熟标志。主成分分析被广泛应用于区域经济发展评价,服装标准制定,满意度测评,模式识别,图像压缩等许多领域。
如何理解主成分分析法 (PCA)
什么是主成分分析法
主成分分析法: 英文全名 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 +2*1/6 + …+ 6*1/6 = 3.5
协方差公式为:
其中,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个主成分。
参考文章:
参考文章:
参考文章:
主成分分析
1.主成分分析也称主分量分析,旨在利用降维的思想,把多指标转化为少数几个综合指标。在实证问题研究中,为了全面、系统地分析问题,我们必须考虑众多影响因素。这些涉及的因素一般称为指标,在统计分析中也称为变量。因为每个变量都不同程度地反映了所研究问题的某些信息,并且指标之间有一定的相关性,因而所得的统计数据反映的信息在一定程度上有重叠。在用统计方法研究多变量问题时,变量太多会增加计算量和增加分析问题的复杂性,人们希望在进行定量分析的过程中,涉及的变量较少,得到的信息量较多。
2.科学研究所涉及的课题往往比较复杂,是因为影响客观事物的因素多,需要考察的变量多。在大部分实际问题中,变量之间是有一定的相关性的,人们自然希望找到较少的几个彼此不相关的综合指标尽可能多地反映原来众多变量的信息
(1)主成分个数远远少于原有变量的个数
原有变量综合成少数几个因子之后,因子将可以替代原有变量参与数据建模,这将大大减少分析过程中的计算工作量。
(2)主成分能够反映原有变量的绝大部分信息
因子并不是原有变量的简单取舍,而是原有变量重组后的结果,因此不会造成原有 变量信息的大量丢失,并能够代表原有变量的绝大部分信息
(3)主成分之间应该互不相关
通过主成分分析得出的新的综合指标(主成分)之间互不相关,因子参与数据建模能够有效地解决变量信息重叠、多重共线性等给分析应用带来的诸多问题
(4)主成分具有命名解释性
一、对原始数据进行标准化
二、计算相关系数矩阵
三、计算特征值与特征向量
四、计算主成分载荷
五、各主成分的得分
主成分分析有以下几方面的应用:
①对原始指标进行综合:主成分分析的主要作用是在基本保留原始指标信息的前提下,以互不相关的较少个数的综合指标来反映原来指标所提供的信息。
②探索多个原始指标对个体特征的影响:对于多个原始指标,求出主成分后,可以利用因子载荷阵的结构,进一步探索各主成分与多个原始指标之间的相互关系,分析各原始指标对各主成分的影响作用。
③对样本进行分类:求出主成分后,如果各主成分的专业意义较为明显,可以利用各样品的主成分得分来进行样品的分类,可能就会与分类预测算法结合。
我们也可以思考下,每一个数据处理算法都不是孤立存在的,而是相互补充。
主成分分析(PCA)简介
主成分分析实例:一个 平均值 为(1, 3)、标准差在(0.878, 0.478)方向上为3、在其正交方向为1的 高斯分布 。这里以黑色显示的两个向量是这个分布的 协方差矩阵 的 特征向量 ,其长度按对应的 特征值 之平方根为比例,并且移动到以原分布的平均值为原点。
在多元统计分析中, 主成分分析 (英语: Principal components ***ysis , PCA )是一种分析、简化数据集的技术。主成分分析经常用于减少数据集的 维数 ,同时保持数据集中的对方差贡献***的特征。这是通过保留低阶主成分,忽略高阶主成分做到的。这样低阶成分往往能够保留住数据的最重要方面。但是,这也不是一定的,要视具体应用而定。由于主成分分析依赖所给数据,所以数据的准确性对分析结果影响很大。
主成分分析由 卡尔·皮尔逊 于1901年发明,用于分析数据及建立数理模型。其方法主要是通过对 协方差矩阵 进行特征分解,以得出数据的主成分(即 特征向量 )与它们的权值(即 特征值 [3] )。PCA是最简单的以特征量分析多元统计分布的方法。其结果可以理解为对原数据中的 方差 做出解释:哪一个方向上的数据值对方差的影响***?换而言之,PCA提供了一种降低数据 维度 的有效办法;如果分析者在原数据中除掉最小的 特征值 所对应的成分,那么所得的低维度数据必定是***化的(也即,这样降低维度必定是失去讯息最少的方法)。主成分分析在分析复杂数据时尤为有用,比如 人脸识别 。
PCA是最简单的以特征量分析多元统计分布的方法。通常情况下,这种运算可以被看作是揭露数据的内部结构,从而更好的解释数据的变量的方法。如果一个多元数据集能够在一个高维数据空间坐标系中被显现出来,那么PCA就能够提供一幅比较低维度的图像,这幅图像即为在讯息最多的点上原对象的一个‘投影’。这样就可以利用少量的主成分使得数据的维度降低了。
PCA跟因子分析密切相关,并且已经有很多混合这两种分析的统计包。而真实要素分析则是假定底层结构,求得微小差异矩阵的特征向量。
PCA,Principle Component Analysis,即主成分分析法,是特征降维的最常用手段。顾名思义,PCA 能从冗余特征中提取主要成分,在不太损失模型质量的情况下,提升了模型训练速度。
如上图所示,我们将 样本到红色向量的距离 称作是投影误差(Projection Error)。以二维投影到一维为例,PCA 就是要找寻一条直线,使得各个特征的投影误差足够小,这样才能尽可能的保留原特征具有的信息。
因为PCA仅保留了特征的主成分,所以PCA是一种有损的压缩方式.
从 PCA 的执行流程中,我们知道,需要为 PCA 指定目的维度 k 。如果降维不多,则性能提升不大;如果目标维度太小,则又丢失了许多信息。
由于 PCA 减小了特征维度,因而也有可能带来过拟合的问题。PCA 不是必须的,在机器学习中,一定谨记不要提前优化,只有当算法运行效率不尽如如人意时,再考虑使用 PCA 或者其他特征降维手段来提升训练速度。
降低特征维度不只能加速模型的训练速度,还能帮我们在低维空间分析数据,例如,一个在三维空间完成的聚类问题,我们可以通过 PCA 将特征降低到二维平面进行可视化分析。
根据 13 个特征对葡萄酒分类(推销给不同品味的人),利用 PCA ,可以将数据从 13 维降到 2 维进行可视化。
arr***([[1.369e+01, 3.260e+00, 2.540e+00, 2.000e+01, 1.070e+02, 1.830e+00,
5.600e-01, 5.000e-01, 8.000e-01, 5.880e+00, 9.600e-01, 1.820e+00,
6.800e+02],
[1.269e+01, 1.530e+00, 2.260e+00, 2.070e+01, 8.000e+01, 1.380e+00,
1.460e+00, 5.800e-01, 1.620e+00, 3.050e+00, 9.600e-01, 2.060e+00,
4.950e+02],
[1.162e+01, 1.990e+00, 2.280e+00, 1.800e+01, 9.800e+01, 3.020e+00,
2.260e+00, 1.700e-01, 1.350e+00, 3.250e+00, 1.160e+00, 2.960e+00,
3.450e+02]])
arr***([[ 0.87668336, 0.79842885, 0.64412971, 0.12974277, 0.48853231,
-0.70326216, -1.42846826, 1.0724566 , -1.36820277, 0.35193216,
0.0290166 , -1.06412236, -0.2059076 ],
[-0.36659076, -0.7581304 , -0.39779858, 0.33380024, -1.41302392,
-1.44153145, -0.5029981 , 1.70109989, 0.02366802, -0.84114577,
0.0290166 , -0.73083231, -0.81704676],
[-1.69689407, -0.34424759, -0.32337513, -0.45327855, -0.14531976,
1.24904997, 0.31964204, -1.52069698, -0.4346309 , -0.75682931,
0.90197362, 0.51900537, -1.31256499]])
arr***([0.36884109, 0.19318394, 0.10752862, 0.07421996, 0.06245904,
0.04909 , 0.04117287, 0.02495984, 0.02308855, 0.01864124,
0.01731766, 0.01252785, 0.00696933])
arr***([[-2.17884511, -1.07218467],
[-1.80819239, 1.57822344],
[ 1.09829474, 2.22124345]])
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,
penalty='l2', random_state=0, solver='liblinear', tol=0.0001,
verbose=0, warm_start=False)
arr***([1, 3, 2, 1, 2])
arr***([[14, 0, 0],
[ 1, 15, 0],
[ 0, 0, 6]])
准确率(精度)为 : 0.9722222222222222
参考: 主成分分析
《 斯坦福机器学习》
《机器学习 A-Z》
主成分分析(PCA)
在前面我们学习了一种有监督的降维方法——线性判别分析(Linear Dscriminant Analysis,LDA)。LDA不仅是一种数据压缩方法还是一种分类算法,LDA将一个高维空间中的数据投影到一个低维空间中去,通过最小化投影后各个类别的类内方差和类间均值差来寻找***的投影空间。
本文介绍的主成分分析(Principe Component Analysis,PCA)也是一种降维技术,与LDA不同的是,PCA是一种无监督降维技术,因此PCA的主要思想也与LDA不同。LDA是一种有监督的分类兼降维技术,因此其***化均值差最小化类内差的思想够保证在降维后各个类别依然能够很好地分开。但PCA只用来降维而无需分类,因此PCA需要考虑的是如何在降维压缩数据后尽可能的减少数据信息的损失。在PCA中使用协方差来表示信息量的多少,至于为什么能这么表示后面再进行介绍。下面我们从一些基本的线代知识开始。
在进行数据分析时我们的数据样本经常被抽象为矩阵中的一组向量,了解一些线代基础知识理解PCA非常重要,但在这里我们并不准备也不可能将所有的线代知识都罗列以便,因此这里我们仅会复习一些对理解PCA较为重要的东西。更多线代的内容可参考下面几个链接:
为了方便,我们这里以一个二维平面为例。
在前面我们说了,在数据处理时我们经常讲一个样本数据当作一个向量。在二维平面中,一个向量从不同的角度有不同的理解方式,例如对于向量 (-2, 3) T :
在我们描述任何东西的时候其实都是选择了一个参照系的,也即事物都是相对的,最简单的运动与静止(以静止的事物为参照),说一个有点意思的——人,人其实也是放在一个参考系中的,我们可以将其理解为生物种类系统,抛开这个大的系统去独立的定义人是很难让人理解的。向量也是这样的,虽然我们前面没有指明,但是上面的向量其实是在一个默认坐标系(或称为空间)中的,也即x,y轴,但是在线性代数中我们称其为基。在线代中任何空间都是由一组线性无关的(一维空间由一个基组成)基向量组成。这些基向量可以组成空间中的任何向量。
现在假设我们有如下一个矩阵相乘的式子:
因此,上面的例子可以有两种理解方式:
(1)如果我们将值全为1对角方阵视为标准坐标系,则它表示在 i=(1, -2) T 和 j=(3, 0) T 这组基底下的坐标 (-1, 2) T 在基底 (1, 0) T 、(0, 1) T 下的坐标,如下:
当我们讨论向量 (-1, 2) T 时,都隐含了一个默认的基向量假设:沿着x轴方向长度为1的 i,沿着y轴长度为1的j。
但是,(-1, 2) T 可以是任何一组基底下的向量。例如,他可能是i'=(2,1) T , j'=(-1, 1) T 这组基下的一个向量。此时他在我们默认坐标系 i=(1, 0) T ,j=(0, 1) T 下的计算过程如下:
我们可以从另一个角度理解基地变换的过程:我们先 误认为 (-1, 2) T 是坐标系i=(1, 0) T ,j=(0, 1) T 下的坐标,此时我们通过线性变换[[2, -1], [1, 1]](每个嵌套列表看做一行)把坐标轴i,j(基坐标)分别变换到了新的位置 i1=(2, 1) T , j1=(-1, 1) T (他们也是用默认坐标系表示的),即[2, -1], [1, 1]]。此时我们把“误解”转换成了真正的向量。如下:
在上面我们说了矩阵是一种变换,现在我们继续从这个角度来理解特征值和特征向量。为了方便理解,我们在这里做一个类比——将变换看作物理中的作用力。我们知道一个力必须有速度和方向,而矩阵对一个向量施加的变换也是一样的。考虑一下特征向量的定义:
上面介绍了一些基本的线性代数相关的知识,下面开始介绍PCA的原理。
上面我们讨论了选择不同的基可以对同样一组数据给出不同的表示,而且如果基的数量少于向量本身的维数,则可以达到降维的效果。但是我们还没有回答一个最最关键的问题:如何选择基才是***的。或者说,如果我们有一组N维向量,现在要将其降到K维(K小于N),那么我们应该如何选择K个基才能***程度保留原有的信息?
要完全数学化这个问题非常繁杂,这里我们用一种非形式化的直观方法来看这个问题。
为了避免过于抽象的讨论,我们仍以一个具体的例子展开。假设我们的数据由五条记录组成,将它们表示成矩阵形式:
其中每一列为一条数据记录,而一行为一个字段。为了后续处理方便,我们首先将每个字段内所有值都减去字段均值,其结果是将每个字段都变为均值为0(这样做的道理和好处后面会看到)。中心化的数据为:
通过上一节对基变换的讨论我们知道,这个问题实际上是要在二维平面中选择一个方向,将所有数据都投影到这个方向所在直线上,用投影值表示原始记录。这是一个实际的二维降到一维的问题。
那么如何选择这个方向(或者说基)才能尽量保留最多的原始信息呢?一种直观的看法是:希望投影后的投影值尽可能分散。
以上图为例,可以看出如果向x轴投影,那么最左边的两个点会重叠在一起,中间的两个点也会重叠在一起,于是本身四个各不相同的二维点投影后只剩下两个不同的值了,这是一种严重的信息丢失,同理,如果向y轴投影最上面的两个点和分布在x轴上的两个点也会重叠。所以看来x和y轴都不是***的投影选择。我们直观目测,如果向通过***象限和第三象限的斜线投影,则五个点在投影后还是可以区分的。
下面,我们用数学方法表述这个问题。
对于上面二维降成一维的问题来说,找到那个使得方差***的方向就可以了。不过对于更高维,还有一个问题需要解决。考虑三维降到二维问题。与之前相同,首先我们希望找到一个方向使得投影后方差***,这样就完成了***个方向的选择,继而我们选择第二个投影方向。
如果我们还是单纯只选择方差***的方向,很明显,这个方向与***个方向应该是“几乎重合在一起”,显然这样的维度是没有用的,因此,应该有其他约束条件。 从直观上说,让两个字段尽可能表示更多的原始信息,我们是不希望它们之间存在(线性)相关性的,因为相关性意味着两个字段不是完全独立,必然存在重复表示的信息。
可以看到,在字段均值为0的情况下,两个字段的协方差简洁的表示为其内积除以元素数m。
当协方差为0时,表示两个字段完全独立。为了让协方差为0,我们选择第二个基时只能在与***个基正交的方向上选择。因此最终选择的两个方向一定是正交的。
至此,我们得到了降维问题的优化目标: 将一组N维向量降为K维(K大于0,小于N),其目标是选择K个单位(模为1)正交基,使得原始数据变换到这组基上后,各字段两两间协方差为0,而字段的方差则尽可能大(在正交的约束下,取***的K个方差)。
上面我们导出了优化目标,但是这个目标似乎不能直接作为操作指南(或者说算法),因为它只说要什么,但根本没有说怎么做。所以我们要继续在数学上研究计算方案。
我们看到,最终要达到的目的与字段内方差及字段间协方差有密切关系。因此我们希望能将两者统一表示,仔细观察发现,两者均可以表示为内积的形式,而内积又与矩阵相乘密切相关。于是我们来了灵感:
假设我们只有a和b两个字段,那么我们将它们按行组成矩阵X:
然后我们用X乘以X的转置,并乘上系数1/m:
根据矩阵相乘的运算法则,这个结论很容易被推广到一般情况:
设我们有m个n维数据记录,将其按列排成n乘m的矩阵X,设C=1/m(XX T ),则C是一个对称矩阵,其对角线分别个各个字段的方差,而第i行j列和j行i列元素相同,表示i和j两个字段的协方差。
根据上述推导,我们发现要达到优化目前,等价于将协方差矩阵对角化:即除对角线外的其它元素化为0,并且在对角线上将元素按大小从上到下排列,这样我们就达到了优化目的 。这样说可能还不是很明晰,我们进一步看下原矩阵与基变换后矩阵协方差矩阵的关系:
设原始数据矩阵X对应的协方差矩阵为C,而P是一组基按行组成的矩阵,设Y=PX,则Y为P对X做基变换后的数据。设Y的协方差矩阵为D,我们推导一下D与C的关系:
现在所有焦点都聚焦在了协方差矩阵对角化问题上,有时,我们真应该感谢数学家的先行,因为矩阵对角化在线性代数领域已经属于被玩烂了的东西,所以这在数学上根本不是问题。
由上文知道,协方差矩阵C是一个是对称矩阵,在线性代数上,实对称矩阵有一系列非常好的性质:
1)实对称矩阵不同特征值对应的特征向量必然正交。
2)设特征向量λ重数为r,则必然存在r个线性无关的特征向量对应于λ,因此可以将这r个特征向量单位正交化。
则对协方差矩阵C有如下结论:
以上结论不再给出严格的数学证明,对证明感兴趣的朋友可以参考线性代数书籍关于“实对称矩阵对角化”的内容。
到这里,我们发现我们已经找到了需要的矩阵P:P = E T .
P是协方差矩阵的特征向量单位化后按行排列出的矩阵,其中每一行都是C的一个特征向量。如果设P按照Λ中特征值的从大到小,将特征向量从上到下排列,则用P的前K行组成的矩阵乘以原始数据矩阵X,就得到了我们需要的降维后的数据矩阵Y。
PCA的特征向量的求解除了使用上述***化方差的矩阵分解方法,还可以使用最小化损失法,具体可参见: 机器学习中的数学(4)-线性判别分析(LDA), 主成分分析(PCA) 。
总结一下PCA的算法步骤:
设有m条n维数据。
LDA和PCA都用于降维,两者有很多相同,也有很多不同的地方,因此值得好好的比较一下两者的降维异同点。
首先我们看看相同点:
我们接着看看不同点:
参考:
PCA的数学原理
线性代数的直觉
线性判别分析LDA原理总结
主成分分析(PCA)
主成分分析(PCA)是一种常用的无监督学习方法,这一方法利用正交变换把由现行相关变量表示的观测数据转化为少数几个由线性无关变量表示的数据,线性无关的变量称为主成分。主成分的个数通常小于原始变量的个数,所以主成分分析属于姜维方法。主成分分析主要用于发现数据中的基本结构,即数据中变量之间的关系,是数据分析的有力工具,也用于其他机器学习方法的前处理。
统计分析比中,数据的变量之间可能存在相关性,以致增加了分析的难度。于是,考虑由少数几个不相关的变量来代替相关的变量,用来表示数据,并且要求能够保留数据中的不部分信息。
主成分分析中,首先对给定数据进行规范化,使得数据每一变量的平均值为0,方差为1,。之后对数据进行正交变换,用来由线性相关表示的数据,通过正交变换变成若干个线性无关的新变量表示的数据。新变量是可能的正交变换中变量的方差和(信息保存)***的,方差表示在新变量上信息的大小。将新变量一次成为***主成分,第二主成分等。通过主成分分析,可以利用主成分近似地表示原始数据,这可理解为发现数据的“基本结构”;也可以把数据由少数主成分表示,这可理解为对数据降维。
方差***的解释。假设有两个变量 ,三个样本点A,B,C。样本分布在由 轴组成的坐标系中,对坐标系进行旋转变换,得到新的坐标轴 ,表示新的变量 。坐标值的平方和 表示样本在变量 上的方差和。主成分分析旨在选取正交变换中方差***的变量,作为***主成分,也是是旋转变换中坐标值的平方和***的轴。注意到旋转变换中变换中样本点到原点距离的平方和 不变,根据勾股定理,坐标值的平方和*** 等价于样本点到 轴的距离平方和 最小。所以,等价地,主成分分析在旋转变换中选取离样本点的距离的平方和最小的轴,作为***主成分。第二主成分等的选取,在保证与已有坐标轴正交的条件下,类似地进行
假设 是m维随机变量,其均值是
,
协方差矩阵是
考虑到m维随机变量 到m维随机变量 的线性变换
其中
由随机变量的性质可知
总体主成分的定义 给定式(1)所示的线性变换,如果他们满足下列条件
设 是m维随机变量, 是 的协方差矩阵, 的特征值分别是 ,特征值对应的单位特征向量分别是 ,则 的第k主成分是
的第k主成分的方差是
即协方差矩阵 的第k个特征值
首先求 的***主成分 ,即求系数向量 。***主成分的 是在 的条件下, 的所有线性变换中使方差达到***的
求***主成分就是求解***化问题
定义拉格朗日函数
其中 是拉格朗日乘子,将拉格朗日函数对 求导,并令其为0,得
因此 是 的特征值, 是对应的单位特征向量。于是目标函数
假设 是 的***特征值 对应的单位特征向量,显然 与 是***化问题的解,所以, 构成***主成分,其方差等于协方差矩阵的***特征值
接着求 的第二主成分 ,第二主成分的 是在 且 与 不相关条件下, 的所有线性变换中使达到***
求第二主成分需参求解约束***化问题
定义拉格朗日函数
其中 对应拉格朗日乘子。对 求偏导,并令其为0,得
将方程左则乘以 有
此式前两项为0,且 ,导出 ,因此式成为
由此, 是 的特征值, 是对应的特征向量,于是目标函数为
假设 是 的第二大特征值 的特征向量,显然 是以上***化问题的解。于是 构成第二主成分,其方差等于协方差矩阵的第二大特征值,
按照上述方法可以求得***、第二、直到第m个主成分,其系数向量 分别是 的***、第二、直到m个单位特征向量, 分别是对应的特征值。并且,第k主成分的方差等于 的第k个特征值。
主成分分析的主要目的是降维,所以一般选择 个主成分(线性无观变量),使问题得以简化,并能保留原有变量的大部分信息。这里所说的信息是指原有信息的方差。
对任意正整数 ,考虑正交线性变换
其中 是q的维向量, 是q*m维矩阵,令 的协方差矩阵为
则 的迹 在 时取***值,其中矩阵 是由正交矩阵A的前q列组成。
这表明,当 的线性变换 在 时,其协方差矩阵 的迹 取得***值。也就是说,当A取前 的前q个主成分时,能够***限度地保留原有变量方差的信息。
以上作为选择k个主成分的理论依据。具体选择k的方法,通常利用方差贡献率。
第k主成分 的方差贡献率定义为 的方差与所有方差之和的比记作
k个主成分 的累计方差贡献率定义为k个方差之和和所有方差之和的比
通常取k使得累计方差贡献率达到规定的百分比以上,例如70%~80%。累计方差贡献率反映了主成分保留信息的比例,但它不能反映对某个原有变量 保留信息的比例,这时通常利用k个主成分 对原有变量 的贡献率。
k个主成分 对原有变量 的贡献率为 , 的相关系数的平方,记作
计算公式如下:
其中, 是随机变量 的方差,即协方差矩阵 的对角元素。
在实际问题中,不同变量可能有不同的量纲,直接求主成分有时会产生不合理的结果,为了消除这个影响,常常对各个随机变量实施规范化,使其均值为0,方差为1
设 为随机变量, 为第i个随机变量, ,令
其中, 分布是随机变量 的均值和方差,这时 就是 的规范化随机变量。
在实际问题中,需要在观测数据上进行主成分分析,这就是样本主成分分析。样本主成分也和总体主成分具体相同的性质。
使用样本主成分时,一般假设样本数据是规范化的,即对样本矩阵如下操作:
其中
样本协方差矩阵S是中体协方差矩阵 的无偏估计,样本相关矩阵R是总体相关矩阵的无偏估计,S的特征值和特征向量 的特征值和特征向量的无偏估计。
传统的主成分分析通过数据的协方差矩阵或相关矩阵的特征值分解进行,现在常用的方法是通过数据矩阵的奇异值分解进行。下面介绍数据的协方差矩阵或相关矩阵的分解方法
给定样本矩阵 ,利用数据的样本的协方差矩阵或样本相关矩阵的特征值分解进行主成分分析
给定样本矩阵 ,利用数据矩阵奇异值分解进行主成分分析,这里没有假设k个主成分
对于 维实矩阵A,假设其秩为r, ,则可将矩阵A进行截断奇异值分解
式 是 矩阵, 是k阶对角矩阵, 分别由取A的完全奇异分解的矩阵U,V的前k列, 由完全奇异分解的矩阵 的前k个对角元素得到
定义一个新的 矩阵
的每一列均值为0,
即 等于X的协方差矩阵
主成分分析归结于求协方差矩阵 的特征值和对应的单位特征向量。
假设 的截断奇异值分解为 ,那么V 的列向量就是 的单位向量,因此V的列向量就是X的主成分。于是X求X的主成分可以通过 的奇异值来实现
主成分的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于主成分分析法、主成分的信息别忘了在本站进行查找喔。