Andrew Ng机器学习之二 单变量线性回归

来源:互联网 发布:玩数码频道淘宝 编辑:程序博客网 时间:2024/06/04 17:54

模型表示

Ng视频中举了一个房价的例子,即房屋面积x和售价y之间的一个数据集:

面积(x) 价格(y) 2104 460 1416 232 1534 315 852 178 … …

  此处定义:

m : 训练样本的个数,上表中可见的m = 4
x(i) : 第i个输入变量/特征,在多输入变量中x(i)代表一组输入,例如上表中的x(1)=1416
y(i) : 输出,例如上表中的y(1)=232

  原文中引入假设函数(hypothesis function)hθ(x)的过程如图:
这里写图片描述
  即寻求一个从xy的映射函数,学习算法通过学习数据集中的内容最终要得到的就是这个映射函数。那么如何寻找这个假设函数呢?显然本文是回归问题(在上一篇文章中区别过分类和回归),如果仅讨论单变量线性回归,那么假设函数的形式可以写为hθ(x)=θ0+θ1x,为了对hθ(x)进行分析,我们引入损失函数

损失函数(Cost Function)

  损失函数的引入来源于对假设函数的评估。
  假设我们已经得到了一个假设函数hθ(x)=θ0+θ1x,现在我们需要评估这个函数的映射能力优劣性,该怎么做呢?一种做法是求对x(i)根据假设函数求得的hθ(x(i))值与y(i)的方差,如下:
  

Jθ=12mmi=1(hθ(x(i)y(i))2

这里的Jθ就是损失函数,它反映着一个假设函数hθ(x)的映射能力,可以看出,Jθ越小则表示hθ(x)越能更好的映射(或称拟合),因此目标变成了求:

minθ0,θ112mmi=1(hθ(x(i)y(i))2

  Ng课件中图片如下:
  

这里写图片描述

  用损失函数评估一个假设函数的好坏,前提是得有θ0θ1已知的假设函数,那么如何得到这两个参数?这里使用梯度下降算法

梯度下降算法(Gradient descent)

 梯度下降算法所做的事情是:
  1. 给定一个初始的θ0,θ1(仅以2参数为例)
  2. 不断改变θ0,θ1从而减少J(θ0,θ1)的值,具体做法是求导。直到最终收敛。
  
 算法如下:
  重复进行以下步骤直至收敛:
  
  θi := θiαθiJ(θ0,θ1) (其中i=01)

 伪代码如下:
 
  temp0=θ0αθ0J(θ0,θ1) (1)
  temp1=θ1αθ1J(θ0,θ1) (2)
  θ0=temp0(3)
  θ1=temp1(4)
  
 值得注意的是,θ0θ1的变化是同步的,(2)和(3)不能互换顺序。
 有没有注意到此式子中存在一个α?这个参数被称为下降速率。通过改变α可以控制收敛的速度。但是如果α太小,梯度下降过程将会很慢,如果过大则又会跳过收敛点,从而不收敛甚至发散。(如下图)
 
 $\alpha$过小 $\alpha$过大
 
  但是,梯度下降算法不可避免的会存在陷入局部极小值的情形(如下图),这也是梯度下降算法的重大缺陷。
 
  此处陷入了局部极小值

0 0
原创粉丝点击