机器学习-吴恩达-笔记-1-线性回归

 
线性回归是预测连续值常用的算法,属于监督学习算法。
 
 

模型表示


如预测住房价格,先收集已有的数据集,数据集包含房屋尺寸和售出价格。
现在以房屋尺寸作为 x 轴,房屋售出价格作为 y 轴,画出房屋尺寸和售出价格的关系图:
 

从图中看出,随着x(房屋尺寸)的变大,y(房屋价格)也变高,我们可以先画出一条直线,这条直线大致可以代表房屋尺寸和房屋价格的趋势关系,这样我们就可以根据房屋尺寸预测出房屋价格。
 
如要预测出尺寸是1250平方的房子的价格,根据该直线,预测房子价格大概是 220000(美元)。
 
这条直线就是我们要找的模型h(也称假设或函数),该模型h可以根据x值来得到y值,也就是从x到y的函数映射。
 
模型h的一种可能表达方式为: ℎ𝜃(𝑥) = 𝜃0 + 𝜃1𝑥
 
因为该表达式只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题。
 
 

代价函数


为了得到模型h, 现在要做的便是为模型选择合适的参数(parameters) 𝜃0 和 𝜃1 ,也就是选择什么样的𝜃0 (截距)和 𝜃1 (斜率)才使得这条直线到这些数据点的误差最小。如图
 

我们的目标是使这些数据点(真实值)到直线(预测值)的差距达到最小,也称为建模误差达到最小。
 
要描述建模误差,可以使用代价函数:
 

代价函数可以理解为:所有数据点的误差平方和的平均值,1/2是为了求导计算时消去不相关的值(也就是2)。
 
题外话:这里有人会问,误差为什么要用平方,而不是绝对值。如果是绝对值,代价函数在0点位置出现拐点,也就是该函数在0点不可导,也就不能使用导数计算来更新 𝜃 值。绝对值函数f(x) = |x| 图像:
 
 

 
该函数在0点有两个导数值,左边导数为 -1,右边导数为 +1,所以该点不可导。
 
代价函数的等高线图:
 
 

可以看出在三维空间中存在一个使得𝐽(𝜃0, 𝜃1)最小的点。
 
还有其他的代价函数也能很好地发挥作用,但是平方误差代价函数可能是解决回归问题最常用的手段。
 
 
 

代价函数的直观理解


让我们通过一些例子来获取一些直观的感受,看看代价函数到底是在干什么。
 
 
 
目标函数就是不断调整 𝜃,使平方误差代价函数达到最小。
 
假设只有一个参数𝜃1 ,如图:
 
 

假设有两个参数𝜃0、𝜃1,如图:
 
 

 
通过等高线图,看出存在𝜃0、𝜃1使得代价函数达到最小值,对应的模型h(直线)最大限度地拟合这些数据点:
 

 
 

梯度下降


梯度下降是一个用来求函数最小值的算法,我们将使用梯度下降算法来求出代价函数𝐽(𝜃0, 𝜃1) 的最小值。
 
梯度下降背后的思想是:开始时我们随机选择一个参数的组合(𝜃0, 𝜃1, . . . . . . , 𝜃𝑛),计算代价函数,然后寻找下一个能让代价函数值下降最多的参数组合,持续这么做直到达到一个局部最小值( local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否是全局最小值( global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。
 
 

批量梯度下降( batch gradient descent)算法的公式为:
 

其中𝑎是学习率( learning rate),它决定了代价函数沿着下降程度最大的方向向下迈出的步子有多大,在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。
 
批量梯度下降更新参数的过程:
 

 
 
 

梯度下降的直观理解


梯度下降算法如下:
 

描述:对𝜃赋值,使得𝐽(𝜃)按梯度下降最快方向进行,一直迭代下去,最终得到局部最小值。其中𝑎是学习率( learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大。如图:
 
 

 
如果𝑎太小了,即学习速率太小,代价函数会一点点挪动去努力接近最低点,可能导致参数需要更新很多次才能达到全局最低点。
 
如果𝑎太大,即学习速率太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛或发散。
 
 

在梯度下降法中,当我们接近局部最低点时,梯度下降法会自动采取更小的幅度,很显然在局部最低时导数等于零,所以当函数接近局部最低时,导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度,这就是梯度下降的做法。所以实际上没有必要再另外减小𝑎。
 
 

梯度下降的线性回归


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

 
对线性回归问题运用梯度下降法,关键在于求出代价函数的导数,即:
 

则算法改写成
 

批量梯度下降法指的是在梯度下降的每一步中, 我们都用到了所有的训练样本,在计算微分求导项时,需要对所有训练数据进行求和运算。如果训练数据过大时,批量梯度下降法的时间复杂度比较大,所以可以使用其它梯度下降法,如随机梯度下降法、小批量梯度下降法等。
 
 
 

多变量线性回归


之前探讨的是单变量/特征的回归模型, 现在我们对房价模型增加更多的特征,例如房间数楼层等,构成一个含有多个变量的模型,模型中的特征为:
 

     (𝑥1, 𝑥1, . . . , 𝑥𝑛)

𝑛 代表特征的数量
 
   代表第 𝑖 个训练实例,是特征矩阵中的第𝑖行,是一个向量( vector)。
 
   代表特征矩阵中第 𝑖 行的第 𝑗 个特征,也就是第 𝑖 个训练实例的第 𝑗 个特征。
 
回归模型表达式为:

 
公式可以简化为:  

 
 
 

多变量梯度下降


多变量线性回归与单变量线性回归的梯度下降法思路是一样的,只是需要更新的参数有多个,在多变量线性回归中,我们也构建一个代价函数,这个代价函数是所有建模误差的平方和,即:
 
 

其中:
     

然后更新所有的参数值,从𝜃0 到 𝜃n ,直到收敛:
 

 
 
 

梯度下降法实践-1-特征缩放


在面对多维特征问题的时候,我们要保证这些特征都具有相近的尺度,这将帮助梯度下降算法更快地收敛。
 
解决的方法是尝试将所有特征的尺度都尽量缩放到0到1之间,或-1到1之间。如图:
 

 
 
最简单的方法是令:   ,其中 𝜇𝑛是平均值, 𝑠𝑛是标准差。
 
 
 

梯度下降法实践-2-学习率


梯度下降算法收敛所需要的迭代次数根据模型的不同而不同,我们不能提前预知,可以通过绘制迭代次数和代价函数的图表来观测算法在何时趋于收敛:
 

 
梯度下降算法的每次迭代受到学习率的影响:
如果学习率𝑎过小,则达到收敛所需的迭代次数会非常高。
如果学习率𝑎过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛。
 
通常可以考虑尝试些学习率: 𝛼 = 0.01, 0.03, 0.1, 0.3, 1, 3, 10
 
 
 

特征和多项式回归


线性回归有时并不适用于所有数据,这时我们需要曲线来适应我们的数据,这就是多项式回归。
 
比如一个二次方模型: 

 
或者三次方模型:

 
如图:

 
通常我们需要先观察数据然后再决定准备尝试怎样的模型。
 
多项式回归可以理解为是一种增加特征的方式,通过已有的特征扩展出更多的特征,这有利于模型适应复杂的数据。
 
 
 

正规方程


到目前为止,我们都在使用梯度下降法得到参数 𝜃,但是对于某些线性回归问题,正规方程方法是更好的解决方案。如1维特征情况:
 

 
正规方程是通过求解下面的方程来找出使得代价函数最小的参数 𝜃 的: 
 

 
假设我们的训练集特征矩阵为 𝑋(包含了 𝑥0 = 1)并且我们的训练集结果为向量 𝑦,则利用正规方程解出向量:
 

 
注:对于那些不可逆的矩阵(通常是因为特征之间不独立,如同时包含英尺为单位的尺寸和米为单位的尺寸两个特征,也有可能是特征数量大于训练集的数量),正规方程方法是不能用的。
 
梯度下降与正规方程的比较:
 
梯度下降
正规方程
需要选择学习率𝛼
不需要
需要多次迭代
一次运算得出
当特征数量𝑛大时也能较好适用
需要计算   如果特征数量𝑛较大则运算代价大,因为矩阵逆的计算时间复杂度为 
通常来说当𝑛小于 10000 时还是可以接受的
适用于各种类型的模型
只适用于线性模型,不适合逻辑回归模型等其他模型
总结一下,只要特征变量的数目并不大,标准方程是一个很好的计算参数𝜃的替代方法。具体地说,只要特征变量数量小于一万,通常使用标准方程法,而不使用梯度下降法。
 
增加内容:
 

将向量表达形式转为矩阵表达形式:
 

对𝐽(𝜃)进行如下变换:

接下来对𝐽(𝜃)偏导,需要用到以下几个矩阵的求导法则:
 
 
 
 
 
所以有:
 

 
 

 
 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值