zoukankan      html  css  js  c++  java
  • 机器学习:单变量线性回归及梯度下降

    *****************************************

    注:本系列博客是博主学习Stanford大学 Andrew Ng 教授的《机器学习》课程笔记。博主深感学过课程后。不进行总结非常easy遗忘,依据课程加上自己对不明确问题的补充遂有此系列博客。本系列博客包含线性回归、逻辑回归、神经网络、机器学习的应用和系统设计、支持向量机、聚类、将维、异常检測、推荐系统及大规模机器学习等内容。

    *****************************************

    单变量线性回归

    模型表示

    线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这样的函数是一个或多个称为回归系数的模型參数的线性组合。仅仅有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归。

    具体描写叙述

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


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

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

     x  代表特征/输入变量

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

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

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

     h  代表学习算法的解决方式或函数也称为如果(hypothesis)


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

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

    代价函数

    本节将要定义什么是代价函数。这将有助于我们把最有可能的直线与给定的数据相拟合。



    我们如今要做的便是为我们的模型选择合适的參数(parametersθ0 和θ1,在房价问题这个样例中便是直线的斜率和在y轴上的截距。我们选择的參数决定了我们得到的直线相对于我们的训练集的准确程度。模型所预測的值与训练集中实际值之间的差距(下图中蓝线所指)就是建模误差(modeling error)。


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

      最小。

    我们绘制一个等高线图,三个坐标分别为 θ0 和θ1 和  J(θ0,θ1),则能够看出在三维空间中存在一个使得  J(θ0,θ1)最小的点。


    代价函数的直观理解

    1 仅有一个模型參数时

    例如以下图所看到的,我们想要用一条直线来拟合我们的数据,用參数θ0 和θ1得到如果h,而通过选择不同的θ0 和θ1,能够得到不同的拟合直线。在本小节中。为了更好地讲述代价函数。我们使用一个简化的如果函数。将θ0看做等于0,从而。优化函数将仅仅有一个參数θ1。(将如果函数看做经过原点的直线(θ0 =0)能够更好地解释代价函数。)


    将θ1取值不同一时候所相应的不同J值所相应的数据点绘制出来。例如以下側右图所看到的。能够看到,当J的取值不同一时候,相应于不同的如果函数。反之。不同的如果函数也相应于不同的代价函数取值,而学习算法的目标是最小化代价函数

    从下图中能够看到。当θ1=1时,J取得最小值0,而该J相应的如果函数正好比較好地拟合出了数据集中的样本点。这就比較直观地解释了为什么通过最小化代价函数能够得到一个最佳的拟合直线。


    2 有两个模型參数时

    与上一小节同样。来看一下如果函数、模型參数、代价函数、优化目标函数,所不同的是,这里不再如果θ0=0。而J是θ0和θ1的函数。当h仅仅有一个參数时。代价函数J的图形将是如上图右側所看到的的碗装函数。但如今J有两个參数:θ0和θ1,J的函数图形仍然呈现出碗装形状,但变为了二维图形,例如以下图所看到的。


    对于不同的如果函数。代价函数取值不同。接下来,为了描写叙述方面。不再使用这个三维图形,而是使用contour figure。例如以下右图所看到的,就是contour figure。同一椭圆上的点,代表J取值同样。例如以下側右图所看到的,θ0=800这点相应于左图中的直线,能够看到,这条直线并不能非常好地拟合数据集,而且注意到。θ0=800这点距离J的最小值点还非常远。也就是说这个代价函数还非常大。


    通过不断地减少J的取值,能够找到较好的拟合直线:


    梯度下降

    梯度下降是一个用来求函数最小值的算法。我们将使用梯度下降算法来求出代价函数J(θ0,θ1) 的最小值。以下,看一下梯度下降法的定义,例如以下图所看到的。


    (1):= 表示赋值。

    (2)α 是一个数字,被称为学习速率,它控制了我们下山时会迈出多大的步子,因此如果α值非常大,那么相应的梯度下降过程中我们会试图用大步子下山,如果α值非常小,那么我们会迈着非常小的小碎步下山(关于怎样设置α的值等内容,在之后的课程中会再解说);

    (3)这里的梯度下降法为批量梯度下降法,我们每一次都同一时候让全部的參数减去学习速率乘以代价函数的导数。


    梯度下降背后的思想是:開始时我们随机选择一个參数的组合(θ0,θ1,...,θn),计算代价函数,然后我们寻找下一个能让代价函数值下降最多的參数组合。我们持续这么做直到到到一个局部最小值(localminimum),由于我们并没有尝试全然部的參数组合。所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum)。选择不同的初始參数组合,可能会找到不同的局部最小值。

    梯度下降的直观理解


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

    当中 α是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方

    向向下迈出的步子有多大。


    但对于线性回归问题,代价函数是一个碗装的函数(凸函数),该函数仅仅有一个全局最优解。所以。利用梯度下降法,总是会收敛到全局最优解。

    梯度下降和线性回归

    例如以下图所看到的,左側是梯度下降法,右側是线性回归。接下来要做的就是用左側的梯度下降法来最小化平方误差代价函数。


    批量梯度下降法:即在进行梯度下降法的过程中。每一次迭代都用到了全部的训练样本。就是说。每次更新都须要考虑这一""样本。

    ******************

    作者:hao_09

    时间:2015/8/8

    文章地址:http://blog.csdn.net/lsh_2013/article/details/47357751

    ******************









  • 相关阅读:
    公安备案接入服务商如何填写?(网站接入信息)
    VSCode 开发Vue必备插件
    阿里云ecs从零配置centos 安装宝塔bt环境 (安装失败提示setuptools installation failed)
    hover时下划线从中间向两端渐变
    phpcms v9后台增加阅读量字段,可任意修改阅读量
    织梦登录后台变空白解决方法大全
    html鼠标滚动后导航栏吸顶效果
    关于height:100%和height:100vh的区别
    mycat
    Hash碰撞
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8602820.html
Copyright © 2011-2022 走看看