机器学习]学习笔记:PCA(主成分分析)的直观理解

PCA是一种基本的数据降维技术。在知乎或者百度搜索PCA,会找到很多关于PCA的介绍。

我喜欢在直观上理解数学知识。因此我打算从直观的角度把我对PCA的理解写出来。毕竟是个人见解,如有不妥之处欢迎指正。

以下内容假定读者稍微了解过PCA。

接下来以最简单的模型为例:如何把二维数据压缩至一维。

正如最近很火的一句话:“戏说不是胡说,改编不是乱编”。数据压缩也不是随心所欲地压缩。我们的目标是:让新数据的方差尽可能地大。这样的标准能使得新数据尽可能地不丢失原有数据的信息,因为方差越大,数据间的差异越大。

如下图所示:有六个点,每个点有两个特征,分别对应x轴和y轴。我们需要把他们压缩成一维的数据,即每个点只有一个特征。

因此要寻一条直线,让所有点投影到该直线上。该直线上的刻度即为新数据的值。

机器学习]学习笔记:PCA(主成分分析)的直观理解
首先我们进行中心化处理。中心化的好处在于,我们寻求的直线必定经过原点。如下图所示。我们只需从所有经过原点的直线中,找一条直线,使得各个数据的方差最大。
机器学习]学习笔记:PCA(主成分分析)的直观理解

注意到这样一个性质:由于OP的距离是定的,因此过原点作任何一条直线,记Q是P在该直线上的投影点,都有 OQ2+PQ2=OQ^{2}+PQ^{2}=定值。如下图所示。

机器学习]学习笔记:PCA(主成分分析)的直观理解

OQP(xp,yp)显然知道 OQ (带正负号的长度)是数据 P(x_{p},y_{p}) 压缩后的值。

A1A6那么如下图所示:对于 A_{1} 到 A_{6}六个点, 线线线B1B6分别作直线的垂线,交直线于 B_{1} 到 B_{6} 六个点。线直线可以看做数轴,坐标系的原点就是数轴的原点。 B1B6b1,,b6记 B_{1} 到 B_{6} 六个点的刻度分别为 b_{1},…,b_{6} 。 b1,,b6那么 b_{1},…,b_{6} 就是降维后的数据。

机器学习]学习笔记:PCA(主成分分析)的直观理解
由于数据已经做了中心化处理,b1+b2++b6=0所以 b_{1}+b_{2}+…+b_{6}=0 。一般性的具体证明如下(电脑上编辑公式太麻烦了,学习时间紧张,暂时就用手写代替吧):
机器学习]学习笔记:PCA(主成分分析)的直观理解

也就说明 b 的均值为0。那么 b 的方差为: b12+b22+b32+b42+b52+b62n.\frac{b_{1}^{2}+b_{2}^{2}+b_{3}^{2}+b_{4}^{2}+b_{5}^{2}+b_{6}^{2}}{n} .

回想我们的目标是让压缩后的数据方差最大,i=16bi2即让 \sum_{i=1}^{6}{b_{i}^{2}} 最大。

Ai线di记点 A_{i} 到直线的距离为 d_{i} ,di2+bi2=那么有 d_{i}^{2} + b_{i}^{2} =定值。

i=16bi2+i=16di2=于是 \sum_{i=1}^{6}{b_{i}^{2}}+\sum_{i=1}^{6}{d_{i}^{2}} =定值。

使i=16bi2要使 \sum_{i=1}^{6}{b_{i}^{2}} 最大,i=16di2那么等价于 \sum_{i=1}^{6}{d_{i}^{2}} 最小。

到这里,问题就差不多解决了。后面的步骤和网上其他方法是一样的。

这个结果是很美妙的,我忍不住和一元线性回归作比较。如下图所示,一共有九个点。我们要进行一元线性回归,所采取的策略是让平方损失最小,通俗地来说,就是让九条绿线的平方和最小。

机器学习]学习笔记:PCA(主成分分析)的直观理解
如果是采用PCA,如下图所示,我们采取的策略是让九条红线的平方和最小。
机器学习]学习笔记:PCA(主成分分析)的直观理解

事实上,一元线性回归也能采取“使点到直线距离的平方和最小”的策略。两种策略各有各的优势与缺陷。只不过“平方误差最小原则”已经被广泛地接受。

类似地,对于n维数据,投影到更小的k维空间也能同样地进行类比。有时间的话我再更新。

本文系原创,首发于知乎。