线性回归算法中特定的符号表示:
m:表示训练样本的数目;
x:表示输入的特征;
y:表示输出变量或目标变量;
(x,y):表示一个训练样本;
(x(i),y(i)):表示第i个训练样本;
h:表示假设函数,表示从x到y的函数映射;
单变量的线性回归模型:hθ(x)=θ0+θ1x;
其中,θ0,θ1为模型参数;
线性回归算法的目标为选择θ0,θ1,使hθ(x)最接近样本对应的y值,即寻找θ0θ1,使
12m∑i=1m(hθ(x(i))−y(i))2最小。
12m∑i=1m(hθ(x(i))−y(i))2表示平均误差,其中,12是为了方便后续梯度下降算法的计算。
引入代价函数的概念:
J(θ0,θ1)=12m∑i=1m(hθ(x(i))−y(i))2
代价函数也称平方误差函数或平方误差代价函数,为了评价
hθ(x)的准确性,算法的目的是让
J(θ0,θ1)尽可能小。
平方误差代价函数是解决回归问题最常用的手段。
算法简化:
令θ0=0,则hθ(x)=θ1x,模型参数只剩下θ1,代价函数变为
J(θ1)=12m∑i=1m(hθ(x(i))−y(i))2
算法目标变为求
minθ1J(θ1)
带入训练集样本数据,发现
J(θ1)是一个下凸曲线,找到令
J(θ1)取值最小的
θ1。
J(θ1,θ0)同理,可用轮廓图表示:

梯度下降算法:可以使代价函数最小化。
算法定义:
repeat until convergence{
θj:=θj−α∂∂θjJ(θ0,θ1)(for j=0 and j=1)
}
:=为赋值运算符;
α为一个数字,称为学习速率,控制梯度下降步幅。
θ0,θ1正确的更新方法:
temp0:=θ0−α∂∂θ0J(θ0,θ1)
temp1:=θ1−α∂∂θ1J(θ0,θ1)
θ0:=temp0
θ1:=temp1
θ0,θ1要同时更新。
通常将θ0,θ1均初始化为0。
注:∂∂x为偏导数符号,ddx为导数符号
梯度下降算法中,若α的值取得太小,梯度下降过于缓慢;若α的值取得太大,可能导致无法收敛,甚至发散。
在梯度下降法中,当我们接近局部最低点时,梯度下降法会自动采取更小幅度,因为当接近局部最低点时,∂∂θjJ(θ0,θ1)导数值自动变得越来越小。
线性回归算法的梯度下降:
∂∂θjJ(θ0,θ1)=∂∂θj12m∑i=1m(hθ(x(i))−y(i))2=∂∂θj12m∑i=1m(θ0+θ1x(i)−y(i))2
j=0时:∂∂θ0J(θ0,θ1)=1m∑i=1m(hθ(x(i))−y(i))=1m∑i=1m(θ0+θ1x(i)−y(i))
j=1时:∂∂θ1J(θ0,θ1)=1m∑i=1m(hθ(x(i))−y(i))x(i)=1m∑i=1m(θ0+θ1x(i)−y(i))x(i)
即:
repeat until convergence{
θ0:θ1:==θ0−α1m∑i=1m(hθ(x(i))−y(i))θ1−α1m∑i=1m(hθ(x(i))−y(i))x(i)θ0,θ1同时更新
}
批量梯度下降法(Batch Gradient Descent):梯度下降法最常用的形式,具体做法是在更新参数时使用所有的样本来进行更新。