线性回归模型(Linear Regression Model)
包括线性假设(linear hypothesis)和平方差代价函数(squared error cost function)
字母的含义:
M = Number of training examples 训练样本的数量
x = "input"variable / features 输入变量/特征
y = "output"variable / "target"variable 输出变量/目标变量
( x,y ) 表示一个训练样本(training example)
( x(i), y(i) ) 表示第i个训练样本(这个上标i是训练集的一个索引)
大致流程:
训练集(Training Set)
|
学习算法(Learning Algorithm)
|
x —> 假设函数: h(hypothesis)—> y
h是一个引导x得到y的函数
先从线性函数(linear function)开始,因为它是学习的基础。
这种特定的模型被称为线性回归(linear regression)
一元线性回归(单变量x的函数)
hθ(x) = θ0 + θ1 * x
或者可以叫做:单变量线性回归(univariate linear regression)
(hθ(x)也可以写成h(x) ; θ0 和θ1 称为模型参数)
----->
通过一个训练集得出θ0 和θ1这两个参数的值,
来让假设函数表示的直线尽量地与这些数据点很好的拟合。
如何得到 θ0和θ1?
这两个值要能使h(x)(输入x时我们的预测值)最接近该样本对应的y值。
要尽量选择参数值,使得在训练集中的x值,我们能准确地预测y的值。
在线性回归中,我们要解决的是一个最小化问题。
要h(x)和y之间的差距要小,也可以要两者之间的差的平方最小。
现在要做的是对所有训练样本(i=1到i=M的样本)进行一个求和。
所以我们要让:
将第i号对应的预测结果(h(x))减去第i号的实际结果所得的差的平方相加得到的总和
这个值尽量小。
代价函数(cost function)也被称作平方误差代价函数(squared error cost function)
代价函数:
(有点像方差公式) (这里的h(x)就是hθ(x) = θ0 + θ1 x )
因为这个式子里x和y都是样本用例,是固定不变的,
所以在相同用例下J随θ0 ,θ1 的值变化而变化。
最终目标:要找到θ0 和θ1 的值来使这个J最小
这个函数是解决回归问题最常用的手段(还有其他代价函数也可以)。
当θ0=0时,θ1 和J(θ1 )的函数是一条开口朝上的抛物线,最低点就是j的最小值。
当j在最低点时,此时θ1 就是答案了。
当θ0 ,θ1均不为0时,θ0 ,θ1和J(θ0 ,θ1)的图像类似碗的一个三维曲面。
如图:
也可以用等高线图(contour plots),或称为等高图像(contour figures)来描述代价函数J。
如图:
左边的是h(x)的图像,右边是等高线图
等高线图同一个圈上的点具有相同的J(θ0 ,θ1)值。
梯度下降(gradient descent)
可以用梯度下降算法最小化任意函数J。
做法(有点像一个从山的某一处开始下山的过程):
1、给定θ0 和θ1初始值(通常将θ0 和θ1都设为0)。
2、不停地一点点改变θ0 和θ1,来使J(θ0 ,θ1 )变小,
直到找到J的最小值。
反复做一下这动作,直到收敛{
∂
θj := θj - α ------- J(θ0 ,θ1 ) (j只能为0或1)
∂θj
}
注意:
(1):= 表示赋值,是一个赋值运算符(assignment operator)
(如果是 = 的话,就是一个真假判定)
(2)这里的α是一个被称为学习率(learning rate)的数字,
用来控制梯度下降时,我们迈出多大的步子。
如果α值很大,梯度下降就很迅速,我们会用大步伐下山;反之亦然。
(3)α后面那一大块,是一个导数项(derivative term)。
是图像上那一点的切线的斜率。
当越来越接近最低点时,导数项会越来越趋向于0。
(4)需要同时更新 θ0 和θ1 。(同步更新 simultaneous updates)
∂
temp0 = θ0 - α ------- J(θ0 ,θ1 )
∂θ0
∂
temp1 = θ1 - α ------- J(θ0 ,θ1 )
∂θ1
θ0 := temp0
θ1 := temp1
在梯度下降法中,当我们接近局部最低点时,梯度下降法会自动采取更小的幅度,
这是因为当我们接近局部最低点时,根据定义,在局部最低是导数等于零。
所以没必要另外减小α。
将梯度下降和代价函数合起来就是回归的梯度下降法(Gradient descent algorithm)
(也可以称为Batch梯度下降法)
反复做一下这动作,直到收敛{
1 M
θ0 :=θ0 - α--- * ∑(h(x(i))-y(i))
M i=1
1 M
θ1 :=θ1 - α--- * ∑(h(x(i))-y(i)) * x(i)
M i=1
}