• 梯度下降算法在线性回归中的运用


    梯度下降算法

    重复直到收敛{

    [{ heta _j}: = { heta _j} - alpha frac{partial }{{partial { heta _j}}}Jleft( {{ heta _0},{ heta _1}} ight)left( {for{ m{ j  =  0 and j  =  1}}} ight)]

    }

    线性回归模型{

    [{h_ heta }left( x ight) = { heta _0} + heta_1 {x_1}]

     [Jleft( {{ heta _0},{ heta _1}} ight) = frac{1}{{2m}}sumlimits_{i = 1}^m {{{left( {{h_ heta }left( {{x^{(i)}}} ight) - {y^i}} ight)}^2}} ]

    }

    我们的目的是将梯度下降算法应用到线性回归中,最小化J(θ0, θ1)。


    关键在于确定 [frac{partial }{{partial { heta _{ m{j}}}}}Jleft( {{ heta _0},{ heta _1}} ight)]

    下面是推导过程

    [egin{array}{l}
    frac{partial }{{partial { heta _{ m{j}}}}}Jleft( {{ heta _0},{ heta _1}} ight) = frac{partial }{{partial { heta _{ m{j}}}}}frac{1}{{2m}}sumlimits_1^m {{{left( {{h_ heta }left( {{x^{left( i ight)}}} ight) - {y^{left( i ight)}}} ight)}^2}} \
    = frac{partial }{{partial { heta _{ m{j}}}}}frac{1}{{2m}}sumlimits_{i = 1}^m {{{left( {{ heta _0} + { heta _1}{x^{left( i ight)}} - {y^{left( i ight)}}} ight)}^2}}
    end{array}]

    当j=0时 [frac{partial }{{partial { heta _0}}}Jleft( {{ heta _0},{ heta _1}} ight) = frac{1}{m}sumlimits_{i = 1}^m {left( {{h_ heta }left( {{x^{left( i ight)}}} ight) - {y^{left( i ight)}}} ight)} ]

    当j=1时 [frac{partial }{{partial { heta _1}}}Jleft( {{ heta _0},{ heta _1}} ight) = frac{1}{m}sumlimits_{i = 1}^m {left( {{h_ heta }left( {{x^{left( i ight)}}} ight) - {y^{left( i ight)}}} ight)} {x^{left( i ight)}}]

    现在梯度下降算法就可以表示为

    重复直到收敛{

    [egin{array}{l}
    { heta _0}: = { heta _0} - alpha frac{1}{m}sumlimits_{i = 1}^m {left( {{h_ heta }left( {{x^{left( i ight)}}} ight) - {y^{left( i ight)}}} ight)} \
    { heta _1}: = { heta _1} - alpha frac{1}{m}sumlimits_{i = 1}^m {left( {{h_ heta }left( {{x^{left( i ight)}}} ight) - {y^{left( i ight)}}} ight)} {x^{left( i ight)}}
    end{array}]

    }

    下面时梯度下降的示意图

    梯度下降算法会根据不同初始点的选取陷入不同的局部最小。

    但是就线性回归问题而言,它的代价函数的图形总是凸面函数(convex function)

    为方便起见,我们依然使用“等高线”图表示

    假设初始点红叉所在位置,对应的h(θ)可能是右边的图

       

    慢慢收敛到最佳的(θ0, θ1

    这里的梯度下降又称为批处理梯度下降("Batch" Gradient Descent)

    "Batch": Each step of gradient descent uses all the training examples.

    梯度下降的每个步骤都使用所有训练示例。

  • 相关阅读:
    Gulp实现web服务器
    移动端事件介绍
    Javascript设计模式详解
    H5移动端知识点总结
    【干货理解】理解javascript中实现MVC的原理
    [干货]数据交互与本地存储
    深入理解Javascript面向对象编程
    javascript数组的知识点讲解
    javascript函数式编程要掌握的知识点讲解
    深入浅出的javascript的正则表达式学习教程
  • 原文地址:https://www.cnblogs.com/qkloveslife/p/9829606.html
Copyright © 2020-2023  润新知