PCA原理解析

1. PCA原理解析

主成分分析(PCA)是一种数据降维和去除相关性的方法,它通过线性变换将向量投影到低维空间。对向量进行投影就是对向量左乘一个矩阵,得到结果向量:
PCA原理解析
在这里,结果向量的维数小于原始向量的维数。降维要确保的是在低维空间中的投影能很好地近似表达原始向量,即重构误差最小化。

1.1 计算投影矩阵

核心的问题的如何得到投影矩阵,和其他的机器学习算法一样,它通过优化目标函数得到。首先考虑最简单的情况,将向量投影到一维空间,然后推广到一般情况。

假设有n个d维向量Xi,如果要用一个向量X0来近似代替它们,这个向量取什么值的时候近似代替的误差最小?如果用均方误差作为标准,就是要最小化如下函数:
PCA原理解析
显然问题的最优解是这些向量的均值:
PCA原理解析
证明很简单。为了求上面这个目标函数的极小值,对它的求梯度(求导)并令梯度等于0,可以得到
PCA原理解析
解这个方程即可得到上面的结论。只用均值代表整个样本集过于简单,误差太大。作为改进,可以将每个向量表示成均值向量和另外一个向量的和:
PCA原理解析
其中,e为单位向量,ai是标量。上面这种表示相当于把向量投影到一维空间,坐标就是ai。当e和ai取什么值的时候,这种近似表达的误差最小?

这相当于最小化如下误差函数:
PCA原理解析
为了求这个函数的极小值,对ai求偏导数并令其为0可以得到
PCA原理解析
变形后得到
PCA原理解析
由于e是单位向量,因此eTe=1,最后得到
PCA原理解析
这就是样本和均值的差对向量e做投影。现在的问题是e的值如何选取。

定义如下散布矩阵:
PCA原理解析
它是协方差矩阵的n倍,协方差矩阵的计算公式为
PCA原理解析
将上面求得的ai带入目标函数中,得到只有变量e的函数:
PCA原理解析
上式的后半部分和e无关,由于e是单位向量,因此有 ||e||=1 的约束,这个约束条件可以写成eTe=1。我们要求解的是一个带等式约束的极值问题,可以使用拉格朗日乘数法。构造拉格朗日函数:
PCA原理解析
对e求梯度并令其为0可以得到
PCA原理解析
PCA原理解析
就是散度矩阵的特征值,e为它对应的特征向量,因此,上面的最优化问题可以归纳为矩阵的特征值和特征向量问题。矩阵S是实对称半正定矩阵,因此,一定可以对角化,并且所有特征值非负。事实上,对于任意的的非0向量x,有
PCA原理解析
因此,这个矩阵半正定。这里需要最大化eTSe的值,由于
PCA原理解析
因此, 为散度矩阵最大的特征值时,eTSe有极大值,目标函数取得极小值。将上述结论从一维推广到d’维。每个向量可以表达成
PCA原理解析
在这里ei是单位向量。误差函数变成
PCA原理解析
可以证明,使得该函数取最小值的ej为散度矩阵最大的d’个特征值对应的单位长度特征向量,即求解下面的优化问题:
PCA原理解析
其中,tr为矩阵的迹。矩阵W的列ej是要求解的迹的基向量。散度矩阵是实对称矩阵,属于不同特征值的特征向量相互正交。前面已经证明这个矩阵半正定,特征值非负。这些特征向量构成一组基向量,可以用它们的线性组合来表达向量x。从另外一个角度来看,这种变换将协方差矩阵对角化,相当于去除了各分量之间的相关性。

从上面的推导过程可以得到计算投影矩阵的流程如下:
(1)计算样本集的均值向量,将所有向量减去均值,这成为白化;
(2)计算样本集的协方差矩阵;
(3)对协方差矩阵进行特征值分解,得到所有特征值与特征向量;
(4)将特征值从大到小排序,保留最大的一部分特征值对应的特征向量,以它们为行,形成投影矩阵。

具体保留多少个特征值由投影后的向量维数决定。使用协方差矩阵和使用散度矩阵是等价的,因为后者是前者的n倍,而矩阵A和nA有相同的特征向量。

1.2 向量降维

得到投影矩阵之后可以进行向量降维,将其投影到低维空间。向量投影的流程如下。

(1)将样本减掉均值向量。

(2)左乘投影矩阵,得到降维后的向量。

1.3 向量的重构

向量重构指根据投影后的向量重构原始向量,与向量投影的作用和过程相反。向量重构的流程如下。

(1)输入向量左乘投影矩阵的转置矩阵。

(2)加上均值向量,得到重构后的结果。

从上面的推导过程可以看到,在计算过程中没有使用样本标签值,因此,主成分分析是一种无监督学习算法。除了标准算法之外它还有多个变种,如稀疏主成分分析、核主成分分析、概率主分量分析等。

2. 源代码分析

源码讲解视频