概念
一种降维的方法,想找到这样一个超平面:
- 最近重构性:样本点到这个超平面的距离都足够近
- 最大可分性:样本点在这个超平面上的投影能尽可能分开
基于这两种性质分别能得到PCA的两种等价推导:
从最大可分性出发,在新空间中超平面上的投影为,若所有样本点的投影能尽可能的分开,应该使投影后样本点的方差最大化,于是目标函数可写为:
总的来说,我们的目标就是找到另一组基,使得同样的这些样本在那组基上可以达到方差最大,协方差最小。
优化目标:
将一组N维向量降为K维(K大于0,小于N),其目标是选择K个单位(模为1)正交基,使得原始数据变换到这组基上后,各字段两两间协方差为0(各自独立),而字段的方差则尽可能大(投影后的点尽可能离散)。在正交的约束下,取最大的K个方差
算法流程
输入:样本集;低维空间维数m
过程:
1:对所有样本进行中心化:
2:计算样本的协方差矩阵
3:对协方差矩阵做特征值分解
4:取最大的m个特征值所对应的单位特征向量
输出:投影矩阵
Q&A
Q:为什么要做中心化
A:中心化并不属于预处理,而是 PCA 本身流程的一部分。如果数据其中某一特征(矩阵的某一列)的数值特别大,那么它在整个误差计算的比重上就很大,那么可以想象在投影到低维空间之后,为了使低秩分解逼近原数据,整个投影会去努力逼近最大的那一个特征,而忽略数值比较小的特征。因为在建模前我们并不知道每个特征的重要性,这很可能导致了大量的信息缺失。为了“公平”起见,防止过分捕捉某些数值大的特征,我们会对每个特征先进行标准化处理,使得它们的大小都在相同的范围内,然后再进行PCA。
减去均值等同于坐标移动,这样就能把原始数据点的中心移到与原点重合。
附:
标准化是将每个特征(即矩阵的每一列)减去均值并除以标准差。除以标准差是为了统一并消除量纲。
归一化仅仅是指除以标准差或类似意思。
Q:为什么选协方差矩阵
A:因为目标函数就是要让方差最大,让协方差最小
Q:为什么要找特征值和特征向量
A:当协方差矩阵分解为特征向量和特征值之后,特征向量表示着变换方向,而特征值表示着伸缩尺度。在PCA中,特征值描述着数据间的协方差。我们可以按照特征值的大小降序排列特征向量,如此我们就按照重要性的次序得到了主成分排列。
Q:为什么要让协方差最小
A:如果我们单纯只选择方差最大的方向,很明显,第二个选择的维度与第一个维度应该是“几乎重合在一起”,显然这样的维度是没有用的,因此,应该有其他约束条件。从直观上说,让不同尽可能表示更多的原始信息,我们是不希望它们之间存在(线性)相关性的,因为相关性意味着两个维度不是完全独立,必然存在重复表示的信息。
Q:主元成份分析(PCA)对输入数据的要求?
A:
1.线形性假设。
PCA的内部模型是线性的。这也就决定了它能进行的主元分析之间的关系也是线性的。现在比较流行的kernel-PCA的一类方法就是使用非线性的权值对原有PCA技术的拓展。
2.使用中值和方差进行充分统计。
使用中值和方差进行充分的概率分布描述的模型只限于指数型概率分布模型。(例如高斯分布),也就是说,如果我们考察的数据的概率分布并不满足高斯分布或是指数型的概率分布,那么PCA将会失效。在这种模型下,不能使用方差和协方差来很好的描述噪音和冗余,对教化之后的协方差矩阵并不能得到很合适的结果。事实上,去除冗余的最基础的方程是:其中 代表概率分布的密度函数。基于这个方程进行冗余去除的方法被称作独立主元分析(ICA)方法(Independent Component Analysis)。不过,所幸的是,根据中央极限定理,现实生活中所遇到的大部分采样数据的概率分布都是遵从高斯分布的。所以PCA仍然是一个使用于绝大部分领域的稳定且有效的算法。
3.大方差向量具有较大重要性。
PCA方法隐含了这样的假设:数据本身具有较高的信噪比,所以具有最高方差的一维向量就可以被看作是主元,而方差较小的变化则被认为是噪音。这是由于低通滤波器的选择决定的。
4.主元正交。PCA方法假设主元向量之间都是正交的,从而可以利用线形代数的一系列有效的数学工具进行求解,大大提高了效率和应用的范围。
Q:输入需要满足高斯么?
A:这个问题请教了大牛,因为有时数据的分布并不是满足高斯分布。在非高斯分布的情况下,PCA方法得出的主元可能并不是最优的。在寻找主元时不能将方差作为衡量重要性的标准。要根据数据的分布情况选择合适的描述完全分布的变量,然后根据概率分布式来计算两个向量上数据分布的相关性。等价的,保持主元间的正交假设,寻找的主元同样要使。这一类方法被称为独立主元分解(ICA)。
Q:样本数和特征维数有要求么?
A:pca降维不需要样本的个数大于特征的维数,没有特别要求,如果降维到30*29,这个是因为映射到另一个空间了,无需担心丢失了很多信息,并非特征选择直接丢掉了特征了,只是在另一个空间而已表达出原空间的高维。因此,要保证训练样本和测试样本被映射到同一个特征空间,这样才能保证数据的一致性。
Q:样本数小于特征维数怎么办?
A:假设在3维空间中有N=2个点,N个点来自维度为N-1的manifold,因为2个点必然在一条直线上,即这2个点得到1维子空间,它们的方差是“spread”在这个1维子空间上的,和样本的维度并没有什么关系。也就是说,N个样本的方差是spread在N-1维子空间上,即只有N-1个components。
举个例子来说,有两个点(1,1,1),(2,2,2),根据PCA的投影步骤:
(1)找到新的坐标系统的原点(1.5,1.5,1.5)
(2)两个点到新坐标轴的投影距离尽可能小,此处为0
(3)第一个component将是从(0,0,0)到(3,3,3)的直线,这个直线是使样本点投影到它后方差最大的一条线
(4)第二个component方向必须和第一个component正交,这条线可能是从(0,0,3)到(3,3,0),或者(0,3,0)到(3,0,3),但无论向谁投影,这两个点投影后它们的方差为0.
当样本数小于样本维度时,出现的这种现象就是“the curse of dimensionality”
本文链接:https://www.jianshu.com/p/9176c2f92057
参考文献
1.https://www.cnblogs.com/bjwu/p/9280492.html
2.http://www.voidcn.com/article/p-qmmeqveu-bcv.html
3.《机器学习》.周志华
4.http://www.voidcn.com/article/p-udqgjpcg-bcp.html