一、 模型描述
提供训练集,学习算法的任务是输出一个函数,通常用 h 表示,h 表示假设函数 hypothesis
假设函数的作用是给定输入变量 x ,输出相应的预测值 y ;h 是一个引导 x 得到 y 的函数
二、代价函数
1.平方误差代价函数
在线性回归中,我们要解决的是一个最小化问题,我们希望 h(x) 和 y 之间的差异要小
(
h
(
x
)
i
−
y
i
)
2
(h(x)^i - y^i)^2
(h(x)i−yi)2
对所有的训练样本进行求和(m代表训练集的样本数)
∑
i
=
1
m
(
h
(
x
)
i
−
y
i
)
2
\sum^{m}_{i = 1}{(h(x)^i - y^i)^2}
i=1∑m(h(x)i−yi)2
为了使公式更直白,我们计算
1
2
m
∑
i
=
1
m
(
h
(
x
)
i
−
y
i
)
2
\frac{1}{2m}\sum^{m}_{i = 1}{(h(x)^i - y^i)^2}
2m1i=1∑m(h(x)i−yi)2
因此,代价函数记为
J
(
θ
1
,
θ
2
)
=
1
2
m
∑
i
=
1
m
(
h
(
x
)
i
−
y
i
)
2
J(\theta1,\theta2) = \frac{1}{2m}\sum^{m}_{i = 1}{(h(x)^i - y^i)^2}
J(θ1,θ2)=2m1i=1∑m(h(x)i−yi)2
我们的优化目标是
m
i
n
i
m
i
z
e
θ
1
,
θ
2
J
(
θ
1
,
θ
2
)
minimize_{\theta1,\theta2}J(\theta1,\theta2)
minimizeθ1,θ2J(θ1,θ2)
2.令参数2=0
θ
=
1
\theta = 1
θ=1时,
J
(
θ
)
=
J
(
1
)
=
0
J(\theta) = J(1) = 0
J(θ)=J(1)=0
θ
=
0.5
\theta = 0.5
θ=0.5时,
J
(
θ
)
=
J
(
0.5
)
=
0.58
J(\theta) = J(0.5) = 0.58
J(θ)=J(0.5)=0.58
θ
=
0
\theta = 0
θ=0时,
J
(
θ
)
=
J
(
0
)
=
2.3
J(\theta) = J(0) = 2.3
J(θ)=J(0)=2.3
经过一系列数值的计算,我们最终会得到函数
J
(
θ
)
J(\theta)
J(θ)的形状
3.使用两个参数
代价函数会变为三维曲线
用等高线来表示,每一条等高线上的点对应的
J
(
θ
0
,
θ
1
)
J(\theta0,\theta1)
J(θ0,θ1)都相等,最小值在中心原点处,距离原点越近,拟合越好
三、梯度下降法——可以将代价函数最小化
梯度下降是很常用的算法,它不仅被用在线性回归上,还被广泛用于机器学习的众多领域
1.思路:
- 给定 θ 0 \theta_0 θ0和 θ 1 \theta_1 θ1的初始值,通常将 θ 0 \theta_0 θ0和 θ 1 \theta_1 θ1均设为0
- 我们在梯度下降算法中要做的是不停地一点点改变 θ 0 \theta_0 θ0和 θ 1 \theta_1 θ1,来使 J ( θ 0 , θ 1 ) J(\theta_0,\theta_1) J(θ0,θ1)变小
- 直到我们找到 J J J的最小值或者局部最小值
2.特点: 从不同的起点出发,将有可能获得不同的局部最优解
3.数学定义
repeat until convergence(重复计算直至收敛){
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
/
/
f
o
r
j
=
0
a
n
d
j
=
1
,
同
时
更
新
θ
0
和
θ
1
\theta_j := \theta_j - \alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1) // for j = 0 and j = 1,同时更新\theta_0和\theta_1
θj:=θj−α∂θj∂J(θ0,θ1)//forj=0andj=1,同时更新θ0和θ1
}
4.线性回归的梯度下降
上式利用了简单的求导公式
该算法也叫做Batch梯度下降算法:每一步梯度下降,我们都遍历了整个训练集的样本,所以在梯度下降中,当计算偏导数时,我们计算总和。在每一个单独的梯度下降我们最终计算 m 个训练样本的总和,