特征缩放 (Features scaling)
为什么需要特征缩放?
目的让所有的变量处在一个数量级上,如果某一个变量的数量级和其他的相差太严重会导致收敛太慢,因为我们对每个变量使用的学习率都是一致的。
假如有某个变量的数量级太大,会导致损失函数的梯度图呈现这样扁竖的样子:
【解决方法:均值归一化】(Mean normalization)
X
:
=
X
−
a
v
g
(
X
)
r
a
n
g
e
X:=\frac{X-avg(X)}{range}
X:=rangeX−avg(X)
这样可以把X控制在
−
0.5
<
X
<
0.5
-0.5<X<0.5
−0.5<X<0.5
多项式回归
例如:
h
(
θ
)
=
θ
0
+
θ
1
x
1
+
θ
2
x
1
+
θ
3
x
3
.
.
.
.
h(\theta)=\theta_0+\theta_1x_1+\theta_2x_1+\theta_3x_3....
h(θ)=θ0+θ1x1+θ2x1+θ3x3....
如果把变量参数都看作矩阵:
为什么会有:
θ
=
(
X
T
X
)
−
1
X
T
y
\theta=(X^TX)^{-1}X^Ty
θ=(XTX)−1XTy
(注意:这里的
θ
\theta
θ是矩阵),假设样本总数m=4,特征数n=5。Hypothesis function 可以表示为
Y
=
X
θ
Y=X\theta
Y=Xθ
Y=m * 1
X=m * n
θ
\theta
θ=n * 1
X
T
X^T
XT=n * m
假如我们需要求
θ
=
X
−
1
Y
\theta=X^{-1}Y
θ=X−1Y,但我们不能保证X一定是方阵,可以使用矩阵转置来帮助
θ
=
(
X
T
X
)
−
1
X
T
y
\theta=(X^TX)^{-1}X^Ty
θ=(XTX)−1XTy