本文主要讲述一元线性回归算法的主要内容,因此默认对监督学习的定义有所了解,若不清楚可查看吴恩达机器学习第一讲或自行Google。

首先,我们知道,在监督学习中,我们一般都会有已有的数据集且其拥有明确的输入输出结果.监督学习主要分为回归和分类两种类型,而这里我们只讨论回归问题。

模型概述

在回归问题中,一般都是去尝试寻找一个连续的函数来尽可能的表达出输入输出之间的关系,为了方便表示,我们使用$x^(i)$来表示输入的变量,$y^(i)$表示输出值或称作目标值,一对($x^(i)$,$y^(i)$)称作是一个训练样本(training example),而包含了所有的数据($x^(i)$,$y^(i)$),i=1,2,3... 的集合m称作训练集(training set),而标在右上方的i仅仅是指这个训练集的一个索引,不是次方的意思。我们同时也使用X和Y表示所有的输入输出值的值域,X=Y=R.

为了方便表示监督学习,如下图所示,给定一个训练集,去学习一个算法h使得输入x能更好的预测到结果y,这里的算法函数我们称作假设函数。

此处输入图片的描述

代价函数(cost function)

如何来评价我们设定的假设函数是否准确呢,这里我们引入代价函数的概念。
首先,假设我们有一组数据,x表示当天气温(摄氏度),y表示当天某商店出售热饮数量(杯):

x y
13 70
18 48
10 83
4 102
1 122
7 90
11 84
5 94
3 97

将所有数据$x^(i)$,$y^(i)$表示在散点图中如下图所示:
此处输入图片的描述

很明显我们能看出这些数据很倾向于在一条直线上,假定这条直线的函数为$h_\theta(x) = \theta_0+\theta_1x$,则对于每条数据计算的差值为$h_\theta(x^(i))-y^(i)$,要使得这个函数即我们所说的假设函数与实际值误差最小,则是要每条数据的误差值之和最小,通常我们会求其差值平方和并除以总样本数的2倍,即$\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^(i))-y^(i))^2$,令J($\theta_0$,$\theta_1$) = $\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^(i))-y^(i))^2$,则我们的目标其实就是求得函数J($\theta_0$,$\theta_1$)最小时的$\theta_0$,$\theta_1$的值,函数J($\theta_0$,$\theta_1$)就是所谓的代价函数.

为了更方便理解代价函数,我们首先从简单的情形去分析,假定$\theta_0=0$,则假设函数$h_\theta(x) = \theta_1x$,则此时的代价函数为$J(\theta_1) = \frac{1}{2m}\sum_{i=1}^m(\theta_1 x^(i)-y^(i))^2$。举个例子,目前有一组数据(0,0),(1,1),(2,2),(3,3),

此处输入图片的描述
很明显我们知道,当$\theta_1=1$时是完全吻合数据实际情况的,因此,我们可以得出在$\theta_1=1$时,$J(\theta_1)=0$。那假设数据其实不那么明显,我们随意取值$\theta_1$比如等于0.5的时候,$J(\theta_1)$又是多少呢?套入公式,我们可以得出$J(0.5)\approx0.58$,再取多个不同的$\theta_1$后我们可以画出$J(\theta_1)$的图像如图所示

此处输入图片的描述

刚刚说过要求的最合适的假设函数即要求的代价函数最小时的$\theta_0$,$\theta_1$的值,即图中的最低点,很明显这里是$\theta_1=0$的时候。

然而在实际状况中是很少遇到上述所说的$\theta_0=0$的情况的,这时候的代价函数的图像依靠简单的平面坐标系已经无法画出来了,因为存在两个自变量,因此这里需要画出它的三维图像,上述数据我试了下画出来的图不是很方便看,因此我这里使用第二周课程的课后习题数据来做例子了,数据集及代价函数如图:
数据集

代价函数

通过此图我们依然很难找到合适的代价函数的取值点,因此我们需要通过另一种图,即等高线图来寻找合适的取值:
等高线图

上述等高线图由多个圈组成,在同一个圈上的点值相同,从外到内,值是越来越小的。图中×标记的点即代价函数最小的点的取值,这里是通过计算的来的,其中求得的结果大约为$\theta_0=-3.6303$,$\theta_1=1.1664$$,计算方法后文中我会解释。


CareyWYR
47 声望14 粉丝