文档章节

Machine Learning笔记(二) 单变量线性回归

Gaussic
 Gaussic
发布于 2015/09/25 13:20
字数 2226
阅读 649
收藏 5

Machine Learning笔记(二) 单变量线性回归

注:本文内容资源来自 Andrew Ng 在 Coursera上的 Machine Learning 课程,在此向 Andrew Ng 致敬。

一、模型表示(Model Representation)

对于笔记(一)中的房价问题,如何进行求解,这将会是本文中讨论的重点。

现在假设有了更多的房屋价格数据,需要用一条直线来近似房屋价格的走势,如下图所示:

回顾笔记(一)中所讲 监督学习非监督学习回归 和 分类 的概念:

1. 监督学习(Supervised Learning)

    对于数据的每一个样例,都有明确的输出值与之对应。

2. 非监督学习(Unsupervised Learning)

    对于数据的每一个样例,其输出值名不明确。

3. 回归(Regression)

    对于输入样本,预测的输出值是连续的实数。

4. 分类(Classification)

    对于输入样本,预测的输出值是离散的。

由此可见,房价问题是一个 监督学习 问题,需要使用 回归 方法求解。

下面给出该问题的一些概念:

  • m: 训练样本个数

  • x: 输入变量/特征

  • y: 输出变量/目标变量

  • (x(i), y(i)): 第i个训练样本

对于给定的训练集(Training Set),我们希望利用学习算法(Learning Algorithm)找到一条直线,以最大地近似所有的数据,然后通过这条直线所表示的函数(h),来推测新的输入(x)的输出值(y),该模型表示如下:

h往往被称为假设函数,对应着x到y的映射,由于在本文例子中为一条直线,用上图右侧绿色公式表示。

由于假设函数为线性函数,且训练样本中输入变量只有一个特征(即尺寸),将此类问题称之为 单变量线性回归(Linear Regression with One Variable,或 Univariate Linear Regression)问题。

二、代价函数(Cost Function)

继续讨论上述问题的假设函数h:

如上图所示,hθ(x) 表示一条关于 x 的直线, θ0 和 θ1 是它的两个参数,要求 hθ(x),就必须确定这两个参数。

那么,如何选择这两个参数呢?

对于只有数据的我们,并不知道 hθ(x) 的参数值,最简单的办法就是假设两个 θ 。对于不同的假设,hθ(x) 表示如下:

那么,怎么样选择参数 θ ,才能让 hθ(x) 与数据最近似?

一个很好的想法:选择 θ0 和 θ1 ,以使得对于所有的训练样本 (x, y) , hθ(x) 都与 y 最相近。

如何才能说明最相近?我们可以通过调节参数 θ,以最小化所有训练样本点 (x, y) 与预测样本点(x,hθ(x)) 的距离的平方和来求得。

具体叙述如下:

注:m表示训练样本个数。将距离的平方和除以 2m,是为了后期求导方便二考虑,对最后结果不会造成影响。

因此,训练的目标,即是调节参数 θ0 和 θ1 ,以最小化代价函数 J(θ0, θ1)

三、代价函数 直观展现 I(Intuition I)

为了方便的说明求解过程,先做一定的简化,假设 θ0 = 0,如下图右方所示,那么代价函数J只与 θ1相关。

当 θ1 = 1 时,求解过程如下,可得 J(1) = 0 。

当 θ1 = 0.5 时,求解过程如下,可得 J(0.5) ≈ 0.58 。

通过不断的尝试 θ1 的值,可以求出相应的 J(θ1) 的值,可以发现, J(θ1) 是关于 θ1 的二次函数,并且对于此样例中的三个数据,在 θ1 = 1 时, J(θ1) 取得最小值,且仅有一个最小值。

那么,我们可以猜想一下,最快速的方法求 J(θ1) 的最小值,就是求其关于 θ1 的导数。

四、代价函数 直观展现 II(Intuition II)

在 Intuition I 中,为了求解方便,我们残忍地抛弃了 θ1 ,但是 θ0 和 θ1 同等重要。现在,我们要将θ0 捡回来,并加以悉心照料。

现在假设 θ0 = 50, θ1 = 0.06 ,得到直线如下图所示:

Intuition I中, J(θ1) 是关于 θ1 的二次函数。由于现在有两个参数 θ0 和 θ1 ,J(θ0, θ1) 利用 matlab/octave 绘图结果表示如下:

但是,这样的显示,尽管我们能够大致的了解到J的最小值所在的位置,但是并不太明显,因此,利用等值线的显示方法,可以将 θ1 ,J(θ0, θ1) 更加直观地展现。

等值线:处在该曲线上的所有点的值都相等,且越往内值越小。

例如,对于下面的 hθ(x) ,其 J(θ0, θ1) 的值在等值线中表示如图中红X所示:

选取另外的 θ 值, J(θ0, θ1) 的值更加接近最小值:

选取到合适的 θ 值后,J(θ0, θ1) 的值基本完全接近最小值:

五、梯度下降法(Gadient Descent)

现在我们已经知道,需要选择适当的 θ ,以将 J(θ0, θ1) 最小化,如下图所示:

在平面内, θ 的取值有无限种, 从而 J(θ0, θ1) 所表示的函数有无限种可能,我们不可能仅仅用猜测的方法得到所需要的结果。因而,寻求一种求 J(θ0, θ1) 最小值的方法极其重要。

典型的方法就是 梯度下降 法,如下图所示:

假设你现在站在一个山坡上,想要以最快的方法到达山底,通常我们会选择每一次向下迈一步,在多步之后到达山底。然而,有一种情况需要考虑,就是多多个山底的情况,在你选择不同的出发点时,可能会到达不同的山底:

我们所说的山底,就是 J(θ0, θ1) 的一个局部最优解,有时候局部最优解并不能代表全局最优解。庆幸的是,在文中的例子中,我们选择的假设函数 hθ(x) 是一条直线,从而 J(θ0, θ1) 是一个二次函数,它只有一个最优解,利用梯度下降方法可以很好的解决问题。

那么,如何迈每一步,也就是说如何执行梯度下降算法?其执行过程如下:

对于 θj ,先求 J(θ0, θ1) 关于 θj 的偏导,在乘以 α(称为学习率),再用 θj 减去这个值,相当于所有的 θj 都在一定程度上向最小值所表示的点迈进,这在图中就表示 J(θ0, θ1) 向下迈了一步。一直重复这一步骤,直到 θ0和θ1 基本不变即结束。

此处,需要注意以下几点,非常重要:

    1. := 符号表示赋值,= 符号表示求真;
    2. α 表示学习率,决定了梯度下降的步子迈得有多大,α > 0;
    3. 所有的 θ 值必须同步更新。

六、梯度下降 直观展现(Gradient Descent Intuition)

我们知道了梯度下降方法的相关概念,现在进行直观的展现以解释梯度下降的执行过程。梯度下降算法如下:

为了更方便的解释,先让 θ0 := 0,这样 J 简化为关于 θ1 的一元二次函数。当 J(θ1) 关于 θ1 的导数大于0时, θ1 左移, J(θ1) 下降。当 J(θ1) 关于 θ1 的导数小于0时, θ1 右移, J(θ1) 仍然下降。

那么问题来了。 如果迈的步子太小, J(θ1) 每次只降低一点点,什么时候才能到最底部? 如果迈的步子太大, J(θ1) 越过了最小值到达另一边,会出现什么情况?

这两个问题,跟学习率 α 有着极大的关系。如果 α 太小,梯度下降算法将会相当慢。如果 α 太大,梯度下降可能越过最小值,导致不收敛,甚至发散。

让人欣慰的一件事是,在大部分的问题中,随着 θ 逐渐靠近最优解,J(θ) 关于 θ 的偏导的绝对值将会更小,也就是说曲线更加平滑。这意味着 θ 的减少或增加逐渐缓慢,也就意味着,J(θ) 的减小将会逐渐缓慢。因此,我们并不需要在每一步去降低 α 的值。

七、线性回归梯度下降(Gradient Descent for Linear Regression)

现在,了解了梯度下降与线性回归,现在需要将它们进行结合,以求解本文中的房价问题的单变量线性回归模型。

对于线性回归模型,由于可以求 J(θ) 关于 θ 的偏导:

因而,梯度下降方法转化为如下形式(θ0 和 于 θ1 必须同步更新):

而且,由于 J(θ0, θ1) 的形状是一个碗形的,因此梯度下降最后将收敛到最小值:


© 著作权归作者所有

共有 人打赏支持
Gaussic
粉丝 406
博文 28
码字总数 66971
作品 0
宝山
私信 提问
机器学习 (二) 多变量线性回归 Linear Regression with Multiple Variables

文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准。感谢博主Rachel Zhang 的个人笔记,为我做个人...

rgvb178
2016/10/04
0
0
机器学习(四)正则化与过拟合问题 Regularization / The Problem of Overfitting

文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准。感谢博主Rachel Zhang 的个人笔记,为我做个人...

rgvb178
2016/12/23
0
0
机器学习 (三) 逻辑回归 Logistic Regression

文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准。感谢博主Rachel Zhang 的个人笔记,为我做个人...

rgvb178
2016/09/07
0
0
Machine Learning笔记(三) 多变量线性回归

Machine Learning笔记(三) 多变量线性回归 注:本文内容资源来自 Andrew Ng 在 Coursera上的 Machine Learning 课程,在此向 Andrew Ng 致敬。 一、多特征(Multiple Features) 笔记(二)...

Gaussic
2015/09/26
1K
0
斯坦福大学2014机器学习吴恩达课后作业1 Linear regression

编辑日期:2018/01/09 运行环境:Python 3.6.2 代码参考:黄海广 haiguang2000@qq.com 需要的数据文件:ex1data1.txt、ex1data2.txt 视频和文件地址:https://pan.baidu.com/s/1miqvl0G 密码...

Ma_xan
2018/01/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mybatis缓存的装饰器模式

一般在开发生产中,对于新需求的实现,我们一般会有两种方式来处理,一种是直接修改已有组件的代码,另一种是使用继承方式。第一种显然会破坏已有组件的稳定性。第二种,会导致大量子类的出现...

算法之名
昨天
9
0
单元测试

右键方法 Go To --> Test,简便快速生成测试方法。 相关注解 @RunWith(SpringRunner.class) 表示要在测试环境中跑,底层实现是 jUnit测试工具。 @SpringBootTest 表示启动整个 Spring工程 @A...

imbiao
昨天
2
0
欧拉公式

欧拉公式表达式 欧拉公式的几何意 cosθ + j sinθ 是个复数,实数部分也就是实部为 cosθ ,虚数部分也就是虚部为 j sinθ ,对应复平面单位圆上的一个点。 根据欧拉公式和这个点可以用 复指...

sharelocked
昨天
4
0
burpsuite无法抓取https数据包

1.将浏览器和burpsuite的代理都设置好 2.在浏览器地址栏输入: http://burp 3.下载下面的证书,并将证书导入浏览器 cacert.der

Frost729
昨天
2
0
JeeSite4.x 消息管理、消息推送、消息提醒

实现统一的消息推送接口,包含PC消息、短信消息、邮件消息、微信消息等,无需让所有开发者了解消息是怎么发送出去的,只需了解消息发送接口即可。 所有推送消息均通过 MsgPushUtils 工具类发...

ThinkGem
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部