小言_互联网的博客

主成分分析(PCA)算法的介绍、解释和证明

251人阅读  评论(0)

算法的目标

主成分分析(PCA)算法的目标是将一组p维的样本数据降为d维;需要满足两个条件:

  • 样本数据各点与其映射到d维中的点的距离尽量近。
  • 样本数据映射到d维之后,他们的投影之间的相互距离尽可能远。

(其实这两个条件是等价的。)

举个例子,如果p=2,d=1,则PCA算法可以由下图表示:

算法的步骤

  • 对所有的样本进行中心化操作,如果有m个样本数据,中心化操作如下:

x i x i 1 m i = 1 m x i {x\mathop{ {} } \nolimits_{ {i} } \leftarrow x\mathop{ {} } \nolimits_{ {i} } -\frac{ {1} } { {m} } {\mathop{ \sum } \limits_{ {i=1} } ^{ {m} } {x\mathop{ {} } \nolimits_{ {i} } } } }

  • 计算样本矩阵X的协方差矩阵,并做特征值分解。
  • 取最大的d个特征值所对应的特征向量作为维度变换的投影矩阵W*。所以PCA算法的结果为:

Y = W T X {Y=W\mathop{ {} } \nolimits^{ {*T} } X}

解释和证明

为什么要对输入数据进行中心化操作呢?

很显然,我们求协方差的时候,先会将每个样本减去平均值,再进行取平方再平均的运算。中心化的操作可以看成求协方差的一部分。如果没有进行中心化操作,效果可以见https://blog.csdn.net/fisherming/article/details/80236631。

为什么计算样本的协方差矩阵,并做特征值分解?

这就是PCA的核心证明问题了,有一定的数学功底而且想弄明白PCA算法原理的读者可以往下继续看。

首先,设降维映射后的坐标系的标准正交基为:
{ w 1 , w 2 , . . . , w d } { \left\{ {w\mathop{ {} } \nolimits_{ {1} } ,w\mathop{ {} } \nolimits_{ {2} } ,...,w\mathop{ {} } \nolimits_{ {d} } } \right\} }
这里要解释一下,如果我们输入的样本是在普通的p维直角坐标系下表示的,那么降维变换后,映射到新的d为空间很有可能不是与以前的p维空间的某d和坐标轴重合,通俗的讲,这个d维空间往往是个斜的,就像把2维的数据映射到1维的直线的那个图一样,直线是斜的。所以就需要d为空间的基进行变换,从而达到用d维的数据就可以进行表示的目的。

所以,降维变换之后的一个d维向量可以表示为z(z1,z2,…,zd)。注意这个坐标的基已经进行了变换。所以:
z j = w j T x {z\mathop{ {} } \nolimits_{ {j} } =w\mathop{ {} } \nolimits_{ {j} } ^{ {T} } x}
(1) 考虑样本数据各点与其映射到d维中的点的距离尽量近

我们这时候要算降维变换前后对应点之间的距离,将其最小化就好了。可是我们发现降维变换前后的维度都不一样了,该如何算距离呢?这时我们要将降维变换后的坐标反变换回原来的p维空间内就好了。计算操作如下:
x = j = 1 d z j w j {\mathop{ {x} } \limits^{ } ={\mathop{ \sum } \limits_{ {j=1} } ^{ {d} } {z\mathop{ {} } \nolimits_{ {j} } w\mathop{ {} } \nolimits_{ {j} } } } }
所以所有降维变换前后的样本点之间的对应欧式距离就可以计算了,计算公式如下:
i = 1 m j = 1 d z i j w j x i 2 2 {\mathop{ \sum } \limits_{ {i=1} } ^{ {m} } { { \left\Vert { {\mathop{ \sum } \limits_{ {j=1} } ^{ {d} } {z\mathop{ {} } \nolimits_{ {ij} } w\mathop{ {} } \nolimits_{ {j} } } } -x\mathop{ {} } \nolimits_{ {i} } } \right\Vert } \mathop{ {} } \nolimits_{ {2} } ^{ {2} } } }
上式应该被最小化,化简的步骤参照南瓜书,我就直接贴图了:

所以PCA算法让我们转换成了一个典型的最优化问题:

(2) 考虑样本数据映射到d维之后,他们的投影之间的相互距离尽可能远

换成数学语言描述这个条件,就可以描述为最大化类内方差。也就是降维变换之后,使得样本在各个维度的方差最大化。这个思路似乎可以更简单的用数学表达式来描述。如果降维映射的标准正交基组成的矩阵为W,则:
Z = W T X {Z=W\mathop{ {} } \nolimits^{ {T} } X}
所以也可以转化成一个典型的最优化问题:

我们可以发现,和(1)中的结果是等价的。

求解此最优化问题的步骤参照南瓜书,我这里也直接贴图了:

学过线性代数的同学就会发现,证明的结果就是输入样本协方差矩阵的特征向量的定义式。所以我们需要计算协方差矩阵并对协方差矩阵进行特征值分解。

为什么要取最大的d个特征值所对应的特征向量作为维度变换的投影矩阵?

如果我们将原先的p为向量降维到d维,则需要取最大的d个特征值对应的特征向量构成d维空间的基向量,证明如下:

降维后的损失

既然是数据降维,就不可避免的损失一些东西。那么如何衡量损失的大小呢?可以通过特征值分解后最大的d个特征值之和与所有p个特征值之和的比值来反映损失的大小,即:
i = 1 d λ i i = 1 p λ i {\frac{ { {\mathop{ \sum } \limits_{ {i=1} } ^{ {d} } { \lambda \mathop{ {} } \nolimits_{ {i} } } } } } { { {\mathop{ \sum } \limits_{ {i=1} } ^{ {p} } { \lambda \mathop{ {} } \nolimits_{ {i} } } } } } }

参考文献

《机器学习》周志华

https://datawhalechina.github.io/pumpkin-book/#/


转载:https://blog.csdn.net/Andy123321aa/article/details/102485750
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场