*******************************************************************************
注:本系列博客是博主学习Stanford大学 Andrew Ng 教授的《机器学习》课程笔记。博主深感学过课程后,不进行总结很容易遗忘,根据课程加上自己对不明白问题的补充遂有此系列博客。本系列博客包括线性回归、逻辑回归、神经网络、机器学习的应用和系统设计、支持向量机、聚类、将维、异常检测、推荐系统及大规模机器学习等内容。
*******************************************************************************
单变量线性回归
模型表示
线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归。
详细描述
之前的房屋交易问题为例,假使我们回归问题的训练集(Training Set)如下表所示:
我们将要用来描述这个回归问题的标记如下:
m 代表训练集中实例的数量
x 代表特征/输入变量
y 代表目标变量/输出变量
(x,y) 代表训练集中的实例
(x(i),y(i))代表第 i 个观察实例
h 代表学习算法的解决方案或函数也称为假设(hypothesis)
因而,要解决房价预测问题,我们实际上是要将训练集“输入”给我们的学习算法,进而学习得到一个假设h,然后将我们要预测的房屋的尺寸作为输入变量输入给 h,预测出该房屋的交易价格作为输出变量输出为结果。
一种可能的表达方式为:,因为只含有一个特征(输入变量),因此这样问题叫作单变量线性回归问题。
代价函数
本节将要定义什么是代价函数,这将有助于我们把最有可能的直线与给定的数据相拟合。
我们现在要做的便是为我们的模型选择合适的参数(parameters)θ0 和θ1,在房价问题这个例子中便是直线的斜率和在y轴上的截距。我们选择的参数决定了我们得到的直线相对于我们的训练集的准确程度,模型所预测的值与训练集中实际值之间的差距(下图中蓝线所指)就是建模误差(modeling
error)。
我们的目标便是选择出可以使得建模误差的平方和能够最小的模型参数。即使得代价函数
最小。
我们绘制一个等高线图,三个坐标分别为 θ0 和θ1 和 J(θ0,θ1),则可以看出在三维空间中存在一个使得 J(θ0,θ1)最小的点。
代价函数的直观理解
1 仅有一个模型参数时
如下图所示,我们想要用一条直线来拟合我们的数据,用参数θ0 和θ1得到假设h,而通过选择不同的θ0 和θ1,可以得到不同的拟合直线;在本小节中,为了更好地讲述代价函数,我们使用一个简化的假设函数,将θ0看做等于0,从而,优化函数将只有一个参数θ1。(将假设函数看做经过原点的直线(θ0 =0)可以更好地解释代价函数。)
将θ1取值不同时所对应的不同J值所对应的数据点绘制出来,如下侧右图所示,可以看到,当J的取值不同时,对应于不同的假设函数;反之,不同的假设函数也对应于不同的代价函数取值,而学习算法的目标是最小化代价函数。
从下图中可以看到,当θ1=1时,J取得最小值0,而该J对应的假设函数正好比较好地拟合出了数据集中的样本点,这就比较直观地解释了为什么通过最小化代价函数可以得到一个最佳的拟合直线。
2 有两个模型参数时
与上一小节相同,来看一下假设函数、模型参数、代价函数、优化目标函数,所不同的是,这里不再假设θ0=0,而J是θ0和θ1的函数。当h只有一个参数时,代价函数J的图形将是如上图右侧所示的碗装函数。但现在J有两个参数:θ0和θ1,J的函数图形仍然呈现出碗装形状,但变为了二维图形,如下图所示。
对于不同的假设函数,代价函数取值不同。接下来,为了描述方面,不再使用这个三维图形,而是使用contour figure。如下右图所示,就是contour figure,同一椭圆上的点,代表J取值相同。如下侧右图所示,θ0=800这点对应于左图中的直线,可以看到,这条直线并不能很好地拟合数据集,并且注意到,θ0=800这点距离J的最小值点还很远,也就是说这个代价函数还很大。
通过不断地降低J的取值,可以找到较好的拟合直线:
梯度下降
梯度下降是一个用来求函数最小值的算法,我们将使用梯度下降算法来求出代价函数J(θ0,θ1) 的最小值。下面,看一下梯度下降法的定义,如下图所示。
(1):= 表示赋值;
(2)α 是一个数字,被称为学习速率,它控制了我们下山时会迈出多大的步子,因此如果α值很大,那么相应的梯度下降过程中我们会试图用大步子下山,如果α值很小,那么我们会迈着很小的小碎步下山(关于如何设置α的值等内容,在之后的课程中会再讲解);
(3)这里的梯度下降法为批量梯度下降法,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。
梯度下降背后的思想是:开始时我们随机选择一个参数的组合(θ0,θ1,...,θn),计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到到到一个局部最小值(localminimum),因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。
梯度下降的直观理解
对θ赋值,使得 J(θ)按梯度下降最快方向进行,一直迭代下去,最终得到局部最小值。其中 α是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方
向向下迈出的步子有多大。
但对于线性回归问题,代价函数是一个碗装的函数(凸函数),该函数只有一个全局最优解,所以,利用梯度下降法,总是会收敛到全局最优解。
梯度下降和线性回归
如下图所示,左侧是梯度下降法,右侧是线性回归。接下来要做的就是用左侧的梯度下降法来最小化平方误差代价函数。
批量梯度下降法:即在进行梯度下降法的过程中,每一次迭代都用到了所有的训练样本,就是说,每次更新都需要考虑这一"批"样本。
转载请注明出处:http://blog.csdn.net/lsh_2013/article/details/47357751
版权声明:本文为博主原创文章,未经博主允许不得转载。