机器学习笔记【Day4】一元线性回归

一元线性回归

  • 1. 模型与成本函数(Model and Cost Function)
    • 1.1 模型表示
    • 1.2 代价函数
    • 1.3 代价函数_实例1
    • 1.4 代价函数_实例2

(本文为学习总结笔记,如有雷同请无视)

线性回归预测一个输入值的一个真值输出。我们讨论了线性回归在住房价格预测中的应用,提出了成本函数的概念,并介绍了学习的梯度下降法。

1. 模型与成本函数(Model and Cost Function)

1.1 模型表示

我们的第一个学习算法是线性回归算法。更重要的是你将会了解监督学习过程完整的流程,让我们通过一个例子来开始。
这个例子是预测住房价格的,我们要使用一个数据集,数据集包含俄勒冈州波特兰市的住房价格。
机器学习笔记【Day4】一元线性回归_第1张图片
在这里我要根据不同房屋尺寸所售出的价格 画出我的数据集,比方说,我们来看这个数据集,你有一个朋友正想出售自己的房子。如果你朋友的房子是1250平方尺大小,你要告诉他们这房子能卖多少钱,那么你可以做的一件事就是,构建一个模型,也许是条直线,从这个数据模型上来看。也许你可以告诉你的朋友,他能以大约220000(美元)左右的价格卖掉这个房子。
机器学习笔记【Day4】一元线性回归_第2张图片
那么这就是监督学习算法的一个例子,它被称作监督学习是因为对于每个数据来说,我们给出了“正确的答案”,即告诉我们根据我们的数据来说,房子实际的价格是多少,而且更具体来说,这是一个回归问题。回归一词指的是我们根据之前的数据预测出一个准确的输出值。对于这个例子就是价格。

同时,还有另一种最常见的监督学习方式,叫做分类问题。当我们想要预测离散的输出值,例如,如果我们正在寻找癌症肿瘤并想要确定肿瘤是良性的还是恶性的,这就是0/1离散输出的问题。

更进一步来说,在监督学习中我们有一个数据集,这个数据集被称训练集,因此对于房价的例子,我们有一个训练集,包含不同的房屋价格。我们的任务就是从这个数据中学习预测房屋价格。

机器学习笔记【Day4】一元线性回归_第3张图片
现在我们给出这门课中经常使用的一些符号定义,我们要定义颇多符号,不过没关系,现在你记不住所有的符号也没关系,随着课程的进展,你会发现记住这些符号会很有用。在整个课程中用小写的m来表示训练样本的数目。
机器学习笔记【Day4】一元线性回归_第4张图片
因此 在这个数据集中,如果表中有47行,那么我们就有47组训练样本,m就等于47。让我用小写字母x来表示输入变量,往往也被称为特征量,这就是用x表示输入的特征,并且我们将用y来表示输出变量或者目标变量,也就是我的预测结果。那么这就是第二列,在这里我要使用(x,y)来表示一个训练样本,所以在这个表格中的单独的一行对应于一个训​​练样本,为了表示某个训练样本,我将使用x(i)与y(i)来表示。并且用这个表示第i个训练样本,所以这个上标i不是求幂运算,这个(x(i),y(i))括号里的上标i只是一个索引,表示我的训练集里的第i行。这里不是x的i和y的i次方,仅仅是指(x(i),y(i))是在此表中的第i行。

举个例子x(1)指的是第一个训练集里值为2104的输入值,这个就是第一行里的x,x(2) 等于1416吧?这是第二个x,y(1)等于460,这是我第一个训练集样本的y值,这就是(1)所代表的含义。
机器学习笔记【Day4】一元线性回归_第5张图片
像之前一样,我会问你一个问题,需要几秒的时间检查一下你的理解程度,在这个视频片段中,有时会有视频选择题弹出,当它弹出的时候,请使用鼠标来选择你认为正确的答案。这就是一个监督学习算法的工作方式。我们可以看到这里有我们的训练集里房屋价格,我们把它喂给我们的学习算法,这就是学习算法的工作了。然后输出一个函数,按照惯例,通常表示为小写h,h代表hypothesis(假设),h表示一个函数,输入是房屋尺寸大小。就像你朋友想出售的房屋。因此h根据输入的x值来得出y值,y值对应房子的价格,因此,h是一个从x到y的函数映射。
机器学习笔记【Day4】一元线性回归_第6张图片
人们经常问我为什么这个函数被称作假设(hypothesis),你们中有些人可能知道hypothesis的意思,从字典或者其它什么方式可以查到。其实在机器学习中这是一个在早期被用于机器学习的名称,它有点绕口。对这类函数来说,这可能不是一个很恰当的名字,对表示从房屋的大小到价格的函数映射,我认为这个词“hypothesis”可能不是最好的名称,但是这是人们在机器学习中使用的标准术语。所以不用太纠结人们为什么这么叫它。

当设计学习算法的时候,我们接下来需要去思考的是怎样得到这个假设h,对于这一点在接下来的几个视频中我将选择最初的使用规则,h代表hypothesis。我们将会这么写:
h θ ( x ) = θ 0 + θ 1 ∗ x h_\theta(x) = \theta_0 + \theta_1*x hθ(x)=θ0+θ1x

为了方便有时非书面形式也可以这么写:hθ(x),我就写成h(x),这是缩写方式。但一般来说我会保留这个下标θ。所以这就是数据集和函数的作用:用来预测。有时候我们会有更复杂的函数,也许是非线性函数,但是由于线性方程是简单的形式,我们将先从线性方程的例子入手。当然最终我们将会建立更复杂的模型,以及更复杂的学习算法。好吧,让我们也给这模型起一个名字,这个模型被称为线性回归(linear regression)模型。另外,这实际上是关于单个变量的线性回归,这个变量就是x。根据x来预测所有的价格函数,同时 对于这种模型有另外一个名称,称作单变量线性回归,单变量是对一个变量的一种特别的表述方式,总而言之这就是线性回归,在接下来的视频中我们将开始讨论如何去实现这种模型。

1.2 代价函数

我们将定义代价函数的概念,这有助于我们弄清楚如何把最有可能的直线与我们的数据相拟合。在线性回归中我们有一个像这样的训练集,记住,M代表了训练样本的数量。所以,比如M=47。而我们的假设函数,也就是用来进行预测的函数,是这样的线性函数形式。
机器学习笔记【Day4】一元线性回归_第7张图片
接下来我们会引入一些术语,这些θ0和θ1,这些θi我把它们称为模型参数。在这个视频中,我们要做的就是谈谈如何选择这两个参数值θ0和θ1。选择不同的参数θ0和θ1,我们会得到不同的假设,不同的假设函数,我知道你们中的有些人可能已经知道我在这张幻灯片上要讲的,但我们还是用这几个例子来复习回顾一下。如果θ0=1.5,θ1=0 那么假设函数会看起来是这样:
机器学习笔记【Day4】一元线性回归_第8张图片

因为你的假设函数是h(x)=1.5+0∗x是这样一个常数函数 恒等于1.5。

如果θ0=0并且θ1=0.5, 那么假设会看起来像这样:
机器学习笔记【Day4】一元线性回归_第9张图片

它会通过点(2,1)。这样你又得到了h(x)或者hθ(x)。但是有时我们为了简洁会省略θ。因此h(x)将等于0.5倍的x。就像这样。

最后,如果θ0=1并且θ1=0.5。我们最后得到的假设会看起来像这样:
机器学习笔记【Day4】一元线性回归_第10张图片
让我们来看看它应该通过点(2,2),这是我的新的h(x)或者写作hθ(x)。你还记得之前我们提到过hθ(x)的。但作为简写,我们通常只把它写作h(x)。

在线性回归中,我们有一个训练集,可能就像我在这里绘制的。我们要做的就是得出θ0、θ1这两个参数的值,来让假设函数表示的直线尽量地与这些数据点很好的拟合。也许就像这里的这条线一样:
机器学习笔记【Day4】一元线性回归_第11张图片
那么我们如何得出θ0、θ1的值来使它很好地拟合数据的呢?我们的想法是我们要选择能使h(x),也就是输入x时我们预测的值,最接近该样本对应的y值的参数θ0、θ1。所以,在我们的训练集中我们会得到一定数量的样本。我们知道x表示卖出哪所房子,并且知道这所房子的实际价格。所以我们要尽量选择合适的参数值,使得在训练集中给出的x值,我们能合理准确地预测y的值。

Idea: Choose θ0、θ1 so that hθ(x) is close to y for our training examples (x,y).

让我们给出标准的定义:在线性回归中我们要解决的是一个最小化问题。所以我要写出关于θ0、θ1的最小化,而且我希望这个式子极其小,我想要h(x)和y之间的差异要小。我要做的事情是尽量减少假设的输出与房子真实价格之间的差的平方。
m i n i m z e θ 0 θ 1 ( h θ ( x ) − y ) 2 \mathop{minimze}\limits_{θ_{0}θ_{1}} (h_{θ}(x) - y)^{2} θ0θ1minimze(hθ(x)y)2
接下来详细的阐述——
用下述符号表示第i个样本:
( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i))
所以我想要做的是对所有训练样本进行一个求和,对i=1到i=m的样本将对假设进行预测得到的结果,此时的xi输入是第i号房子的面积。将第i号对应的预测结果减去第i号房子的实际价格,所得的差的平方相加得到总和而我希望尽量减小这个值,也就是预测值和实际值的差的平方误差和,或者说预测价格和实际卖出价格的差的平方
m i n i m z e θ 0 θ 1 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 \mathop{minimze}\limits_{θ_{0}θ_{1}} \sum_{i=1}^{m} (h_{θ}(x^{(i)}) - y^{(i)})^{2} θ0θ1minimzei=1m(hθ(x(i))y(i))2
我说了这里的m指的是训练集的样本容量。而为了让表达式的数学意义变得容易理解一点,我们实际上考虑的是这个数的1/m。因此我们要尝试尽量减少我们的平均误差,也就是尽量减少其1/2m。通常是这个数的一半。
m i n i m z e θ 0 θ 1 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 \mathop{minimze}\limits_{θ_{0}θ_{1}} \frac{1}{2m} \sum_{i=1}^{m} (h_{θ}(x^{(i)}) - y^{(i)})^{2} θ0θ1minimze2m1i=1m(hθ(x(i))y(i))2

前面的这些只是为了使数学更直白一点,因此对这个求和值的二分之一求最小值应该得出相同的θ0值和相同的θ1值来,在这里:
h θ ( x ( i ) ) = θ 0 + θ 1 ∗ x ( i ) h_{θ}(x^{(i)})=θ_{0} + θ_{1} * x^{(i)} hθ(x(i))=θ0+θ1x(i)

而这个表达式:

m i n i m z e θ 0 θ 1 \mathop{minimze}\limits_{θ_{0}θ_{1}} θ0θ1minimze

意味着我们要找到θ0和θ1的值来使这个表达式的值最小。这个表达式因θ0和θ1的变化而变化。

因此,简单地说,我们正在把这个问题变成:找到能使我的训练集中预测值和真实值的差的平方的和的1/2m最小的θ0和θ1的值。因此,这将是我的线性回归的整体目标函数。为了使它更明确一点,我们要改写这个函数。

按照惯例我要定义一个代价函数:

J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(θ_{0},θ_{1}) = \frac{1}{2m} \sum_{i=1}^{m} (h_{θ}(x^{(i)}) - y^{(i)})^{2} J(θ0,θ1)=2m1i=1m(hθ(x(i))y(i))2

正如屏幕中所示,这里的这个公式我们想要做的就是关于θ0和θ1对函数J(θ0,θ1)求最小值。这就是我的代价函数。代价函数也被称作平方误差函数,有时也被称为平方误差代价函数。事实上我们之所以要求出误差的平方和,是因为误差平方代价函数对于大多数问题,特别是回归问题,都是一个合理的选择。还有其他的代价函数也能很好地发挥作用,但是平方误差代价函数可能是解决回归问题最常用的手段了。

在后续课程中,我们还会谈论其他的代价函数。但我们刚刚讲的选择是对于大多数线性回归问题非常合理的。好吧,所以这是代价函数,到目前为止我们已经介绍了代价函数的数学定义,也许这个函数J(θ0,θ1)有点抽象,可能你仍然不知道它的内涵,在接下来的几个视频里我们要更进一步解释代价函数J的工作原理,并尝试更直观地解释它在计算什么,以及我们使用它的目的。

1.3 代价函数_实例1

在上一个节中我们给了代价函数一个数学上的定义,在这个视频里 让我们通过一些例子来获取一些直观的感受,看看代价函数到底是在干什么。

回顾一下,这是我们上次所讲过的内容:我们想找一条直线来拟合我们的数据,所以我们用θ0,θ1等参数得到了这个假设,而且通过选择不同的参数,我们会得到不同的直线拟合。然后我们还有一个代价函数,这就是我们的优化目标。

假设(Hypothesis):

h θ ( x ) = θ 0 + θ 1 ∗ x h_{θ}(x) = θ_0 + θ_1 * x hθ(x)=θ0+θ1x

参数(Parameters):

θ 0 , θ 1 θ_0 , θ_1 θ0,θ1

代价函数(Cost Function):

J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(θ_{0},θ_{1}) = \frac{1}{2m} \sum_{i=1}^{m} (h_{θ}(x^{(i)}) - y^{(i)})^{2} J(θ0,θ1)=2m1i=1m(hθ(x(i))y(i))2

目标(Goal):

m i n i m z e θ 0 θ 1 J ( θ 0 , θ 1 ) \mathop{minimze}\limits_{θ_{0}θ_{1}} J(θ_{0},θ_{1}) θ0θ1minimzeJ(θ0,θ1)

在这个视频里,为了更好地将代价函数可视化,我将使用一个简化表示方法来表示假设函数、参数、代价函数以及目标:

简化的假设函数(Hypothesis):

h θ ( x ) = θ 1 ∗ x h_{θ}(x) = θ_1 * x hθ(x)=θ1x

简化的参数(Parameters):

θ 1 \theta_1 θ1

简化的代价函数(Cost Function):

J ( θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(θ_{1}) = \frac{1}{2m} \sum_{i=1}^{m} (h_{θ}(x^{(i)}) - y^{(i)})^{2} J(θ1)=2m1i=1m(hθ(x(i))y(i))2

简化的目标(Goal):

m i n i m z e θ 1 J ( θ 1 ) \mathop{minimze}\limits_{θ_{1}} J(θ_{1}) θ1minimzeJ(θ1)

我们可以将这个假设函数看成是把θ0设为0,所以我只有一个参数,也就是θ1。代价函数看起来与之前的很像,唯一的区别是现在h(x)=θ1∗x,只有一个参数θ1,所以我的优化目标是将J(θ1)最小化。用图形来表示就是,如果θ0等于零,也就意味这我们选择的假设函数会经过原点,也就是经过坐标(0,0)。通过利用简化的假设得到的代价函数 我们可以试着更好地理解代价函数这个概念。

我们要理解的是这两个重要的函数:第一个是假设函数,第二个是代价函数。

机器学习笔记【Day4】一元线性回归_第12张图片

注意这个假设函数hθ(x)对于一个固定的θ1是一个关于x的函数。所以这个假设函数就是一个关于x这个房子大小的函数。与此不同的是,代价函数J是一个关于参数θ1的函数,而θ1控制着这条直线的斜率。通过上图我们可以很好的理解,比如说这里是我的训练样本,它包含了三个点(1,1),(2,2)和(3,3)。现在我们选择一个值θ1,所以当θ1=1,如果这是我选择的θ1,那么我的假设函数看起来就会像是这条直线。我将要指出的是,X轴是表示房子大小的量。现在暂时把θ1定为1,我想要做的就是算出在θ1=1的时候J(θ1)等于多少。所以我们按照这个思路来计算代价函数的大小,和之前一样,代价函数定义如下:

J ( θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(θ_{1}) = \frac{1}{2m} \sum_{i=1}^{m} (h_{θ}(x^{(i)}) - y^{(i)})^{2} J(θ1)=2m1i=1m(hθ(x(i))y(i))2

J ( θ 1 ) = 1 2 m ∑ i = 1 m ( θ 1 x ( i ) − y ( i ) ) 2 J(θ_{1}) = \frac{1}{2m} \sum_{i=1}^{m} (θ_1x^{(i)} - y^{(i)})^{2} J(θ1)=2m1i=1m(θ1x(i)y(i))2

J ( θ 1 ) = 1 2 m ( 0 2 + 0 2 + 0 2 ) = 0 J(θ_{1}) = \frac{1}{2m} (0^2 + 0^2 + 0^2) = 0 J(θ1)=2m1(02+02+02)=0

对这个误差平方项进行求和,这就等于这样一个形式,简化以后就等于三个0的平方和,当然还是0。现在,在代价函数里,我们发现所有这些值都等于0。因为对于我所选定的这三个训练样本(1,1),(2,2)和(3,3),如果θ1=1,那么hθ(x(i))就会正好等于y(i)。所以h(x)−y所有的这些值都会等于零。这也就是为什么J(1)=0。所以我们现在知道了J(1)=0,如下图,要注意的是,因为我的代价函数是关于参数θ1的函数,当我描绘我的代价函数时,X轴就是θ1。

机器学习笔记【Day4】一元线性回归_第13张图片
现在我有J(1)=0,让我们继续把函数画出来,结果我们会得到这样一个点。

现在我们来看其它一些样本θ1可以被设定为某个范围内各种可能的取值,所以θ1可以取负数、0或者正数。所以如果θ1=0.5会发生什么呢?继续把它画出来:

机器学习笔记【Day4】一元线性回归_第14张图片
这条线的斜率等于0.5,现在让我们计算J(0.5)。

J ( θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(θ_{1}) = \frac{1}{2m} \sum_{i=1}^{m} (h_{θ}(x^{(i)}) - y^{(i)})^{2} J(θ1)=2m1i=1m(hθ(x(i))y(i))2

J ( θ 1 ) = 1 2 m ∑ i = 1 m ( θ 1 x ( i ) − y ( i ) ) 2 J(θ_{1}) = \frac{1}{2m} \sum_{i=1}^{m} (θ_1x^{(i)} - y^{(i)})^{2} J(θ1)=2m1i=1m(θ1x(i)y(i))2

J ( θ 1 ) = 1 2 m ( ( 0.5 − 1 ) 2 + ( 1 − 2 ) 2 + ( 1.5 − 3 ) 2 ) ≈ 0.58 J(θ_{1})= \frac{1}{2m} ((0.5 - 1)^2 + (1 - 2)^2 + (1.5 - 3)^2)\approx 0.58 J(θ1)=2m1((0.51)2+(12)2+(1.53)2)0.58

让我们把点画出来:
机器学习笔记【Day4】一元线性回归_第15张图片
让我们试试θ1等于0,J(0)会等于多少呢?如果θ1=0,那么h(x)就会等于一条水平的线。如下图:

机器学习笔记【Day4】一元线性回归_第16张图片
计算J(0):

J ( θ 1 ) 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(θ_{1}) \frac{1}{2m} \sum_{i=1}^{m} (h_{θ}(x^{(i)}) - y^{(i)})^{2} J(θ1)2m1i=1m(hθ(x(i))y(i))2

J ( θ 1 ) = 1 2 m ∑ i = 1 m ( θ 1 x ( i ) − y ( i ) ) 2 J(θ_{1})= \frac{1}{2m} \sum_{i=1}^{m} (θ_1x^{(i)} - y^{(i)})^{2} J(θ1)=2m1i=1m(θ1x(i)y(i))2

J ( θ 1 ) = 1 2 m ( ( 0 − 1 ) 2 + ( 0 − 2 ) 2 + ( 0 − 3 ) 2 ) ≈ 2.33 J(θ_{1})= \frac{1}{2m} ((0 - 1)^2 + (0 - 2)^2 + (0 - 3)^2)\approx 2.33 J(θ1)=2m1((01)2+(02)2+(03)2)2.33

所以让我们接着把这个点也画出来,所以这个点最后是2.3:

机器学习笔记【Day4】一元线性回归_第17张图片
当然我们可以接着设定θ1等于别的值进行计算,你也可以把θ1设定成一个负数,所以如果θ1是负数,那么h(x)将会等于,打个比方说-0.5乘以x然后θ1就是-0.5,那么这将会对应着一个斜率为-0.5的假设函数,而且你可以 继续计算这些误差。结果你会发现对于0.5结果会是非常大的误差,最后会得到一个较大的数值,类似于5.25,等等。对于不同的θ1,你可以计算出这些对应的值,结果你会发现,你算出来的这些值,你得到一条这样的曲线,通过计算这些值,你可以慢慢地得到这条线,这就是J(θ)的样子了。

机器学习笔记【Day4】一元线性回归_第18张图片
我们来回顾一下,任何一个θ1的取值对应着一个不同的假设函数,或者说对应着左边一条不同的拟合直线。对于任意的θ1你可以算出一个不同的J(θ1)的取值。举个例子,你知道的θ1=1时对应着穿过这些数据的那条直线,当θ1=0.5,对应着上面斜率为0.5的那条直线,然后θ1=0,对应着过原点的水平的线。所以对于任意一个θ1的取值,我们会得到一个不同的J(θ1),而且我们可以利用这些来描出上边的这条曲线。

机器学习笔记【Day4】一元线性回归_第19张图片
现在你还记得学习算法的优化目标,是我们想找到一个θ1的值来将J(θ1)最小化,这是我们线性回归的目标函数。嗯,看这条曲线,让J(θ1)最小化的值 是θ1=1,然后你看,这个确实就对应着最佳的通过了数据点的拟合直线,这条直线就是由θ1=1的设定而得到的,然后,对于这个特定的训练样本,我们最后能够完美地拟合。这就是为什么最小化J(θ1)对应着寻找一个最佳拟合直线的目标。总结一下,在这个视频里我们看到了一些图形来理解代价函数,要做到这个,我们简化了算法,让这个函数只有一个参数θ1,也就是说我们把θ0设定为0,在下一个视频里我们将回到原来的问题的公式,然后看一些带有θ0和θ1的图形,也就是说不把θ0设置为0了,希望这会让你更好地理解在原来的线性回归公式里代价函数J的意义。

1.4 代价函数_实例2

本节中,我们将更深入地学习代价函数的作用。
和之前一样,这是我们的几个重要公式:
假设(Hypothesis):

h θ ( x ) = θ 0 + θ 1 ∗ x h_{θ}(x) = θ_0 + θ_1 * x hθ(x)=θ0+θ1x

参数(Parameters):

θ 0 , θ 1 θ_0 , θ_1 θ0,θ1

代价函数(Cost Function):

J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(θ_{0},θ_{1}) = \frac{1}{2m} \sum_{i=1}^{m} (h_{θ}(x^{(i)}) - y^{(i)})^{2} J(θ0,θ1)=2m1i=1m(hθ(x(i))y(i))2

目标(Goal):

m i n i m z e θ 0 θ 1 J ( θ 0 , θ 1 ) \mathop{minimze}\limits_{θ_{0}θ_{1}} J(θ_{0},θ_{1}) θ0θ1minimzeJ(θ0,θ1)

跟前一节视频不同的是 我还是把θ写成θ0、θ1的形式,便于这里我们要对代价函数进行的可视化。和上次一样,首先来理解假设h和代价函数J。

这是房价数据组成的训练集数据:

机器学习笔记【Day4】一元线性回归_第20张图片
让我们来构建某种假设:如果我假设θ0=50,θ1=0.06的话,那么我将得到这样一个假设函数:
机器学习笔记【Day4】一元线性回归_第21张图片
那么现在的代价函数图像要怎么画呢?上一节我们只有一个θ,我们画出来的图形是一个倒过来的抛物线图,可是现在我们有了两个变量:θ0和θ1,我们的代价函数图就成了一个三维曲面图,水平方向的两个轴分别表示θ0和θ1,我们要在下面画出代价函数的图像:

机器学习笔记【Day4】一元线性回归_第22张图片
随着你改变θ0和θ1的大小,你会得到不同的代价函数 J(θ0,θ1)对于某个特定的点(θ0,θ1)这个曲面的高度,也就是竖直方向的高度,就表示代价函数J(θ0,θ1)的值。

不难发现这是一个弓形曲面。我们来看看三维图,旋转一下这个图你就更能理解这个弓形曲面所表示的代价函数了:


为了描述方便,将不再像这样给你用三维曲面图的方式解释代价函数J,而是用轮廓图(contour plot)来表示,下边就是一个轮廓图

机器学习笔记【Day4】一元线性回归_第23张图片

两个轴分别表示θ0和θ1,而这些一圈一圈的椭圆形,每一个圈就表示J(θ0,θ1)相同的所有点的集合。如果你之前没怎么接触轮廓图的话,你就这么想:一个弓形的函数从屏幕里冒出来,因此最小值也就是这个弓形的最低点就是这个点,也就是这一系列同心椭圆的中心点。因此轮廓图是一种很方便的方法 能够直观地观察代价函数J。

接下来让我们看几个例子:
机器学习笔记【Day4】一元线性回归_第24张图片
在代价函数的图上这一点表示θ0=800,θ1=−0.15,坐标为(800,−0.15)。而这个点也对应于左边这样一条线,θ0=800也就是跟纵轴相交于大约800,斜率大概是-0.15。当然,这条线并不能很好地拟合数据。并且你也发现了,这个代价值,距离最小值点还很远。也就是说这个代价值还是算比较大的,因此不能很好拟合数据。

让我们再来看另一个假设:

机器学习笔记【Day4】一元线性回归_第25张图片
你不难发现,这依然不是一个好的拟合,但比刚才稍微好一点。这里θ0=360,θ1=0。因此这组θ值对应的假设是:h(x)=360+0×x,这个假设同样也有某个代价值,而这个代价值就对应于这个代价函数在这一点的高度。

让我们再来看另一个例子:
机器学习笔记【Day4】一元线性回归_第26张图片
这个点其实不是最小值,但已经非常靠近最小值点了。这个点对数据的拟合就很不错。这个点虽然不在最小值点,但非常接近了。因此误差平方和,或者说训练样本和假设的距离的平方和,非常接近于最小值。尽管它还不是最小值。

通过这些图形我希望你能更好地理解这些代价函数J所表达的值,它们是什么样的,它们对应的假设是什么样的,以及什么样的假设对应的点更接近于代价函数J的最小值。当然我们真正需要的是一种有效的算法,能够自动地找出这些使代价函数J取最小值的参数θ0和θ1来。我想我们也不希望编个程序,把这些点画出来,然后人工的方法来读出这些点的数值。这很明显不是一个好办法。事实上我们后面就会学到,我们会遇到更复杂、更高维度、更多参数的情况,这在我们在后面的视频中很快就会遇到。而这些情况是很难画出图的,因此更无法将其可视化。因此我们真正需要的是编写程序来找出这些最小化代价函数的θ0和θ1的值。在下一节视频中 我们将介绍一种算法能够自动地找出能使代价函数J最小化的参数θ0和θ1的值。

你可能感兴趣的:(机器学习,机器学习,算法)