基础不牢,地动山摇。
在实际问题中,人们为了全面、准确地掌握样本信息,往往会用尽可能多的指标(特征)来描述样本,这会带来以下两个问题:
① 特征维度过多,会增加分析问题的难度和复杂性;
② 特征之间是具有一定的相关关系的,即特征彼此之间有部分信息是重复的,这可能会影响人们对真正重要的特征的把握。
基于上面两个问题,人们就希望在定量研究中涉及的特征较少,而得到的信息量又较多,并且特征之间保持独立,不会出现信息重复。事实上,这是可以实现的,主成分分析(Principal Component Analysis,PCA)就是常用的一种方法。它利用降维的思想,将原有的多个特征通过线性变换(投影)转化成少数几个代表性较好的综合特征,这少数几个综合特征被称为主成分,它们能够反映原始特征的大部分信息,并且各个主成分之间互不相关,不会出现信息重复。
1. 主成分分析的原理
① 通过线性变换降维
假设现在有个训练样本,每个样本都有
个属性(特征),则样本集可以表示为(
代表第
个样本的第
维特征):
首先,让我们通过个线性变换,将原始的
维特征投影到
维空间中(
),这一步的目的是减少特征维度。将这
个线性变换的权值向量放到一个投影矩阵
中(
表示第
个线性变换的权值向量,
表示
的第
个权值):
那么,单个样本在这个线性变换上的投影结果可以表达为:
更进一步地,全部样本在这个线性变换上的投影结果可以表达为:
通过以上介绍,我们知道了如何将原始的维特征降到
维,这
维特征的每一维,都是由原始的
维特征通过线性组合得到的。下面我们的任务就是寻找最合适的投影矩阵
,使得到的
维特征满足主成分的要求(即能反映原始特征的大部分信息,且互不相关)。
② 通过最大化方差计算投影矩阵
让我们先考虑的情况,即将原始的
维特征投影成一维的常数,这时的投影矩阵仅含有一个线性变换,它是一个
维向量,可以表示为:
那么,单个样本在上的投影结果可以表达为:
更进一步地,全部样本在上的投影结果可以表达为:
,即原始特征降到一维后的结果。
之前说过,主成分分析力求降维后的特征能够反映原始特征的大部分信息,那么我们如何做到这一点呢?在这里,我们用方差来量化特征反映的信息量。我们认为,样本在某个特征上尺度分得越开,特征值的方差越大,那么这个特征体现的信息量也就越多。既然这样,我们只要最大化投影结果的方差,就可以解出相应的投影矩阵了!
让我们按部就班地计算,首先计算全部样本的均值:
接着可以将投影结果的方差表示为:
其中,是样本原始特征的协方差矩阵,定义为:
如果我们事先对特征值做了中心化处理,如Z-Score标准化,使得 ,则协方差矩阵可以表示为(需要注意的是,式子中的
已经变成中心化处理后的样本集了):
我们的目标是关于最大化投影结果的方差
。显然,在最大化的过程中必须要满足一定的限制来防止
,我们可以强制添加限制
,即要求特征向量垂直投影到权值向量
上,这并不会对最终结果产生影响,因为我们仅仅对
的方向感兴趣,并不在意它的大小,详细的解释可以参照我上一篇博客。添加限制后,我们引入拉格朗日乘数,将最大化投影方差转化为最大化下式:
令此式关于的导数为零,求得驻点满足:
很明显,这是一个特征值、特征向量的问题,是协方差矩阵
关于特征值
的一个特征向量。
如果我们在式子的等号两边同时左乘
,可以得到
,等号左边就是投影结果的方差,也就是我们想要去最大化的东西。而等号右边,由于我们限制了
,所以等号右边其实就是特征值
,即:
。因此,最大的投影方差其实就对应着
矩阵的最大特征值,而此时的权值向量
就是最大特征值对应的特征向量。
有了上面的解释,我们可以很容易地推广到的情况:投影矩阵由协方差矩阵
的
个最大的特征值
对应的特征向量
组成,即:
2. 主成分分析的计算流程
一种计算方法是人为指定主成分个数
① 给定样本集和指定的主成分个数
;
② 对样本集进行中心化(如Z-Score标准化),即令样本均值为0;
③ 计算中心化后的样本的协方差矩阵;
④ 对协方差矩阵做特征值分解;
⑤ 取最大的个特征值所对应的特征向量
;
⑥ 输出最终的投影矩阵。
另一种计算方法是通过累计贡献率确定主成分个数
首先,先介绍两个概念
贡献率:第个主成分的方差在全部方差中所占的比重:
,它量化的是第
个主成分能够反映原始
维特征多大的信息。
累计贡献率:前个主成分的方差之和在全部方差中所占的比重:
,它量化的是前
个主成分功能反映原始
维特征多大的信息。
我们一般取累计贡献率达到85%-95%的特征值对应的特征向量来构成投影矩阵。
参考:
《模式识别与机器学习》马春鹏 译
《图解机器学习》许永伟 译