赞
踩
【深度学习/机器学习】为什么要归一化?归一化方法详解
在机器学习领域中,不同评价指标(即一组特征中的不同特征就是所述的不同评价指标)往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。即,原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。
其中,最典型的就是数据的归一化处理。简而言之,归一化的目的就是使得预处理的数据被限定在一定的范围内(比如[0,1]或者[-1,1]),从而消除奇异样本数据导致的不良影响。
在统计学中,归一化的具体作用是归纳统一样本的统计分布性。归一化在[0,1]之间是统计的概率分布,而归一化在[-1,+1]之间是统计的坐标分布。
奇异样本数据是指相对于其他输入样本特别大或特别小的样本矢量(即特征向量),譬如,下面为具有两个特征的样本数据x1、x2、x3、x4、x5、x6(特征向量—>列向量),其中x6这个样本的两个特征相对其他样本而言相差比较大,因此,x6认为是奇异样本数据。
奇异样本数据的存在会引起训练时间增大,同时也可能导致无法收敛,因此,当存在奇异样本数据时,在进行训练之前需要对预处理数据进行归一化;反之,不存在奇异样本数据时,则可以不进行归一化。总结就是,
归一化有如下好处:
另外没有一种数据标准化的方法,放在每一个问题,放在每一个模型,都能提高算法精度和加速算法的收敛速度。
又称为离差标准化,使特征值值映射到 [0 , 1]之间,转换函数如下:
x ′ = x − m i n ( x ) m a x ( x ) − m i n ( x ) x' = \frac{x-min(x)}{max(x) - min(x)} x′=max(x)−min(x)x−min(x)
这种方法基于原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。将A的原始值x使用z-score标准化到x’。转换函数如下:
x
′
=
x
−
μ
σ
x' = \frac{x-\mu}{σ}
x′=σx−μ
其中μ为所有样本数据的均值,σ为所有样本数据的标准差。
该类归一化方法经常用在数据分化比较大的场景,有些数值很大,有些很小。通过一些数学函数,将原始值进行映射。该类方法包括 tanh(-1,1)、sigmoid(0,1)、softmax(0,1),relu(0, +∞)等,需要根据数据分布的情况,决定非线性函数的曲线。类似于一些激活函数,参考:激活函数说明。
L范数归一化方法,对应的转换函数为:
x ′ = x m a x ( ∣ ∣ x ∣ ∣ p , θ ) x' = \frac{x}{max(||x||_p, \theta)} x′=max(∣∣x∣∣p,θ)x
其中
t
h
e
t
a
theta
theta 是为了防止除0,一般设置为1e-12。其中
L
p
L_p
Lp范数被定义为:
概率模型不需要归一化,因为这种模型不关心变量的取值,而是关心变量的分布和变量之间的条件概率;
SVM、线性回归之类的最优化问题需要归一化,是否归一化主要在于是否关心变量取值;
神经网络需要标准化处理,一般变量的取值在-1到1之间,这样做是为了弱化某些变量的值较大而对模型产生影响。一般神经网络中的隐藏层采用tanh激活函数比sigmod激活函数要好些,因为tanh双曲正切函数的取值[-1,1]之间,均值为0.
在K近邻算法中,如果不对解释变量进行标准化,那么具有小数量级的解释变量的影响就会微乎其微。
【1】https://blog.csdn.net/qq_23100417/article/details/84347475
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。