Coursera机器学习 Week1 笔记
昨天刚刚放假。准备这个暑假,把这个课程重新看一遍,预计10天时间。
编程作业放到了github上:coursera_machine_learning
1. Introduction
1.1 Supervised Learning
已知输入
- 回归 regression:输出的结果
y 是一个连续的变量y=ℝ - 分类 classification:输出的结果
y 是一个离散的变量y={1,2,3...,k}
1.2 Unsupervised Learning
已知输入
- 分类 classification:分类到各不知名的聚类中
1.3 Semi-supervised Learning
输入的
1.4 一张图弄懂
(图片来源:台湾大学林轩田的《机器学习基石》3-2)
2. Linear Regression with One Variable
2.1 Model Representation
例子:房价预测 - 给出房子的各种特征,如面积、位置等,以及该房子对应的价格。学习一个模型,当输出其他房子的特征时,能够预测出新房子的价格。
明显这是一个回归模型。
数据说明:
( |
训练集中的第 |
---|---|
输入数据 | |
输出数据,数据 |
|
第 |
|
训练集中数据的个数 | |
学习得到的模型 | |
模型对输入数据 |
对于其中的一条数据
即这个模型对输入数据
由于一开始我们并不知道
2.2 Cost Function
最简单的错误评估,就是将预测出来的结果同真实的结果做一个平方差:
因为有
再者,为了接下来模型根据这个error进行学习的以后更加方便,再除以2(因为平方项在求导的时候可以与这个分母2抵消):
而最终的目的就是让这个error最小,只要error最小了,那就说明这个
学习目标:
2.3 Cost Function - intuition
接下来通过几个例子来了解一下cost function是怎么工作的,
下面的图中,红色叉叉表示训练数据,黑色直线代表
首先为了方便起见,假设只有一个
- 当
θ1=1 的时候,计算得到J(θ1)=0
- 当
θ1=0.5 的时候,计算得到J(θ1)=0.58
- 当
θ1=0 的时候,计算得到J(θ1)≈2.3
4. 以此类推,再画出一些点,然后连接起来
从上图中看到,
接下来,再进一步看
cost function取最小值的时候就是凹陷处,数学意义上梯度为0的地方。
2.4 Gradient Descent
使用gradient descent来minimize
一开始随便选择
更新过程可视化如下,从上面的点一直沿着一定的方向下降到下面的点:
这里的方向就是高数中的“最快梯度下降法”中采取的“负梯度方向”即
特别注意更新过程中
下面来看看这个步长
- 如果
α 取值太小,那么下降到最小值的速度会比较慢 - 如果
α 取值太大,可能一步就跳过了最小值点……
另外,如果这个
当不断靠近最小值的过程中,每次更新的速度也会下降,因为梯度越来越小了,如下图所示:
最后把gradient descent应用到linear regression with one variable问题上:
梯度求导如下;
对于有一些
但是对于Linear Regression来说,
Batch Gradient Descent
使用训练集中所有数据的error的平均值作为一次更新,即:
Stochastic Gradient Descent
使用训练集中的一个数据的error就更新一次,即:
Mini-Batch Gradient Descent
使用训练集中部分数据的error的平均值作为一次更新,即: