机器学习笔记02-代价函数与梯度下降算法(一)

来源:互联网 发布:linux 执行sql脚本 编辑:程序博客网 时间:2024/05/16 17:56

在阅读这篇博文之前你需要了解的数学知识:

1,误差:本篇用平方差误差公式。

2,函数的收敛性:当函数趋向无穷大或无穷小,或某个具体数值时,该函数总是逼近某个值,这就是函数的收敛性。

3,导数:导数的数学意义就是这个点的斜率。

4,矩阵。


一,模型表示

     我们的第一个学习算法是线性回归算法。这篇博文你将会使你了解监督学习过程完整的流程。让我们通过一个例子来开始:这个例子是预测住房价格的,我们要使用一个数据集,数据集包含某市的住房价格。在这里,我要根据不同房屋尺寸所售出的价格,画出我的数据集。比方说,如果你朋友的房子是 1250 平方尺大小,你要告诉他们这房子能卖多少钱。那么,你可以做的一件事就是构建一个模型,也许是条直线,从这个数据模型上来看,也许你可以告诉你的朋友,他能以大约 220000(美元)左右的价格卖掉这个房子。这就是监督学习算法的一个例子。如图:


       它被称作监督学习是因为对于每个数据来说,我们给出了“正确的答案”,即告诉我们:根据我们的数据来说,房子实际的价格是多少,而且,更具体来说,这是一个回归问题。回归一词指的是,我们根据之前的数据预测出一个准确的输出值,对于这个例子就是价格,同时,还有另一种最常见的监督学习方式,叫做分类问题,当我们想要预测离散的输出值,例如,我们正在寻找癌症肿瘤,并想要确定肿瘤是良性的还是恶性的,这就是 0/1 离散输出的问题。更进一步来说,在监督学习中我们有一个数据集,这个数据集被称训练集。


    以上图的房屋交易问题为例,假使我们回归问题的训练集(Training Set)如下表所示:


     我们将要用来描述这个回归问题的标记如下:

      m 代表训练集中实例的数量 

      x 代表特征/输入变量

      y 代表目标变量/输出变量

     (x,y) 代表训练集中的实例

     (x(i),y(i) ) 代表第 i 个观察实例

     h 代表学习算法的解决方案或函数也称为假设(hypothesis)

     

     这就是一个监督学习算法的工作方式,我们可以看到这里有我们的训练集里房屋价格我们把它喂给我们的学习算法,学习算法的工作了,然后输出一个函数,通常表示为小写 h表示。h 代表 hypothesis(假设) 表示一个函数,输入是房屋尺寸大小,就像你朋友想出售的房屋,因此根据输入的值来得出值,值对应房子的价格因此,是一个从x 到 y 的函数映射。我将选择最初的使用规则代表 hypothesis,因而,要解决房价预测问题,我们实际上是要将训练集“喂”给我们的学习算法,进而学习得到一个假设 h,然后将我们要预测的房屋的尺寸作为输入变量输入给 h,预测出该房屋的交易价格作为输出变量输出为结果。那么,对于我们的房价预测问题,我们该如何表达 h?

 一种可能的表达方式为:

   可以简写成: (公式编排不是很好,但不影响阅读吧。。。)
这样的问题叫作单变量线性回归问题。 


二,代价函数


    在线性回归中我们有一个像这样的训练集,m 代表了训练样本的数量,比如 m = 47。而我们的假设函数,也就是用来进行预测的函数,是这样的线性函数形式:


    接下来我们会引入一些术语我们现在要做的便是为我们的模型选择合适的参数(parameters)θ0  θ1,在房价问题这个例子中便是直线的斜率和在轴上的截距。

我们选择的参数决定了我们得到的直线相对于我们的训练集的准确程度,模型所预测的值与训练集中实际值之间的差距(下图中蓝线所指)就是建模误差(modeling error)。



  我们的目标便是选择出可以使得建模误差的平方和能够最小的模型参数。即使得代价函数的值最小(下公式,原理便是误差的平方差公式)。


     我们绘制一个等高线图,三个坐标分别为 θ0  θ1  J(θ0,θ1):

     

  可以看出在三维空间中存在一个使得 J(θ0,θ1)最小的点。代价函数也被称作平方误差函数,有时也被称为平方误差代价函数。我们之所以要求出误差的平方和,是因为误差平方代价函数,对于大多数问题,特别是回归问题,都是一个合理的选择。还有其他的代价函数也能很好地发挥作用,但是平方误差代价函数可能是解决回归问题最常用的手段了。在后续博文中,我们还会谈论其他的代价函数,但我们刚刚讲的选择是对于大多数线性回归问题非常合理的。也许这个函数 J(θ0,θ1)有点抽象,可能你仍然不知道它的内涵,在接下来的几个博文里,我们要更进一步解释代价函数 J 的工作原理 ,并尝试更直观地解释它在计算什么,以及我们使用它的目的。

  

 代价函数的直观理解,为了方便直观的表达代价函数,我们设θ0 = 0 ;

 

 可以看出取不同的θ1,可以得到不同的代价函数值,如上图所示,本列中,当θ1=1时,代价函数值J(θ1)= 0,属于最佳拟合数据的直线。所以模型基本也就确定了

 当考虑到2个参数值θ0和θ1时,直观表达就需要3D视图了,如下图,所以当参数变的越来越多时,我们将用矩阵才表示这种关系。


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


         本博文参阅斯坦福大学机器学习教学,同时感谢黄海广博士的指导,转载请标明出处。

  







 

 

 











0 0