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

2.1模型表示

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

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

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

在上面预测住房价格的例子中,我们回归问题的训练集如下图
在这里插入图片描述
m表示训练集中实例的数量
x表示特征/输出变量
y表示目标变量/输出变量
(x,y)表示训练集中的实例
(xi,yi )代表第i个观察实例
在这里插入图片描述

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

h θ ( x ) = θ 0 + θ 1 x {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+θ1x

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

2.2代价函数

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

在这里插入图片描述
我们知道了训练集m,知道了线性函数,我们来选择参数θ0和θ1,也就是直线的斜率和y轴上的截距,如下图1。选择好参数可以决定我们训练集的准确程度,模型所预测的值和实际值(训练集)之间的差距就是建模误差,如下图2。
在这里插入图片描述
我们所做的便是选择出可以使得建模误差的平方和能够最小的模型参数。公式如下

J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J\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)=2m1i=1m(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 ∂ ∂ θ j J ( θ 0 , θ 1 ) ( f o r    j = 0 a n d j = 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:=θjaθjJ(θ0,θ1)(forj=0andj=1)

其中a是学习率,它是决定代价函数下降程度最大的方向向下迈出的步子有多大。在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。
在这里插入图片描述
在梯度下降中,每一次都是同步更新的
下一步将更直观的感受这个算法是干嘛的。

2.6梯度下降知识点总结

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

在这里插入图片描述
求导的目的,基本上可以说取这个红点的切线,就是这样一条红色的直线。这条线有一个正斜率,也就是说它有正导数,因此,我得到的新的θ1,θ1 更新后等于θ1 减去一个正数乘以a。
如果a太小了,即我的学习速率太小,它会一点点挪动,它会需要很多步才能到达全局最低点。
如果a太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛,一次次越过最低点,直到你发现实际上离最低点越来越远
在这里插入图片描述
如果我们预先把放在一个局部的最低点,你认为下一步梯度下降法会怎样工作?
在这里插入图片描述
找到它的最小值,首先初始化梯度下降算法,在那个品红色的点初始化,如果我更新一步梯度下降,也许它会带我到这个点,因为这个点的导数是相当陡的。现在,在这个绿色的点,如果我再更新一步,你会发现我的导数,也即斜率,是没那么陡的。随着我接近最低点,我的导数越来越接近零,所以,梯度下降一步后,新的导数会变小一点点。然后我想再梯度下降一步,在这个绿点,我自然会用一个稍微跟刚才在那个品红点时比,再小一点的一步,到了新的红色点,更接近全局最低点了,因此这点的导数会比在绿点时更小。所以,我再进行一步梯度下降时,我的导数项是更小的,更新的幅度就会更小。所以随着梯度下降法的运行,你移动的幅度会自动变得越来越小,直到最终移动幅度非常小,你会发现,已经收敛到局部极小值。
这就是梯度下降算法,你可以用它来最小化任何代价函数,不只是线性回归中的代价函数。

2.7线性回归的梯度下降

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

在这里插入图片描述
代价函数的导数
在这里插入图片描述
算法改成:
在这里插入图片描述
这样我们就可以在线性回归中用到梯度下降法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值