数据预处理
归一化(Normalization)和标准化(Standardization)都属于特征缩放(Feature Scaling)的方法,用于数据预处理过程。而正则化(Regularization)一般用于解决过拟合的问题,用于模型训练过程中。
特征缩放(Feature Scaling)
在机器学习中,如果某列数据(某个特征)极差很大(比如最大400w,最小30),这就会让模型感到迷惑,不利于机器学习模型的学习,所以需要对该列数据进行缩放,将数据大小控制在一个合理的范围。在随机梯度下降法中,特征缩放有时能加速模型收敛速度。而在支持向量机SVM中,可以使其花费更少时间找到支持向量,特征缩放会改变SVM的结果。
特征缩放不仅可以缩小范围过大的特征,还可以放大范围过小的特征
一般来说,范围过大和过小的界限是[-3, 3]与[-1/3, 1/3]
在特征缩放,也就是是归一化和标准化中,如果对训练集数据做了相应的缩放处理,那么在验证集与测试集上进行验证或测试时,也要对数据进行相同的缩放处理
未归一化或标准化的数据会造成在大多数位置上的梯度方向并不是最优的搜索方向,导致需要更多次迭代才能收敛;归一化后大部分位置的梯度方向都近似于最优搜索方向,训练效率提高
归一化(Normalization)
针对一个数据维度的操作,将数据范围缩放至[0, 1]或者[-1, 1]
归一化处理针对[batch, feature, h, w]这种类似图片,每个特征下的数据是多维的,可以直接将[h, w]展平为一个向量数组处理,处理完后再reshape回去
线性变换
缺点是随着新数据的加入会导致数值范围的扩大而需要重新计算
-
离差归一化(Rescaling, Min-max Normalization):对应于sklearn.preprocessing.MinMaxScale(默认将值缩放至[0, 1])。也称为最小-最大缩放或最小-最大归一化,是最简单的方法。
公式为: x i ′ = x i − m i n ( x ) m a x ( x ) − m i n ( x ) x_i' = \frac{x_i-min(x)}{max(x)-min(x)} xi′=max(x)−min(x)xi−min(x)
其中,x为数据数组, x i x_i xi为某一个数据, x i ′ x_i' xi′为该数据缩放后的数值。
这样数据就被缩放至[0, 1],数据极差变为1. -
均值归一化(Mean Normalization):某些时候,当数据中含有负值时,我们可能希望将数据映射到[-1, 1]的范围,那么这时可以使用均值归一化。也就是将离差标准化公式分子的最小值值变为均值。
公式为: x i ′ = x i − a v g ( x ) m a x ( x ) − m i n ( x ) x_i' = \frac{x_i-avg(x)}{max(x)-min(x)} xi′=max(x)−min(x)xi−avg(x)
其中,x为数据数组, x i x_i xi为某一个数据, x i ′ x_i' xi′为该数据缩放后的数值。
均值归一化后的数据相加和为0,即均值归一化可以让特征具有为0的平均值。 -
缩放至单位长度(Scaling to unit length):缩放特征向量的分量,使整个向量的长度为1.这通常意味着将该向量的每个元素除以向量的欧几里德长度。
公式为: x i ′ = x i ∥ x ∥ x_i' = \frac{x_i}{\|x\|} xi′=∥x∥xi
非线性变换
-
对数归一化:有以下两种。
公式1: x i ′ = log 10 x log 10 m a x ( x ) x_i' = \frac{\log_{10}x}{\log_{10}{max(x)}} xi′=log10max(x)log10x
公式2: x i ′ = log 10 x x_i' = \log_{10}x xi′=log10x
推荐第一种,除以最大值可以使数据落到[0, 1]区间 -
反正切归一化:
公式: x i ′ = 2 a t a n ( x ) π x_i' = \frac{2\ atan(x)}{π} xi′=π2 atan(x)
将数据投影到[-1, 1]区间
标准化(Standardization)
-
标准差标准化(Zero-mean Normalization):也叫做Z-score标准化。最常见的标准化方法就是Z标准化,也是SPSS中最常用的标准化方法,SPSS默认的标准化方法就是Z-score标准化。这种方法给予原始数据的均值和标准差进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1。一般的计算方法是确定每个特征的分布均值和标准差,然后从每个特征中减去平均值,之后将被减的特征值除以其标准差。
公式为: x i ′ = x i − m e a n ( x ) σ x_i' = \frac{x_i-mean(x)}{σ} xi′=σxi−mean(x)
其中,x为某个特征的向量, x i x_i xi为该特征中的某个数据, x i ′ x_i' xi′为该数据处理后的值。
Z-score标准化方法适用于特征最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。该种归一化方式要求原始数据的分布可以近似为高斯分布,否则归一化的效果会变得很糟糕。 -
小数定标标准化:通过移动x的小数位置进行标准化
公式为: x i ′ = x i 1 0 j x_i' = \frac{x_i}{10^j} xi′=10jxi
j的值需确保 m a x ( ∣ y ∣ ) < 1 max(|y|) < 1 max(∣y∣)<1 -
对数Logistic模式:
公式为: x i ′ = 1 1 + e − x i x_i' = \frac{1}{1+e^{-x_i}} xi′=1+e−xi1
创造新特征(Create New Feature)
根据已有特征创造出新特征
-
例如现有两个特征,长与宽。直接用这两个特征去训练的效果可能不是很好,可以定义一个新特征 长X宽 替代原来的两个特征,用这个特征去训练模型
-
根据数据点图推断拟合函数大致模样。该方法适用于传统的机器学习,深度学习中不需要。例如,数据点图的趋势轮廓有点像 x \sqrt{x} x函数,那么可以将新特征定义为原特征的平方根。