本系列是《玩转机器学习教程》一个整理的视频笔记。本小节主要介绍什么是主成分分析法PCA。
一
什么是主成分分析法?
在前面介绍了梯度下降法,梯度下降法通过迭代搜索方式寻找目标函数相应的最优解:
- 最小化的目标函数称为损失函数,使用梯度下降法搜索迭达寻找损失函数最小值所对应的参数;
- 最大化的目标函数称为效用函数,使用梯度上升法搜索迭达寻找效用函数最大值所对应的参数;
前面小节通过将梯度下降法应用在求解线性回归模型中,本章介绍一个梯度上升法的应用PCA。PCA(Principal Component Analysis)中文名为主成分分析法,PCA是一个非常有名的算法,这个算法不仅应用在机器学习领域,同时也是统计学领域的一个非常重要的方法。
PCA本身是一个非监督学习算法,他的作用主要用于降维,当然还有很多其他的应用,比如去噪,有时候对于一些数据经过主成分分析法去噪之后,再应用机器学习算法,相应的识别率会有所提高。而对于降维而言,降维本身有很多非常重要的意义:
- 通过降维来提高算法的效率;
- 通过降维能够更方便数据的可视化,通过可视化我们能够更好的理解数据;
二
主成分分析法的原理
前面介绍了主成分分析法主要作用是降维,下面基于这一点来介绍一下主成分分析法的原理。下图是一个二维平面,二维平面的横纵坐标代表两个特征,记为特征1和特征2。相应的有一些样本,每个样本就是二维平面上的一个点,这是一个二维特征的样本,如果对二维特征样本进行降维的话显然可以降到一维。
二维特征如果降低到一维,显而易见的做法就是选择一个特征,然后把另一个特征去除掉。如果我们此时选择特征1把特征2扔掉,此时所有的样本点都会被映射到X轴(即特征1所表示的轴)上。
最终的降维后的样本变成了下面的样子:
同理,对于所有样本点来说,扔掉特征1而保留特征2的话,相应的所有样本点都会被映射到y轴(即特征2所在的轴)上。
此时最终的降维结果如下所示:
此时对于二维特征我们有两种降维方案:
- 选择特征2删除特征1,如下图左半部分所示;
- 选择特征1删除特征2,如下图右半部分所示;
此时我们就需要来选择一个最好的降维方案。
很显然右边的方案是最好的降维方案,我们将所有的样本点都映射到X轴上(保留特征1删除特征2),此时发现:
- 映射后的点与点之间的距离相对比较大,也就是说此时点与点之间有很高的可区分度;
- 映射后的点与点之间的距离相对比较大,也更好的保持了原来点与点他们的距离,更趋近于原来样本分布的情况;
对于左侧这种降维方案显然点和点之间更加密了,这和原来点与点之间的分布差别很大。因此如果选择一种将原来的数据从二维降低到一维的话,显然会选择右边的方案。前面对比了两个方案,那有没有其他更好的降维方案?也就是说有没有比右边方案更好的降维方案。将样本从二维平面降到一维平面也就是一根直线上,那么相当于在二维平面上找一条直线。如下图所示,一条倾斜的直线,如果我们将所有样本点都映射到这根直线上。
此时降维后的样本如下图所示:
此时降维后的样本与原来样本的分布没有太大的差距,与此同时所有的这些点都在一个轴上,虽然这是一个倾斜的轴,但是我们可以将其理解为一个坐标轴,也就是只有一个维度。使用这种降维的方案,可以发现降维后的点和点之间的距离比映射到x轴和y轴时候更大,更趋近于原来样本点的分布情况。换句话说,点和点之间的距离更大,他们之间的区分度也就更明显。此时寻找最好的降维方案变成了找到降维后的样本点之间的间距更大的直线(即轴)。
为了找到这个轴,首先我们需要定义一下这个降维后样本点的间距,事实上在统计学中有一个指标可以直接来定义这样的样本间距,这个指标就是方差。在概率论与数理统计中,方差用于描述样本整体分布的疏密程度:
- 方差越大表示样本之间越稀疏;
- 方差越小表示样本之间越紧密;
此时将选择最好的降维方案变成了找到一个轴,这个轴使得样本空间中的所有点映射到这个轴以后,方差最大。
三
主成分分析法的求解
为了解决这个问题,在进行主成分分析法之前,首先对所有样本的均值归0,这个过程通常被称为demean。所谓的均值归零其实就是所有样本都去减去样本整体的均值。
经过demean操作相当于把原来的样本变成下面这个样子:
此时样本的分布并没有改变,只是把坐标轴进行了移动,使得样本的每一个维度均值都是0,此时计算方差公式中的x bar就为0。
需要注意的是在计算方差公式中,xi是所有样本点已经映射到新的坐标轴上之后得到的新的样本。此时的轴由于在图示中只有两个维度,因此可以记为(w1, w2)。
总结一下,进行主成分分析首先对所有样本进行demean的操作,之后我们将想要求的轴的方向用W向量来表示。由于此时以二维特征降维为例,所以用二维来表示W向量,这个方向的两个维度记为w1和w2,使得所有样本都映射到W向量这个方向之后,也就是将这些样本X映射到W向量之后的Xproject映射后的样本方差最大。
下图式子就是对于映射后的样本Xproject中的每个样本减去Xproject整体的均值,他们的平方和最终再除以一个m。
这里需要注意,对于样本X,他可能有n个维度,即n个特征。在例子中只有两个维度,即使有两个维度,每个样本本身也是包含两个特征的向量。因此,准确来说,下面的平方和需要写成向量范数的形式:
式子平方和的部分其实就是两个向量相减的操作,Xproject的均值也是一个向量,这是因为虽然我们把所有样本都映射到一个轴上,但是这个轴本身还是在这个二维平面中,例子中这些样本中的每一个样本都只有两个数,因此此时的Xproject均值也是一个向量。这个两个向量相减会得到一个新的向量,这个新向量对应模的平方和达到最大,由于使用demean处理,因此X project的均值为0,因此最终得到的计算方差的式子如下图所示:
简单来说就是把每个样本都映射到W轴上,得到新的样本点,这些新的样本点的方差达到最大。也就是下图的式子最大。假设红色的线是我们需要找的方向(w1, w2),蓝色样本为拥有两个特征的第i个样本,因此可以用Xi 1和Xi 2来表示,蓝色样本点Xi是一个向量。此时如果Xi要映射到W方向上的话,只需要向W表示的轴上做一个垂线,有一个焦点,此时焦点位置就是对应Xi样本降维后的样本Xi project,相应的分量就是Xproject i 1和Xproject i 2。现在要求对应模的平方,其实就是蓝色轴的对应长度的平方。相当于有两个向量X和W,我们将其中一个向量映射到另外一个向量上,对应的映射长度是多少,实际上这种映射就是点乘的定义,此时要找的W是一个轴,换句话说就是一个方向,用方向向量来表示就可以了,也就是说将W向量的模长为1,所以此时的式子可以进一步简化。
总的来说,就是要求每一个样本和我们需要找的轴W做点乘,点乘的结果取模,然后再平方除以m,当然此时也可以不使用模,因为两个向量点乘本来就是一个标量。
此时可以使用梯度上升法来解决,当然对于这样的问题,肯定可以使用数学的方法来直接求解出公式,事实上主成分分析法背后有非常强的数学原理作为支撑。不过我们只关注使用搜索的策略来求解主成分分析法,这样也能够对梯度上升法有一个更深刻的认识。
四
主成分分析与线性回归
主成分分析法如下图所示:
线性回归如下图所示:
其实单看图会发现两种方法有很多的相似之处,不同点除了在推导过程中的式子之外,还有在主成分分析法中横纵坐标代表两个特征,而在线性回归问题中横坐标表示特征纵坐标表示输出标记。
- 在线性回归中,寻找一条直线使得特征和输出标记之间的MSE尽可能的小,在二维坐标中,这些线都是垂直于x轴的;
- 在主成分分析法中,对于二维特征而言,寻找一个轴,使得样本在这个轴上投影后的样本方差最大,此时线不是垂直于x轴而是垂直于要找的这个轴;
这也是主成分分析法和线性回归他们都拥有样本和一个根直线的关系,但是这个关系是不同的。