2022吴恩达机器学习(Deep learning)课程对应笔记18
特征缩放
更新时间:2023/03/20
概述
本节将要介绍的内容是特征缩放,这一操作可以让梯度下降得更快。假设
x
1
x_{1}
x1表示的是房间的大小
x
1
∈
[
300
,
2000
]
x_{1}\in[300,2000]
x1∈[300,2000],
x
2
x_{2}
x2表示房子的房间数量,
x
2
∈
[
0
,
5
]
x_{2}\in[0,5]
x2∈[0,5]
H
o
u
s
e
:
x
1
=
2000
,
x
2
=
5
,
p
r
i
c
e
=
$
500
k
House:x_{1}=2000,x_{2}=5,price=\$500k
House:x1=2000,x2=5,price=$500k
那么参数
w
1
w_{1}
w1和参数
w
2
w_{2}
w2的大小应该怎么设置呢?
显然
w
1
=
50
,
w
2
=
0.1
,
b
=
50
w_{1}=50,w_{2}=0.1,b=50
w1=50,w2=0.1,b=50是一个比较合理的设置(下图右)
- 当一个特征的可能取值范围很大时,如 x 1 x_{1} x1表示的是房间的大小 x 1 ∈ [ 300 , 2000 ] x_{1}\in[300,2000] x1∈[300,2000],那么该特征对应的参数倾向于很小( w 1 w_{1} w1很小)
- 当一个特征的可能取值范围很小时,如 x 2 x_{2} x2表示房子的房间数量, x 2 ∈ [ 0 , 5 ] x_{2}\in[0,5] x2∈[0,5],那么该特征对应的参数倾向于很小( w 2 w_{2} w2很大)
如下图,当输入特征size的取值范围很大,输入特征bedrooms很小时(如下图左),输入特征size对应的参数
w
1
w_1
w1变化很小就会对模型的损失影响很大,输入特征bedrooms对应的参数
w
2
w_2
w2变化很大对模型的损失影响都会很小(如下图右)。
上面提到的这个问题就会到最终
J
(
w
1
,
w
2
)
J(w_1,w_2)
J(w1,w2)损失函数的图像是一个瘦长的椭圆,细小的
w
1
w_1
w1和
w
2
w_2
w2变化都会导致梯度来回振荡,最终导致收敛很慢。
那么一个有效的方法就是特征缩放,像上图一样将特征
x
1
x_1
x1和
x
2
x_2
x2归一化到同一个参数范围,那么对应的参数
w
1
w_1
w1和
w
2
w_2
w2对损失函数
J
(
w
1
,
w
2
)
J(w_1,w_2)
J(w1,w2)的影响就会一样大,也就是实现了从椭圆到圆的转变。
下面是如何实现特征缩放
如下图是最大值缩放
下面是均值归一化
x
1
=
x
1
−
μ
1
m
a
x
(
x
1
)
−
m
i
n
(
x
1
)
,
x
2
=
x
2
−
μ
2
m
a
x
(
x
2
)
−
m
i
n
(
x
2
)
x_1=\frac{x_1-\mu_1}{max_{(x_1)}-min_{(x_1)}},\ \ \ \ \ \ \ \ \ x_2=\frac{x_2-\mu_2}{max_{(x_2)}-min_{(x_2)}}
x1=max(x1)−min(x1)x1−μ1, x2=max(x2)−min(x2)x2−μ2
Z-SCORE归一化:
x
1
=
x
1
−
μ
1
σ
1
,
x
2
=
x
2
−
μ
2
σ
2
x_1=\frac{x_1-\mu_1}{\sigma_1},\ \ \ \ \ \ \ \ \ x_2=\frac{x_2-\mu_2}{\sigma_2}
x1=σ1x1−μ1, x2=σ2x2−μ2
特征缩放的范围并没有严格的标准,下面都是可以的