ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

机器学习入门:线性回归

2022-01-07 20:31:56  阅读:119  来源: 互联网

标签:机器 入门 梯度 算法 参数 线性 代价 我们 函数


一、回归算法

• 回归算法是一种 有监督 算法 • 回归算法是一种比较常用的机器学习算法,用于构建一个模型来做特征向量到标签的映射。在算法的学习过程中,试图寻找一个模型,最大程度拟合训练数据。 • 回归算法在使用时,接收一个n维度特征向量,输出一个 连续 的数据值

二、执行图

三、案例

1、此时我们有这么一组数据,如下图:

 2、我们可以建立一个直角坐标系来将这些点标出如图一:(蓝色为以上给出的坐标)

             图一

 图二

 3、由图中的蓝色线条,我们可以设置线性模型为(一元一次函数):

4、我们的目的是通过算法去找到最优的一条线能尽可能拟合所有点,我们的参数如果发生变化那么我们的蓝线(或绿线)也会随之变化,比如图一和图二我们不难看出图一的效果更佳,但我们是如何去判断蓝线在什么时候最好呢(我们要使用代价函数后文会详细讲解),以及我们的参数该怎么养确定才会得到最好的拟合线?

5、这时我们需要用到最小二乘法

四、最小二乘法

1、最小二乘法(又称最小平方法)是一种数学优化技术。它由两部分组成:          (1)计算所有样本误差的平均(代价函数)          (2)使用最优化方法寻找数据的最佳函数匹配(抽象的) 2、最小二乘法是抽象的,具体的最优化方法有很多,比如 正规方程法、梯度下降法 、牛顿法、拟牛顿 法等等。

3、案例(接上文)

其中数据集既是我们我们所有的点,

实际值就是每个点的纵坐标值,

估计值就是每个点与x轴做垂线其与蓝线的交点的纵坐标值(即把点的横坐标带入到线性模型中所得到的h(x)的值),

估计误差就是每个点的实际值减去估计值,

代价函数既是采用了最小二乘法,其目的就是求出所有点产生出误差的均值(越小越好),由公式可知代价函数为一个二次函数,图像大致为V字型。

4、代价函数的解释

现在我们假设有3个点分别为:(1,1)、(2,2)、(3,3)

代价函数为:

 首先我们假设一个函数为:h(x) = x,我们可以计算出其代价函数值(如图):

第二次我们假设函数为:h(x)=0.5x,计算结果如图(其中m为点的个数):

第三次我们假设函数为:h(x) = 2x,计算结果如下图:

        我们已经知道我们的代价函数的值越小那么误差就越小,所以我们需要的是找到一个极值点使得代价函数的值最小,由下图我们不难看出在x=1时代价函数会取得最小值(对应h(x)=x此时完全拟合没有误差),我们继续观察代价函数的图像,发现在x=1出对代价函数求导(即切线),我们可以得出它在x=1处的倒数值为0,那么问题来了我们怎么样才能在每一个线性问题中去找到这个倒数为0的情况呢(即找到模型的最优解)?

因此我们要引入梯度下降,来解决这一问题。

 五、梯度下降

1、梯度下降是一个用来求函数最小值的算法,我们将使用梯度下降算法来求出代价函数J(θ0,θ1) 的最 小值。 梯度下降背后的思想是:开始时我们随机选择一个参数的组合(θ0,θ1),计算代价函数,然后我 们寻找下一个能让代价函数值下降最多的参数组合。

 2、在梯度下降中我们会设置一个学习率α(learning rate),大于0的一个很小经验值,它决定沿着能让代价函数下降的程度有多大。

我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数,由此来更新你的θ值 其中△θj为代价函数的倒数 θj为需要更新的参数 把代价函数拿过来方便我们观察:

          这样看可能不是特别好理解具体是如何更新参数值,所以接下来我会举出详细的例子来助于大家跟好的去理解这个做法。

         首先我们看上图,假设我们现在所求出来的函数为θ=2(y=2x)这条曲线,他在代价函数中所对应的点为右上侧的点,接下来我们对这个点使用这个公式:

 这个公式的意思就是求出这个点在代价函数上的倒数,显而易见这个倒数是个正数。接线来我们要使用这个公式:

 我们已知θj=2(偏大),现在这个公式表示的是:θj = 2 - α△θj,α(学习率)是一个大于0的很小的值,比如我们设置α=0.01,那么我们的θj就会慢慢变小,逐渐接近我们的最优解(θ=1,也就是y=x这条线)。

上面是倒数为正的情况,接下来我们看看当一个点的倒数为负时的情况。

我们选取θ=0.5(y=0.5x)这条线,前面所有操作不变,直到我们使用这个公式时:

我们的△θj是一个负数,此时变为θj = 0.5 + α△θj,我们同样设置α=0.01,那么我们的θj会慢慢变大,逐渐接近θ=1(也就是y=x这条线)。

但是我们会发现如果α(学习率)过小,或者过大好像也会带来不少麻烦,究竟是何种麻烦呢?我们继续向下面研究。

3、学习率对模型的影响

(1)首先是学习率太小,我们由上面的公式可以明显得到,我们迭代的速度会非常慢,一次只挪动一点,效率极低(如图):

 (2)如果学习率过大,那么我们的θ值可能会偏离和越过最优值,无法收敛(如图):

 由此可见学习率的设置非常重要!

了解到线性回归是如何来实现的后,现在我们要更深入的去了解参数更新方程(参数具体怎样更新)。

 六、参数更新方程

首先我们要知道我们要更新的是2个参数θo和θ1,分别对应截距和权重,因此我们需要对2个参数求偏导:(数学推导不做讲解)(求偏导参照代价函数来求)

  其中我们设:

 注意:颜色加深的为向量!

未完待续。。。。。

标签:机器,入门,梯度,算法,参数,线性,代价,我们,函数
来源: https://blog.csdn.net/qq_58535145/article/details/122362741

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有