Coursera机器学习 Week1 笔记

昨天刚刚放假。准备这个暑假,把这个课程重新看一遍,预计10天时间。

编程作业放到了github上:coursera_machine_learning


1. Introduction

1.1 Supervised Learning

已知输入 x 以及其对应的标签y,求解 f:xy

  • 回归 regression:输出的结果 y 是一个连续的变量 y=
  • 分类 classification:输出的结果 y 是一个离散的变量 y={1,2,3...,k}

1.2 Unsupervised Learning

已知输入 x ,并不知道其所属的类别标签y,求解将 x 们划分到不同的聚类中,这些聚类具体是什么类别并不知道。

  • 分类 classification:分类到各不知名的聚类中

1.3 Semi-supervised Learning

输入的x中,一部分有对应的标签 y ,大部分没有。通过这一部分有标签的去推测各不知名的聚类是什么类别。

1.4 一张图弄懂

learning type
(图片来源:台湾大学林轩田的《机器学习基石》3-2)


2. Linear Regression with One Variable

2.1 Model Representation

例子:房价预测 - 给出房子的各种特征,如面积、位置等,以及该房子对应的价格。学习一个模型,当输出其他房子的特征时,能够预测出新房子的价格。
明显这是一个回归模型。

数据说明:

(x(i), y(i) ) 训练集中的第 i 条数据
x 输入数据 y 输出数据,数据x的标签(真实输出结果) x(i)j i 条数据的第j个特征 m 训练集中数据的个数
h(x) 学习得到的模型 ŷ  模型对输入数据 x 的预测结果

对于其中的一条数据(x(i), y(i)) 来说,假设只有面积 x(i)1 一个特征,则回归模型可以假设成:

h(x(i))=θ0+θ1x(i)1

即这个模型对输入数据 x(i) 的预测结果 y(i)^ θ0+θ1x(i)1

由于一开始我们并不知道 θ 是多少,而这个就是模型需要通过数据学习得到的,和人学习一样,模型需要知道自己究竟哪里错了才能够进一步学习。于是提出模型的错误公式,loss/cost function来定义这个错误。

2.2 Cost Function

最简单的错误评估,就是将预测出来的结果同真实的结果做一个平方差:

Ji(θ)=(y(i)^y(i))2=(h(x(i)))2

因为有 m 条数据,所以将这些个平方差求和之后再平均一下,作为整个训练集的error:

J(θ)=1mi=1m(y(i)^y(i))2

再者,为了接下来模型根据这个error进行学习的以后更加方便,再除以2(因为平方项在求导的时候可以与这个分母2抵消):

J(θ)=12mi=1m(y(i)^y(i))2

而最终的目的就是让这个error最小,只要error最小了,那就说明这个 h(x) 预测出来的结果和真实的结果相差不大了,那我们的模型就训练完毕了。

学习目标:

θ0,θ1=minimizeθ0,θ112mi=1m(y(i)^y(i))2

2.3 Cost Function - intuition

接下来通过几个例子来了解一下cost function是怎么工作的, θ 又该怎么取值。

下面的图中,红色叉叉表示训练数据,黑色直线代表 h(x)

首先为了方便起见,假设只有一个 θ1 ,即 h(x(i))=θ1x(i)1 。(图中为书写方便,将 x(i)1 直接写作 x 了)

  1. θ1=1的时候,计算得到 J(θ1)=0

    theta1

    1. θ1=0.5 的时候,计算得到 J(θ1)=0.58

    theta2

    1. θ1=0 的时候,计算得到 J(θ1)2.3

    theta3
    4. 以此类推,再画出一些点,然后连接起来

    从上图中看到, J(θ) 最小的点,就是 θ1=1 的点,所以,模型训练的结果就是 θ1=1 h(x(i))=1×x(i)1

    接下来,再进一步看 θ0 θ1 共存的情况,类比上面,做出来的三维图如下:

    theta5

    cost function取最小值的时候就是凹陷处,数学意义上梯度为0的地方。

    2.4 Gradient Descent

    使用gradient descent来minimize J(θ)

    一开始随便选择 θ0 θ1 ,然后慢慢更新直至 J(θ) 到达最小值。

    更新过程可视化如下,从上面的点一直沿着一定的方向下降到下面的点:

    gradient1

    这里的方向就是高数中的“最快梯度下降法”中采取的“负梯度方向”即 θjJ(θ) ,在这个方向所走的步长就是 α ,所以 θj 的更新过程如下:

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

    特别注意更新过程中 θ 的更新得是同步的,即更新 θ0 θ1 J(θ) 得是同一个,详细过程如下图:

    gradient2

    下面来看看这个步长 α 的取值问题:

    1. 如果 α 取值太小,那么下降到最小值的速度会比较慢
    2. 如果 α 取值太大,可能一步就跳过了最小值点……

    另外,如果这个 J(θ) 不止一个最小值点,那么当落入局部最小值(local minimun),就跳不出来了,因为梯度已经变成了0,不再更新 θ 了。

    当不断靠近最小值的过程中,每次更新的速度也会下降,因为梯度越来越小了,如下图所示:

    gradient4

    最后把gradient descent应用到linear regression with one variable问题上:

    gradient5

    梯度求导如下;

    gradient6

    对于有一些 J(θ) ,可能具有多个“局部最优解”,如下图:

    gradient7

    但是对于Linear Regression来说, J(θ) 是“碗形”的,术语称为“convex function”,如下图:

    gradient8

    Batch Gradient Descent
    使用训练集中所有数据的error的平均值作为一次更新,即:

    J(θ)=12mi=1m(y(i)^y(i))2

    Stochastic Gradient Descent
    使用训练集中的一个数据的error就更新一次,即:

    J(θ)=(y(i)^y(i))2

    Mini-Batch Gradient Descent
    使用训练集中部分数据的error的平均值作为一次更新,即:

    J(θ)=12ki=1k(y(i)^y(i))2

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值