AndrewNg - 线性回归【1】梯度下降

AndrewNg - 线性回归


经典的Ng房屋问题,给定数据集如下:

2014160024001416300033324400220369232540

xR2 x(i)1 表示房屋面积, x(i)2 表示房间数量,首先我们会估计 y x是一个线性函数: hθ(x)=θ(0)+θ(1)x1+θ(2)x2 。其中 θi 为参数(也称为权重),为了更方便于表达,我们定义 x0=1 ,所以有:
hθ(x)=i=1nθixi=θTx,

其中 n 为输入向量中特征个数(不包含x0)。那么对于给定的训练集,我们如何选择或学习得出 θ ?在这里我们选取的方法是让 hθ(x) 尽量的接近于 y ,所以我们得到成本函数(cost function-最小二乘法)如下:
J(θ)=12i=1m(hθ(x(i))y(i))2

最小均方差算法( Least mean square)

我们的目标是选取可以使 J(θ) 最小的的 θ 。为了得到最终的 θ ,一般我们会给 θ 赋上初值,通过相关的算法对 θ 迭代求值,知道 θ 收敛。这里提及的是梯度下降法,迭代式如下:

θj:=θjαθjJ(θ).

当然, θ0,...,θn 是同时迭代更新的。这里的 α 我们是用来控制学习速率的参数。当然写代码的时候式子中的偏导还得再求一下,为了计算方便起见,假设我们先只有一个样本 (x,y) ,即 J(θ) 中的求和符号先忽略一下:
θjJ(θ)=θj12(hθ(x)y)2=(hθ(x)y)θj(hθ(x)y)=(hθ(x)y)θj(i=0nθixiy)=(hθ(x)y)xj

所以对于一个训练样本来说,迭代式会变成:
θj:=θj+α(y(i)hθ(x)(i))x(i)j.

要将上边的迭代式拓展到含 m 样本的训练集上,我们一般用到的有两种修改方法,其一如下:


Loopuntilconvergence:{θj:=θj+αi=1m(y(i)hθ(x)(i))x(i)j(for every j).}


很明显这个算法每一次的迭代都要遍历整个训练集,所以起名叫 批量梯度下降。我们说沿着梯度方向总能够找到局部最优解(说明问题的优化与初值有关),而且我们这里的问题还是一个凸二次函数,说明它只有一个局部最优解就是全局最优解。

这里写图片描述

可以看到图中是初值为(48,30)时梯度下降法的迹。与批量梯度下降法对应, 随机梯度下降法相对来说更适合比较大的数据集:

Loopuntilconvergence:{for i to m{θj:=θj+α(y(i)hθ(x)(i))x(i)j(for every j).}}


相比于批量梯度下降法每次都要遍历训练集才能更新 θ 来说,随机梯度下降立杆见影,每一步都会对 θ 有一个调整,不过其最后只能接近最优而到不了真正的最优。

下节预告

换一种方法,用公式直接推导出 θ 的值,规范形方程(normal equations),简单粗暴!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值