最近在 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的,例如在一个向量化好的用户信息矩阵中,需要提取出关键的维度来作为特征描写。所以他的使用场景就类似于他的名字,分析矩阵里面的主要成分,但是维度具体取多少,需要按照自己的数据来计算,也许需要多次的验证。
3221 技术原理
主成分分析方法(PCA)是常用的数据降维方法,应用于多变量大样本的统计分析当中,大量的统计数据能够提供丰富的信息,利于进行规律探索,但同时增加了其他非主要因素的干扰和问题分析的复杂性,增加了工作量,影响分析结果的精确程度,因此利用主成分分析的降维方法,对所收集的资料作全面的分析,减少分析指标的同时,尽量减少原指标包含信息的损失,把多个变量(指标)化为少数几个可以反映原来多个变量的大部分信息的综合指标。
主成分分析法的建立,假设xi1,xi2,…,xim是i个样品的m个原有变量,是均值为零、标准差为1的标准化变量,概化为p个综合指标F1,F2,…,Fp,则主成分可由原始变量线性表示:
地下水型饮用水水源地保护与管理:以吴忠市金积水源地为例
计算主成分模型中的各个成分载荷。通过对主成分和成分载荷的数据处理产生主成分分析结论。
3222 方法流程
1)首先对数据进行标准化,消除不同量纲对数据的影响,标准化可采用极值法 及标准差标准化法 ,其中s= (图33);
图33 方法流程图
2)根据标准化数据求出方差矩阵;
3)求出共变量矩阵的特征根和特征变量,根据特征根,确定主成分;
4)结合专业知识和各主成分所蕴藏的信息给予恰当的解释,并充分运用其来判断样品的特性。
3223 适用范围
主成分分析不能作为一个模型来描述,它只是通常的变量变换,主成分分析中主成分的个数和变量个数p相同,是将主成分表示为原始变量的线性组合,它是将一组具有相关关系的变量变换为一组互不相关的变量。适用于对具有相关性的多指标进行降维,寻求主要影响因素的统计问题。
主成分分析PCA是一种简化数据集的技术。
它是一个线性变换。这个变换把数据变换到一个新的坐标系统中,使得任何数据投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上,依次类推。
主成分分析经常用于减少数据集的维数,同时保持数据集的对方差贡献最大的特征。这是通过保留低阶主成分,忽略高阶主成分做到的。这样低阶成分往往能够保留住数据的最重要方面。但是,这也不是一定的,要视具体应用而定。
主成分分析的运作:
获取数据集,计算数据的协方差矩阵,计算特征值和特征向量除以协方差矩阵,选择主成分,从选定的组件构造新的特征数据集。
iris数据集是本文中的目标数据集。数据有4个特征或变量;或矩阵代数中的4维。并且,1个目标向量显示依赖于4个特征的花的类型。所以,问题在于四维。4D并不多,但会尝试将其缩小为2D以说明PCA。
欢迎分享,转载请注明来源:品搜搜测评网