专栏首页数据派THU独家 | 数据转换:标准化vs 归一化(附代码&链接)

独家 | 数据转换:标准化vs 归一化(附代码&链接)

作者:Clare Liu, 英国金融科技数据科学家

翻译:林鹤冲

校对:王紫岳

本文约2300字,建议阅读10分钟

本文将解释数据转换中常见的特征缩放方法:“标准化”和“归一化”的不同之处,并举例说明何时使用,以及如何使用它们。

数据转换的前几步往往可以提升机器学习模型的准确性。本文将解释数据转换中常见的特征缩放方法:“标准化”和“归一化”的不同之处,并举例说明何时使用,以及如何使用它们。

数据转换是数据处理中十分基本的步骤之一。当我初学特征缩放的时候,经常用到“缩放” “标准化”“归一化”等术语。但是却很难找到应该在什么时候,使用哪一种方法的信息。所以,我想从以下几方面讲解一下:

  • 标准化和归一化的区别
  • 何时使用标准化和归一化
  • 如何用Python实现特征缩放

特征缩放的意义

在实践中,同一个数据集合中经常包含不同类别的变量。一个很大的问题是这些变量的值域可能大不相同。如果使用原值域将会使得值域大的变量被赋予更多的权重。针对这个问题,我们需要在数据预处理时对自变量或特征使用缩放的方法。虽然,“归一化”和 “标准化”这两个说法有时候可以互换使用,但是二者本质上确是不同的。

“特征缩放的目的是使得所有特征都在相似的范围内,因此建模时每个特征都会变得同等重要,并且更便于机器学习的算法进行处理。”

范例

这个数据集包含一个因变量(purchased)以及三个自变量(Country, Age, Salary)。我们能很容易发现变量彼此不在同一个范围内——年龄(Age)的值域在27-50之间,工资(Salary)的区间则是48K-83K。工资的值域远远地超过了年龄的值域。这会干扰我们的训练模型,因为很多的机器学习模型诸如K均值聚类(K-means clustering)和近邻算法(Nearest neighbour classification)都依据了欧氏距离(Euclidean Distance)。

关注年龄和工资变量

当我们计算欧氏距离的时候,(x2-x1)² 的值要远大于(y2-y1)² ,这意味着在不使用特征缩放的情况下,欧氏距离会被工资变量主导。年龄间的差距对整体欧氏距离的影响则很小。因此,我们需要使用特征缩放来将全部的数值统一到一个量级上来解决此问题。为了达到这个目标,基本的解决方法有二:“标准化”和“归一化”。

欧氏距离的应用

标准化 (Standardization):中心标准化

中心标准化(Z-score normalization)的结果是使所有特征的数值被转化成为均值为0、标准差为1的正态分布。公式如下:

这种将特征的值域重新缩放到0到1之间的技巧对于优化算法是很有用的,诸如在回归和神经网问题中应用到的“梯度下降”。缩放也适用于基于距离测量的算法,比如K近邻算法(KNN)。

归一化:离差标准化 (Max-Min Normalization)

另一常用的方法就是离差标准化(Min-Max scaling)。这个方法是将每个特征数值转化到[0,1]区间。对于每个特征,最小值被转化为0,最大值被转化为1。公式如下:

Code

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaler.fit(df)
scaled_features = scaler.transform(df)
#Convert to table format - MinMaxScaler
df_MinMax = pd.DataFrame(data=scaled_features, columns=["Age", "Salary","Purchased","Country_France","Country_Germany", "Country_spain"])

中心标准化 vs 离差标准化

相比于中心标准化,离差标准化后的标准差比较小。用上述数据集来展示:

特征缩放后

工资变量的常态分布和标准差

年龄变量的常态分布和标准差

通过以上图表,我们能清楚地发现离差标准化工资和年龄变量后,得到的标准差小于使用中心标准化方法。这说明在使用离差标准化后,数据的数值更加接近平均值。

但是如果特征列中含有异常值(outlier), 离差标准化只能将所有特征统一比例,并不能很好地解决异常值问题。中心标准化在异常值方面则有更好的表现,因此它比离差标准化应用更广。

特征缩放的使用场景:

一些基于距离矩阵的机器学习模型,被称为“距离分类器”,比如K近邻算法(KNN),支持向量机(SVM),神经网络(Neural Network)。特征缩放对于这些模型非常重要,特别是在特征的值域非常不同时。特征缩放减少了大值域变量对计算距离的影响。

离差标准化帮助我们转化不同比例上的数据,消除特殊特征的主导。并且它不需要对数据的分布进行假设(比如k近邻和人工神经网络)。但是,归一化(离差标准化)不能很好地处理异常值。相反,标准化(中心标准化)可以更好地处理异常值,以及加速诸如梯度下降等算法的收敛。所以我们通常选择中心标准化。

注:如果算法不是基于距离计算,特征缩放则不重要,比如朴素贝叶斯和线性判别分析,以及树模型(梯度提升、随机森林等)。

总结:现在你应懂得

  • 使用特征缩放的目的
  • 标准化与归一化的区别
  • 需要使用标准化或归一化的算法
  • 在Python中实现特征缩放

获取代码和数据集合,请使用一下连接:

https://github.com/clareyan/feasturescaling

原文链接:

https://www.kdnuggets.com/2020/04/data-transformation-standardization-normalization.html

本文分享自微信公众号 - 数据派THU(DatapiTHU),作者:Clare Liu

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

原始发表时间:2020-05-19

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 干货 | 国家信息中心杜平谈关于数字化的几点思考

    [ 导读 ]清华大学109周年校庆之际,清华校友总会软件学院分会、大数据系统软件国家工程实验室和清华大学大数据研究中心共同主办了以“软件定义新基建,数据驱动新未...

    数据派THU
  • 独家 | 在浏览器中使用TensorFlow.js和Python构建机器学习模型(附代码)

    本文首先介绍了TensorFlow.js的重要性及其组件,并介绍使用其在浏览器中构建机器学习模型的方法。然后,构建使用计算机的网络摄像头检测身体姿势的应用程序。

    数据派THU
  • 独家 | 寻找数据统治力:比较Spark和Flink

    本文首先介绍了Spark和Flink的发展背景、基本架构及其设计特点,然后从数据模型、状态处理和编程模型3个角度进行比较优势和限制,最后介绍Spark和Flin...

    数据派THU
  • 涨分利器!攻克目标检测难点秘籍之多尺度检测

    在前面的秘籍一:模型加速之轻量化网络和秘籍二:非极大抑制算法和回归损失优化之路中,我们主要关注了轻量化网络,非极大值抑制算法、回归损失优化。但是要想获得较好的检...

    BBuf
  • 数论部分第二节:埃拉托斯特尼筛法 埃拉托斯特尼筛法

    埃拉托斯特尼筛法 质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。怎么判断n以内的哪些数是质数呢? 埃拉托斯特尼筛法 厄...

    Angel_Kitty
  • 新零售风口来临,万亿互联网家装蜕变的突破口在哪?

    资本与巨头的加持让新零售的风口开始逐渐显现,人们开始通过新零售不断为传统行业的发展赋能。无论是商业模式还是底层驱动技术,新零售正在一步步走进我们的生活。互联网家...

    孟永辉
  • 赋能成就新零售风口,互联网家装如何借势重生?

    以“互联网+”为代表的创业浪潮的减退开始将互联网家装的发展带入到一个全新的阶段。借助新的方式对家装行业进行深度赋能,新零售就是诸多赋能方式当中的一个方面。无论是...

    孟永辉
  • 行业巨头纷纷加持,新零售赋能互联网家装的“新姿势”是什么?

    在移动互联网红利落幕的当下,寻找新的方式来推动家装行业的发展似乎是摆在人们面前的一道全新课题。以阿里、腾讯、京东为代表的互联网巨头对于新零售的加持正在让其成为下...

    孟永辉
  • jQuery第三篇 入口函数

    用户7873631
  • 当土巴兔、齐家网风光不再,新零售时代家装新进化路在何方?

    新零售无疑是当下最为热门的领域,诸多行业都开始通过加持新零售来获得新的增长动能,互联网家装亦不例外。然而,由于互联网思维的影响,人们仅仅只是把新零售看成是一个获...

    孟永辉

扫码关注云+社区

领取腾讯云代金券