【吴恩达机器学习教学视频笔记】

第二章  单变量线性回归(Linear regression with one variable)

第一节 模型描述

这一节主要讲述了一元线性回归模型,还是使用的第一章监督学习中面积与房价关系的例子,具体数据如下图所示。

 从图中可以看出,我们需要通过这些数据拟合出绿色的直线(即假设函数h_{\theta }\left ( x \right )),用于预测其他面积房子的价格。

已知的数据集就是这个回归问题的训练集,为了描述这个回归问题,需要定义一些字符。

m = Number of training examples  (对应到上图的例子为已知房价的个数)

x's = “input” variable / features  (对应到上图的例子为房屋的面积)

y's = “output” variable/ “target” variable  (对应到上图的例子为房屋的价格)

x^{i}y^{i})= ith training example  (对应到上图的例子为某一个红色的叉)

训练集通过一定的学习算法便可以得到对应的假设函数,通过假设函数便可以根据特征(x,如例子中的房屋面积)获得目标变量(y,如例子中的房屋价格)。

假设函数一种可能的表达方式为:h_{\theta }\left ( x \right )= \theta _{0}+\theta _{1}x只有一个特征变量,也被称为单变量线性回归问题。

第二节 代价函数 (Cost function)

如何求出假设函数中的参数,或者说选择参数的标准是什么,就是这一节的主要内容。

构建假设函数是为了获得接近真实值的目标变量(y),因此目标变量是否与真实值相同便是一个参考标准。为了更好地选择参数\theta _{i},引入了代价函数J\left ( \theta _{0} ,\theta _{1}\right )(Cost function)。

J\left ( \theta _{0},{\theta _{1}} \right )=\frac{1}{2m}\sum_{i=1}^{m}\left ( h_{\theta } \left ( x^{i} \right )-y^{i}\right )^{2}

J\left ( \theta _{0} ,\theta _{1}\right )为最小值时,对应的\theta _{0} , \theta _{1}就是假设函数的参数。代价函数也称为平方误差函数,从公式中可以看出,代价函数最小,即所有已知点纵坐标与假设函数的目标变量的差值平方和最小,近似可以看成假设函数与训练集数据最接近。

 第三节  代价函数理解1

 为了更好地理解代价函数,先令\theta _{0}=0,观察 h_{\theta }\left ( x \right ) J\left ( \theta _{1} \right )的关系。

 上图左侧表示的是不同取值的\theta _{1}对应的 h_{\theta }\left ( x \right ) ,上图右侧表示的是不同取值的\theta _{1}对应的J\left ( \theta _{1} \right ),可以发现当J\left ( \theta _{1} \right )最小时刚好就是 h_{\theta }\left ( x \right ) 与训练集的点最接近时。

  第四节  代价函数理解2

 当两个参数均不为0时,观察假设函数和代价函数的关系。

因为J\left ( \theta _{0} ,\theta _{1}\right )中存在两个变量,所以其图像应该是三维的,如下图所示

 从图中可以看出,图像上点的高度即为J\left ( \theta _{0} ,\theta _{1}\right )的值。为了便于和假设函数比较,将采用等高线的方法将数三维的图像变成二维,具体如下图所示。

 当\theta _{0} , \theta _{1}越接近右侧图最中心圆的圆心时,代价函数的值越小,如何才能让其接近圆心,则是接下来需要讨论的梯度下降算法。

第五节 梯度下降(Gradient descent)

 梯度下降是为了获得代价函数的最小值,它的思路是,从某一个点\left ( \theta _{0},\theta _{1} \right )开始,不断改变\theta _{0} , \theta _{1}的值,使代价函数的值变小,最后接近最小值,当然选择不同的起始点,可能会得到不同的局部最小值,如下图所示。

梯度下降算法的公式(更新方程)为:

  \theta _{j} := \theta _{j} -\alpha \frac{\partial }{\partial \theta _{j}}J\left ( \theta _{0} ,\theta _{1} \right )  

( for j = 0 and j = 1)

 其中的\alpha为学习率,为正数;当\alpha较大时,梯度下降迅速,当\alpha较小时,梯度下降缓慢。

同时需要注意的是,在编程时需要对\theta _{0} , \theta _{1}同步更新(即先将更新后的值存放在中间变量中,再对其赋值)。

 第六节 梯度下降的理解

由上文可知

\theta _{1} := \theta _{1} -\alpha \frac{\partial }{\partial \theta _{1}}J\left ( \theta _{1} \right )

\theta _{1}在上图所示位置时,偏导数为正值,\theta _{1} 会不断变小,接近最低点。 

 当\theta _{1}在上图所示位置时,偏导数为负值,\theta _{1} 会不断变大,接近最低点。 

 当\alpha取值特别小时,梯度下降地会特别慢, 当\alpha取值特别大时,梯度下降地会特别快(这时有可能会超过最低点),具体情况如下图所示。

 因此选择合适的学习率也很重要,当快接近最小值时,偏导数会逐渐变小,因此在梯度下降过程中不用改变学习率的大小。

第七节 线性回归的梯度下降

利用梯度下降的算法获得线性回归模型,首先需要计算出\theta,就需要把 h_{\theta }\left ( x \right ) J\left ( \theta \right )带入\theta _{i}的表达式中。 

\theta _{0} := \theta _{0}-\alpha \frac{1}{m}\sum_{i=1}^{m}\left ( h_{\theta } \left ( x^{i} \right )-y^{\left ( i \right )}\right )

\theta _{1} := \theta _{1}-\alpha \frac{1}{m}\sum_{i=1}^{m}\left ( h_{\theta } \left ( x^{i} \right )-y^{\left ( i \right )}\right )\cdot x^{i}

这种算法称作批量梯度下降,在每次下降的过程中都用到了所有样本的数值。后续将会介绍另一种算法正规方程,但在数据量较大的情况下,使用梯度下降的方法更好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值