在我的第一篇机器学习笔记的文章中曾写到,机器学习所研究的主要内容是“关于在计算机上从数据中产生模型的算法”,因此在进行机器学习的研究与实践中必然要处理许多的数据。这些数据的维度从低维到高维不等,对于低维的数据计算机处理起来很快,但对于高维的数据计算机处理起来不仅费时费力,而且还往往由于高维中存在着大量噪声,使得最终训练出的模型正确率大大降低。因此如何对数据降维也是机器学习中一个十分重要的话题,本文主要讲述数据为什么能降维,以及最重要的降维方法之一主成分分析(Principal Component Analysis ,PCA)的推导过程。
目录
- 为什么数据能被降维?
- 主成分分析(Principal Component Analysis,PCA)的步骤
- PCA的推导
一、为什么数据能被降维?
在回答这个问题之前,我们先来看一个例子。
在一个三维空间中有A、B、C三个点,如果我们用自然坐标系xyz来表示这组数据的话,它们的坐标分别为
A(1,0,0) B(0,1,0) C(0,0,1)
即我们表示每个点的坐标都需要三个数字,但有时我们觉得在三维的空间中对数据进行处理理解起来有些困难,比如求三维空间中两个向量的夹角,如果能把它们变成二维数据再进行处理我们人脑理解起来将会轻松很多,比如求平面上两个向量之间的夹角。那么我们能不能将它们用两个坐标进行表示呢?答案是肯定的!
仔细观察上图中的三个坐标,我们不难发现,ABC三点其实都分布在x+y+z=1的平面上
即xyz三变量间存在相关关系,知道了xy坐标,我们可以根据关系求出z,如果我们将XYZ坐标轴旋转平移一下,使平移后的x’与y’坐标轴与x+y+z=1平面重合,那么我们表示这组数据只需要x’和y’两个坐标就可以了。另外我们知道在三维空间中的3个点一定共面,也就是说用上面的这种方法,我们可以将三维空间中的任意3个点的组合用二维坐标表示出来,并使得他们之间蕴含的信息不受损失。上面例子可以降维的根本原因是不同的属性之间存在相关关系,一部分属性可以由另外一部分属性线性表出。同样地推广到n维的情况,我们也可以至少将它降维到n-1维空间中进行分析。
上一段文字中,认为把数据降维后并没有丢弃任何东西,因为这些数据在平面以外的第三个维度的分量都为0。现在,假设这些数据在z’轴有一个很小的抖动,那么我们仍然用上述的二维表示这些数据,理由是我们可以认为这两个轴的信息是数据的主成分,而这些信息对于我们的分析已经足够了,z’轴上的抖动很有可能是噪声,也就是说本来这组数据是有相关性的,噪声的引入,导致了数据不完全相关,但是,这些数据在z’轴上的分布与原点构成的夹角非常小,也就是说在z’轴上有很大的相关性,综合这些考虑,就可以认为数据在x’,y’ 轴上的投影构成了数据的主成分!
同样地,我们把以上三维空间中的情况扩展到n维,n维数据中也会存在一些抖动很小的属性,我们也可以把他们从数据中剔除,以达到降维的效果,最终保留下来的属性被称为数据的主成分。
二、主成分分析(Principal Component Analysis,PCA)的步骤
上一小节中我们已经知道了主成分的概念,主成分分析(Principal Component Analysis,简称PCA)正是这样一种从n维数据中选出k个主成分,然后将n维数据降维到k维空间的方法。需要注意的是这k维特征(这里的特征就是上节中的属性)是重新构造出来的k维特征(例如上面例子中的x’与y’),而不是简单地从n维特征中去除其余n-k维特征。
它的步骤如下:
输入:n维样本集D=(x(1),x(2),...,x(m)),要降维到的维数k。
输出:降维后的样本集D′
- 对所有的样本进行中心化: