Stanford机器学习 -- Linear Regression with one variable

来源:互联网 发布:linux dns ipv6 ipv4 编辑:程序博客网 时间:2024/03/29 05:59

给定一个数据集(training Set)

这里写图片描述

分析数据可知:
.拟合函数是一个单变量的方程
我们假设它长这样:
h(x)=θ0+θ1*x (hypothesis)
其中 θ0和 θ1是模型参数
通过调节θ0和θ1得到不同的拟合方程。
例如:

这里写图片描述

Linear regression 的首要目标是找到一个最优的θ0和θ1 让他们在已知的数据上错误最少,在未知的数据上有和好的表现。

Cost Function(误差函数)

要找到最优的θ0和θ1 首先要知道hypothesis什么时候错了,以及错的有多少。
在线性回归中,最常用的错误衡量是:平方误差(Squared Error Function)
既对一个点(x1,y1) 它的平方误差为

这里写图片描述

则 一个hypothesis 对一整个数据集的误差可表示为

这里写图片描述

为了方便处理:
我们在Cost Function 的前面加上 1/2m (它实际是 1/2 和 1/m 的积 ,其中1/2并没有什么实际的含义,只是为了方便以后在数学上做处理, 1/m 表示对数据集上所有误差平方求平均)
误差函数最后变成:

这里写图片描述

现在我们的问题变成:

这里写图片描述
目标就是让误差函数取得最小值。

看一个简单的情况:
当θ0 = 0 时:

这里写图片描述

这里写图片描述

这里写图片描述

可以看到不同的θ1 对应于不同的 J(θ1)值
如果同时改变θ0 和 θ1 对应的J(θ0 , θ1)图像为bowl-shape function

这里写图片描述

将上图映射到二维平面会变成等高线图

这里写图片描述

在图上选不同的点对应不同的拟合方程

这里写图片描述

这里写图片描述

如何实现目标

这里写图片描述

最常用的方法是 Gradient decsent algorithm(以后用GD表示)

这里写图片描述

这里写图片描述

每次Cost Function 都沿着梯度下降的方向下降一小步。知道最小值,不在更新。
两张图的差别告诉我们,GD算法对初始值的选择有一定的依赖性。
还有一点也要注意,这里求解的是让误差函数取得最小值的点,在数学上来讲,求最小值要用导数,而在某个具体点的导数含义是原函数在该点的斜率方向。由于我们的误差函数J(θ)是在某个具体点上定义的,所以求导相当于求出了J(θ)在该点处的斜率,然后我们就可以用梯度下降的方法来求最小值了。

这里写图片描述

这是GD算法的伪代码表示:
其中,蓝色框中的表示计算梯度(也就是每次更新的方向)
红色框中的表示学习速率(也就是每次下降的步长)
最后的结果就是要求的拟合方程的参数
在一次拟合方程中就是他的斜率

这里写图片描述

关于学习速率

这里写图片描述

上图中,第一幅图表示α选择的太小,学习过慢。
第二幅图表示α选择过大,cost Function 将不再收敛。

这里写图片描述

它说明另外的一个问题,当选择了一个初始的θ0,θ1后在更新时很可能陷在某个局部最小值,却不是全局的最小值。而此时J(θ0,θ1)已经等于0的点而无法跟新。
这是代码的实现步骤。

这里写图片描述

不可以写成这样:

这里写图片描述

最后在单变量线性回归求导后,

这里写图片描述


[1]: https://www.coursera.org/ machine-learning

0 0
原创粉丝点击