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

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

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

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

640.jpg


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

640.jpg


640.jpg

640.jpg


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


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


本文重点说以下三点


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


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



这是目前最混乱的。


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


640.jpg


但是在机器学习领域,Normalization分为两个,一个是min-max normalization,image.png,一个是Mean normalization:image.png,机器学习里的Standardization特指把数据分布变为正态分布,640.png从sklearn的preprocessing,不管是把数据分布变为均值为0,方差为1的正态分布还是把数据缩放到[0,1]都叫Standardization,当然把数据缩放为[-1,1]也叫Standardization,preprocessing里的Normalization里只包括正则化,即把x除以L1-范数或L2范数。


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



归一化/标准化的意义



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


640.jpg


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


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


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


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



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

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



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



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


相关文章
|
18天前
|
数据采集 机器学习/深度学习 资源调度
归一化和标准化
归一化和标准化
|
18天前
【R语言实战】——带有新息为标准学生t分布的金融时序的GARCH模型拟合预测
【R语言实战】——带有新息为标准学生t分布的金融时序的GARCH模型拟合预测
|
18天前
|
数据可视化 vr&ar Python
时间序列分析技巧(二):ARIMA模型建模步骤总结
时间序列分析技巧(二):ARIMA模型建模步骤总结
|
18天前
|
算法 数据挖掘
R语言使用混合模型GMM进行聚类
R语言使用混合模型GMM进行聚类
|
机器学习/深度学习 资源调度 算法
特征工程:归一化与标准化
样本特征由于来源以及度量单位不同,它们的尺度(Scale),或者说是取值范围有可能差异很大。如果一个机器学习算法在缩放全部或者部分特征后不影响它的学习和预测,我们就称该算法具有尺度不变性(Scale Invariance)。神经网络从理论上应该具有尺度不变性,可以通过参数的调整来适应不同特征的尺度。
116 0
|
数据采集 机器学习/深度学习 Python
机器学习 - 数据预处理中的 特征离散化 方法
在数据分析中,我们认为在某个范围内取值过于密集的特征认为是取值”连续“的特征。出于某些需求经常需要将这些”连续特征进行离散化“。本文介绍三种比较实用的数据离散化方法。 本文介绍可供参考的三种特征离散化方法的Python实现。
205 1
|
机器学习/深度学习 人工智能 算法
详解机器学习中的数据处理(二)——特征归一化
详解机器学习中的数据处理(二)——特征归一化
193 0
详解机器学习中的数据处理(二)——特征归一化
|
数据采集 机器学习/深度学习 数据挖掘
机器学习数据预处理——归一化(Normalization)和标准化(standardlization)
昨天进行一场答辩,被评委老师问起来归一化的概念,一时间紧张没有想起来,后来复盘回忆,感觉还是自己的理解不够深刻,才导致关键时刻掉链子,没有想起。所以特此整理一下,以供加深印象。
780 0
|
数据采集 Python
数据预处理相关Demo(缺失值、均值方差标准化、极差法归一化、主成分分析)
数据预处理相关Demo(缺失值、均值方差标准化、极差法归一化、主成分分析)
319 0
数据预处理相关Demo(缺失值、均值方差标准化、极差法归一化、主成分分析)