程序笔记   发布时间:2022-07-13  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了【线性回归】大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

1 模型表示

监督学习中都有一个训练集。以房屋交易问题为例,假使训练集如下:

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

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

下面是模型训练流程图

2 代价函数

目标函数为:

[h_theta left( x right)=theta_{0}+theta_{1}x ]

求出合适的参数parameters(theta_{0})(theta_{1}),在这个例子中便是直线的斜率和在(y) 轴上的截距。

模型所预测的值与训练集中实际值之间的差距(下图中蓝线所指)就是建模误差modeling error

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

[J left( theta_0, theta_1 right) = frac{1}{2m}sumlimits_{i=1}^m left( h_{theta}(x^{(i)})-y^{(i)} right)^{2} ]

  • 上面的代价函数误差是均方误差

绘制一个等高线图,三个坐标分别为 (theta_{0})(theta_{1})(J(theta_{0}, theta_{1}))

可以看出在三维空间中存在一个使得 (J(theta_{0}, theta_{1})) 最小的点。代价函数也被称作平方误差函数,有时也被称为平方误差代价函数。

3 代价函数的直观理解

  • Hypothesis:

    [h_{theta}(x)=theta_{0}+theta_{1}x ]

  • Parameters:

    [theta_{0},theta_{1} ]

  • Cost Function:

    [J left( theta_0, theta_1 right) = frac{1}{2m}sumlimits_{i=1}^m left( h_{theta}(x^{(i)})-y^{(i)} right)^{2} ]

  • Goal:

    [underset{theta_{0}, theta_{1}}{operatorname{minimize}}J(theta_{0},theta_{1}) ]

代价函数的样子,等高线图,则可以看出在三维空间中存在一个使得(J(theta_{0}, theta_{1}))最小的点。

需要的是一种算法能自动地找出这些使代价函数(J)取最小值的参数(theta_{0})(theta_{1})来。

4. 梯度下降

梯度下降是用来求函数最小值的算法,使用梯度下降法来求出代价函数(J(theta_{0}, theta_{1})) 的最小值。

梯度下降背后的思想:

  • Step 1 :随机选择一个初始参数 (left( {theta_{0}},{theta_{1}},......,{theta_{n}} right)),计算代价函数,

  • Step 2 :寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到找到一个局部最小值(local minimum

因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。

想象正站立在山的这一点上,在梯度下降算法中,我们要做的就是旋转360度,朝梯度最大的某个方向上,用小碎步尽快下山。

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

  • 一次更新多个参数

[begin{array}{l}text { repeat until convergence { } \ left.qquad theta_{j}:=theta_{j}-alpha frac{partial}{partial theta_{j}} Jleft(theta_{0}, theta_{1}right) quad text { (for } j=0 text { and } j=1right) \ }end{array} ]

其中 (alpha) 是学习率(learning rate),决定移动步幅大小,在批量梯度下降中,每次都同时让所有的参数减去学习速率乘以代价函数的导数。其实就是代价函数的偏导

[alpha frac{partial }{partial {{theta }_{0}}}J({{theta }_{0}},{{theta }_{1}}) \ alpha frac{partial }{partial {{theta }_{1}}}J({{theta }_{0}},{{theta }_{1}}) ]

梯度下降更新参数:

[begin{array}{l}text { temp } 0:=theta_{0}-alpha frac{partial}{partial theta_{0}} Jleft(theta_{0}, theta_{1}right) \ text { temp } 1:=theta_{1}-alpha frac{partial}{partial theta_{1}} Jleft(theta_{0}, theta_{1}right) \ theta_{0}:=text { temp } 0 \ theta_{1}:=text { temp } 1end{array} ]

5. 梯度下降的直观理解

[{theta_{j}}:={theta_{j}}-alpha frac{partial }{partial {theta_{j}}}Jleft(theta right) ]

对 $theta $ 赋初值,使得 (Jleft( theta right)) 按梯度下降最快方向进行,一直迭代下去,最终得到局部最小值。其中 (alpha) 是学习率(learning rate),决定了沿着下降程度最大的方移动的程度。

[{theta_{j}}:={theta_{j}}-alpha frac{partial }{partial {theta_{j}}}Jleft( theta right) ]

  • (a) 太小了,学习速率太小,耗时大

  • (a) 太大,可能会越过最低点,甚至可能无法收敛。

如果我们预先把 ({theta_{1}}) 放在一个局部的最低点,下一步梯度下降法会怎样

假设你将({theta_{1}})初始化在局部最低点,在这儿,它已经在一个局部的最优处或局部最低点。结果是局部最优点的导数将等于零,如果你的参数已经处于局部最低点,那么梯度下降法更新其实什么都没做,它不会改变参数的值。

我们来看一个例子,这是代价函数(Jleft( theta right))

在梯度下降法中,当我们接近局部最低点时,梯度下降法会自动采取更小的幅度,这是因为当我们接近局部最低点时,很显然在局部最低时导数等于零,所以当我们接近局部最低时,导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度,没有必要再另外减小(a)

6. 梯度下降的线性回归

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

[frac{partial }{partial {{theta }_{j}}}J({{theta }_{0}},{{theta }_{1}})=frac{partial }{partial {{theta }_{j}}}frac{1}{2m}{{sumlimits_{i=1}^{m}{left( {{h}_{theta }}({{x}^{(i)}})-{{y}^{(i)}} right)}}^{2}} ]

(j=0) 时:

[frac{partial }{partial {{theta }_{0}}}J({{theta }_{0}},{{theta }_{1}})=frac{1}{m}{{sumlimits_{i=1}^{m}{left( {{h}_{theta }}({{x}^{(i)}})-{{y}^{(i)}} right)}}} ]

(j=1) 时:

[frac{partial }{partial {{theta }_{1}}}J({{theta }_{0}},{{theta }_{1}})=frac{1}{m}sumlimits_{i=1}^{m}{left( left( {{h}_{theta }}({{x}^{(i)}})-{{y}^{(i)}} right)cdot {{x}^{(i)}} right)} ]

则算法改写成:

[begin{array}{l}text { Repeat { } \ qquad begin{array}{l}theta_{0}:=theta_{0}-a frac{1}{m} sum_{i=1}^{m}left(h_{theta}left(x^{(i)}right)-y^{(i)}right) \ theta_{1}:=theta_{1}-a frac{1}{m} sum_{i=1}^{m}left(left(h_{theta}left(x^{(i)}right)-y^{(i)}right) cdot x^{(i)}right)end{array} \ }end{array} ]

批量梯度下降

指在梯度下降的每一步中,我们都用到了所有的训练样本,更新所有的调整参数,在梯度下降中,在计算微分求导项时,我们需要进行求和运算,我们最终都要计算这样一个东西,这个项需要对所有 (m)个训练样本求和。

大佬总结

以上是大佬教程为你收集整理的【线性回归】全部内容,希望文章能够帮你解决【线性回归】所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: