一元线性回归与梯度下降法

1.问题引入

根据不同房屋尺寸,预测出房子可以卖多少钱。所做任务就是通过给的数据集构建一个模型。
在这里插入图片描述

显然这是一个回归问题,根据之前的数据预测出一个准确的输出值。
为了描述这个回归问题,标记如下:
给出的数据集被称为训练集
用m表示训练集中实列的数量
用x表示输入变量/特征
用y表示输出变量/目标变量
(x,y)表示训练集中的实列
(x(i),y(i))代表第i个观察实列
h代表学习算法的解决方案或函数也称为假设(hypothesis)
在本例中,h表示一个函数,输入时房屋尺寸的大小,h根据输入的x的值来得出y的值。故假设 h θ ( x ) = θ 0 + θ 1 x h_{\theta}(x)=\theta_{0}+\theta_{1}x hθ(x)=θ0+θ1x,应为只含有一个特征/输入变量,因此这样的问题叫做单变量线性回归问题(一元线性回归)。

2.代价函数

​ 在线性回归中,最常用的是均方误差,其具体形式为:

J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( ( ^ y ( i ) ) − y ( i ) ) 2 = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta_{0},\theta_{1})=\frac{1}{2m}\sum_{i=1}^{m}{(\hat(y^{(i)})-y^{(i)})^{2}}=\frac{1}{2m}\sum_{i=1}^{m}{(h_{\theta}(x^{^{(i)}})-y^{(i)})^{2}} J(θ0,θ1)=2m1i=1m((^y(i))y(i))2=2m1i=1m(hθ(x(i))y(i))2

我们的目标便是选出可以是代价函数J最小的模型参数。
当假设 θ 0 = 0 \theta_{0}=0 θ0=0时,假设给出数据(1,1),(2,2),(3,3), J ( θ 1 ) J(\theta_{1}) J(θ1)的函数图像如图所示,
在这里插入图片描述
不难看出,当J在最低点时,代价函数最小,即当 θ 1 \theta_{1} θ1=1时,误差最小。
所以,想要找出合适的模型参数,即寻找J的最低点即可。

3.梯度下降法

梯度下降法是一个用来求函数最小值的算法,其思想是:开始我们随机选取一个参数组合 ( θ 0 , θ 1 ) (\theta_{0},\theta_{1}) (θ0,θ1),计算代价函数,沿代价函数的梯度方向,同时更新参数组合,一直持续到找到一个局部最小值。由下图可知,选择不同的初始参数组合,可能会找到不同的局部最小值。
在这里插入图片描述

其计算公式为: θ j = θ j − α ∗ ∂ ∂ θ j J ( θ 0 , θ 1 ) \theta_{j}=\theta_{j}-\alpha*\frac{\partial}{\partial\theta_{j}}J(\theta_{0},\theta_{1}) θj=θjαθjJ(θ0,θ1),其中 α \alpha α是学习率,他决定了每次沿梯度方向向下迈出的步子有多大。
α \alpha α的选取要适当,如果学习速率太小,沿梯度方向下降的会很慢很慢,需要很多部材能达到最低点;如果学习速率太大,可能会直接越过最低点,在下次迭代是有越过了最低点,一次次越过最低点,导致无法到达最低点。
在这里插入图片描述
在本例中,J的函数图像如图所示,它仅有一个最低点,因此使用梯度下降法找到的最低点就是最优解。对代价函数J使用梯度下降法。代价函数的递归方向就是其偏导数方向。
对代价函数求偏导:
∂ ∂ θ j J ( θ 0 , θ 1 ) = ∂ ∂ θ j 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 \frac{\partial }{\partial \theta_j}J(\theta_0,\theta_1)=\frac{\partial}{\partial \theta_j}\frac{1}{2m}\sum_{i=1}^{m}({h_\theta(x^{(i)})-y^{(i)})^2} θjJ(θ0,θ1)=θj2m1i=1m(hθ(x(i))y(i))2

θ 0 : j = 0 \theta_0:j=0 θ0:j=0: ∂ ∂ θ 0 J ( θ 0 , θ 1 ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) \frac{\partial }{\partial \theta_0}J(\theta_0,\theta_1)=\frac{1}{m}\sum_{i=1}^{m}({h_\theta(x^{(i)})-y^{(i)})} θ0J(θ0,θ1)=m1i=1m(hθ(x(i))y(i))

θ 1 : j = 1 \theta_1:j=1 θ1:j=1: ∂ ∂ θ 1 J ( θ 0 , θ 1 ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ∗ x ( i ) \frac{\partial }{\partial \theta_1}J(\theta_0,\theta_1)=\frac{1}{m}\sum_{i=1}^{m}({h_\theta(x^{(i)})-y^{(i)})*x^{(i)}} θ1J(θ0,θ1)=m1i=1m(hθ(x(i))y(i))x(i)

应用梯度下降法修改不断当前值

θ 0 \theta_0 θ0= θ 0 − α ∗ \theta_0-\alpha* θ0α ∂ ∂ θ 0 J ( θ 0 , θ 1 ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) \frac{\partial }{\partial \theta_0}J(\theta_0,\theta_1)=\frac{1}{m}\sum_{i=1}^{m}({h_\theta(x^{(i)})-y^{(i)})} θ0J(θ0,θ1)=m1i=1m(hθ(x(i))y(i))

θ 1 \theta_1 θ1= θ 1 − α ∗ \theta_1-\alpha* θ1α ∂ ∂ θ 0 J ( θ 0 , θ 1 ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ∗ x ( i ) \frac{\partial }{\partial \theta_0}J(\theta_0,\theta_1)=\frac{1}{m}\sum_{i=1}^{m}({h_\theta(x^{(i)})-y^{(i)})*x^{(i)}} θ0J(θ0,θ1)=m1i=1m(hθ(x(i))y(i))x(i)
直至到达最低点,此时 θ 0 , θ 1 \theta_{0},\theta_{1} θ0,θ1的值就是我们要找的最适合的模型参数。

 实际使用中停止梯度下降方式:

①达到最大迭代次数后即停止梯度下降。

②当损失函数小于很小的预设值时,此时即可认为已经到达了最低点。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值