提供训练集,学习算法的任务是输出一个函数,通常用 h 表示,h 表示假设函数 hypothesis
假设函数的作用是给定输入变量 x ,输出相应的预测值 y ;h 是一个引导 x 得到 y 的函数
1.平方误差代价函数
在线性回归中,我们要解决的是一个最小化问题,我们希望 h(x) 和 y 之间的差异要小
( h ( x ) i − y i ) 2 (h(x)^i - y^i)^2 (h(x)i−yi)2
对所有的训练样本进行求和(m代表训练集的样本数)
∑ i = 1 m ( h ( x ) i − y i ) 2 sum^{m}_{i = 1}{(h(x)^i - y^i)^2} i=1∑m(h(x)i−yi)2
为了使公式更直白,我们计算
1 2 m ∑ i = 1 m ( h ( x ) i − y i ) 2 frac{1}{2m}sum^{m}_{i = 1}{(h(x)^i - y^i)^2} 2m1i=1∑m(h(x)i−yi)2
因此,代价函数记为
J ( θ 1 , θ 2 ) = 1 2 m ∑ i = 1 m ( h ( x ) i − y i ) 2 J(theta1,theta2) = frac{1}{2m}sum^{m}_{i = 1}{(h(x)^i - y^i)^2} J(θ1,θ2)=2m1i=1∑m(h(x)i−yi)2
我们的优化目标是 m i n i m i z e θ 1 , θ 2 J ( θ 1 , θ 2 ) minimize_{theta1,theta2}J(theta1,theta2) minimizeθ1,θ2J(θ1,θ2)
2.令参数2=0
θ = 1 theta = 1 θ=1时, J ( θ ) = J ( 1 ) = 0 J(theta) = J(1) = 0 J(θ)=J(1)=0
θ = 0.5 theta = 0.5 θ=0.5时, J ( θ ) = J ( 0.5 ) = 0.58 J(theta) = J(0.5) = 0.58 J(θ)=J(0.5)=0.58
θ = 0 theta = 0 θ=0时, J ( θ ) = J ( 0 ) = 2.3 J(theta) = J(0) = 2.3 J(θ)=J(0)=2.3
经过一系列数值的计算,我们最终会得到函数 J ( θ ) J(theta) J(θ)的形状
3.使用两个参数
代价函数会变为三维曲线
用等高线来表示,每一条等高线上的点对应的 J ( θ 0 , θ 1 ) J(theta0,theta1) J(θ0,θ1)都相等,最小值在中心原点处,距离原点越近,拟合越好
梯度下降是很常用的算法,它不仅被用在线性回归上,还被广泛用于机器学习的众多领域
1.思路:
给定 θ 0 theta_0 θ0和 θ 1 theta_1 θ1的初始值,通常将 θ 0 theta_0 θ0和 θ 1 theta_1 θ1均设为0我们在梯度下降算法中要做的是不停地一点点改变 θ 0 theta_0 θ0和 θ 1 theta_1 θ1,来使 J ( θ 0 , θ 1 ) J(theta_0,theta_1) J(θ0,θ1)变小直到我们找到 J J J的最小值或者局部最小值
2.特点: 从不同的起点出发,将有可能获得不同的局部最优解
3.数学定义
repeat until convergence(重复计算直至收敛){
θ j : = θ j − α ∂ ∂ θ j J ( θ 0 , θ 1 ) / / f o r j = 0 a n d j = 1 , 同 时 更 新 θ 0 和 θ 1 theta_j := theta_j - alphafrac{partial}{partialtheta_j}J(theta_0,theta_1) // for j = 0 and j = 1,同时更新theta_0和theta_1 θj:=θj−α∂θj∂J(θ0,θ1)//forj=0andj=1,同时更新θ0和θ1
}
4.线性回归的梯度下降
上式利用了简单的求导公式
该算法也叫做Batch梯度下降算法:每一步梯度下降,我们都遍历了整个训练集的样本,所以在梯度下降中,当计算偏导数时,我们计算总和。在每一个单独的梯度下降我们最终计算 m 个训练样本的总和,