独家 | 数据转换:标准化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粉丝交流群,红数点恭候各位。

编辑:王菁

校对:林亦霖

译者简介

林鹤冲,墨尔本大学生物医学和信息技术双学士应届毕业生。即将进入IT咨询的领域。希望趁年轻多尝试多学习来探寻和确定个人定位。希望能多补充专业知识和实践经验,未来能有机会在智能医疗领域发光发热。希望能与大家多交流学习专业和人生的经验!

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。

点击文末“阅读原文”加入数据派团队~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。

点击“阅读原文”拥抱组织

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值