您的位置:首页 > 其它

【转载】Andrew Ng机器学习公开课笔记 — 线性回归和梯度下降

2014-12-10 16:19 218 查看

转载自 http://www.52ml.net/9921.html,并且 感谢原创作者





1、线性回归(Linear Regression)

先看个例子,比如,想用面积和卧室个数来预测房屋的价格

训练集如下



首先,我们假设为线性模型,那么hypotheses定义为





其中x1,x2表示面积和#bedrooms两个feature

那么对于线性模型,更为通用的写法为



其中把θ和X看成向量,并且x0=1,就可以表示成最后那种,两个向量相乘的形式

那么线性回归的目的,就是通过训练集找出使得误差最小的一组参数θ(称为学习)

为了可以量化误差,定义损失函数(cost function)



比较好理解,就是训练集中所有样本点,真实值和预测值之间的误差的平方和

其中1/2是为了后面计算方便,求导时会消掉

所以我们目的就是找到θ使得J(θ)最小,这就是最小二乘法(最小平方),很容易理解

梯度下降(gradient descent)

为了求解这个最优化问题,即找到θ使得J(θ)最小,可以有很多方法

先介绍梯度下降法

这是一种迭代方法,先随意选取初始θ,比如θ=0,然后不断的以梯度的方向修正θ,最终使J(θ)收敛到最小

当然梯度下降找到的最优是局部最优,也就是说选取不同的初值,可能会找到不同的局部最优点

但是对于最小二乘的损失函数模型,比较简单只有一个最优点,所以局部最优即全局最优

对于某个参数的梯度,其实就是J(θ)对该参数求导的结果

所以对于某个参数每次调整的公式如下,



α is called the learning rate,代表下降幅度,步长,小会导致收敛慢,大会导致错过最优点

所以公式含义就是,每次在梯度方向下降一步

下面继续推导,假设训练集里面只有一个样本点,那么梯度推导为,



就是求导过程,但是实际训练集中会有m个样本点,所以最终公式为,



因为θ中有多个参数,所以每次迭代对于每个参数都需要进行梯度下降,直到J(θ)收敛到最小值

这个方法称为batch gradient descent,因为每次计算梯度都需要遍历所有的样本点

这是因为梯度是J(θ)的导数,而J(θ)是需要考虑所有样本的误差和

这个方法问题就是,扩展性问题,当样本点很大的时候,基本就没法算了

所以提出一种stochastic gradient descent(随机梯度下降)
想法很简单,即每次只考虑一个样本点,而不是所有样本点

那么公式就变为,



其实意思就是,每次迭代只是考虑让该样本点的J(θ)趋向最小,而不管其他的样本点

这样算法会很快,但是收敛的过程会比较曲折

整体效果,还是可以will be reasonably good approximations to the true minimum

所以适合用于较大训练集的case

[u][b]2、正规方程[/b]

[/u]前面说了如何用梯度下降来解线性回归问题

其实对于线性回归,也可以不用这种迭代最优的方式来求解

因为其实可以通过normal equations直接算出θ,即具有解析解

首先对于训练集,可以写成下面的向量形式





由于

,所以



并且

,故有



可以看到经过一系列的推导,J(θ)有了新的表达形式

那么J(θ)的梯度,即求导,可以得到



而J(θ)最小时,一定是梯度为0时,即可以推出normal equations



所以使J(θ)最小的θ的值可以直接求出,


,可以参考http://www.cnblogs.com/elaron/archive/2013/05/20/3088894.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐