本次学习笔记主要记录学习机器学习时的各种记录,包括吴恩达老师视频学习、李宏毅老师视频学习、周志华老师的《机器学习》(西瓜书)以及李航老师的《统计学习方法》。作者能力有限,如有错误等,望联系修改,非常感谢!
机器学习笔记(二)-单变量线性回归
第一版 2021-09-22 初稿
一、模型描述
在监督学习中有回归问题和分类问题。
监督学习的数据集,称为训练集。
因为只含有一个特征/输入变量,因此这样的问题叫做单变量线性回归问题。
例子:房价预测
1.m 代表训练集中实例的数量
2.x 代表特征/输入变量
3.y 代表目标变量/输出变量
4.(x,y) 代表训练集中的实例
5.
(
x
(
i
)
,
y
(
i
)
)
\left( x^{\left( i \right)},y^{\left( i \right)} \right)
(x(i),y(i))代表第 i 个观察实例
6.h 代表学习算法的解决方案或函数也称为假设(hypothesis)
二、代价函数(Cost Function)
2.1 代价函数(一)
1.为模型选择合适的参数,其决定了我们得到的模型相对于我们训练集的准确程度。
2.模型所预测的值与训练集中实际值的差距为建模误差。
h
θ
(
x
)
−
y
h_{\theta}\left( x \right) \,\,-\,\,y
hθ(x)−y
3.选择使得建模误差的平方和能够最小的模型参数,即使得代价函数
J
(
θ
0
,
θ
1
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
)
−
y
)
2
J\left( \theta _0,\theta _1 \right) \,\,=\,\,\frac{1}{2m}\sum_{i=1}^m{\left( h_{\theta}\left( x \right) \,\,-\,\,y \right) ^2}
J(θ0,θ1)=2m1i=1∑m(hθ(x)−y)2最小。
代价函数又称平方误差函数,有时也称平方误差代价函数。
2.2 代价函数(二)
2.3 代价函数(三)
代价函数J中 每个系列的椭圆显示了J(θ0,θ1)值相等的点。
三、梯度下降(gradient descent)
3.1 梯度下降
梯度下降是一个用来求函数最小值的算法
思想:开始时,我们随机选择一个参数的组合(θ0,θ1,…,θn)计算代价函数,然后我们寻找下一个能让代价函数下降最多的参数组合,持续这样做,直到到一个局部最小值。因为没有尝试所有的参数组合,所以不能确定得到的局部最小值是否为全局最小值。不同的参数组合可能找到不同的局部最小值。
批量梯度下降(batch gradient descent):
r
e
p
e
a
t
u
n
t
i
l
c
o
n
v
e
r
g
e
{
θ
j
−
α
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
(
f
o
r
j
=
0
a
n
d
j
=
1
)
}
repeat\,\,until\,\,converge \\ \left\{ \begin{array}{c} \theta _j\,\,-\,\,\alpha \frac{\partial}{\partial \theta _j}J\left( \theta _0,\theta _1 \right) \,\,\left( for\,\,j=0and\,\,j=1 \right)\\ \end{array} \right\}
repeatuntilconverge{θj−α∂θj∂J(θ0,θ1)(forj=0andj=1)}
其中α是学习率(learning rate),它决定了我们沿着让代价函数下降程度最大的方向迈出的步子有大多。
其中正确做法是同步更新:
实现梯度下降算法的微妙之处是,在这个表达式中,如果你要更新这个等式,需要同时更新θ0和θ1。
t
e
m
p
0
:
=
θ
0
−
α
∂
∂
θ
0
J
(
θ
0
,
θ
1
)
t
e
m
p
1
:
=
θ
1
−
α
∂
∂
θ
1
J
(
θ
0
,
θ
1
)
θ
0
:
=
t
e
m
p
0
θ
1
:
=
t
e
m
p
1
temp0 :=\,\,\theta _0\,\,-\,\,\alpha \frac{\partial}{\partial \theta _0}J\left( \theta _0,\theta _1 \right) \\ temp1 :=\,\,\theta 1 -\,\,\alpha \frac{\partial}{\partial \theta _1}J\left( \theta _0,\theta _1 \right) \\ \theta _0\,\,:=\,\,temp0 \\ \theta _1\,\,:=\,\,temp1
temp0:=θ0−α∂θ0∂J(θ0,θ1)temp1:=θ1−α∂θ1∂J(θ0,θ1)θ0:=temp0θ1:=temp1
在梯度下降算法中,还有一个更巧妙的问题,梯度下降中,我们更新θ0和θ1,当J=0和J=1时,会产生更新,所以你将更新J(θ0)和J(θ1)
所得为负数,增加θ1;为正数,减小θ1.
3.2 梯度下降(二)
对于这个问题,求导目的,基本上可以说取这个红点的切线,就是这样一条红色的直线,刚好与函数相切于一点,让我们看看这条红色直线的斜率,正好是三角形的高度除以这个水平长度,现在这条线有一个正斜率,也就是说它有正导数,因此我们得到新的θ1。
假设θ1初始化在局部最低点,他已经在一个局部的最优处或局部最低点,结果是局部最优点的导数将等于0,它使得θ1不再改变,也就是新θ1等于原来的θ1。
α大小问题:
1.如果α太小了,即学习速率太小,可能会很慢,会一点点挪动,会需要很多步才能到达全局最低点。
2.如果α太大了,即学习速率太大,可能会越过最低点,甚至可能无法收敛。
3.3 线性回归的梯度下降
算法改写为:
有时称为批量梯度下降:
指梯度下降的每一步中,我们都用到了所有的训练样本,在梯度下降中,在计算微分求导项时,需要进行求和运算。
所以,在每一个单独的梯度下降中,我们最终都要计算这样一个东西,这个项需要对所有m个训练样本求和。
不需要多步梯度下降时,也能解出代价函数J的最小值,这是另一种正规方程的方法。
实际上,在数据量较大时,梯度下降法比正规方程更适用。
3.4 李宏毅梯度下降
为什么梯度方向是等高线的法线方向?1
若等高线在xOy平面直角坐标系中的方程为f(x,y)=C,在其任意一点(x,y)处的法线的斜率为
−
1
d
y
d
x
=
−
1
(
−
f
x
f
y
)
=
f
y
f
x
-\frac{1}{\frac{dy}{dx}}\,\,=\,\,-\frac{1}{\left( -\frac{f_x}{f_y} \right)}\,\,=\,\,\frac{f_y}{f_x}
−dxdy1=−(−fyfx)1=fxfy
又因为梯度的计算式子为:
∂
f
∂
x
i
+
∂
f
∂
y
j
\frac{\partial f}{\partial x}i\,\,+\,\,\frac{\partial f}{\partial y}j
∂x∂fi+∂y∂fj
则梯度的方向为:
∂
f
∂
y
/
∂
f
∂
x
=
f
y
f
x
\frac{\partial f}{\partial y}\,\,/ \frac{\partial f}{\partial x}\,\,=\,\,\frac{f_y}{f_x}
∂y∂f/∂x∂f=fxfy
因此梯度方向和等高线的法线方向一致。
Adagrad(自适应梯度下降)
和原梯度下降算法的区别:
stochastic gradient descent(随机梯度下降)