- 为什么会出现特征缩放?
因为在对训练集,进行梯度下降的时候,会出现一种情况,以三维的 J ( θ 1 , θ 2 ) J(\theta_1,\theta_2) J(θ1,θ2)为例,得到的三维图像非常不均匀,狭长,想象一下银河系的形状。在这种类型的大型训练集中操作,学习算法是迂回前进的,比起走直线要多花费不少时间,在这种情况下:
程序员:我要让他变短。
数学家:两点之间,直线最短。随便拐个弯也没什么,总比绕来绕去好啊。
于是,他们坚持着,能短的都让它短了的原则,对坐标轴进行缩放,使之更均匀,于是就有了特征缩放。
缩放前
缩放前
就这样,成功减短纷纷露出了欣慰的笑容。
- 特征缩放的方法
2.1 Rescaling (min-max normalization)
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)
常见的映射范围有 [0, 1] 和 [-1, 1] ,主要用于一些数据范围太大和太小的问题。
2.2 Mean normalization
x ′ = x − a v e r a g e ( x ) m a x ( x ) − m i n ( x ) x'=\frac{x-average(x)}{max(x)-min(x)} x′=max(x)−min(x)x−average(x)
2.3 Standardization
x ′ = x − μ σ x'=\frac{x-\mu}\sigma x′=σx−μ
μ \mu μ 是样本数据的均值(mean), σ \sigma σ 是样本数据的标准差(std)变成了一个均值为 0 ,方差为 1 的正态分布。
2.4 Scaling to unit length
x ′ = x ∣ ∣ x ∣ ∣ x'=\frac {x}{||x||} x′=∣∣x∣∣x
L 0 范 数 : ∥ w ∥ 0 = # ( i ) w i t h x i ≠ 0 ( 非 零 元 素 的 个 数 ) L_{0} 范数: \left \| w \right \|_{0} = \#(i)\ with \ x_{i} \neq 0 (非零元素的个数) L0范数:∥w∥0=#(i) with xi̸=0(非零元素的个数)
L 1 范 数 : ∥ w ∥ 1 = ∑ i = 1 d ∣ x i ∣ ( 每 个 元 素 绝 对 值 之 和 ) L_{1} 范数: \left \| w \right \|_{1} = \sum_{i = 1}^{d}\lvert x_i\rvert (每个元素绝对值之和) L1范数:∥w∥1=∑i=1d∣xi∣(每个元素绝对值之和)
L 2 范 数 : ∥ w ∥ 2 = ( ∑ i = 1 d x i 2 ) 1 / 2 ( 欧 氏 距 离 ) L_{2} 范数: \left \| w \right \|_{2} =\Bigl(\sum_{i = 1}^{d} x_i^2\Bigr)^{1/2} (欧氏距离) L2范数:∥w∥2=(∑i=1dxi2)1/2(欧氏距离)
L p 范 数 : ∥ w ∥ p = ( ∑ i = 1 d x i p ) 1 / p L_{p} 范数: \left \| w \right \|_{p} = \Bigl(\sum_{i = 1}^{d} x_i^p\Bigr)^{1/p} Lp范数:∥w∥p=(∑i=1dxip)1/p