机器学习week1-2

Coursera机器学习(Andrew Ng)笔记
单变量线性回归,模型表达,代价函数,梯度下降法

单变量线性回归(Linear Regression with One Variable)

1.模型表达(Model Representation)

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

Size in feet2(x) Price($) in 1000’s(y)
2104 460
1416 232
1534 315
852 178

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

  • $m$ 代表训练集中实例的数量
  • $x$ 代表特征/输入变量
  • $y$ 代表目标变量/输出变量
  • $(x,y)$ 代表训练集中的实例
  • $(x^{(i)},y^{(i)})$ 代表第 i 个观察实例
  • $h$ 代表学习算法的解决方案或函数也称为假设(hypothesis)

  因而,要解决房价预测问题,实际上是要将训练集“喂”给学习算法,进而学习得一个假设 $h$,然后将要预测的房屋的尺寸作为输入变量输入给 $h$,预测出该房屋的交易价格作为输出变量输出为结果。那么,对于房价预测问题,我们该如何表达 $h$?
  一种可能的表达方式为:$h_θ=θ_0+θ_1x$;因为只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题

2.代价函数(Cost Function)

Hypothesis: $h_θ=θ_0+θ_1x$
Parameters: $θ_0$, $θ_0$
Cost Function: $J(θ_0,θ_1)=\frac{1}{2m}\sum\limits^m_{i=1}(h_θ(x^{(i)})-y^{(i)})^2$
Goal: $\mathop{minimize} \limits_{θ_0,θ_1}J(θ_0,θ_1)$


  现在要做的便是为模型选择合适的参数(parameters)$θ_0$和 $θ_1$,在房价问题这个例子中便是直线的斜率和在 $y$ 轴上的截距。
  选择的参数决定了得到的直线相对于训练集的准确程度,模型所预测的值与训练集中实际值之间的差距就是建模误差(modeling error)
  我们的目标便是选择出可以使得建模误差的平方和能够最小的模型参数。
  即使得代价函数$J(θ_0,θ_1)=\frac{1}{2m}\sum^m_{i=1}(h_θ(x^{(i)})-y^{(i)})^2$最小。接下来我们绘制一个等高线图, $(x,y,z)$ 三个坐标分别为 $θ_0$ 和 $θ_1$和 $J(θ_0,θ_1)$:

  则可以看出在三维空间中存在一个使得 $J(θ_0,θ_1)$ 最小的点。
其中一种拟合情况

3.梯度下降(Gradient Descent)

基本思想

开始时随机选择一个参数的组合$(θ_0,θ_1,…,θ_n)$,计算代价函数,然后寻找下一个能让代价函数值下降最多的参数组合。 我们持续这么做直到到到一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值(如下图)。

4.对线性回归运用梯度下降法

4.1梯度下降的直观理解

梯度下降是一个用来求函数最小值的算法,我们将使用梯度下降算法来求出代价函数 $J(θ_0,θ_1)$ 的最小值。

  梯度下降算法:$θ_j:=θ_j-α\frac{\partial}{\partialθ_j}J(θ_0,θ_1)$
  对 $θ$ 赋值,使得 $J(θ)$ 按梯度下降最快方向进行,一直迭代下去,最终得到局部最小值。其中 $α$ 是学习率(learning rate),它决定了沿着能让代价函数下降程度最大的方向向下迈出的步子有多大。注意:计算时 $θ_0$ 和 $θ_1$ 要同步更新(simultaneous update)。

4.2梯度下降的线性回归

  梯度下降算法和线性回归算法比较如图:

  对之前的线性回归问题运用梯度下降法,关键在于求出代价函数的导数,即:

$\frac{\partial}{\partialθ_j}J(θ_0,θ_1)=\frac{\partial}{\partialθ_j}\frac{1}{2m}\sum\limits^m_{i=1}(h_θ(x^{(i)})-y^{(i)})^2$

  $j=0$ 时:$\frac{\partial}{\partialθ_0}J(θ_0,θ_1)=\frac{1}{m}\sum\limits^m_{i=1}(h_θ(x^{(i)})-y^{(i)})$
  $j=1$ 时:$\frac{\partial}{\partialθ_1}J(θ_0,θ_1)=\frac{1}{m}\sum\limits^m_{i=1}(h_θ(x^{(i)})-y^{(i)})·x^{(i)}$
  则算法改写成:

  拟合情况:


  
参考资料
机器学习课笔记 —— Ryan Cheung
机器学习教程个人笔记(V2.5)—— 黄海广