吴恩达机器学习课程笔记02——处理房价预测问题(梯度下降算法详解)

 

建议记住的实用符号

符号

含义

m

样本数目

x

输入变量

y

输出变量/目标变量

(x,y)

训练样本

(x^(i),y^(i))

第i个训练样本

h

假设的函数( h(x) = y )

 

 

H函数:

                                   hθ(x) = θ0 + θ1*x( h(x) )       【单变量线性回归模型】

备注:常用希腊字母

Α α:阿尔法 Alpha

Β β:贝塔 Beta

Γ γ:伽玛 Gamma

Δ δ:德尔塔 Delte

Ε ε:艾普西龙 Epsilon

Ζ ζ :捷塔 Zeta

Ε η:依塔 Eta

Θ θ:西塔 Theta

Ι ι:艾欧塔 Iota

Κ κ:喀帕 Kappa

∧ λ:拉姆达 Lambda

Μ μ:缪 Mu

Ν ν:拗 Nu

Ξ ξ:克西 Xi

Ο ο:欧麦克轮 Omicron

∏ π:派 Pi

Ρ ρ:柔 Rho

∑ σ:西格玛 Sigma

Τ τ:套 Tau

Υ υ:宇普西龙 Upsilon

Φ φ:fai Phi

Χ χ:器 Chi

Ψ ψ:普赛 Psi

Ω ω:欧米伽 Omega


1、已知训练集

2、计算出恰当的θ0和θ1的值,使之得到的结果最接近已知的训练集( hθ(x) = θ0 + θ1*x ),尽可能的让其方差的1/2M的值最小。

代价函数(平方误差函数): J(θ0, θ1) = 1/(2m)∑(h(x^(i) – y ^(i))²

 


代价函数和假设函数

左边是假设函数:假设函数是为了确定θ1的值,是一个关于x的函数

右边是代价函数:是一个关于θ1的函数,求得不同θ1的情况下,代价函数的值(即误差的大小)。

同时考虑θ0和θ1所绘制的代价函数,其中点最低的部分则是我们理想的假设函数。

求θ0和θ1的算法

【梯度下降】将代价函数的值(就房价问题的训练集)进行可视化,想象如果你在山顶,以最快的速度走到山脚(即快速找到θ0和θ1恰当的值,使代价函数的值在某个较小的值的范围内)

梯度下降函数会给我们返回局部最优解,不同的初始值也许到达的点不同(即对θ0和θ1刚开始赋值不同,得到的最终值也会不一样)

  1. 给θ0和θ1设置初始值
  2. 通过梯度下降算法得到局部最优解

 

梯度下降算法

解析:

:=       赋值运算符(对的就是一个冒号加等号)

=           类似于C语言中的==(不知道老师使用的是哪里的语法,matlab不是这样的 [○・`Д´・ ○])

α            学习速率,是一个数字(控制下山的距离,即控制θ值变化的大小,其大小与α成正比,α>0 )

           学过微积分的应该都知道,下面要进行推导

 

每一次都会重新对θ0和θ1重新赋值(同时更新,即两个微分中的θ0和θ1都是它们原来的值)

 

 


 

第一个它的导数值为负数,因为y值随着x值的升高而降低

                                                                          第二个它的导数值为正数,因为y值随着x值的升高而升高

  • 由于代价函数的值恒大于零(有其表达式可知),所以我们可以很容易得到,无论θ所在的斜率是正是负,它永远是朝中J(θ)值降低的方向移动。因此,导数项的意义是为了保证随着θ的变化是朝着代价函数的值下降的那个方向。
  • α的值的大小也会影响到我们最终的结果,α值太小,会导致下降的比较慢,α太多,有可能会导致越过最低点。

如下图

  • 代价函数和导数的值同样起到对下降距离的调节作用,随着代价函数的值逐步降低,下降的距离逐渐变小,也就如下图所示。

下降算法的之所以存在局部最优解,与其算法有关。当到达一个位置θ0和θ1的偏导数都为0时,θ0和θ1将不再改变,也就是说,会出现求得的值为极小值而不是最小值的情况。(如果存在θ0和θ1都为0的多个点)

这也就是我们的梯度下降,其中圈着的部分,分别是各自偏导数求出的结果

 








 

猜你喜欢

转载自blog.csdn.net/xxtnt/article/details/83030126