标准化处理:为何选择均值为0,方差为1?

标准化处理将数据均值调整为0,方差调整为1,使模型训练更高效、公平。

原文标题:为什么标准化要用均值0和方差1?

原文作者:数据派THU

冷月清谈:

本文深入浅出地解释了在数据标准化过程中,为什么需要将数据均值调整为0,方差调整为1。通过将均值设为0,可以将数据“点云”平移到原点,使梯度下降优化过程更平衡,收敛更快。而将方差设为1,则可以消除不同特征尺度差异带来的影响,避免模型过度关注数值大的特征,从而使模型能够公平地对待所有特征,提升模型的性能和稳定性。文章还简要提及了标准化在不同算法中的应用以及与其他归一化方法的选择。

怜星夜思:

1、除了MinMaxScaler,还有其他常用的数据归一化方法吗?它们各自适用于什么场景?
2、标准化之后,如果我需要将模型预测结果还原到原始数据的范围,应该怎么做?
3、文章提到标准化对梯度下降算法有好处,那么对于决策树这类算法,还需要进行标准化吗?为什么?

原文内容

图片
来源:DeepHub IMBA
作者:vaishnavi
本文约1000字,建议阅读5分钟
为什么标准化要把均值设为0、方差设为1?

先说均值。均值就是平均数,所有观测值加起来除以个数。

μ是均值,n是数据点总数,xᵢ是每个数据点,所以均值就是数据的重心位置。比如均值是20,那20就是平衡点。这不是说所有点到20的距离相等而是说两边的"重量"刚好在20这个位置抵消掉。

而方差衡量的是数据有多分散,定义是每个值与均值偏差的平方的平均值。

图片

n是数据点总数,xᵢ是每个数据点,μ是均值。

那均值为0有什么用?

可以把数据想象成坐标系里的一团“点云”。每个值减去均值(x — μ)之后,整团云就被平移到了原点位置。数据不再飘在某个角落而是以原点为中心分布。

这对很多机器学习算法都有好处,尤其是用梯度下降的时候。数据居中之后优化过程更平衡、收敛也更快。因为特征要是一开始就偏离原点很远,训练起来会麻烦不少。

那方差为1呢?

这是为了防止某个特征"欺负"其他特征。

举个例子:年龄和薪资两个特征,年龄范围10-70,薪资范围10,000-70,000。直接喂给模型的话,模型会觉得薪资比年龄重要1000倍(数字大嘛)。但这两个特征本来是独立的,凭什么薪资就更重要?

所以标准化就是除以标准差,让所有特征的方差都变成1。这样年龄和薪资就在同一个量级上了,变化幅度差不多。年龄有个小波动,不会因为薪资数字大就被模型无视掉。

可视化效果:

标准化之前,特征1(红色,小尺度)和特征2(蓝色,大尺度)放一起,红色那条几乎看不见。标准化之后,两个特征尺度一致,都能清晰显示出来。模型终于可以公平对待它们了。

什么时候需要标准化?逻辑回归、神经网络、KNN这类用梯度下降的算法,标准化影响最大。

总结一下:

均值为0让数据居中,方差为1让特征尺度统一。两者配合,算法学得更快,也不会偏心某个特征。至于什么时候该用标准化、什么时候该用MinMaxScaler,老实说我也还在摸索。

编辑:文婧

 


关于我们

数据派THU作为数据科学类公众号,背靠清华大学大数据研究中心,分享前沿数据科学与大数据技术创新研究动态、持续传播数据科学知识,努力建设数据人才聚集平台、打造中国大数据最强集团军。




新浪微博:@数据派THU

微信视频号:数据派THU

今日头条:数据派THU


归一化这块,我之前踩过坑。一开始啥都不懂,所有数据都一股脑用MinMaxScaler。后来发现有些特征的数据分布很不均匀,导致归一化后的效果很差。所以现在我都会先做个数据探索,看看分布情况再决定用哪个方法。

从信息论的角度看,决策树是通过信息增益或者基尼系数来选择最佳分割特征。这些指标的计算只依赖于数据的相对顺序,而与绝对数值无关。因此,标准化对决策树的影响不大。

决策树嘛,它本质上是在寻找最佳的特征分割点,对数值的绝对大小不敏感。所以一般来说,决策树类的算法,像随机森林、GBDT这些,都不太需要做标准化。做了可能也不会有啥明显的提升。

我做过实验,对决策树进行标准化,结果并没有明显的改善,甚至有时候还会降低模型的性能。所以现在我对决策树都是直接用原始数据,省时省力。

预测结果反标准化,这个简单!如果你标准化用的是均值和标准差,那就把预测结果乘以原来的标准差,再加上原来的均值就OK了。当然,前提是你得保存好做标准化时候的均值和标准差。

用Python的话,你可以用sklearn.preprocessing里的StandardScaler对象,它在fit的时候会保存均值和方差,反标准化的时候调用inverse_transform方法就行了。注意,确保你用的StandardScaler对象是训练模型时用的那个。