用零数学直观地解释主成分分析(PCA)

主成分分析(PCA)是数据科学可视化和降维不可或缺的工具,但经常被复杂的数学所淹没。这是很困难的,至少可以这么说,让我的脑袋围绕着为什么,这使得我很难欣赏它的全部美丽。

什么是PCA?

主成分分析(PCA)是一种将高维数据转换为低维数据的技术,同时保留尽可能多的信息。

原始的三维数据集。红色、蓝色、绿色箭头分别是第一、第二和第三主成分的方向。图片由作者提供。
PCA后的散点图由三维降为二维。图片由作者提供。

PCA是如何工作的?

这是一个两步走的过程。如果我们没有阅读或理解书的内容,我们就不能写一本书的摘要。

通过PCA方法了解数据

人类通过表达性语言来理解故事书的意义。不幸的是,PCA不会说英语。它必须通过它喜欢的语言——数学——在我们的数据中找到意义。

  • 我们能用数学方法量化数据中所包含的信息量吗?
方差公式。
我们朋友的身高记忆。图片由作者提供。
三个一模一样的朋友的剪影,我们需要根据他们的身高差异来识别他们。图像中7089643Pixabay,经作者许可编辑。
另一组我们的朋友的身高,我们记得很清楚。图片由作者提供。
三个身高差不多的朋友的剪影,我们需要认出他们。图像中7089643Pixabay,经作者许可编辑。
同样的一群朋友以及他们各自的身高和体重。图片由作者提供。

用PCA总结数据

就我个人而言,体重差异是如此之小(也就是一个小差异),这根本不能帮助我区分我们的朋友。我仍然主要依靠身高来猜测。

虚线表示身高和体重的方差。图片由作者提供。
所有的功能都标准化到相同的规模,以便进行公平的比较。图片由作者提供。
虚线表示最大方差的方向。图片由作者提供。
红色和绿色箭头是原始数据的主轴。图片由作者提供。| (正确的)主轴的方向已被旋转成新的x轴和y轴。图片由作者提供。
)原始数据中身高和体重的方差相似。图片由作者提供。| (正确的)经过PCA变换后,所有的方差都显示在PC1轴上。图片由作者提供。
所有的变量都标准化到相同的规模,以便公平比较。图片由作者提供。
三维数据集的Scree Plot示例。图片由作者提供。

逃跑的个人电脑

因为我们没有选择所有的主成分,我们不可避免地会丢失一些信息。但我们还没有确切描述我们失去了什么。让我们用一个新的玩具例子来深入研究这个问题。

这些点是分散的,但我们仍然可以在对角线上看到一些正相关。图片由作者提供。
)虚线为第一主成分和第二主成分的方向。图片由作者提供。| (正确的) PCA旋转数据,因此将最大方差放在PC1上,其次是PC2。图片由作者提供。
)虚线为第一主成分和第二主成分的方向。图片由作者提供。| (正确的)所有的点现在都在虚线上,因为我们去掉了第二个主成分。图片由作者提供。
所有的红线都是第2个主成分中的值,它们已经被删除了。图片由作者提供。
前两点两两欧几里得距离的比较)及之后(正确的)维数由2维降为1维。图片由作者提供。
这两点之间的成对欧几里得距离()及之后(正确的)降维基本相同。图片由作者提供。

用Python实现PCA

除了本文的前提之外,关于PCA还有很多内容。真正欣赏PCA之美的唯一方法就是亲自体验它。因此,我很乐意在这里分享一些代码片段,供任何想要动手的人使用。可以评估完整的代码在这里与谷歌Colab。

我们的玩具示例数据集的前5行。图片由作者提供。
我们的玩具数据在3d图表上。图片由作者提供。
折线图叠加在条形图上,以显示每个PC的方差比例。图片由作者提供。
每个PC都是由多个变量组合而成。图片由作者提供。
)原始数据。图片由作者提供。| (正确的)相同的数据,但用PCA简化为2-D。图片由作者提供。

最后的评论

PCA是一个数学上的美丽概念,我希望我能够以一种随意的语气传达它,这样它就不会让人感觉难以承受。对于那些渴望了解实质细节的人,我在下面附上了一些有趣的讨论/资源供您细读。

Carsome的数据科学家

Baidu
map