数据标准化(Standardization)与 归一化(Normalization)
在机器学习领域中,不同评价指标(即特征向量中的不同特征就是所述的不同评价指标)往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。
一般涉及到梯度下降和距离的计算需要进行标准化或正则化。
-
数据的标准化(Standardization)是将数据按比例缩放,使之落入一个小的特定区间。因而标准化的数据可正可负。
-
归一化(Normalization)其实就是标准化的一种方式,只不过归一化是将数据映射到了[0,1]这个区间中。
归一化的目的就是使得预处理的数据被限定在一定的范围内(比如[0,1]或者[-1,1]),从而消除奇异样本数据导致的不良影响。
线性归一化(min-max normalization)
从公式中可看出,这种归一化适合数值比较集中的情况,缺陷就是如果max和min不稳定,很容易使得归一化结果不稳定,使得后续的效果不稳定。
# 使用scikit-learn函数
min_max_scaler = preprocessing.MinMaxScaler()
feature_scaled = min_max_scaler.fit_transform(feature)
# 使用numpy自定义函数
def min_max_norm(x):
x = np.array(x)
x_norm = (x-np.min(x))/(np.max(x)-np.min(x))
return x_norm
标准差标准化 Z-Score Standardization
, μ为总体平均值,X-μ为离均差,σ表示总体标准偏差
Z-Score即零-均值标准化, 即先求出全部数据的均值和方差,再进行计算。数据符合标准正态分布,均值为0,标准差为1。
sklearn.preprocessing.scale(X, axis=0, with_mean=True,with_std=True,copy=True)
"""
参数解释:
X:数组或者矩阵
axis:int类型,初始值为0,axis用来计算均值 means 和标准方差 standard deviations. 如果是0,则单独的标准化每个特征(列),如果是1,则标准化每个观测样本(行)。
with_mean: boolean类型,默认为True,表示将数据均值规范到0
with_std: boolean类型,默认为True,表示将数据方差规范到1
"""
StandardScaler.png
# 使用scikit-learn函数
standar_scaler = preprocessing.StandardScaler()
feature_scaled = standar_scaler.fit_transform(feature)
# 使用numpy自定义函数
def min_max_norm(x):
x = np.array(x)
x_norm = (x-np.mean(x))/np.std(x)
return x_norm
非线性归一化
在数据分化较大的场景,有些数值大,有些很小。通过一些数学函数,将原始值进行映射。该方法包括log、指数、反正切等。需要根据数据分布的情况,决定非线性函数的曲线。
log函数:
反正切函数:
归一化处理的好处
-
加快梯度下降的求解速度,即提升模型的收敛速度
image.png如上图所示,两个特征区间相差非常大时,如左图中的x1[0-2000]和x2[1-5],形成的等高线偏椭圆,迭代时很有可能走“之字型”路线(垂直长轴),从而导致需要迭代很多次才能收敛。
而右图对两个特征进行了归一化,对应的等高线就会变圆,在梯度下降进行求解时能较快的收敛。 -
有可能提高模型的精度
一些分类器需要计算样本之间的距离,如果一个特征的值域范围非常大,那么距离计算就会主要取决于这个特征,有时就会偏离实际情况。
正则化(Regularization)
用一组与原不适定问题相“邻近”的适定问题的解,去逼近原问题的解,这种方法称为正则化方法。
image.png正则化的过程是将每个样本缩放到单位范数(每个样本的范数为1),如果后面要使用如二次型(点积)或者其它核方法计算两个样本之间的相似性这个方法会很有用。
【总结】
归一化是为了消除不同数据之间的量纲,方便数据比较和共同处理,比如在神经网络中,归一化可以加快训练网络的收敛性;标准化是为了方便数据的下一步处理,而进行的数据缩放等变换,并不是为了方便与其他数据一同处理或比较,比如数据经过零-均值标准化后,更利于使用标准正态分布的性质,进行处理;正则化而是利用先验知识,在处理过程中引入正则化因子(regulator),增加引导约束的作用,比如在逻辑回归中使用正则化,可有效降低过拟合的现象。
网友评论