1. 写在前面
最近机器学习课上正式讲了主成分分析,只是老师说的很快,我并没有完全理解。随后我搜了很多关于这方面的讲解来进行理解,仅优快云上就有很多讲的很好的文章,从协方差矩阵角度进行说明,基本上我也都理解了。但另一方面我发现可以结合我最近学的矩阵分析,从纯矩阵运算的角度推导。这里说明在阅读这篇文章之前,最好对矩阵知识有一定的了解,不过不用多深,因为我才刚刚开始学矩阵分析,所以我对矩阵的了解也不深。
2. 简单示例
在进一步推导公式什么的之前,我希望先通过一个简单的例子来具象化对PCA的理解。虽然数学概念是抽象的,但是它发挥作用的地方就在我们身边,特别是机器学习的概念知识。首先PCA是干什么的呢?它是用来降低输入的维度的,因为维度太高实在是不好分析,而且也没办法具象地显示出来。那怎么降低输入矩阵的维度呢,直接把其中的几个维度删掉吗?那这样的话,删掉哪几个呢?肯定不是直接删掉其中的维度,万一把关键的输入信息给删掉了,就算降低维度了,这个错误的输入还有什么用呢?PCA的思想是把输入的点投影到几个正交轴上,这里的轴就代表着维度,如果可以在删掉其中几个轴的同时还保留原来的大部分信息,那么这个降维就成功了。这是如何做到的呢?下面我们来看一个例子:
假如平面内存在三个坐标点,它们分别是(1,2), (2,4)和(3,6)。显然在这种情况下要表示这三个点我们得有两个维度,也就是(1,0)和(0,1)。如果我们换一个维度,这三个点还是这样表示吗?我们令新的维度是(1,2),(2,-1)。上述三个坐标点就变成了(1,0),(2,0)和(3,0)。可以看到在第二个维度下,三个点的坐标都是0,也就是说这三个点在第二个维度上没有一点变化,如果我们删掉第二个维度,原本三个坐标点的坐标信息是完全被保留了的,这也蕴含了PCA的主要思想:换基底。
很多时候,人往往会忽略司空见惯的东西,把一切都当做是理所当然。当我们写下每个数字的时候,我们往往会以十进制的角度去考虑它们,同样在我们标出点的坐标的时候我们也会以(1,0)和(0,1)为基底去表示它们。但是,这并不是理所当然的,坐标的位置并不会因为我们选取的基底而改变,我们选取(1,0)和(0,1)最直接的考量是这样表示简单,但情况并不总是这样。正如上述的例子,如果我们换一个基底表示这些点,坐标会变得更加简单。
3. 正式推导
通过上面的说明,我想大家应该对基底变换和它的作用有了更加具象的理解,下面我们要把具象的示例抽象出来,用数学语言进行表达。考虑一个输入矩阵:
这个矩阵表明输入的特征维度是n,共有m个样本。其实当我写出这个矩阵的时候,就已经隐含了一个信息,即这是以单位矩阵为基底的矩阵,因此每个样本的特征可以这样表示
整体就是: