4.1 多功能
n:特征的数量(number of features)
x
i
x^i
xi:第 i 个训练样本的输入特征值,i 是训练样本的一个索引(input (features) of
i
t
h
i^{th}
ith training example)
x
j
i
x^i_j
xji:第 i 个训练样本中第 j 个特征量的值(value of feature j in
i
t
h
i^{th}
ith training example)
假设函数:
h
θ
(
x
)
=
θ
T
x
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
+
⋅
⋅
⋅
+
θ
n
x
n
h_θ(x)= θ^Tx = θ_0 + θ_1x_1 + θ_2x_2 + ··· + θ_nx_n
hθ(x)=θTx=θ0+θ1x1+θ2x2+⋅⋅⋅+θnxn
4.2 多元梯度下降法
假设函数:
h
θ
(
x
)
=
θ
T
x
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
+
⋅
⋅
⋅
+
θ
n
x
n
h_θ(x)= θ^Tx = θ_0 + θ_1x_1 + θ_2x_2 + ··· + θ_nx_n
hθ(x)=θTx=θ0+θ1x1+θ2x2+⋅⋅⋅+θnxn
参数:
θ
0
,
θ
1
,
θ
2
,
⋅
⋅
⋅
,
θ
n
θ_0,θ_1,θ_2,···,θ_n
θ0,θ1,θ2,⋅⋅⋅,θn
代价函数:
J
(
θ
0
,
θ
1
,
θ
2
,
⋅
⋅
⋅
,
θ
n
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
2
J(θ_0,θ_1,θ_2,···,θ_n) = \frac{1}{2m}\sum_{i=1}^m(h_θ(x^i)-y^i)^2
J(θ0,θ1,θ2,⋅⋅⋅,θn)=2m1∑i=1m(hθ(xi)−yi)2
梯度下降:
Repeat {
θ
j
:
=
θ
j
−
α
d
d
θ
j
J
(
θ
0
,
θ
1
,
θ
2
,
⋅
⋅
⋅
,
θ
n
)
θ_j := θ_j - α\frac{d}{dθ_j}J(θ_0,θ_1,θ_2,···,θ_n)
θj:=θj−αdθjdJ(θ0,θ1,θ2,⋅⋅⋅,θn)
}
即:
求导后得到:
当 n >= 1,
θ
0
:
=
θ
0
−
a
1
m
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
2
x
0
i
θ_0 := θ_0 - a\frac{1}{m}\sum_{i=1}^m(h_θ(x^i)-y^i)^2x_0^i
θ0:=θ0−am1∑i=1m(hθ(xi)−yi)2x0i
θ
1
:
=
θ
1
−
a
1
m
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
2
x
1
i
θ_1 := θ_1 - a\frac{1}{m}\sum_{i=1}^m(h_θ(x^i)-y^i)^2x_1^i
θ1:=θ1−am1∑i=1m(hθ(xi)−yi)2x1i
θ
2
:
=
θ
2
−
a
1
m
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
2
x
2
i
θ_2 := θ_2 - a\frac{1}{m}\sum_{i=1}^m(h_θ(x^i)-y^i)^2x_2^i
θ2:=θ2−am1∑i=1m(hθ(xi)−yi)2x2i
4.3 梯度下降法实践 1 - 特征缩放
面对多维特征问题的时候,我们要保证这些特征都具有相近的尺度,这将帮助梯度下降算法更快的收敛。对应的方法是尝试将所有特征的尺度都尽量缩放到 -1 到 1 之间。如图:
最简单的方法是令:
x
n
=
x
n
−
u
n
s
n
x_n = \frac{x_n-u_n}{s_n}
xn=snxn−un,其中
u
n
u_n
un 是平均值,
s
n
s_n
sn 是标准差。
##4.4 梯度下降法实践2-学习率
自动收敛测试:如果代价函数 J(θ) 一步迭代后的下降小于一个很小的值 ε 这个测试就判断函数已收敛。ε 可以 1e-3。通常选择一个合适的阈值 ε 是相当困难的,因此为了判断梯度下降算法是否收敛实际上更倾向于通过看左边的曲线而不是依靠自动收敛测试。
看图片还有个好处是能提前知道算法是否运算正确。
总结:
如果学习率 a 太小的话,收敛速度会很慢
如果学习率 a 太大的话,代价函数 J(θ) 可能不会在每次迭代都下降,甚至不会收敛
在运行算法时,尝试不同的 a 值,比如 0.001,0.01… 每隔 10 倍取一个值。通过绘制图选择使得 J(θ) 快速下降的一个 a 值。
4.5 特征和多项式回归
有时候通过定义一个新的特征,可能会得到一个更好的模型。如房价预测中可以将临街的长度和宽度两个特征整合成面积特征。
4.6 正规方程
正规方程提供了一种求 θ 的解析解法,所以我们不需要运行迭代算法,而是可以直接一次性求解 θ 的最优值。
上面的式子会给出最优的 θ 的值,其中
(
X
T
X
)
−
1
(X^TX)^{-1}
(XTX)−1 是
X
′
X
X'X
X′X 的逆矩阵
X
T
X^T
XT 是 X 的转置矩阵。如果令 θ 等于这个,这个 θ 值会最小化线性回归的代价函数 J(θ)。
如果使用正规方程,则不需要进行特征缩放。
何时应该使用梯度下降,何时应该使用正规方程法呢?
梯度下降的一个缺点是需要选择学习速率 a,这就表示通常需要运行多次,尝试不同的 a 找到运行效果最好的那个。梯度下降的另一个缺点是需要迭代多次,对于不同的实现方式,计算可能会更慢。
梯度下降法在特征变量很多的情况下也能运行地相当好,所以就算有上百万个特征也可以选择梯度下降,并且通常很有效。
正规方程不需要选择学习率。
正规方程需要计算
(
X
T
X
)
−
1
(X^TX)^{-1}
(XTX)−1 计算该结果的时间大概是 n 的三次方级,所以如果 n 非常大的话会计算的非常慢,在这种情况下正规方程法会比梯度下降慢很多。因此如果 n 比较大,那么一般会选择梯度下降法。
n 何时比较大呢?对于现代计算机 n 的值如果上万,可能会倾向于选择梯度下降法,但是如果 n 远大于此可能就会选择梯度下降法了。
总结:
对于特征变量不大的情况下,会选择正规方程。具体来说,只要特征变量数量小于 1 万通常会使用正规方程法而不使用梯度下降法。
4.7 正规方程及不可逆性
如果矩阵
X
T
X
X^TX
XTX 是不可逆的通常有两种最常见的原因:第一个原因是,由于某些原因,你的学习问题包含了多余的特征。第二个原因是,你允许的学习算法有很多特征,具体地说,在 m 小于或等于 n 的时候。
总结:如果发现
X
T
X
X^TX
XTX 是不可逆的,首先看特征里是否有多余的特征,如果的确有多余的特征,可以删除其中之一。如果没有多余的特征,可以检查是否有过多的特征,如果特征数量实在太多,如果少一些不影响的话则删除一些特征或者考虑使用正规化方法。