数据降维方法-主元分析

第一篇文章,想用最简单的语言描述机器学习中最常见的前处理方法-主元分析。

主元分析的英文是PrincipleComponent Analysis(PCA),简单理解就是最重要的要素分析。目的是通过PCA算法,抽取出数据集中最重要的特征。

我们举个小例子,一个班级10名同学的成绩如下表所示。

如用图像表达这几名同学的成绩,请参考下图。第一印象应该是Wang同学(蓝色)各个科目成绩平均且优秀,Lu,Meng和Qian同学体育成绩优异但其他科目稍显薄弱。因为数据集不是很多,因此我们直接观察数据可抓到此类信息,但如果这个成绩单包含了上千名同学,那人眼就会力不从心了。

此时,主元分析方法就可以闪亮登场了。其基本流程为:

上图有点不太像人说的话…吴老师不太了解屏幕前的您对此部分的兴趣有多大,因此在此先不赘述过多的细节。但您需要了解的是,经过PCA信息抽取,原来每位同学的5门课的成绩将可被降维到低维空间。如下图所示,Wang同学的成绩从原来包含5门课程的分数变成了2门课的分数,因此用一个点即可表达他的成绩(x轴为一门课程的成绩,y轴为另一门课程的成绩)。但请注意,此时的2门课成绩并特指具体哪一门课程的分数,而只是在低维空间的投影

明白了对单一同学成绩的PCA降维过程,那我们便可将成绩单上的所有数据一起送入PCA降维流程。注意的是该过程是对整个数据集进行处理,而不是一个同学接一个同学这样单一的处理。

接下来,我们借助Python + Scikit learn机器学习包来帮助我们完成PCA降维过程。

1. 首先载入必要的Packages。Pandas:读取Excel数据;StandardScaler:数据标准化;pyplot:作图;PCA:主元分析;numpy:数组计算(我们也可以通过numpy实现PCA降维,如很多同学感兴趣,我会在未来的帖子中详细描述该过程)。

2. 读取成绩数据(灰色框内为源代码,下方为运行结果,其他步骤同理)。df为成绩原始数据,包含名字和表头;X为切片数据,只保留成绩信息;Name为成绩单中各位同学的名字。

3. 数据标准化处理。拿数学成绩为例,每位同学的标准化数学成绩为原始数学成绩减去所有同学的数学成绩平均值后,再除以所有同学数学成绩的方差。其他各门成绩以此类推。经过标准化处理后,每个维度的量纲已经等价且均服从均值为0、方差1的正态分布。此时,每个维度都已去量纲化,避免了不同量纲的选取对距离计算产生的巨大影响。

降维数据在二维坐标上的显示如下图。X轴为第一主元,y轴为第二主元。每一个点代表一个同学的所有成绩;点间距离表达相似程度,距离近则表明成绩状态相似,反之则表明成绩状态不同。该图也印证了我们之前的猜想:Wang同学各门成绩平均且优秀,与其他同学明显不同;Meng,Lu,Qian三位同学成绩状态相似,均为体育优异但其他科目有待提高。

总结一下,PCA可保证精度的前提下,将高维数据降维至低维数据以便我们发现数据与数据之间的关系。试想如果本文例子中每位同学的成绩包含10门课程,且成绩单中包含10000名同学,此时的PCA是不是可以很好地帮助我们发现成绩背后的逻辑呢?当然了,成绩单这个例子可能不太恰当,读者们可以想想什么领域更需要PCA的帮忙,留言在下方吧!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180723G17LNN00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券