方差:数据与平均数之差平方和的平均数。更多详见
Principal Component Analysis(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中表示,并期望在所投影的维度上数据的方差最大,以此使用较少的数据维度,同时保留住较多的原数据点的特性。
通俗的理解,如果把所有的点都映射到一起,那么几乎所有的信息(如点和点之间的距离关系)都丢失了,而如果映射后方差尽可能的大,那么数据点则会分散开来,以此来保留更多的信息。可以证明,PCA是丢失原始数据信息最少的一种线性降维方式。(实际上就是最接近原始数据,但是PCA并不试图去探索数据内在结构)
PCA 的理论基础:
关于为什么协方差的特征向量就是 k 维理想特征,有3个理论,分别是:
1. 最大方差理论
2. 最小误差理论
3. 坐标轴相关度理论
这里简单描述下最大方差理论:
(1) 最大方差理论:
信号处理中认为信号具有较大的方差,噪声有较小的方差,信噪比就是信号与噪声的方差比,越大越好。因此我们认为,最好的 k 为特征既是将 n 维样本点转换为 k 维后,每一维上的样本方差都很大
下图5个样本点:(已做过预处理,均值为0,特征方差归一)
PCA 处理图解如下:
降维转换后:
上图中的直线就是我们选取的特征向量,上面实例中PCA的过程就是将空间的2维的点投影到直线上。
那么问题来了,两幅图都是PCA的结果,哪一幅图比较好呢?
先解释一下投影的概念:
(2)最小误差理论:
根据最大方差理论,答案是降维后左图,其实也就是样本投影后间隔较大,容易区分。
其实从另一个角度看,左边的图每个点直线上的距离绝对值之和比右边的每个点到直线距离绝对值之和小,是不是有点曲线回归的感觉?其实从这个角度看,这就是最小误差理论:选择投影后误差最小的直线。
再回到上面的左图,也就是我们要求的最佳的 u ,前面说了,最佳的 u 也就是最佳的曲线,它能够使投影后的样本方差最大或者是误差最小。
另外,由于我们前面PCA算法第一步的时候已经执行对样本数据的每一维求均值,并让每个数据减去均值的预处理了,所以每个特征现在的均值都为0,投影到特征向量上后,均值也为0.因此方差为:
于是我们得到:
Coursera上Ag讲解部分:
更一般的情况是我们有 n 维的数据想降到 k 维 。在这种情况下, 我们不仅仅只寻找单个的向量 来对数据进行投影 ,我们要找到 k 个方向 来对数据进行投影 ,从而最小化投影误差。
(1)假设我们要从2维数据降维至1维数据,那么PCA算法的目的是找到一个直线,使得所有样本投影到这条直线的距离误差最小。
(2) 专业解释:
- 假设我们要从2维数据降至1维数据,那么PCA算法的目的是找到一个向量u(1)使得所有数据样本投影到这个向量时的投影误差最小。
- 假设我们要从n维数据降至k维数据,那么PCA目的是找到一组向量 u(1),u(2),u(3),.......u(k) 使得所有数据样本投影到这个向量时的投影误差最小。
(3)PCA和线性回归的区别
计算协方差矩阵 Σn×n
在实际运算中也可以用eig()函数代替SVD函数,因为协方差矩阵始终为对称正定矩阵(n*n),一定会存在特征值,奇异值矩阵分解主要是针对那些不是方阵的矩阵进行的一种分解。
(4)PCA降维
前面算出的新特征向量组成的矩阵为 nxn 维的,为了降维,我们可以只取出前k个向量,然后将原始数据样本 x(1),x(2),x(3),.......x(m)(x∈Rn) 转化为新的特征向量下的新数据样本 z(1),z(2),z(3),.......z(m)
一个常见的 选择K值的经验法则是选择能够使得它们之间的比例小于等于0.01的最小的k值 ,换言之 一个非常常用的 ,选择k值的方法是 :我们希望平均平方映射误差, 就是x和其映射值之间的平均距离除以数据的总变差, 就是数据的变化有多大。
该方差的步骤是:
选择不同的k值,运行PCA计算 Xapprox ,然后代入上述方法计算是否满足上述条件。
(2)利用奇异值进行计算
当用SVD对样本之间的协方差矩阵进行计算时,可以求出协方差矩阵的奇异值Sij,则通过计算贡献率
如果有新样本加入,则首先要对新样本进行PCA映射,然后将得到的新样本z代入到模型中进行计算
PCA只运行到训练样本中,不用在交叉验证数据集和测试数据集中,当求得了映射关系后,可以将这种关系直接应用到交叉验证数据集和测试数据集中
(2)PCA的应用
数据压缩
压缩数据,减小存储空间和内存空间
加速学习算法
可视化
(3)不建议利用PCA防止过拟合问题
PCA可以减少特征的数量(维数),所以在理论上讲可以防止过拟合问题,但是并不是最好的方法。最好的方法还是利用规则化参数对算法防止过拟合。
(4)何时使用PCA
并不是所有的问题都是要对原始数据进行PCA降维,首先应看在不使用PCA的情况下算法的运行情况,如果未达到所期望的结果,再考虑PCA对数据进行降维。
(5) 总结与讨论
PCA技术的一大好处是对数据进行降维的处理。我们可以对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息。
PCA技术的一个很大的优点是,它是完全无参数限制的。在PCA的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关,与用户是独立的。
但是,这一点同时也可以看做是缺点。如果用户对观测对象有一定的先验知识,掌握了数据的一些特征,却无法通过参数化等放啊对处理过程进行干预,可能会得不到预期的效果,效率也不高。
参考: PCA–主成分分析(Principal components analysis)-最大方差解释
【Stanford机器学习笔记】12-Dimensionality Reduction
机器学习实战ByMatlab(2):PCA算法
四大机器学习降维算法:PCA、LDA、LLE、Laplacian Eigenmaps