本次学习笔记主要记录学习机器学习时的各种记录,包括吴恩达老师视频学习、李宏毅老师视频学习、周志华老师的《机器学习》(西瓜书)以及李航老师的《统计学习方法》。作者能力有限,如有错误等,望联系修改,非常感谢!
机器学习笔记(三)-多变量线性回归
第一版 2021-09-22 初稿
一、多维特征
1.n代表特征的数量
2.
x
(
i
)
x^{\left( i \right)}
x(i)代表第i个训练实例,是特征矩阵中的第i行,是一个向量。
3.
x
j
(
i
)
{x_j}^{\left( i \right)}
xj(i)代表第i行的第j个特征。
4.支持多变量的假设h表示为:(n+1个参数,n个变量)
h
θ
(
x
)
=
θ
0
+
θ
1
x
1
+
.
.
.
+
θ
n
x
n
h_{\theta}\left( x \right) \,\,=\,\,\theta _0+\theta _1x_1+...+\theta _nx_n
hθ(x)=θ0+θ1x1+...+θnxn
引入x0=1,则(n+1维向量)
h
θ
(
x
)
=
θ
0
x
0
+
θ
1
x
1
+
.
.
.
+
θ
n
x
n
h_{\theta}\left( x \right) \,\,=\,\,\theta _0x_0+\theta _1x_1+...+\theta _nx_n
hθ(x)=θ0x0+θ1x1+...+θnxn
公式可简化为
h
θ
(
x
)
=
θ
T
x
=
[
θ
0
.
.
.
θ
n
]
[
x
0
.
.
.
x
n
]
h_{\theta}\left( x \right) \,\,=\,\,\theta ^Tx\,\,=\,\,\left[ \begin{matrix} \theta _0& ...& \theta _n\\ \end{matrix} \right] \left[ \begin{array}{c} x_0\\ ...\\ x_n\\ \end{array} \right]
hθ(x)=θTx=[θ0...θn]⎣⎡x0...xn⎦⎤
二、多变量梯度下降
代价函数为:
J
(
θ
1
,
.
.
.
θ
n
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
J\left( \theta _1,...\theta _n \right) \,\,=\,\,\frac{1}{2m}\sum_{i=1}^m{\left( h_{\theta}\left( x^{\left( i \right)} \right) \,\,-\,\,y^{\left( i \right)} \right) ^2}
J(θ1,...θn)=2m1i=1∑m(hθ(x(i))−y(i))2
批量梯度下降算法为:
r
e
p
e
a
t
{
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
0
,
.
.
.
θ
n
)
}
repeat\\\left\{ \theta _j\,\,:=\,\,\theta _j-\alpha \frac{\partial}{\partial \theta _j}J\left( \theta _0,...\theta _n \right) \right\}
repeat{θj:=θj−α∂θj∂J(θ0,...θn)}
(n >= 1):
r
e
p
e
a
t
{
θ
j
:
=
θ
j
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
(
s
i
m
u
;
tan
e
o
u
s
l
y
u
p
d
a
t
e
θ
j
f
o
r
j
=
0
,
.
.
.
n
)
}
repeat\\\left\{ \begin{array}{c} \theta _j\,\,:=\,\,\theta _j-\alpha \frac{1}{m}\sum_{i=1}^m{\left( h_{\theta}\left( x^{\left( i \right)} \right) -y^{\left( i \right)} \right)}{x_j}^{\left( i \right)}\\ \left( simu;\tan eously\,\,update\,\,\theta _j\,\,for\,\,j=0,...n \right)\\\end{array} \right\}
repeat{θj:=θj−αm1∑i=1m(hθ(x(i))−y(i))xj(i)(simu;taneouslyupdateθjforj=0,...n)}
三、多元梯度下降-特征缩放(feature scaling)
前提:以房价问题为例,假设我们使用两个特征,房屋的尺寸和房间的数量,尺寸的值为 0-2000 平方英尺,而房间数量的值则是 0-5,以两个参数分别为横纵坐标,绘制代价函数的等高线图能,看出图像会显得很扁,梯度下降算法需要非常多次的迭代才能收敛。
解决的方法:尝试将所有特征的尺度都尽量缩放到-1 到 1 之间。
均值归一化(mean normalization)
x
n
=
x
n
−
μ
n
S
n
x_n\,\,=\,\,\frac{x_n-\mu _n}{S_n}
xn=Snxn−μn
其中un是平均值,是Sn是max-min(或标准差)。
四、多元梯度下降-学习率(learning rate)
迭代次数和代价函数的图表可以看出何时收敛:
在机器学习笔记(二)中提到过α的影响,在此复习,梯度下降算法的每次迭代受到学习率的影响:
(1)如果学习率 α 过小,则达到收敛所需的迭代次数会非常高;
(2)如果学习率 α 过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛。
建议的α值:… , 0.001 , 0.003 , 0.01 , 0.03 , 0.1 , 0.3 , 1 , …
五、特征和多项式回归
h
θ
(
x
)
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
可代替
h
θ
(
x
)
=
θ
0
+
θ
1
(
s
i
z
e
)
+
θ
2
(
s
i
z
e
)
2
或
h
θ
(
x
)
=
θ
0
+
θ
1
(
s
i
z
e
)
+
θ
2
(
s
i
z
e
)
h_{\theta}\left( x \right) =\theta _0+\theta _1x_1+\theta _2x_2 \\ \text{可代替}h_{\theta}\left( x \right) =\theta _0+\theta _1\left( size \right) +\theta _2\left( size \right) ^2 \\ \text{或}h_{\theta}\left( x \right) =\theta _0+\theta _1\left( size \right) +\theta _2\sqrt{\left( size \right)}
hθ(x)=θ0+θ1x1+θ2x2可代替hθ(x)=θ0+θ1(size)+θ2(size)2或hθ(x)=θ0+θ1(size)+θ2(size)
采用多项式回归模型,进行梯度下降算法前,特征缩放是必要的。
六、正规方程(Normal Equation)
某些线性回归问题会用到正规方程,而不是梯度下降。
正规方程是通过求解下面的方程来找出使得代价函数最小的参数的:
∂
∂
θ
j
J
(
θ
j
)
=
0
\frac{\partial}{\partial \theta _j}J\left( \theta _j \right) =0
∂θj∂J(θj)=0
假设训练集特征矩阵为X,训练集结果为向量 y,则利用正规方程解出向量:
θ
=
(
X
T
X
)
−
1
X
T
y
\theta =\left( X^TX \right) ^{-1}X^Ty
θ=(XTX)−1XTy
以上求导得θ的推导过程:
推导过程参考
推到过程
梯度下降和正规方程比较
梯度下降 | 正规方程 |
---|---|
需要选择学习率α | 不需要 |
需要多次迭代 | 一次运算得出 |
当特征数量 n 大时也能较好适用 | 需要计算 ( X T X ) − 1 \left( X^TX \right) ^{-1} (XTX)−1如果特征数量 n 较大则运算代价大,因为矩阵逆的计算时间复杂度为O(n³),通常来说当 n 小于 10000 时还是可以接受的 |
适用于各种类型的模型 | 只适用于线性模型,不适合逻辑回归模型等其他模型 |
正规方程及不可逆性
不可逆(奇异或退化)矩阵:
(1)特征之间不独立,如同时包含英尺为单位的尺寸和米为单位的尺寸两个特征;
(2)特征数量大于训练集的数量。(可正则化解决)
问:
θ
=
(
X
T
X
)
−
1
X
T
y
\theta =\left( X^TX \right) ^{-1}X^Ty
θ=(XTX)−1XTy中的
(
X
T
X
)
\left( X^TX \right)
(XTX)不可逆怎么办?
做法:
(1)首先观察所有特征,检查是否有多余特征,如果有,就删除,直到不再有多余的为止;
(2)否则,考虑使用正则化方法。
注:Octave求逆:pinv(伪逆,即使不可逆,也能求出来)、inv(逆)