线性回归

首先要明白什么是回归。回归的目的是通过几个已知数据来预测另一个数值型数据的目标值。

假设特征和结果满足线性关系,即满足一个计算公式h(x),这个公式的自变量就是已知的数据x,函数值h(x)就是要预测的目标值。这一计算公式称为回归方程,得到这个方程的过程就称为回归。

假设房子的房屋面积和卧室数量为自变量x,用x1表示房屋面积,x2表示卧室数量;房屋的交易价格为因变量y,我们用h(x)来表示y。假设房屋面积、卧室数量与房屋的交易价格是线性关系。

他们满足公式

上述公式中的θ为参数,也称为权重,可以理解为x1和x2对h(x)的影响度。对这个公式稍作变化就是

公式中θ和x都可以看成是向量,n是特征数量。

假如我们依据这个公式来预测h(x),公式中的x是我们已知的(样本中的特征值),然而θ的取值却不知道,只要我们把θ的取值求解出来,我们就可以依据这个公式来做预测了。

最小均方法(Least Mean squares)

在介绍LMS之前先了解一下什么损失函数的概念。

我们要做的是依据我们的训练集,选取最优的θ,在我们的训练集中让h(x)尽可能接近真实的值。h(x)和真实的值之间的差距,我们定义了一个函数来描述这个差距,这个函数称为损失函数,表达式如下:

这里的这个损失函数就是著名的最小二乘损失函数,这里还涉及一个概念叫最小二乘法,这里不再展开了。我们要选择最优的θ,使得h(x)最近进真实值。这个问题就转化为求解最优的θ,使损失函数J(θ)取最小值。(损失函数还有其它很多种类型)

那么如何解决这个转化后的问题呢?这又牵扯到一个概念:LMS 和 梯度下降(Radient Descent)。

LMS是求取h(x)回归函数的理论依据,通过最小化均方误差来求最佳参数的方法。

梯度下降

我们要求解使得J(θ)最小的θ值,梯度下降算法大概的思路是:我们首先随便给θ一个初始化的值,然后改变θ值让J(θ)的取值变小,不断重复改变θ使J(θ)变小的过程直至J(θ)约等于最小值。

首先我们给θ一个初始值,然后向着让J(θ)变化最大的方向更新θ的取值,如此迭代。公式如下:

公式中α称为步长(learning rate),它控制θ每次向J(θ)变小的方向迭代时的变化幅度。J(θ)对θ的偏导表示J(θ)变化最大的方向。由于求的是极小值,因此梯度方向是偏导数的反方向。

  • α取值太小收敛速度太慢,太大则可能会Overshoot the minimum。
  • 越接近最小值时,下降速度越慢
  • 收敛: 当前后两次迭代的差值小于某一值时,迭代结束

求解一下这个偏导,过程如下:

那么θ的迭代公式就变为:

上述表达式只针对样本数量只有一个的时候适用,那么当有m个样本值时该如何计算预测函数?批梯度下降算法和随机梯度下降算法

批梯度下降算法

有上一节中单个样本的参数计算公式转化为处理多个样本就是如下表达:

这种新的表达式每一步计算都需要全部训练集数据,所以称之为批梯度下降(batch gradient descent)。

注意,梯度下降可能得到局部最优,但在优化问题里我们已经证明线性回归只有一个最优点,因为损失函数J(θ)是一个二次的凸函数,不会产生局部最优的情况。(假设学习步长α不是特别大)

批梯度下降的算法执行过程如下图:

大家仔细看批梯度下降的数学表达式,每次迭代的时候都要对所有数据集样本计算求和,计算量就会很大,尤其是训练数据集特别大的情况。那有没有计算量较小,而且效果也不错的方法呢?有!这就是:随机梯度下降(Stochastic Gradient Descent, SGD)

随机梯度下降算法

随机梯度下降在计算下降最快的方向时时随机选一个数据进行计算,而不是扫描全部训练数据集,这样就加快了迭代速度。

随机梯度下降并不是沿着J(θ)下降最快的方向收敛,而是震荡的方式趋向极小点。

随机梯度下降表达式如下:

执行过程如下图:

批梯度下降和随机梯度下降在三维图上对比如下:

总结:

开年第一篇,加油

参考:

http://mp.weixin.qq.com/s/7WlGN8JxfSmpJ8K_EyvgQA

http://m.elecfans.com/article/587673.html

监督学习:随机梯度下降算法(sgd)和批梯度下降算法(bgd)的更多相关文章

  1. 监督学习——随机梯度下降算法(sgd)和批梯度下降算法(bgd)

    线性回归 首先要明白什么是回归.回归的目的是通过几个已知数据来预测另一个数值型数据的目标值. 假设特征和结果满足线性关系,即满足一个计算公式h(x),这个公式的自变量就是已知的数据x,函数值h(x)就 ...

  2. p1 批梯度下降算法

    (蓝色字体:批注:绿色背景:需要注意的地方:橙色背景是问题) 一,机器学习分类 二,梯度下降算法:2.1模型   2.2代价函数   2.3 梯度下降算法 一,机器学习分类 无监督学习和监督学习 无监 ...

  3. 批量梯度下降(BGD)、随机梯度下降(SGD)以及小批量梯度下降(MBGD)的理解

      梯度下降法作为机器学习中较常使用的优化算法,其有着三种不同的形式:批量梯度下降(Batch Gradient Descent).随机梯度下降(Stochastic Gradient Descent ...

  4. 优化-最小化损失函数的三种主要方法:梯度下降(BGD)、随机梯度下降(SGD)、mini-batch SGD

    优化函数 损失函数 BGD 我们平时说的梯度现将也叫做最速梯度下降,也叫做批量梯度下降(Batch Gradient Descent). 对目标(损失)函数求导 沿导数相反方向移动参数 在梯度下降中, ...

  5. 1. 批量梯度下降法BGD 2. 随机梯度下降法SGD 3. 小批量梯度下降法MBGD

    排版也是醉了见原文:http://www.cnblogs.com/maybe2030/p/5089753.html 在应用机器学习算法时,我们通常采用梯度下降法来对采用的算法进行训练.其实,常用的梯度 ...

  6. SGD 讲解,梯度下降的做法,随机性。理解反向传播

    SGD 讲解,梯度下降的做法,随机性.理解反向传播 待办 Stochastic Gradient Descent 随机梯度下降没有用Random这个词,因为它不是完全的随机,而是服从一定的分布的,只是 ...

  7. L20 梯度下降、随机梯度下降和小批量梯度下降

    airfoil4755 下载 链接:https://pan.baidu.com/s/1YEtNjJ0_G9eeH6A6vHXhnA 提取码:dwjq 梯度下降 (Boyd & Vandenbe ...

  8. [机器学习] ML重要概念:梯度(Gradient)与梯度下降法(Gradient Descent)

    引言 机器学习栏目记录我在学习Machine Learning过程的一些心得笔记,涵盖线性回归.逻辑回归.Softmax回归.神经网络和SVM等等,主要学习资料来自网上的免费课程和一些经典书籍,免费课 ...

  9. 梯度下降&随机梯度下降&批梯度下降

    梯度下降法 ​ 下面的h(x)是要拟合的函数,J(θ)损失函数,theta是参数,要迭代求解的值,theta求解出来了那最终要拟合的函数h(θ)就出来了.其中m是训练集的记录条数,j是参数的个数. 梯 ...

随机推荐

  1. Python数据类型一:数字与运算符

    数字 一.数值类型 python中支持的数值类型有以下几种: 1.整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点.Python3 整型是没有限制大小的,可以当作 Long 类型使 ...

  2. Hive_UDF函数中集合对象初始化的注意事项

    UDF函数中定义的集合对象何时初始化 udf函数放在sql中对某个字段进行处理,那么在底层会创建一个该类的对象,这个对象不断的去调用这个evaluate(...)方法,截图如下:   1.1 如果说对 ...

  3. 最近公司用到了lombok,感觉很不错的样子,所以上网搜了一些资料,总结了一下用法。

    lombok作用:它提供了简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码,特别是相对于 POJO.缺点是使用lombok虽然能够省去手动创建setter和getter方法的麻烦, ...

  4. thinkPHP内置字符串截取msubstr函数用法详解

    作者:陈达辉 字体:[增加 减小] 类型:转载 时间:2016-11-15 我要评论 这篇文章主要介绍了thinkPHP内置字符串截取函数用法,结合实例形式分析了thinkPHP内置的字符串截取函数功 ...

  5. PHP批量去除bom头代码的小工具

    在 aitecms 群里有网友抱怨了好几天说本地的验证码一直无法显示,后来听说解决了,问其如何解决的,说是去除了文件 bom 就好了.后来百度到一篇文章也说 dedecms 的验证码不能显示,某次解决 ...

  6. 【翻译】A Next-Generation Smart Contract and Decentralized Application Platform

    原文链接:https://github.com/ethereum/wiki/wiki/White-Paper 当中本聪在2009年1月启动比特币区块链时,他同时向世界引入了两种未经测试的革命性的新概念 ...

  7. 【开发技术】一些常用的网站[ios]

    http://www.cocoachina.com/   苹果开发中文网站 http://blog.csdn.net/totogo2010  容芳志的IOS专栏 http://code4app.com ...

  8. Google免费GPU使用教程

    今天突然看到一篇推文,里面讲解了如何薅资本主义羊毛,即如何免费使用Google免费提供的GPU使用权. 可以免费使用的方式就是通过Google Colab,全名Colaboratory.我们可以用它来 ...

  9. Weblogic新建域,Weblogic新建部署环境,Weblogic重新构建域

    Weblogic新建域,Weblogic新建部署环境,Weblogic重新构建域 ======================== 蕃薯耀 2018年1月29日 http://www.cnblogs. ...

  10. Tomcat下的Server.xml配置文件详解

    自15年毕业到现在已经入行两年多了,一直以来没有深入的了解过tomcat的详细配置,只懂修改一下端口号.在网上找了些相关资料来支撑这篇文章,深入了解server.xml文件各配置的作用 <?xm ...