专栏首页算法channel机器学习数据预处理:数据降维之PCA

机器学习数据预处理:数据降维之PCA

《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来!

01

回顾

到现在,已经总结了机器学习的:

  1. 回归算法之最小二乘方,脊回归,套索回归;
  2. 分类算法之逻辑回归,决策树分类,朴素贝叶斯决策,半朴素贝叶斯决策
  3. 聚类算法之高斯混合模型,解决这个模型选择了期望最大算法(EM算法)
  4. 介绍的以上算法都带有详细的原理介绍,例子阐述,代码实现(大部分都是自己编写不掉sklearn的包)

体会了机器学习的基本回归,分类,聚类到底是怎么回事后,该到了分析喂给这些算法的数据了,我们在之前介绍这些算法时,往往用到的数据都是已经预处理过的,比如做了归一化处理,做了降维处理等等。数据预处理做的好与坏,对我们最终问题的求解也是至关重要的,因此也是机器学习学习中的重要一个环节。

废话少说,下面介绍一个数据预处理常用的方法:数据主成分分析,简称PCA。

02

数据主成分分析的背景

现实中,我们要研究某个问题,比如预测一只股票的价格时,我们不想忽略每一个可能的影响因素,所以初步划定了100个影响股票价格的特征,再分析最近五年的这只股票的价格数据。这样多维度,大样本,会为预测股票的价格增加更多的筹码。

但是,这么多的维度一来给分析带来不便,二来某些维度可能存在相关性,从而增加了问题分析的复杂性。

为了解决这个问题,想到以下几种办法:

  1. 分别对每个指标进行分析。但是这种分析是孤立的,不能看到全貌。
  2. 减少维度。但是如果是盲目的减少,会损失很多有用的信息,进而产生错误的结论。
  3. 抓住主要成分。既避免了方法1的孤立分析,也解决了方法2的损失有用信息的问题,可以说它是最好的,这就是PCA做的事情。

03

什么是数据的主成分

要做主成分分析(PCA分析),首先要弄明白什么是主成分吧,什么又不算是主成分,即次要成分。

为了说明什么是数据的主成分,我们看下面的这个表格,它是某校高一101班期中考试三门主科的考试成绩单,显示了前3位学生的分数,可以看到语文都是110分,数学和外语三位同学的考试分数差距比较大。现在要根据这三门课程对这三位同学排名次,显然影响名次的特征有3个,那么这3个特征中哪些是主要影响排名的特征,哪些不是主要影响排名的特征呢?

我们几乎一眼就能看出,语文不是影响排名的主要特征,因为他们考得一样多,所以语文分数这个特征对最终排名的影响可以忽略;可以看出数学和外语分数才是拉开差距的特征。

因此,数学和外语分数,这两个特征,便构成了影响排名的主要成分,而另外一个特征:语文分数,是可以忽略掉的成分。

为了最直观的说明什么是数据的主成分,我们列举了这个有些极端的例子,因为3位同学的语文成绩是一样的,所以是可以忽略掉这个特征的。但是实际上后面几十位同学的语文成绩的差距还是有一些的,所以还是要考虑一下语文成绩。

在这里说到了一个概念:差距,如何定义这个差距变量,其实它就是数据的方差,可以看到这3位同学的语文成绩平均值为110分,方差为0,我们说这个特征可以忽略,相对的,数学和外语能拉开差距,不是因为平均值高或低,而是因为差距即方差大,成绩分布的相对散开,所以选取数学和外语作为主成分、主特征。

04

如何选择主成分

承上,我们先从一个很容易理解例子开始,阐述了主成分选取的一个考量指标:某个特征的方差,方差越大,我们越会倾向于这个特征;相对的,方差越小越不可能趋向它。

但是,这种理解有一点偏差,好像根据这个例子给我们一种感觉:主成分分析是一种简单的从 n 个特征中,根据特征的方差从大到小选择 k 个特征的过程。这样理解是不准确的,其实PCA分析后选择的 k 个特征很可能不是原来的 n 个特征中的几个。

那么到底如何确定最终的几个特征呢? 根据以上的分析,主要还是得从特征的方差下手,经过数据去均值,得到数据的协方差矩阵(方差和两两特征间的相关系数),选取特征向量,和数据投影到特征向量矩阵中。如何通俗易懂但不失严谨性地理解PCA操作的过程,请看明天的推送。谢谢您的阅读!

本文分享自微信公众号 - 算法channel(alg-channel),作者:alg-flody

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-12-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 揭秘Numpy「高效使用哲学」,数值计算再提速10倍!

    使用Python的地方,就能看到Numpy,尤其是需要数值计算的地方,Numpy的高性能更是体现的淋漓尽致。

    double
  • 机器学习:谈谈决策树

    ? 前面谈了逻辑回归的基本原理及梯度下降推导过程,编码实现了逻辑回归的梯度下降算法,这是分类算法。今天,我们继续开启分类算法之旅,它是一种高效简介的分类算法,...

    double
  • 写算法代码的一些教训

    如11点多朋友圈内留言,简单总结了下近两周写的代码及今天调试的心得。尽管写过一些代码,也有一些经验,但是感觉自己写代码还是小学生,该走的坑一点也没少。

    double
  • 业界 | 随机森林算法预测法官判决,准确度优于人类水平

    选自Science 作者: Matthew Hutson 机器之心编译 参与:蒋思源 近日,Science 报道了一种利用最高法院数据库和随机森林算法构建的法官...

    机器之心
  • 学习July博文总结——支持向量机(SVM)的深入理解(下)

    接上篇博文《学习July博文总结——支持向量机(SVM)的深入理解(上) 》; 三、证明SVM 凡是涉及到要证明的内容和理论,一般都不是怎么好惹的东西。绝大部分...

    剑影啸清寒
  • 机器学习实战之AdaBoost元算法

    今天学习的机器学习算法不是一个单独的算法,我们称之为元算法或集成算法(Ensemble)。其实就是对其他算法进行组合的一种方式。俗话说的好:“三个臭皮匠,赛过诸...

    罗罗攀
  • 机器学习实战之AdaBoost元算法

    罗罗攀
  • 机器学习及大数据相关面试的职责和面试问题

    ? 目录 · 机器学习、大数据相关岗位的职责 · 面试问题 · 答题思路 · 准备建议 · 总结 各个企业对这类岗位的命名可能有所不同,比如推荐算法/数据挖掘...

    小莹莹
  • 不同用户python path 权限问

    root 用户可以运行pip install mkdocs 但gitlab-runner 运行pip install mkdocs 则下列错误

    py3study
  • PCA的浅析与深入

    PCA(Princile Component Analysis),中文名叫做主成成分分析,它的主要理论是:线性组合输入空间,以期找到一组标准正交基,实现坐标变换...

    用户1147754

扫码关注云+社区

领取腾讯云代金券