通俗易懂的PCA降维原理详解
在机器学习实际的开发中,对原始数据的处理可能会占到主要的工作量,数据处理的好坏也往往直接关系到模型最后结果的好坏。在我们对原始数据进行特征提取时,有时会得到高维的特征向量,其中包含很多冗余和噪声。此时我们希望在高维的特征中找到影响整体的最主要的特征,来提升特征的表达能力、降低训练的复杂度。今天大管就和大家来聊一聊主成分分析(Principal Components Analysis)简称PCA是如何做到的。
PCA的目的是找到数据中的主要成分,并且利用这些主要成分表示原始数据,从而达到降维的目的。在高维数据中,想要精准的找到主成分是非常困难的,现在我们从二维的说起PCA是如何工作的。如下图所示
从图中可以看到,数据的主要成分坐在PC1这条轴上,这条轴上的数据有什么特点呢?数据的分布更为分散,即数据的方差更大。如果不好理解可以这样假设,当数据在某个轴上的投影为一个点,这样好吗?当然不好,因为一个点的话会丢掉左右数据的特征。比如在信号处理领域,信号具有较大的方差,噪声则具有较小的方差,信号与噪声的比叫做信噪比,信噪比越大意味着数据的质量越好。由此,可以得到,PCA的目标为最大化投影方差即让数据在主轴上投影的方差最大。
具体的做法如下
假设我们有一组数据点:
其中所有的向量均为列向量,对这些数据进行中心化:
其中μ是数据的均值。
在数学中,向量投影到另一个向量上的长度用向量的内积表示,因此向量xi在ω上的投影坐标可以表示为:
故PCA的目标又可以理解为找到一个投影方向ω,使得x1,x2,...xn在ω上的投影方差尽可能的大。(ω为方向单位向量,投影之后的均值为0)
投影之后的方差为:
上述的结果其实就是协方差矩阵,我们设为∑。由于ω是单位方向向量,所以ωTω=1。所以我们的最大化问题可以表示为:
使用拉格朗日乘子法,对w求导,令其等于0,得到∑ω=λω。故
到这里悬着的心终于落下来了,原来,x投影后的方差就是其协方差矩阵的特征值。最大的方差也就是协方差矩阵最大的特征值,次佳的投影方向就是第二大特征值,以此类推。于是我们得到PCA的求解步骤
PCA求解步骤
(1)对样本进行中心化处理;
(2)球中心化处理后的协方差矩阵;
(3)对协方差矩阵进行特征值分解,将特征向量从大到小排列;
(4)去前d个特征向量w1,w2,...wd,通过以下映射将n维样本降维到d维。
更多内容请扫描下方二维码关注小编公众号:程序员大管
参考资料
周志华 《机器学习》
葫芦娃 《百面机器学习》