样本不同特征的取值范围如果不一样,可能导致迭代很慢,为了减少特征取值的影响,可以对特征数据进行缩放,加速算法的收敛。常见的映射范围有 [ 0 , 1 ] [0, 1] [0,1] 和 [ − 1 , 1 ] [-1, 1] [−1,1]。
常见的特征缩放方法有以下 4 种:
-
Scaling to unit length
x n e w = x ∣ ∣ x ∣ ∣ x_{new}=\frac{x}{||x||} xnew=∣∣x∣∣x
-
Rescaling (min-max normalization)
x n e w = x − m i n ( x ) m a x ( x ) − m i n ( x ) x_{new} = \frac{x-min(x)}{max(x)- min(x)} xnew=max(x)−min(x)x−min(x)
-
Mean normalization
x n e w = x − a v e r a g e ( x ) m a x ( x ) − m i n ( x ) x_{new} = \frac{x-average(x)}{max(x)- min(x)} xnew=max(x)−min(x)x−average(x)
-
Standardization
特征标准化,使每个特征的值有 零均值 (zero-mean) 和 单位方差 (unit-variance)。这个方法在机器学习算法中被广泛地使用,例如:SVM,逻辑回归和神经网络。公式如下:
x n e w = x − μ σ x_{new}=\frac{x-\mu }{\sigma } xnew=σx−μ
其中 μ \mu μ 是样本数据的均值(average), σ \sigma σ 是样本数据的标准差(std)。
标准差 s t d std std 的定义为:
s t d ( x ) = ∑ ( x − a v e r a g e ( x ) ) 2 N std(x) = \sqrt{\frac{\sum(x-average(x))^2}{N}} std(x)=N∑(x−average(x))2
其中, N N N 为样本总数。
原图 -> 减去均值 -> 除以标准差:
标准化 和 归一化 这两个中文词,主要指代以上四种 特征缩放 (Feature scaling) 方法。