专栏首页机器学习与统计学数据预处理|关于标准化和归一化的一切

数据预处理|关于标准化和归一化的一切

数据预处理是最令数据科学家头秃的工作

之前在知乎看过一个问题你为什么离开数据科学行业?一位知友est答曰:数据清洗10小时,拟合2分钟,如此重复996。

这条回答下面的评论更是精彩,居然真的会眼瞎。。。

之前推送过一篇数据处理方面的文章,整理一份详细的数据预处理方法

里面有一个问题没有说清楚,而且网上很多博客和公众号推文也都写的有点乱,这就是归一化(Normalization)和标准化(Standardization)的事。

本文重点说以下三点

  • 归一化和标准化之前的关系
  • 为什么要归一化和标准化
  • 哪些机器学习模型需要做归一化
  • 如何做归一化和标准化

归一化和标准化之前的关系

这是目前最混乱的。

在统计学里并没有Standardization,只有Normalization,不管是把数据变为均值为0,方差为1的正态分布,还是把数据映射到[0,1],都叫Normalization,其包括如下几种公式:

但是在机器学习领域,Normalization分为两个,一个是min-max normalization,

,一个是Mean normalization:

,机器学习里的Standardization特指把数据分布变为正态分布,

从sklearn的preprocessing里,不管是把数据分布变为均值为0,方差为1的正态分布还是把数据缩放到[0,1]都叫Standardization,当然把数据缩放为[-1,1]也叫Standardization,preprocessing里的Normalization里只包括正则化,即把x除以L1-范数或L2范数。

综上,把数据变为正态分布是标准化,把数据的范围缩放到[0,1]是归一化

归一化/标准化的意义

1)归一化后加快了梯度下降求最优解的速度

这个图来自吴恩达的机器学习课程,被引用无数次了。蓝色的圈圈图代表的是两个特征的等高线,左图两个特征X1和X2的区间相差非常大,X1区间是[0,2000],X2区间是[1,5],其所形成的等高线非常尖。当使用梯度下降法寻求最优解时,很有可能走“之字型”路线(垂直等高线走),从而导致需要迭代很多次才能收敛;而右图对两个原始特征进行了归一化,其对应的等高线显得很圆,在梯度下降进行求解时能较快的收敛。因此如果机器学习模型使用梯度下降法求最优解时,归一化往往非常有必要,否则很难收敛甚至不能收敛。

2)归一化有可能提高精度

一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。

哪些机器学习算法需要归一化

1)需要使用梯度下降和计算距离的模型要做归一化,因为不做归一化会使收敛的路径程z字型下降,导致收敛路径太慢,而且不容易找到最优解,归一化之后加快了梯度下降求最优解的速度,并有可能提高精度。比如说线性回归、逻辑回归、adaboost、xgboost、GBDT、SVM、NeuralNetwork等。需要计算距离的模型需要做归一化,比如说KNN、KMeans等。

2)概率模型、树形结构模型不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、随机森林。

归一化/标准化如何实现?

这一部分实在没办法详解,最好的办法就是阅读文档,动手练习!

sklearn.preprocess模块官方文档

https://scikit-learn.org/stable/modules/preprocessing.html#preprocessing

apachecn小组已将sklearn汉化,请移步

https://sklearn.apachecn.org/#/docs/40?id=_53-预处理数据

参考

https://www.jianshu.com/p/45430e476a7b

https://www.zhihu.com/question/20467170

https://zhuanlan.zhihu.com/p/30358160

https://www.cnblogs.com/LBSer/p/4440590.html

https://blog.csdn.net/u014535528/article/details/82977653

https://www.zhihu.com/question/20455227/answer/197897298

本文分享自微信公众号 - 机器学习与统计学(tjxj666),作者:统计学家

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

原始发表时间:2019-07-19

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 备战机器学习面试001|为什么需要对数值类型的特征做归一化?

    对数值类型的特征做归一化可以将所有的特征都统一到一个大致相同的数值区间内。最常用的方法主要有以下两种。

    统计学家
  • Colab超火的Keras/TPU深度学习免费实战,有点Python基础就能看懂的快速课程

    想要真的了解深度学习,除了看视频,拿数据和算力真枪实弹的练手可能比各种理论知识更重要。

    统计学家
  • Python开发必备的5个酷毙的Python工具

    工欲善其事必先利其器,一个好的工具能让起到事半功倍的效果,Python 社区提供了足够多的优秀工具来帮助开发者更方便的实现某些想法,下面这几个工具给我的工作也带...

    统计学家
  • 备战机器学习面试001|为什么需要对数值类型的特征做归一化?

    对数值类型的特征做归一化可以将所有的特征都统一到一个大致相同的数值区间内。最常用的方法主要有以下两种。

    统计学家
  • BAT面试题12:机器学习为何要经常对数据做归一化?

    一般做机器学习应用的时候大部分时间是花费在特征处理上,其中很关键的一步就是对特征数据进行归一化,为什么要归一化呢?维基百科给出的解释:1)归一化后加快了梯度下降...

    double
  • 【机器学习】--回归问题的数值优化

    回归问题求解时梯度下降由于样本数据的多样性,往往对模型有很大的影响,所以需要对样本数据做一些优化

    LhWorld哥陪你聊算法
  • 机器学习入门 4-8 scikit-learn中的scaler

    本系列是《玩转机器学习教程》一个整理的视频笔记。本小节主要介绍在sklearn中使用数据归一化。

    触摸壹缕阳光
  • 机器学习中为什么需要对数据进行归一化?

    如下图所示,蓝色的圈圈图代表的是两个特征的等高线。其中左图两个特征X1和X2的区间相差非常大,X1区间是[0,2000],X2区间是[1,5],其所...

    用户5745385
  • 机器学习入门 4-7 数据归一化

    本系列是《玩转机器学习教程》一个整理的视频笔记。本小节主要介绍数据归一化(Feature Scaling)。

    触摸壹缕阳光
  • 【AutoML】归一化(Normalization)方法如何进行自动学习和配置

    大家好,欢迎来到专栏《AutoML》,在这个专栏中我们会讲述AutoML技术在深度学习中的应用。这一期讲述在归一化机制中的应用。

    用户1508658

扫码关注云+社区

领取腾讯云代金券