机器学习实战之主成分分析

如果人类适应了三维,去掉一个维度,进入了二维世界,那么人类就会因为缺少了原来所适应的一个维度,而无法生存。 ——《三体》

在许多科幻电影中,有许多降维的例子。在《十万个冷笑话2》(可能只有萌新看过)中,大boss将主角降维到二维,就成了纸片人,进而失去了战斗能力;降维到一维,就变成了线条,这就是降维打击。

说直白点,降维就是将维度降低。在机器学习中,降维常常用来做数据的预处理。为什么要对数据进行降维了?那来从数据本身说起。

大数据时代,数据冗余,维度高。例如个人用户信息,存储了身份证,同时也存储了生日,就造成了冗余。

数据维度有相关性。例如,人脸头像具有对称性,去掉一般的像素点也是没有太大问题的。

数据有噪声。噪声对学习会产生干扰,去掉噪声可以提高算法的精度。

那如何进行降维了?难道要随机去掉一些维度吗?答案是否定的。直接去掉维度会导致数据信息的大量确实。主成分分析(PCA)技术可以尽量保证数据信息少量减小的情况下,进行维度的缩减。

PCA原理

首先看下图,这是一个二维数据,有三个类别(不同颜色表示)。我们希望将其降到一维,那是按u1方向投影还是按u2方向呢。明显可以看出,u1比u2好。

推导

为什么说u1比u2好呢?我们可以基于两点进行解释。

样本点到这个直线的距离足够近。

样本点在这个直线上的投影能尽可能的分开。

基于这两个原则,进行公式推导(这里进行省略),可以得到下面公式。XXT为样本的协方差矩阵。

流程

根据公式可以得到PCA的流程:

去除平均值

计算协方差矩阵

计算协方差矩阵的特征值和特征向量

特征值从大到小排序

保留最上面的N个特征向量

将数据转换到N个特征向量构建的新空间

PCA代码

数据情况

首先编写代码读入数据,可以看出其为二维数据。

算法代码

通过上述的算法流程,对代码进行编写,最后可视化降维后的结果。

算法优缺点

优点:降低数据复杂度

缺点:有可能损失有用信息

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180621G1VBBQ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励