机器学习第2课:单变量线性回归(Linear Regression with One Variable)

  

  2.1  模型表示

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

  

    

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

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

        x                 代表特征/输入变量

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

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

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

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

    

  

     因而,要解决房价预测问题,我们实际上是要将训练集“喂”给我们的学习算法,进而学习得到一个假设 h,然后将我们要预测的房屋的尺寸作为输入变量输入给 h,预测出该房屋的交易价格作为输出变量输出为结果。

  那么,对于我们的房价预测问题,我们该如何表达 h?

       一种可能的表达方式为: , 因为只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题。

  2.2  代价函数

      如图:

  

  

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

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

  

  

    我们的目标便是选择出可以使得建模误差的平方和能够最小的模型参数。 即使得代价函数  最小。

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

  

    则可以看出在三维空间中存在一个使得 J(θ0,θ1)最小的点

   

  2.3  代价函数的直观理解 I

  

  

  2.4  代价函数的直观理解 II

  

  代价函数的样子

  

  

  2.5  梯度下降

    梯度下降是一个用来求函数最小值的算法,我们将使用梯度下降算法来求出代价函数J(θ0,θ1) 的最小值。 梯度下降背后的思想是:开始时我们随机选择一个参数的组合(θ0,θ1,...,θn),计算代价函数,

  然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到到到一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定 我们得到的局部最小值是否便是

  全局最小值(global  minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。

  

  批量梯度下降(batch gradient descent)算法的公式为:

  

  其中 α 是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大,在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。 

  

  

  注意:要同时更新θ0,θ1才可以,千万不要忘记

  2.6  梯度下降的直观理解

     梯度下降算法如下图:

  

  

    描述:对θ赋值,使得 J(θ)按梯度下降最快方向进行,一直迭代下去,最终得到局部最小值。

         其中 α 是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大。

    

  

  

  2.7  梯度下降的线性回归

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

  

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

  

    j=0  时:

  

    j=1 时:

   

    则算法改写成:

   

  

  2.8  接下来的内容

    在接下来的一组视频中,我会对线性代数进行一个快速的复习回顾。如果你从来没有接 触过向量和矩阵,那么这课件上所有的一切对你来说都是新知识,或者你之前对线性代数有所了解,但由于隔得久了,

  对其有所遗忘,那就请学习接下来的一组视频,我会快速地回顾 你将用到的线性代数知识。

    通过它们,你可以实现和使用更强大的线性回归模型。事实上,线性代数不仅仅在线性 回归中应用广泛,它其中的矩阵和向量将有助于帮助我们实现之后更多的机器学习模型,并在计算上更有效率。

  正是因为这些矩阵和向量提供了一种有效的方式来组织大量的数据,特别是当我们处理巨大的训练集时,如果你不熟悉线性代数,如果你觉得线性代数看上去是一 个复杂、可怕的概念,特别是对于之前从未接触过它的人,

    不必担心,事实上,为了实现机 器学习算法,我们只需要一些非常非常基础的线性代数知识。通过接下来几个视频,你可以 很快地学会所有你需要了解的线性代数知识。具体来说,为了帮助你判断是否有需要学习接

   下来的一组视频,我会讨论什么是矩阵和向量,谈谈如何加 、减 、乘矩阵和向量,讨论逆 矩阵和转置矩阵的概念

    如果你十分熟悉这些概念,那么你完全可以跳过这组关于线性代数的选修视频,但是如果你对这些概念仍有些许的不确定,不确定这些数字或这些矩阵的意思,那么请看一看下一组的视频,

  它会很快地教你一些你需要知道的线性代数的知识,便于之后编写机器学习算法 和处理大量数据。

原文地址:https://www.cnblogs.com/shaosks/p/7211082.html