知乎视频​www.zhihu.com

今天讲解的内容是梯度下降算法

梯度下降算法在机器学习中的应用十分广泛,该算法的最主要目的是通过迭代的方法找到目标函数的最小值,经常用来解决线性回归和逻辑回归等相关问题。本节课主要讲解梯度下降算法解决一元线性回归问题,包括四个部分,问题引入、数学理论、算法实现、上机实验。

来看一个生活中的例子。在买房的时候,房屋价格是人们最关心的问题,都希望买到性价比高的房子。有很多特征影响房屋的价格,例如面积、地理位置、交通、楼层、绿化程度等等。其中面积与房价最为相关。

来看一组数据,数据包括8套房屋的面积和成交价格的对应关系。

例如,0号房子面积为50平米,成交价为280万。那么是否可以根据这组数据,找到房子面积和成交价格的对应关系,从而未来利用这个关系,根据面积,计算出价格呢?为了更明显的观察出面积和价格之间的关系,将这组数据标记在坐标系中,其中横坐标表示面积,纵坐标表示价格。

可以发现,这些离散的点之间存在着线性关系,我们可以使用一条直线来描述这种线性关系,使得这些点尽量均匀的分布在直线两侧。因为通过一条直线近似表示自变量与因变量的关系,所以被称为线性回归。而只有一个自变量,面积影响因变量价格,所以是一元线性回归。

我们使用平面上的直线来描绘一元线性回归的线性关系。直线方程hθ(x)=θ0 + θ1x,其中x代表面积,hθ(x)代表预测的房价,方程有两个参数,截距θ0和斜率θ1,当θ0和θ1 取不同的值时,可以得到不同的直线方程hθ(x)。后面就要找出最合适的θ0和θ1,使得直线hθ(x)最好的描绘出面积和价格的关系。

尝试画出几组直线表示房屋面积和房价。例如,当θ0 = 0 ,θ1 = 4 时,得到图像1,很明显,斜率偏小,截距偏小。修改θ0 = 10,θ1 = 5,得到图像2,这条直线就基本符合面积和价格的关系了。

在此基础上,我们可以继续调整,挑选出一条最合适的直线。但是这时又出现一个问题,在调整过程中,直线变化不大,很难通过直观感受判断哪条直线最符合面积和房价之间的关系。

这时就需要使用均方误差来精确的选出最合适的直线,即最合适的θ0和θ1。

均方误差,MSE,mean square error,是反映真实值与预测值之间差异程度的一种度量。在样例数据中,真实房价与预测房价之间的差异程度,就可以使用均方误差来衡量。均方误差越小,说明用来预测的直线就越合适。

假如有m个样本,每个样本为平面中的一个点,第i个样本表示为xi,yi。例如,表中有8个样本,m=8,x代表面积,y代表价格,x0=50,y0=290,x1=60,y1=305。预测直线为hθ(x)=θ0+θ1x,那么hθ(x0),hθ(x1),hθ(xi)分别为第0个,第1个,第i个样本的预测值。这里如果我们选定了某个预测直线,那么θ0,θ1也就确定了,从而根据直线公式和房屋面积,也可以将样本的预测值计算出来。

均方误差的公式为,m分之sigema i= 1累加至m h θ xi 减 yi 差的平方,其中m为样本的个数, h θ xi 为第i个样本的直线预测值,yi为第i个样本的真实值。那么均方误差公式即求m个样本的直线预测值与真实值差的平方和,再取平均。

例如,假如预测直线的θ0 =10,θ1 = 5,即h(x) = 5x +10。那么8个样本,根据面积,可以计算预测价格为260,310,360,410,460,510,560,610。通过均方误差公式,得到均方差为268.75。不同的θ0和θ1会计算得到不同的均方差,均方差越小,θ0和θ1就越合适。

在此基础上,定义代价函数J(θ)为1/2倍的均方误差,由于样本的个数m,每个样本的横坐标x和纵坐标y都是已知的,所以代价函数J(θ)中的未知数为直线方程的截距θ0与斜率θ1。那么问题就转化为,求出一组θ0和θ1,使得代价函数J(θ)取得最小值。

例如,表格中有3个样本,x0,y0,x1,y1,x2,y2。预测直线为hθ(x)=θ0+θ1x,那么将J(θ)展开得到关于θ0与θ1的二元表达式。即求J(θ0,θ1)中使取得最小值θ0,θ1。

那么如何求出θ0和θ1呢?就可以使用本节课要讲的梯度下降算法了。至此,梯度下降算法的引入就讲完了,我们下节课再见。

喜欢动画讲编程的小伙伴,一定要三连加关注哦!你们的支持是动画讲编程课程研发团队最大的动力!

机器学习中为什么需要梯度下降_机器学习,梯度下降算法,问题引入相关推荐

  1. 机器学习中为什么需要梯度下降_机器学习 —— 多元梯度下降

    一.多维特征 前面所述的房价预测的线性模型,只用到了一维特征,即size,房屋尺寸,要用这个特征量来预测房屋价格: 当数据集的信息不止一种时,便有了多维特征,比如: 上图有四个X,即四个特征,来预测房 ...

  2. 3. 机器学习中为什么需要梯度下降_机器学习中一些模型为什么要对数据归一化?...

    一般做机器学习应用的时候大部分时间是花费在特征处理上,其中很关键的一步就是对特征数据进行归一化,为什么要归一化呢?很多同学并未搞清楚,维基百科给出的解释: 1)归一化后加快了梯度下降求最优解的速度 蓝 ...

  3. 机器学习中为什么需要梯度下降_机器学习101:一文带你读懂梯度下降

    原标题 | Machine Learning 101: An Intuitive Introduction to Gradient Descent 作者 | Thalles Silva 译者 | 汪鹏 ...

  4. 机器学习数据倾斜的解决方法_机器学习并不总是解决数据问题的方法

    机器学习数据倾斜的解决方法 总览 (Overview) I was given a large dataset of files, what some would like to call big d ...

  5. 梯度下降算法_批梯度下降法,Minibatch梯度下降法和随机梯度下降法之间的区别...

    什么是梯度下降法? 梯度下降法是一种机器学习中常用的优化算法,用来找到一个函数(f)的参数(系数)的值,使成本函数(cost)最小. 当参数不能解析计算时(如使用线性代数),并且必须通过优化算法搜索时 ...

  6. 深度学习_07_2_随机梯度下降_激活函数及梯度损失函数及梯度

    07_2_随机梯度下降_激活函数及梯度&损失函数及梯度 激活函数及其梯度 Activation Functions(激活函数) 研究青蛙的神经元有多个输入,比如x0,x1,x2x_0,x_1, ...

  7. 梯度下降和随机梯度下降_梯度下降和链链接系统

    梯度下降和随机梯度下降 On Broken Incentives and Deadlock. 关于激励机制和僵局. By Shawn Jain and Blake Elias[Shawn Jain i ...

  8. 02.PyTorch基础操作(3-1 机器学习中的分类与回归问题-机器学习基本构成元素)

    @[TOC](02.PyTorch基础操作(3-1 机器学习中的分类与回归问题-机器学习基本构成元素)) 来自慕课网 一.3-1 机器学习中的分类与回归问题-机器学习基本构成元素

  9. 最优化方法:梯度下降(批梯度下降和随机梯度下降)

    http://blog.csdn.net/pipisorry/article/details/23692455 梯度下降法(Gradient Descent) 梯度下降法是一个一阶最优化算法,通常也称 ...

最新文章

  1. [原]执行存储过程后返回影响的行数
  2. 干货|一文读懂中国7大支付体系(附27页流程图)
  3. 海淘会不会成为电商的下一片蓝海?
  4. Java反射机制的适用场景及其利与弊 ***
  5. leetcode 497, 528. Random Point in Non-overlapping Rectangles | 497. 非重叠矩形中的随机点(Java)
  6. 在Visual Studio 2010 中使用菱形向导对窗口进行布局
  7. pip install安装php,详述Python、pip、easy_install的安装教程
  8. [转载]项目风险管理七种武器-霸王枪
  9. NHibernate剖析:Mapping篇之Mapping-By-Code(1):概览
  10. python如何提高工作效率_用Python的这3个优点,让工作效率提升一倍
  11. 像个字段相减绝对值_张歆艺做家务受伤,袁弘俩字逗乐媳妇,真是幼稚得像个大龄儿童...
  12. 文本标注工具——doccano
  13. 用证书实现windows 2003下IIS的SSL安全通信
  14. 小程序uniapp基础
  15. R语言数据挖掘实战系列(2)
  16. Unix/Linux编程实践教程(1)---Unix系统编程概述
  17. 通达信版弘历软件指标_弘历指标源码:弘历软件主要功能是什么?选股精不精准?...
  18. android框架揭秘之Java服务学习笔记
  19. 调用手机扫描二维码功能
  20. 简单实现select多选功能

热门文章

  1. Dubbo集群容错模式之Failover实现
  2. 使用ASP.NET AJAX 1.0框架PreviewGlitz进行网页动画编程
  3. 《Linux菜鸟入门》Linux网络管理
  4. sigaction函数解析
  5. cmake--gccxml
  6. android中的broadcastReceiver
  7. Vue项目如何提高效率?大厂2大实践总结告诉你
  8. 使用Golang搭建gRPC服务提供给.NetCore客户端调用
  9. yaml语法--多行字符串可以使用|保留换行符,也可以使用>折叠换行
  10. 【收藏】严重影响IDEA启动速度的插件