文章目录
房价预测案例
继续上一章节有监督学习算法的房价预测案例。
案例描述:有包含房子的大小和价格信息的真实数据(散点图)如下。我们要学习一个房价预测算法,在给定房屋大小后,可以相对准确估计其出售价格。
训练集及相关描述
m
:
m:
m: 训练集样本数
x
:
x:
x: 输入变量/特征(大部分时间是向量
x
⃗
\vec{x}
x)
y
:
y:
y: 输出变量/目标变量
其中,
(
x
i
,
y
i
)
(x^{i},y^{i})
(xi,yi)表示第
i
i
i个训练样本,
i
i
i是索引,代表训练集中第
i
i
i行。
例如:
x
1
=
2104
,
x
2
=
1416
,
y
1
=
460
x^{1}=2104, x^{2}=1416, y^{1}=460
x1=2104,x2=1416,y1=460
有监督学习算法的工作原理
我们向学习算法提供训练集,学习算法会输出一个函数
h
h
h(hypothesis假设函数),函数
h
h
h将房子的大小
x
x
x作为输入变量,输出房价的预测值
h
(
x
)
h(x)
h(x)。
How do we represent h?
先从最简单的入手:线性函数
此时,假设函数为:
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_θ(x)=θ_0+θ_1 x
hθ(x)=θ0+θ1x其中,
θ
0
,
θ
1
θ_0, θ_1
θ0,θ1 是模型参数(parameter),如下图,选择不同的参数,我们可以得到不同的模型。
我们的目标是,找到合适的
θ
0
,
θ
1
θ_0, θ_1
θ0,θ1值,使得假设函数表示的直线尽可能好的跟训练集数据点拟合。
也就是说,我们要选择合适的
θ
0
,
θ
1
θ_0, θ_1
θ0,θ1,使得预测值
h
(
x
)
h(x)
h(x)尽可能的接近实际值
y
y
y。为了度量“接近”,引出了代价函数。
代价函数
回归常用平方误差代价函数(当然也可以使用其他的代价函数)
目标函数为
min
θ
0
,
θ
1
1
2
m
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
2
\min_{θ_0, θ_1} \frac{1}{2m} \sum_{i=1}^{m}(h_θ(x^i)-y^i)^2
θ0,θ1min2m1i=1∑m(hθ(xi)−yi)2我们要找到合适的
θ
0
,
θ
1
θ_0, θ_1
θ0,θ1,满足上述最小化要求。
定义代价函数
J
(
θ
0
,
θ
1
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
2
J(θ_0, θ_1) = \frac{1}{2m} \sum_{i=1}^{m}(h_θ(x^i)-y^i)^2
J(θ0,θ1)=2m1i=1∑m(hθ(xi)−yi)2因此,目标函数可以简写成
min
θ
0
,
θ
1
J
(
θ
0
,
θ
1
)
\min_{θ_0, θ_1} J(θ_0, θ_1)
θ0,θ1minJ(θ0,θ1)
代价函数实例(一个参数的情况)
为便于可视化代价函数,暂且将假设函数简化为图右所示,其中
θ
0
=
0
θ_0=0
θ0=0:
假设真实的函数关系为
y
=
x
(
即
θ
1
=
1
)
y=x(即θ_1=1)
y=x(即θ1=1) 尝试不同的
θ
1
θ_1
θ1绘制代价函数
J
(
θ
1
)
J(θ_1)
J(θ1)的图像。
- θ 1 = 1 θ_1=1 θ1=1时,进行相关计算。
-
θ
1
=
0.5
θ_1=0.5
θ1=0.5时,进行相关计算。
-
θ
1
=
0
θ_1=0
θ1=0时,进行相关计算。
…重复上述步骤,五点法作图,得到 J ( θ 1 ) J(θ_1) J(θ1)的图像,如下图所示:
学习算法的优化目标,就是选取合适的 θ 1 θ_1 θ1,使 J ( θ 1 ) J(θ_1) J(θ1)达到最小(显然此处应该选择 θ 1 = 1 θ_1=1 θ1=1)
代价函数实例(两个参数的情况)
尝试绘制代价函数
J
(
θ
1
)
J(θ_1)
J(θ1)的图像。(省略过程)
这是一个3D曲面图,平面两轴分别为
θ
0
,
θ
1
θ_0, θ_1
θ0,θ1,竖轴的高度就是
J
(
θ
0
,
θ
1
)
J(θ_0, θ_1)
J(θ0,θ1)的值。
方便起见,我们使用等高线图(同心椭圆)替代曲面图,如下图所示。
在同颜色线上的点,虽然
θ
0
,
θ
1
θ_0, θ_1
θ0,θ1的取值各不相同,但
J
(
θ
0
,
θ
1
)
J(θ_0, θ_1)
J(θ0,θ1)值相同。
同心椭圆的中心点,就是
J
(
θ
0
,
θ
1
)
J(θ_0, θ_1)
J(θ0,θ1)取最小值的位置。
假设函数及对应代价函数示例:
通过以上图像,我们可以更好地理解代价函数
J
J
J的意义,如何对应不同的假设函数,以及越接近代价函数最小值的点对应着更好的假设函数。
含更多参数的情况无法进行可视化。
梯度下降法—最小化代价函数
如何找到最小化的代价函数呢?梯度下降是常用的方法之一。
问题描述及梯度下降思路
工作原理可视化
特点:起始点偏移可能导致得到一个完全不同的局部最优解。
数学原理
其中
:
=
:=
:=为赋值运算符;
α
α
α为学习率(学习速率),指定步长;
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
\frac{\partial }{\partial θ_j}J(θ_0, θ_1)
∂θj∂J(θ0,θ1)为导数项,指定方向;保证
θ
0
,
θ
1
θ_0, θ_1
θ0,θ1同步更新(图片左下角)。
导数项的意义
指定移动的方向。导数(梯度)方向是函数值上升最快方向,因此其反方向就是函数值下降之最快方向。
学习速率的意义
指定步长。
如果学习速率过小,梯度下降的很慢,很多步才能到达全局最低点。
如果学习速率过大,梯度下降可能越过最低点,甚至可能无法收敛或者发散。
保持学习率α不变,梯度下降法可以收敛到局部最低点的原因
当我们接近局部最小点时,梯度下降法会自动采用更小的幅度,因为根据定义,在局部最低时导数等于零,所以当我们接近局部最低时,导数项的值会自动变得越来越小,所以梯度下降自动采取较小的幅度。
梯度下降法应用于线性回归模型
J
(
θ
0
,
θ
1
)
J(θ_0, θ_1)
J(θ0,θ1)分别对
θ
0
,
θ
1
θ_0, θ_1
θ0,θ1求偏导:
线性回归模型的代价函数为凸函数,没有局部最优解,有唯一全局最优解。
Batch指每次计算偏导数,都用到全部的训练集数据。