在之前的格物汇文章中,我们介绍了特征抽取的经典算法——主成分分析(PCA),了解了PCA算法实质上是进行了一次坐标轴旋转,尽可能让数据映射在新坐标轴方向上的方差尽可能大,并且让原数据与新映射的数据在距离的变化上尽可能小。方差较大的方向代表数据含有的信息量较大,建议保留。方差较小的方向代表数据含有的信息量较少,建议舍弃。今天我们就来看一下PCA的具体应用案例和特征映射的另一种方法:线性判别分析(LDA)。
PCA案例
在机器学习中,所使用的数据往往维数很大,我们需要使用降维的方法来突显信息含量较大的数据,PCA就是一个很好的降维方法。下面我们来看一个具体的应用案例,为了简单起见,我们使用一个较小的数据集来展示:
显而易见,我们数据有6维,维数虽然不是很多但不一定代表数据不可以降维。我们使用sklearn中的PCA算法拟合数据集得到如下的结果:
我们可以看到经过PCA降维后依然生成了新的6个维度,但是数据映射在每一个维度上的方差大小不一样。我们会对每一个维度上的方差进行归一化,每一个维度上的方差量我们称为可解释的方差量(Explained Variance)。由图可知,每一个维度上可解释方差占比为:0.4430,0.2638,0.1231,0.1012,0.0485,0.0204。根据经验来说我们期望可解释的方差量累计值在80%以上较好,因此我们可以选择降维降到3维(82.99%)或者4维(93.11%),括号中的数字为累计可解释的方差量,最后两维方差解释只有7%不到,建议舍去。图中的柱状图表示原维度在新坐标轴上的映射向量大小。在前两维度上表现如下图所示:
PCA虽然能实现很好的降维效果,但是它却是一种无监督的方法。实际上我们更加希望对于有类别标签的数据(有监督),也能实现降维,并且降维后能更好的区分每一个类。此时,特征抽取的另一种经典算法——线性判别分析(LDA)就闪亮登场了。