Unsupervised Learning: PCA(Ⅰ)

本文将主要介绍PCA算法的数学推导过程

上一篇文章提到,PCA算法认为降维就是一个简单的linear function,它的input x和output z之间是linear transform,即,PCA要做的,就是根据把W给找出来(未知)

PCA for 1-D

为了简化问题,这里我们假设z是1维的vector,也就是把x投影到一维空间,此时w是一个row vector

,其中表示的第一个row vector,假设的长度为1,即,此时就是方向上的投影

那我们到底要找什么样的呢?

假设我们现在已有的宝可梦样本点分布如下,横坐标代表宝可梦的攻击力,纵坐标代表防御力,我们的任务是把这个二维分布投影到一维空间上

我们希望选这样一个,它使得经过投影之后得到的分布越大越好,也就是说,经过这个投影后,不同样本点之间的区别,应该仍然是可以被看得出来的,即:

下图给出了所有样本点在两个不同的方向上投影之后的variance比较情况

PCA for n-D

当然我们不可能只投影到一维空间,我们还可以投影到更高维的空间

来说:

串起来就得到,而分别是的第1,2,...个row,需要注意的是,这里的必须相互正交,此时是正交矩阵(orthogonal matrix),如果不加以约束,则找到的实际上是相同的值

 

Lagrange multiplier

求解PCA,实际上已经有现成的函数可以调用,此外你也可以把PCA描述成neural network,然后用gradient descent的方法来求解,这里主要介绍用拉格朗日乘数法(Lagrange multiplier)求解PCA的数学推导过程

注:均为列向量,下文中类似表示的是矢量内积,而表示的是矩阵相乘

calculate

目标:maximize ,条件:

calculate

在推导时,相较于,多了一个限制条件:必须与正交(orthogonal)

目标:maximize ,条件:

结论:也是这个matrix中的特征向量,对应第二大的特征值

PCA-decorrelation

神奇之处在于,即z的covariance是一个diagonal matrix,推导过程如下图所示

PCA可以让不同dimension之间的covariance变为0,即不同new feature之间是没有correlation的,这样做的好处是,减少feature之间的联系从而减少model所需的参数量

如果你把原来的input data通过PCA之后再给其他model使用,那这些model就可以使用简单的形式,而无需考虑不同dimension之间类似这些交叉项,此时model得到简化,参数量大大降低,相同的data量可以得到更好的训练结果,从而可以避免overfitting的发生

本文主要介绍的是PCA的数学推导,如果你理解起来有点困难,那下一篇文章将会从另一个角度解释PCA算法的原理~