知乎原文
如何通俗易懂地讲解什么是 PCA(主成分分析)?
PCA是一种基本的数据降维技术。在知乎或者百度搜索PCA,会找到很多关于PCA的介绍。
以最简单的模型为例:如何把二维数据压缩至一维。
数据压缩的目标是:让新数据的方差尽可能地大。这个标准能使得新数据尽可能地不丢失原有数据的信息,因为方差越大,数据间的差异越大。
如下图所示:有六个点,每个点有两个特征,分别对应x轴和y轴。需要把他们压缩成一维的数据,即每个点只有一个特征。
因此要寻一条直线,让所有点投影到该直线上。该直线上的刻度即为新数据的值。

首先进行中心化处理。中心化的好处在于,我们寻求的直线必定经过原点。如下图所示,只需从所有经过原点的直线中,找一条直线,使得各个数据的方差最大。

如下图所示,设P是样本的一个数据。注意到这样一个性质:由于OP的距离是定的,因此过原点作任何一条直线,记Q是P在该直线上的投影点,都有 =定值。

显然知道 (带正负号的长度)是数据 压缩后的值。
那么如下图所示:对于 到 六个点,分别作直线的垂线,交直线于 到 六个点。直线可以看做数轴,坐标系的原点就是数轴的原点。记 到 六个点的刻度分别为 。那么 就是降维后的数据。

由于数据已经做了中心化处理,所以 。一般性的具体证明如下:
设第 个点的坐标是 ,这条直线的单位方向向量是 。比如直线的斜率为 时,可以取 。
投影后的坐标,就是这个点的坐标和单位方向向量的点积:
把六个投影坐标加起来:
最后一步是因为中心化时,横坐标和纵坐标各自减去了自己的平均值,所以这两组坐标各自加起来都是 0。
也就说明 的均值为0。那么 的方差为: .
回想我们的目标是让压缩后的数据方差最大,即让 最大。
记点 到直线的距离为 ,那么有 + =定值。
于是 =定值。
使 最大,那么等价于 最小。
到这里,问题就差不多解决了。那电脑怎么找到这条线?先算中心化数据的协方差矩阵,再找最大特征值对应的特征向量。这个向量指的,就是刚才那条直线的方向。
这个结果很美妙,在这里和一元线性回归作比较。如下图所示,一共有九个点。我们要进行一元线性回归,所采取的策略是让平方损失最小,通俗地来说,就是让九条绿线的平方和最小。

如果是采用PCA,如下图所示,我们采取的策略是让九条红线的平方和最小。

做一元回归,是拿 X 猜 Y。X 定下来以后,我们只看猜出来的 Y 和真实的 Y 差多少,所以量的是图里的绿线。PCA 是把整个点投到线上,量的是图里的红线,也就是点到直线的垂直距离。
类似地,对于n维数据,投影到更小的k维空间也能同样地进行类比。
这篇是从几何上讲 PCA 的:我们是怎么找到那条线的?我在《大白话概率论:从数学直觉到 AI 视野》里,还从协方差矩阵的角度讲了这个问题,也讲了实际计算 PCA 时为什么会用到奇异值分解(SVD)。如果你想接着往下看,可以翻翻书里协方差矩阵那一节。