【吴恩达机器学习笔记】第一章 单变量线性回归

【吴恩达机器学习笔记】第一章 单变量线性回归

1、代价函数

假设 h θ ( x ) = θ 0 + θ 1 x {h_\theta }\left( x \right) = {\theta _0} + {\theta _1}x hθ(x)=θ0+θ1x其中 : θ 0 \theta_0 θ0 θ 1 \theta_1 θ1为参数
怎样设置参数?选择 θ 0 \theta_0 θ0 θ 1 \theta_1 θ1 使得: min ⁡ 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 \min \frac{1}{{2m}}{\sum\limits_{i = 1}^m {\left( {{h_\theta }\left( {{x^{(i)}}} \right) - {y^{(i)}}} \right)} ^2} min2m1i=1m(hθ(x(i))y(i))2其中:m为训练集的样本容量
以上为我们线性回归的整体目标函数,为了使它更明确一点,我们要定义一个代价函数: J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J\left( {{\theta _0},{\theta _1}} \right) = \frac{1}{{2m}}{\sum\limits_{i = 1}^m {\left( {{h_\theta }\left( {{x^{(i)}}} \right) - {y^{(i)}}} \right)} ^2} J(θ0,θ1)=2m1i=1m(hθ(x(i))y(i))2 min ⁡ J ( θ 0 , θ 1 ) \min J\left( {{\theta _0},{\theta _1}} \right) minJ(θ0,θ1)这就是我们的代价函数
代价函数也被称为平方误差函数,有时也被称为平方误差代价函数,此函数对于大多数线性回归问题是非常合理的。
代价函数的三维图像如下所示:
在这里插入图片描述
假设函数与代价函数的等高线图如下所示:
在这里插入图片描述
其中每个椭圆形显示了一系列 J ( θ 0 , θ 1 ) J\left( {{\theta _0},{\theta _1}} \right) J(θ0,θ1)值相同的点。

2、梯度下降算法

梯度下降(gradient descent)是很常用的算法。它不仅被用在线性回归上,也被应用在机器学习的多种领域。

算法步骤:
1、给定 θ 0 \theta_0 θ0 θ 1 \theta_1 θ1初始值(通常是将它们都初始化为0)
2、不断改变 θ 0 \theta_0 θ0 θ 1 \theta_1 θ1的值,直到找到 J ( θ 0 , θ 1 ) J\left( {{\theta _0},{\theta _1}} \right) J(θ0,θ1)的最小值或局部最小值
在这里插入图片描述
为了方便理解我引用吴老师的原话:

现在我希望大家把这个图像想作一座山,想象这是个长满青草的公园,其中有两座这个样的山,想象一下,你正站在这一点上,站在公园这座红色的山上。在梯度下降算法中,我们要做的就是,旋转360度,看看你的周围,并问自己,如果我要在某个方向上走一小步,我想尽快走下山,我应该朝什么方向迈步?

数学思想:
重复直到找到局部最优解{

θ j : = θ j − α ∂ ∂ θ j J ( θ 0 , θ 1 ) f o r ( j = 0 a n d j = 1 ) \quad \quad\quad\quad{\theta _j}: = {\theta _j} - \alpha \frac{\partial }{{\partial {\theta _j}}}J\left( {{\theta _0},{\theta _1}} \right)\quad \quad for(j=0\quad and\quad j=1) θj:=θjαθjJ(θ0,θ1)for(j=0andj=1)
}
其中::=表示赋值
α \quad\quad\alpha α为学习率,用来决定梯度下降时,我们迈多大的步子。如何设置 α \alpha α后面会详细介绍。

在梯度下降中,有一个特点:是必须同时更新 θ 0 \theta_0 θ0 θ 1 \theta_1 θ1。所以有更加详细的步骤如下所示: t e m p 0 : = θ 0 − α ∂ ∂ θ 0 J ( θ 0 , θ 1 ) temp0: = {\theta _0} - \alpha \frac{\partial }{{\partial {\theta _0}}}J\left( {{\theta _0},{\theta _1}} \right) temp0:=θ0αθ0J(θ0,θ1) t e m p 1 : = θ 1 − α ∂ ∂ θ 0 J ( θ 0 , θ 1 ) temp1: = {\theta _1} - \alpha \frac{\partial }{{\partial {\theta _0}}}J\left( {{\theta _0},{\theta _1}} \right) temp1:=θ1αθ0J(θ0,θ1) θ 0 : = t e m p 0 {\theta _0}: = temp0 θ0:=temp0 θ 1 : = t e m p 1 {\theta _1}: = temp1 θ1:=temp1用上述方法就可以正确的实现梯度下降了。如果将步骤2和3交换,则没有达到同步更新,就是错误的。

解释导数项的意义:
在这里插入图片描述
解释学习速率 α \alpha α的意义:

α \alpha α过小时,会导致每一步更新过于小,使速率过于缓慢,需要迭代很多次才能达到局部最优点。如下图所示:
在这里插入图片描述
α \alpha α过大时,梯度下降可能会越过最低点,可能导致无法收敛甚至发散,如下图所示:
在这里插入图片描述
3、线性回归的梯度下降

将前文的代价函数和梯度下降结合后,得到: ∂ ∂ θ j J ( θ 0 , θ 1 ) = ∂ ∂ θ j 1 2 m ∑ i = 1 m ( θ 0 + θ 1 x ( i ) − y ( i ) ) 2 \frac{\partial }{{\partial {\theta _j}}}J\left( {{\theta _0},{\theta _1}} \right) = \frac{\partial }{{\partial {\theta _j}}}\frac{1}{{2m}}{\sum\limits_{i = 1}^m {\left( {{\theta _0} + {\theta _1}{x^{(i)}} - {y^{(i)}}} \right)} ^2} θjJ(θ0,θ1)=θj2m1i=1m(θ0+θ1x(i)y(i))2
则可以分别求出 t e m p 0 temp0 temp0 t e m p 1 temp1 temp1为: t e m p 0 = ∂ ∂ θ 0 J ( θ 0 , θ 1 ) = 1 m ∑ i = 1 m ( θ 0 + θ 1 x ( i ) − y ( i ) ) temp0 = \frac{\partial }{{\partial {\theta _0}}}J\left( {{\theta _0},{\theta _1}} \right) = \frac{1}{m}\sum\limits_{i = 1}^m {\left( {{\theta _0} + {\theta _1}{x^{(i)}} - {y^{(i)}}} \right)} temp0=θ0J(θ0,θ1)=m1i=1m(θ0+θ1x(i)y(i)) t e m p 1 = ∂ ∂ θ 1 J ( θ 0 , θ 1 ) = 1 m ∑ i = 1 m ( θ 0 + θ 1 x ( i ) − y ( i ) ) ⋅ x ( i ) temp1 = \frac{\partial }{{\partial {\theta _1}}}J\left( {{\theta _0},{\theta _1}} \right) = \frac{1}{m}\sum\limits_{i = 1}^m {\left( {{\theta _0} + {\theta _1}{x^{(i)}} - {y^{(i)}}} \right)} \cdot {x^{(i)}} temp1=θ1J(θ0,θ1)=m1i=1m(θ0+θ1x(i)y(i))x(i)
综上所述,可得回归的梯度下降算法如下所示:

重复直到找到局部最优解{ θ 0 : = θ 0 − α 1 m ∑ i = 1 m ( θ 0 + θ 1 x ( i ) − y ( i ) ) {\theta _0}: = {\theta _0} - \alpha \frac{1}{m}\sum\limits_{i = 1}^m {\left( {{\theta _0} + {\theta _1}{x^{(i)}} - {y^{(i)}}} \right)} θ0:=θ0αm1i=1m(θ0+θ1x(i)y(i)) θ 1 : = θ 1 − α 1 m ∑ i = 1 m ( θ 0 + θ 1 x ( i ) − y ( i ) ) ⋅ x ( i ) {\theta _1}: = {\theta _1} - \alpha \frac{1}{m}\sum\limits_{i = 1}^m {\left( {{\theta _0} + {\theta _1}{x^{(i)}} - {y^{(i)}}} \right)} \cdot {x^{(i)}} θ1:=θ1αm1i=1m(θ0+θ1x(i)y(i))x(i)}

前文说过梯度下降算法容易陷入局部最优解,但是在线性回归中,大部分的代价函数使凸函数,如下图所示:在这里插入图片描述
这种函数是没有局部最优解的,所以在用梯度下降解决线性回归问题,它总是会求得全局最优解的。

在机器学习领域中,梯度下降算法遍历了所有的数据集,则其也被称为“Batch”梯度下降算法

了解过线代的同学可能知道,解决线性回归问题还有一种方法,叫做正规方程组方法,事实上,梯度下降算法更加适用于数据集比较大的问题,正规方程组方法在后文中也会详细介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值