归一化方法

归一化方法(Normalization Method)

什么是归一化方法

通过某种算法,把需要的数据经过处理后限制在一定范围内(–来自百度百科)

为什么要进行归一化?

归一化/标准化实质是一种线性变换,线性变换有很多良好的性质,这些性质决定了对数据改变后不会造成“失效,反而能提高数据的表现,这些性质是归一化/标准化的前提。比如有一个很重要的性质:线性变换不会改变原始数据的数值排序。

(1)某些模型求解需要

1)在使用梯度下降的方法求解最优化问题时,归一化/标准化后可以加快梯度下降的求解速度,即提升模型的收敛速度。如左图所示,未归一化/标准化时形成的等高线偏椭圆,迭代时很有可能走“之”字型路线(垂直长轴),从而导致迭代很多次才能收敛。而如右图对两个特征进行了归一化,对应的等高线就会变圆,在梯度下降进行求解时能较快的收敛。

例子

  假设现在要预测房价,自变量为面积,和房间数,因变量为房价。那么可以得到公式

     y = θ 1 x 1 + θ 2 x 2 y = \theta_1x_1 + \theta_2x_2 y=θ1x1+θ2x2  

下面两张图中红色轨迹代表寻找最优解的过程,蓝色圆圈代表损失函数的等高线。在左图中可以看到,当数据没有归一化的时候,面积数的范围可以从0~2000,房间数的范围为1~5,其所形成的等高线非常尖。当使用梯度下降法寻求最优解时,很有可能走“之字型”路线(垂直等高线走),从而导致需要迭代很多次才能收敛;右图的过程更为平缓,更容易获得正确的最优解。
在这里插入图片描述

因此如果机器学习模型使用梯度下降法求最优解时,归一化往往非常有必要,否则很难收敛甚至不能收敛。
2)一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。

(2)无量纲化

例如房子数量和收入,因为从业务层知道,这两者的重要性一样,但计量单位不同,所以把它们全部归一化。 这是从业务层面上作的处理。

(3)避免数值问题

太大的数会引发数值问题。

归一化方法

1、Min-Max Normalization | 简单缩放 | 离差标准化

对各维特征值分别进行线性变换,使得各维特征值被映射到[0, 1]之间(区间缩放),转换函数如下:

v a l u e ∗ = v a l u e − m i n m a x − m i n value ^ * = \frac{value - min}{max - min} value=maxminvaluemin

其中min和max分别为某一特征值的最小值和最大值。这种方法适用于数值比较集中的情况,该方法的缺点是当有新的数据加入时,可能需要重新定义min和max。

2、均值归一化

v a l u e ∗ = v a l u e − μ m a x value^* = \frac{value - \mu}{max} value=maxvalueμ

除了函数不一样,其他与Min-Max Normalization相似。

3、非线性归一化

  • 对数函数归一化

     y = l o g 10 ( x ) y = log10(x) y=log10(x)

  • 反余切函数归一化

     y = a r c t a n ( x ∗ 2 π ) y = arctan(x*\frac{2}{π}) y=arctan(xπ2)

  • 经常用在数据分化比较大的场景,有些数值很大,有些很小。通过一些数学函数,将原始值进行映射。该方法包括 log、指数,正切等。需要根据数据分布的情况,决定非线性函数的曲线,比如log(V,

2)还是log(V, 10)等。

python实现归一化

数据归一化matlab及python 实现

莫烦python

关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化

机器学习中的数据预处理(sklearn preprocessing)

一些问题

1、数据特征的归一化,是对整个特征还是每一维特征

整体做归一化相当于各向同性的放缩,做了也没有用。

各维分别做归一化会丢失各维方差这一信息,但各维之间的相关系数可以保留。

如果本来各维的量纲是相同的,最好不要做归一化,以尽可能多地保留信息。

如果本来各维的量纲是不同的,那么直接做PCA没有意义,就需要先对各维分别归一化。

参考文章

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

https://www.jianshu.com/p/f9bde6a37d75

https://www.jianshu.com/p/95a8f035c86c

https://www.cnblogs.com/sddai/p/6250094.html

https://www.zhihu.com/question/31186681/answer/50929278

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值