2.1模型表示

从线性回归算法开始学起,从一个预测住房价格的例子开始,需要一个数据集(包含住房价格),根据不同房子尺寸的大小所出售的价格,画出数据集如下图


要想知道多大的房子可以出售什么价格,就需要构建模型,比如构造一条直线,如上图就根据数据集绘制出了该数据模型,这样就可以根据数学模型来预测。这就是一个监督学习算法的例子
同时,这个例子也是一个回归问题,根据数据预测出一个准确的输出值

回归:试着推测出一系列连续值属性
分类:试着推测出离散的输出值

在上面预测住房价格的例子中,我们回归问题的训练集如下图

m表示训练集中实例的数量
x表示特征/输出变量
y表示目标变量/输出变量
(x,y)表示训练集中的实例
(xi,yi )代表第i个观察实例

h代表学习算法的函数(hypothesis)

hθ(x)=θ0+θ1x{h_\theta }\left( x \right) = {\theta _0} + {\theta _1}x % MathType!MTEF!2!1!+- % feaahqart1ev3aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn % hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr % 4rNCHbWexLMBbXgBd9gzLbvyNv2CaeHbl7mZLdGeaGqiVu0Je9sqqr % pepC0xbbL8F4rqqrFfpeea0xe9Lq-Jc9vqaqpepm0xbba9pwe9Q8fs % 0-yqaqpepae9pg0FirpepeKkFr0xfr-xfr-xb9adbaqaaeGaciGaai % aabeqaamaabaabauaakeaaqaaaaaaaaaWdbiaadIgapaWaaSbaaSqa % a8qacqaH4oqCa8aabeaak8qadaqadaWdaeaapeGaamiEaaGaayjkai % aawMcaaiabg2da9iabeI7aX9aadaWgaaWcbaWdbiaaicdaa8aabeaa % k8qacqGHRaWkcqaH4oqCpaWaaSbaaSqaa8qacaaIXaaapaqabaGcpe % GaamiEaaaa!4DA9! hθ​(x)=θ0​+θ1​x

上图是一个监督学习的工作方式,就是把训练集放到学习算法得到假设函数h,再输入变量进行预测。从上面预测住房价格的例子来看,就是把训练集(我们已知的房价数据)来进行学习,得到一个假设函数h,输入的是房屋的尺寸大小,h是一个从x到y的函数映射。我们输入我们要预测的房屋的尺寸,通过h预测出房屋的交易价格。
以上便是单变量线性回归问题。

2.2代价函数

为了将直线和我们的数据相拟合,我们引入代价函数,如下图


我们知道了训练集m,知道了线性函数,我们来选择参数θ0和θ1,也就是直线的斜率和y轴上的截距,如下图1。选择好参数可以决定我们训练集的准确程度,模型所预测的值和实际值(训练集)之间的差距就是建模误差,如下图2。

我们所做的便是选择出可以使得建模误差的平方和能够最小的模型参数。公式如下

J(θ0,θ1)=12m∑i=1m(hθ(x(i))−y(i))2J\left( {{\theta _0},{\theta _1}} \right) = \frac{1}{{2m}}\sum\limits_{{\rm{i}} = 1}^{\rm{m}} {{{\left( {{h_\theta }\left( {{x^{\left( i \right)}}} \right) - {y^{\left( i \right)}}} \right)}^2}} % MathType!MTEF!2!1!+- % feaahqart1ev3aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn % hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr % 4rNCHbWexLMBbXgBd9gzLbvyNv2CaeHbl7mZLdGeaGqiVu0Je9sqqr % pepC0xbbL8F4rqqrFfpeea0xe9Lq-Jc9vqaqpepm0xbba9pwe9Q8fs % 0-yqaqpepae9pg0FirpepeKkFr0xfr-xfr-xb9adbaqaaeGaciGaai % aabeqaamaabaabauaakeaaqaaaaaaaaaWdbiaadQeadaqadaWdaeaa % peGaeqiUde3damaaBaaaleaapeGaaGimaaWdaeqaaOWdbiaacYcacq % aH4oqCpaWaaSbaaSqaa8qacaaIXaaapaqabaaak8qacaGLOaGaayzk % aaGaeyypa0ZaaSaaa8aabaWdbiaaigdaa8aabaWdbiaaikdacaWGTb % aaamaaqahabaWaaeWaa8aabaWdbiaadIgapaWaaSbaaSqaa8qacqaH % 4oqCa8aabeaak8qadaqadaWdaeaapeGaamiEa8aadaahaaWcbeqaa8 % qadaqadaWdaeaapeGaamyAaaGaayjkaiaawMcaaaaaaOGaayjkaiaa % wMcaaiaac2cacaWG5bWdamaaCaaaleqabaWdbmaabmaapaqaa8qaca % WGPbaacaGLOaGaayzkaaaaaaGccaGLOaGaayzkaaWdamaaCaaaleqa % baWdbiaaikdaaaaabaGaaeyAaiabg2da9iaaigdaaeaacaqGTbaani % abggHiLdaaaa!61B3! J(θ0​,θ1​)=2m1​i=1∑m​(hθ​(x(i))−y(i))2

这就是代价函数,我们理解了代价函数的1数学意义,该函数的内涵将在2.3和2.4继续解释

2.3代价函数(一)

在我们了解了代价函数后,我们用图像来对代价函数进行一个更加直观的解释,如下图


每一个参数θ1 都可以得到一个J(θ1),从图像我们可以更好地理解

2.4代价函数(二)

我们引入高线图来理解代价函数,如下图,我们可以看出在三维空间里面存在一个使得J(θ01)最小的点


再根据下面的图,我们可以理解代价函数J所表达的是什么样的

这样我们就理解了代价函数,但我们得用计算机去实现找出最小代价函数θ0和θ1,不可能手动去计算,就得学习梯度下降来实现自动找出使代价函数J最小化的参数θ0 和θ1 的值。

2.5梯度下降

这是一个用来求函数最小值的算法,将用这个算法来实现代数函数J(θ01 )的最小值

像上面这张图,就是局部选择一个参数的组合,来计算代价函数,这样做直到找到一个局部最小值,我们不能确定这个局部最小值是否为全局最小值,所以会找到不同的局部最小值。
就像一个人在山顶上要下山,得先在山上旋转360°确定一个方向,然后迈进一小步,持续重复这个动作
批量梯度下降的公式如下

θj:=θj−a∂∂θjJ(θ0,θ1)(forj=0andj=1){\theta _j}: = {\theta _j} - a\frac{\partial }{{\partial {\theta _j}}}J\left( {{\theta _0}{\rm{,}}{\theta _1}} \right)\left. {{\rm{(fo}}r\;j = 0andj = 1} \right) % MathType!MTEF!2!1!+- % feaahqart1ev3aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn % hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr % 4rNCHbWexLMBbXgBd9gzLbvyNv2CaeHbl7mZLdGeaGqiVu0Je9sqqr % pepC0xbbL8F4rqqrFfpeea0xe9Lq-Jc9vqaqpepm0xbba9pwe9Q8fs % 0-yqaqpepae9pg0FirpepeKkFr0xfr-xfr-xb9adbaqaaeGaciGaai % aabeqaamaabaabauaakeaaqaqxb0vaDfWdbiabeI7aX9aadaWgaaWc % baWdbiaadQgaa8aabeaak8qacaGG6aGaeyypa0JaeqiUde3damaaBa % aaleaapeGaamOAaaWdaeqaaOWdbiabgkHiTiaadggaqaaaaaaaaaWd % cmaalaaapaqaa8qacqGHciITa8aabaWdbiabgkGi2kabeI7aX9aada % WgaaWcbaWdbiaadQgaa8aabeaaaaGcpeGaamOsa8GadaqadaWdaeaa % peGaeqiUde3damaaBaaaleaapeGaaGimaaWdaeqaaOWdciaabYcape % GaeqiUde3damaaBaaaleaapeGaaGymaaWdaeqaaaGcpiGaayjkaiaa % wMcaamaabiaapaqaa8qacaqGOaGaaeOzaiaab+gacaWGYbGaaiiOai % aadQgacqGH9aqpcaaIWaGaamyyaiaad6gacaWGKbGaamOAaiabg2da % 9iaaigdaa8GacaGLPaaaaaa!6742! θj​:=θj​−a∂θj​∂​J(θ0​,θ1​)(forj=0andj=1)

其中a是学习率,它是决定代价函数下降程度最大的方向向下迈出的步子有多大。在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。

在梯度下降中,每一次都是同步更新的
下一步将更直观的感受这个算法是干嘛的。

2.6梯度下降知识点总结

我们知道梯度算法的公式,我们用图像来直观的看


求导的目的,基本上可以说取这个红点的切线,就是这样一条红色的直线。这条线有一个正斜率,也就是说它有正导数,因此,我得到的新的θ1,θ1 更新后等于θ1 减去一个正数乘以a。
如果a太小了,即我的学习速率太小,它会一点点挪动,它会需要很多步才能到达全局最低点。
如果a太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛,一次次越过最低点,直到你发现实际上离最低点越来越远

如果我们预先把放在一个局部的最低点,你认为下一步梯度下降法会怎样工作?

找到它的最小值,首先初始化梯度下降算法,在那个品红色的点初始化,如果我更新一步梯度下降,也许它会带我到这个点,因为这个点的导数是相当陡的。现在,在这个绿色的点,如果我再更新一步,你会发现我的导数,也即斜率,是没那么陡的。随着我接近最低点,我的导数越来越接近零,所以,梯度下降一步后,新的导数会变小一点点。然后我想再梯度下降一步,在这个绿点,我自然会用一个稍微跟刚才在那个品红点时比,再小一点的一步,到了新的红色点,更接近全局最低点了,因此这点的导数会比在绿点时更小。所以,我再进行一步梯度下降时,我的导数项是更小的,更新的幅度就会更小。所以随着梯度下降法的运行,你移动的幅度会自动变得越来越小,直到最终移动幅度非常小,你会发现,已经收敛到局部极小值。
这就是梯度下降算法,你可以用它来最小化任何代价函数,不只是线性回归中的代价函数。

2.7线性回归的梯度下降

我们要将梯度下降和代价函数结合。我们将用到此算法,并将其应用于具体的拟合直线的线性回归算法里。


代价函数的导数

算法改成:

这样我们就可以在线性回归中用到梯度下降法

机器学习入门(吴恩达)——单变量线性回归相关推荐

  1. 吴恩达《机器学习》学习笔记四——单变量线性回归(梯度下降法)代码

    吴恩达<机器学习>学习笔记四--单变量线性回归(梯度下降法)代码 一.问题介绍 二.解决过程及代码讲解 三.函数解释 1. pandas.read_csv()函数 2. DataFrame ...

  2. 吴恩达《机器学习》学习笔记二——单变量线性回归

    吴恩达<机器学习>学习笔记二--单变量线性回归 一. 模型描述 二. 代价函数 1.代价函数和目标函数的引出 2.代价函数的理解(单变量) 3.代价函数的理解(两个参数) 三. 梯度下降- ...

  3. 机器学习学习吴恩达逻辑回归_机器学习基础:逻辑回归

    机器学习学习吴恩达逻辑回归 In the previous stories, I had given an explanation of the program for implementation ...

  4. 机器学习【吴恩达|周志华|李宏毅|算法】清单 #收藏#

    网络转自:https://blog.csdn.net/julialove102123/article/details/78729602 系列学习记录: 1.吴恩达机器学习系列: 2.李宏毅机器学习课程 ...

  5. 机器学习【吴恩达|周志华|李宏毅|算法】清单

    系列学习记录: 1.吴恩达机器学习系列: 2.李宏毅机器学习课程: 3.周志华 西瓜书: 4.十大算法练习: 5.系列学习资源: 周志华:机器学习书籍 吴恩达 : CS229n机器学习系列 李宏毅教授 ...

  6. Ex6_机器学习_吴恩达课程作业(Python):SVM支持向量机(Support Vector Machines)

    Ex6_机器学习_吴恩达课程作业(Python):SVM支持向量机(Support Vector Machines) 文章目录 Ex6_机器学习_吴恩达课程作业(Python):SVM支持向量机(Su ...

  7. 吴恩达机器学习编程题ex1上 单变量线性回归: (python版含题目要求、代码、注解)

    不得不说安卓老师是真的用心良苦,给我们把编程题弄成了填空题,但是很可惜原版使用的是Octave和MATLAB所以作为初学者我就直接当编程题用python去做了 问题:让你绘制一个5阶单位阵 答案:   ...

  8. 吴恩达机器学习(第二章)——单变量线性回归

    第二章-单变量线性回归 文章目录 第二章-单变量线性回归 模型描述 代价函数 梯度下降 梯度下降的思想 梯度下降算法的公式 梯度下降的运动方式 线性回归的梯度下降 模型描述 在监督学习中我们有一个数据 ...

  9. 机器学习_吴恩达_week1(机器学习分类+单变量线性回归)

    目录 一.绪论 1.1 欢迎 1.2 机器学习是什么? 1.3 监督学习 1.4 非监督学习 二.单变量线性回归 2.1 模型表示 2.2 代价函数 2.3 代价函数的直观理解I 2.4 代价函数的直 ...

  10. 吴恩达机器学习笔记(2)——单变量线性回归(Univariate linear regression)

    一.模型描述 上一章已经通过卖房价格的模型简单介绍了什么是回归:我们尝试将变量映射到某一个连续函数上. 这章我们将这个问题简单地量化为单变量线性回归模型(Univariate linear regre ...

最新文章

  1. XPath学习:轴(13)——namespace
  2. BZOJ2437 [Noi2011]兔兔与蛋蛋 【博弈论 + 二分图匹配】
  3. 如何最大限度提升虚拟内存性能(组图)
  4. HDU - 7029 Median 思维
  5. djiango配置mysql_数据库MySQL相关环境配置以及数据库与Go的连接
  6. JS 学习笔记--11---内置对象(Global/Math)
  7. vue内引入语音播报功能
  8. 情人节集体撤档,《肥龙过江》改网播,线上首映会成为常态吗?
  9. full join 和full outer join_带你了解数据库中JOIN的用法
  10. 解释HTTP中Get和Post。它们有什么区别,哪个使用时更加安全?
  11. go generate 生成代码
  12. utools插件合集 v1.3.5绿色版
  13. ZT 计算一个无符整数中1Bit的个数(1) 2010-04-20 10:52:48
  14. 数据结构之图最短路径
  15. level升级打怪是什么意思_工业平板电脑的常规升级是什么意思?以液晶屏来说明...
  16. 微信小程序_文档_05_框架_组件_插件_多线程_兼容_优化
  17. 马云:关于P2P,不要你觉得,我要我觉得。---------王艾老哥
  18. Aspose.Cells的基础用法
  19. fis3 的安装过程
  20. 【ARM微型电脑/IoT设备/嵌入式】Linux Ubuntu 树莓派 Jetson nano设置PTP时间同步

热门文章

  1. 用计算机归零,windows自带的计算器清零快捷键是哪个?
  2. Python将指定文件批量复制到多个文件夹并重命名
  3. Intellij IDEA 的激活方法
  4. LSM 树(Log-Structured Merge-Tree) 原理
  5. 去软件培训学校真的可以学到东西吗?(不看你会后悔)
  6. 在打印服务器中新增纸张规格后,在打印机首选项中的自定义纸张中看不到的原因
  7. 【NLP】文本数据分析文本特征处理文本数据增强
  8. axios-前后端数据交互流程
  9. HashMap与红黑树
  10. 十二核能让联发科引爆核弹战吗?