主成分就是最分散的方向
想象你往桌上撒了一把谷粒。如果它们不是落成一团圆斑,而是朝一个方向铺得长长的,谁都能一眼指出"这个方向铺得最开"。主成分分析(PCA)问的正是这个:在一片数据点云里,哪个方向最分散?那个方向就是第一主成分(PC1),与它成直角、第二分散的方向就是 PC2。令人惊讶的是,这两个方向正是数据协方差矩阵的特征向量,而每个方向的分散程度(方差)正好是它的特征值。第8讲见过的那个特征思想,这回原样用到了数据的分散上。
拖动点云把它转一圈。抓住手柄旋转,整片云就跟着倾斜。无论转到哪个角度,包住点的金色椭圆(按一倍标准差画出的协方差)都随云一起转。在那椭圆里,最长的轴(绿)是 PC1,与它成直角的短轴(橙)是 PC2。两条轴的长度是各方向方差的平方根,也就是标准差。无论你怎么转动点云,PC1 总是精确指向铺得最开的方向。这些轴正是用这些点算出的协方差矩阵的特征向量。
这回只用滑块改变云的角度。两支箭头,PC1(绿)和 PC2(橙),全程跟随。PC1 是方差最大的方向,PC2 是与它成精确直角的第二个方向。无论你把滑块放在哪里,两条轴始终保持90度,因为对称协方差矩阵的特征向量永远彼此正交。所以主成分把数据干净地分解到互不重叠的方向上。这意味着一条轴上的信息绝不会漏到另一条轴。
亲手量一量为什么 PC1 特别。滑块转动一条方向线时,每个点都垂直投影到那条线上,留下一个落点。这些落点沿线铺得多开,就是那个方向的方差,长条显示出它的值。把线转来转去,方差在线与 PC1 对齐时升到最大,在与 PC2 对齐时落到最小。所以 PC1 也可以定义为"使方差最大的方向"。最分散的方向,正是信息保留得最多的方向。
现在到真正的用处了:降维。用开关只保留 PC1 或 PC2 其中一条轴。点被压扁到那条轴上,被丢弃的直角方向以虚线短尾(重建误差)显示出来。读数是被丢轴的方差,也就是你丢失的信息量。保留 PC1 时短尾最短,因为你扔掉的是最不分散的方向,所以丢得最少。把 2D 缩到 1D 同时把损失压到最小,这正是 PCA 压缩数据的方式。
最后,这是一个问你到底需要几个维度的工具。用滑块把云从圆形拉伸到非常细长。两条长条显示特征值的比例:上面是 lambda1/(lambda1+lambda2),下面是 lambda2/(lambda1+lambda2)。云圆时两条长条几乎五五开,所以只留一条轴就丢掉一半。越细长,PC1 的长条越接近100百分比,PC2 越趋近于零。那时只留一条轴也几乎守住全部信息。这个"被解释的方差"比例,正是衡量数据能安全缩到几维的尺子。