Machine Learning笔记——单变量线性回归

2018-11-28 10:37:03 浏览数 (1)

学习者:阳光罗诺

来源:吴恩达 机器学习课程

在监督学习的问题中,预测房价属于一个例子

对于一个监督学习,就需要有相对应的训练数据集,

训练集(Training Set):主要用于建立模型

在机器学习中,样本一般分成独立的三部分训练集(train set),验证集(validation set)和测试集(test set)。其中,训练集用于建立模型。

训练集用来估计模型;

验证集用来确定网络结构或者控制模型复杂程度的参数;

测试集则检验最终选择最优的模型的性能如何。

代价函数(Cost function)

对于θ0和θ1取不同的值时,对应得到的线性回归函数也随之变化。

代价函数的定义:

代价函数有叫做平方误差函数或损失函数或者是成本函数。将一个或多个变量的事件阈值映射到直观地表示与该事件。 一个优化问题试图最小化损失函数。

目标函数是损失函数或其负值,在这种情况下它将被最大化。

代价函数是解决回归问题最常用的处理手段。

代价函数的常见形式:

在线性回归中,最常用的是均方误差(Mean squared error),具体形式为:

m:训练样本的个数;

hθ(x):用参数θ和x预测出来的y值;

y:原训练样本中的y值,也就是标准答案

上角标(i):第i个样本

完整的假设函数h和成本函数J,保留假设函数的所有参数θ0,θ1

随着参数的不同,得到和数据相符的直线大致如下:

为了简化这个假设函数,然后得到一个经过原点(0,0)的函数:

当θ1=1的时候,得到如下的情况:

但是当θ1=0.5的时候,得到的情况是:

当θ1=0时,相对应的情况:

当θ1的值开始是负数的时候,此时的误差就显得非常的大。但是经过不断进行数据的计算,我们可以得到地大致函数图像如下:

对θ1的值,每一个θ1的值都对应着一个不同的假设函数。得到的数据对应的代价函数也是随之而变化。

对于学习优化算法,我们最终的目标,就是找到最优的处理算法。也是线性回归的目标函数。

等高线图

针对于假设函数和代价函数问题,我们会继续进行优化问题,此时我们需要对两个参数θ0和θ1同时进行赋值,然后进行优化问题的处理:

当θ1进行赋值的时候,我们得到的代价函数图形类似一个抛物线:

但是当同时对θ1和θ0都进行了赋值,如上图θ0=50和θ1=0.05时,我们得到的函数图形如图所示:

但是为了很多问题,在此处不适用三维图形,我们此时就使用等高线图

总的来说。等高线图,类似于地里中的那些图形,一座大山,地面测量大山各点的海拔高度,映射到平面上。高度相同的用线连接起来,就会形成图中的等高线图。也有一点类似于树的年轮。当然了,在等高线图中,越靠近中心,海拔自然是越高。

梯度下降法

除了以上的方法之外,我们依然可以使用梯度下降法将代价函数J最小化。

梯度下降是比较常用的最小化代价函数J的算法.

梯度下降算法(Gradient Descent Optimization)是神经网络模型训练最常用的优化算法。对于深度学习模型,基本都是采用梯度下降算法来进行优化训练的。梯度下降算法背后的原理:目标函数T(θ)关于参数θ的梯度将是目标函数上升最快的方向。

要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。

在梯度下降法中,我们要做的就是不停地改变θ1和θ0的值,通过改变使得J变小,直到找到J的最小值或者是局部最小值。

就像一座大山,我们走向山底,有很多方式,但是往往会选择最优的路线方式。

梯度下降法的定义:

:= 表示赋值

α 是一个数字,被称为学习速率,在梯度下降中,它控制下降的步子的大小。也是下降速率。

(∂/∂Θj)J(Θ0,Θ1) 是一个微分项

对于该定义式,我们需要同时更新θ1和θ0的值。

用一个简单的例子,例如最小化的函数只有一个参数的情形,所以假如有一个代价函数J,只有一个参数θ1,θ1是一个实数,所以可以画出一维的曲线(类似抛物线)

小红点处的切线的斜率就是导数值,随着小红点逐渐收敛至最低点,切线斜率逐渐降低,移动的步子大小也会越来越小。

α的大小也是会有一定的影响,下面两个图分别大致分析了α的值造成的影响。

如果α的值过大,他会导致无法收敛甚至发散。

假设将θ1初始化在局部最低点,如图所示:

局部最优点的导数等于0,因为导数是切线的斜率,此时的直线的斜率为0,所以导数项ddθ1T(θ1)等于0。

梯度下降和代价函数的结合,以及推导,可以得出以下式子:

计算推导梯度下降算法的过程:

最后不断简化得到线性回归算法:

对于线性回归的代价函数,总是会出现一个弓状函数(凸函数)

图中的函数不存在什么局部最优,而是存在只有一个全局最优。

当我们计算这种类型的代价函数的梯度下降时,只要使用线性回归,它总是会收敛到全局最优,因为它自己本身没用其他的局部最优解。

Batch梯度下降算法

意味着每一步的梯度下降,都遍历了整个训练集的样本,所以在梯度下降中,当计算偏导数的时候,总是计算总和。

每次使用全量的训练集样本来更新模型参数,即给定一个步长,然后对所有的样本的梯度的和进行迭代:

梯度下降算法最终得到的是局部极小值。而线性回归的损失函数为凸函数,有且只有一个局部最小,则这个局部最小一定是全局最小。所以线性回归中使用批量梯度下降算法,一定可以找到一个全局最优解。

0 人点赞