机器学习之线性回归算法(第二篇)

线性回归算法

在这一篇博客中,我会表达我对今天学习的线性回归算法的理解。

OK,目前要解决的问题就是,我们得到了一个数据集,也称做训练集
而机器学习的过程就是:

  1. 计算机读取数据集
  2. 计算机通过某种算法分析数据集
  3. 计算机分析过后得出了一个线性函数h(x)
  4. 这个h(x)可以很好地拟合数据集地数据,从而可以方便人们对某个特定的数据进行预测。

上面的线性函数h(x)叫做假设函数,“某种算法”这里用的是梯度下降法。如果听不懂也没有关系,接下来我将介绍如何实现该算法。

假设函数: h ( x ) = θ 0 + θ 1 x h(x)=\theta_0+\theta_1x h(x)=θ0+θ1x
θ 0 \theta_0 θ0 θ 1 \theta_1 θ1被称为模型参数,我们希望计算机得到特定的 θ 0 \theta_0 θ0 θ 1 \theta_1 θ1,使得h(x)这条直线能够很好地拟合数据集中的数据。

接下来得问题就是如何得到特定的 θ 0 \theta_0 θ0 θ 1 \theta_1 θ1呢?我们假设数据集中一共6个数据,然后根据得到的直线h(x),可以计算真实数据(也就是数据集中的数据)与理论数据的偏差。
理论值与真实值的偏差

对于一个数据而言,它的偏差是h(x i ^i i)-y i ^i i,把每个数据的偏差全部加起来,就得到可以描述计算机拟合真实数据好坏的指标。由于h(x i ^i i)-y i ^i i可能为正也可能为负,所以平方之后再相加是合适的。

假设数据集一共有m条数据,最后得到代价函数,也称作损失函数 J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m [ h ( x i ) − y i ] 2 J(\theta_0,\theta_1)=\frac1{2m}\sum_{i=1}^m[h(x^i)-y^i]^2 J(θ0,θ1)=2m1i=1m[h(xi)yi]2
至于为什么要乘一个 1 2 m \frac1{2m} 2m1,具体我也没有深究,只知道这是更合适的做法。

接下来线性回归算法就只剩一个问题了,就是如何求特定的 θ 0 \theta_0 θ0 θ 1 \theta_1 θ1,使得代价函数有最小值
这里求代价函数最小值的办法叫做:梯度下降法
梯度下降法的过程如下:

  1. 随便给定 θ 0 \theta_0 θ0 θ 1 \theta_1 θ1的初值,比如 θ 0 = 0 \theta_0=0 θ0=0, θ 1 = 0 \theta_1=0 θ1=0
  2. 然后一点点改变 θ 0 \theta_0 θ0 θ 1 \theta_1 θ1,这种改变会使得代价函数 J ( θ 0 , θ 1 ) J(\theta_0,\theta_1) J(θ0,θ1)的值逐渐变小,直到找到代价函数的最小值。

使得代价函数的值逐渐变小的公式为 θ 0 = θ 0 − α ∂ J ( θ 0 , θ 1 ) ∂ θ 0 \theta_0=\theta_0-\alpha\frac{\partial{J(\theta_0,\theta_1)}}{\partial\theta_0} θ0=θ0αθ0J(θ0,θ1)
θ 1 = θ 1 − α ∂ J ( θ 0 , θ 1 ) ∂ θ 1 \theta_1=\theta_1-\alpha\frac{\partial{J(\theta_0,\theta_1)}}{\partial\theta_1} θ1=θ1αθ1J(θ0,θ1)
这里的“=”是赋值的意思,不是数学中判断相等的意思。 α \alpha α被称为学习速率,直观来看就是下降的速率。
逐步下降
其实学过微积分的,看到这个公式应该很快能明白其中的含义,这里我用我的理解来说明一下这个公式。
∂ J ( θ 0 , θ 1 ) ∂ θ 1 \frac{\partial{J(\theta_0,\theta_1)}}{\partial\theta_1} θ1J(θ0,θ1)
这个是代价函数对 θ 1 \theta_1 θ1的偏导数,当只有一个参数时,该公式变为 d J ( θ 1 ) d θ 1 \frac{dJ(\theta_1)}{d\theta_1} dθ1dJ(θ1)
假设 θ 0 \theta_0 θ0固定等于0,只有 θ 1 \theta1 θ1一个参数,此时得到的代价函数类似为二次函数的图像,在二次函数上任意取一个点,假设该点在二次函数最低点的左边,就如上图所示。

此时该公式表示二次函数在 θ 1 \theta1 θ1这个点处的斜率,此时斜率为负

减去一个负数,就是加上一个正数,此时左边的点开始向右边移动,而越接近最小值,斜率越接近0,则加上的正数会越小,移动的长度就会越短,直到斜率为0时,加上的数就为0, θ 1 \theta1 θ1不再改变,此时得到的 θ 1 \theta1 θ1值使得代价函数有最小值。

同理若从右边开始,斜率为正,同样会下降到最低点。

有多个 θ \theta θ参数时时,代价函数从二维函数逐渐向高纬度转变,超过三维的图像就很难可视化了,但是用这个公式计算是不会错的。
这是有两个模型参数时,代价函数为三维
这篇博客就到这里了,如果有什么不懂得地方或者觉得我写得不对的地方可以向我留言哦,我会一一和你们讨论学习的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Colin_Jing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值