Machine Learning笔记(二) 单变量线性回归

Machine Learning笔记(二) 单变量线性回归

注:本文内容资源来自 Andrew Ng 在 Coursera上的 Machine Learning 课程,在此向 Andrew Ng 致敬。算法

1、模型表示(Model Representation)

对于笔记(一)中的房价问题,如何进行求解,这将会是本文中讨论的重点。函数

如今假设有了更多的房屋价格数据,须要用一条直线来近似房屋价格的走势,以下图所示:学习

回顾笔记(一)中所讲 监督学习非监督学习回归 和 分类 的概念:ui

1. 监督学习(Supervised Learning)spa

    对于数据的每个样例,都有明确的输出值与之对应。

2. 非监督学习(Unsupervised Learning)code

    对于数据的每个样例,其输出值名不明确。

3. 回归(Regression)资源

    对于输入样本,预测的输出值是连续的实数。

4. 分类(Classification)同步

    对于输入样本,预测的输出值是离散的。

因而可知,房价问题是一个 监督学习 问题,须要使用 回归 方法求解。it

下面给出该问题的一些概念:io

  • m: 训练样本个数

  • x: 输入变量/特征

  • y: 输出变量/目标变量

  • (x(i), y(i)): 第i个训练样本

对于给定的训练集(Training Set),咱们但愿利用学习算法(Learning Algorithm)找到一条直线,以最大地近似全部的数据,而后经过这条直线所表示的函数(h),来推测新的输入(x)的输出值(y),该模型表示以下:

h每每被称为假设函数,对应着x到y的映射,因为在本文例子中为一条直线,用上图右侧绿色公式表示。

因为假设函数为线性函数,且训练样本中输入变量只有一个特征(即尺寸),将此类问题称之为 单变量线性回归(Linear Regression with One Variable,或 Univariate Linear Regression)问题。

2、代价函数(Cost Function)

继续讨论上述问题的假设函数h:

如上图所示,hθ(x) 表示一条关于 x 的直线, θ0 和 θ1 是它的两个参数,要求 hθ(x),就必须肯定这两个参数。

那么,如何选择这两个参数呢?

对于只有数据的咱们,并不知道 hθ(x) 的参数值,最简单的办法就是假设两个 θ 。对于不一样的假设,hθ(x) 表示以下:

那么,怎么样选择参数 θ ,才能让 hθ(x) 与数据最近似?

一个很好的想法:选择 θ0 和 θ1 ,以使得对于全部的训练样本 (x, y) , hθ(x) 都与 y 最相近。

如何才能说明最相近?咱们能够经过调节参数 θ,以最小化全部训练样本点 (x, y) 与预测样本点(x,hθ(x)) 的距离的平方和来求得。

具体叙述以下:

注:m表示训练样本个数。将距离的平方和除以 2m,是为了后期求导方便二考虑,对最后结果不会形成影响。

所以,训练的目标,便是调节参数 θ0 和 θ1 ,以最小化代价函数 J(θ0, θ1)

3、代价函数 直观展示 I(Intuition I)

为了方便的说明求解过程,先作必定的简化,假设 θ0 = 0,以下图右方所示,那么代价函数J只与 θ1相关。

当 θ1 = 1 时,求解过程以下,可得 J(1) = 0 。

当 θ1 = 0.5 时,求解过程以下,可得 J(0.5) ≈ 0.58 。

经过不断的尝试 θ1 的值,能够求出相应的 J(θ1) 的值,能够发现, J(θ1) 是关于 θ1 的二次函数,而且对于此样例中的三个数据,在 θ1 = 1 时, J(θ1) 取得最小值,且仅有一个最小值。

那么,咱们能够猜测一下,最快速的方法求 J(θ1) 的最小值,就是求其关于 θ1 的导数。

4、代价函数 直观展示 II(Intuition II)

在 Intuition I 中,为了求解方便,咱们残忍地抛弃了 θ1 ,可是 θ0 和 θ1 同等重要。如今,咱们要将θ0 捡回来,并加以悉心照料。

如今假设 θ0 = 50, θ1 = 0.06 ,获得直线以下图所示:

Intuition I中, J(θ1) 是关于 θ1 的二次函数。因为如今有两个参数 θ0 和 θ1 ,J(θ0, θ1) 利用 matlab/octave 绘图结果表示以下:

可是,这样的显示,尽管咱们可以大体的了解到J的最小值所在的位置,可是并不太明显,所以,利用等值线的显示方法,能够将 θ1 ,J(θ0, θ1) 更加直观地展示。

等值线:处在该曲线上的全部点的值都相等,且越往内值越小。

例如,对于下面的 hθ(x) ,其 J(θ0, θ1) 的值在等值线中表示如图中红X所示:

选取另外的 θ 值, J(θ0, θ1) 的值更加接近最小值:

选取到合适的 θ 值后,J(θ0, θ1) 的值基本彻底接近最小值:

5、梯度降低法(Gadient Descent)

如今咱们已经知道,须要选择适当的 θ ,以将 J(θ0, θ1) 最小化,以下图所示:

在平面内, θ 的取值有无限种, 从而 J(θ0, θ1) 所表示的函数有无限种可能,咱们不可能仅仅用猜想的方法获得所须要的结果。于是,寻求一种求 J(θ0, θ1) 最小值的方法极其重要。

典型的方法就是 梯度降低 法,以下图所示:

假设你如今站在一个山坡上,想要以最快的方法到达山底,一般咱们会选择每一次向下迈一步,在多步以后到达山底。然而,有一种状况须要考虑,就是多多个山底的状况,在你选择不一样的出发点时,可能会到达不一样的山底:

咱们所说的山底,就是 J(θ0, θ1) 的一个局部最优解,有时候局部最优解并不能表明全局最优解。庆幸的是,在文中的例子中,咱们选择的假设函数 hθ(x) 是一条直线,从而 J(θ0, θ1) 是一个二次函数,它只有一个最优解,利用梯度降低方法能够很好的解决问题。

那么,如何迈每一步,也就是说如何执行梯度降低算法?其执行过程以下:

对于 θj ,先求 J(θ0, θ1) 关于 θj 的偏导,在乘以 α(称为学习率),再用 θj 减去这个值,至关于全部的 θj 都在必定程度上向最小值所表示的点迈进,这在图中就表示 J(θ0, θ1) 向下迈了一步。一直重复这一步骤,直到 θ0和θ1 基本不变即结束。

此处,须要注意如下几点,很是重要:

    1. := 符号表示赋值,= 符号表示求真;
    2. α 表示学习率,决定了梯度降低的步子迈得有多大,α > 0;
    3. 全部的 θ 值必须同步更新。

6、梯度降低 直观展示(Gradient Descent Intuition)

咱们知道了梯度降低方法的相关概念,如今进行直观的展示以解释梯度降低的执行过程。梯度降低算法以下:

为了更方便的解释,先让 θ0 := 0,这样 J 简化为关于 θ1 的一元二次函数。当 J(θ1) 关于 θ1 的导数大于0时, θ1 左移, J(θ1) 降低。当 J(θ1) 关于 θ1 的导数小于0时, θ1 右移, J(θ1) 仍然降低。

那么问题来了。 若是迈的步子过小, J(θ1) 每次只下降一点点,何时才能到最底部? 若是迈的步子太大, J(θ1) 越过了最小值到达另外一边,会出现什么状况?

这两个问题,跟学习率 α 有着极大的关系。若是 α 过小,梯度降低算法将会至关慢。若是 α 太大,梯度降低可能越过最小值,致使不收敛,甚至发散。

让人欣慰的一件事是,在大部分的问题中,随着 θ 逐渐靠近最优解,J(θ) 关于 θ 的偏导的绝对值将会更小,也就是说曲线更加平滑。这意味着 θ 的减小或增长逐渐缓慢,也就意味着,J(θ) 的减少将会逐渐缓慢。所以,咱们并不须要在每一步去下降 α 的值。

7、线性回归梯度降低(Gradient Descent for Linear Regression)

如今,了解了梯度降低与线性回归,如今须要将它们进行结合,以求解本文中的房价问题的单变量线性回归模型。

对于线性回归模型,因为能够求 J(θ) 关于 θ 的偏导:

于是,梯度降低方法转化为以下形式(θ0 和 于 θ1 必须同步更新):

并且,因为 J(θ0, θ1) 的形状是一个碗形的,所以梯度降低最后将收敛到最小值:

相关文章
相关标签/搜索