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

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

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

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

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

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

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

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

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

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

机器学习]学习笔记:PCA(主成分分析)的直观理解_第3张图片

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

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

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

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

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

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

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

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

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

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

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

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

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

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

你可能感兴趣的:(机器学习]学习笔记:PCA(主成分分析)的直观理解)