求解线性回归的思路:
一、最大似然估计求解
1、用最大似然估计求解线性回归基于的假设
所有样本的误差ε(i) (1 ≤ i ≤ n) 是独立同分布的,服从均值为 0,方差为某个定值的 б2 的高斯分布。原因:中心极限定理。
1、写出似然函数L(θ)
2、对似然函数取对数,并整理 ln L(θ)
3、求导数
4、解方程-导数为0的点(极值) ∂ ln L(θ) / ∂ θ = 0
2、似然函数
3、最大似然函数求解θ过程
y(i)= θTX (i) + ε(i);实际值=预测值+误差;
即 ε(i) = y(i) - θTX (i) ①
由于误差是服从高斯分布的,高斯分布的概率密度函数:
由于 ε(i) 均值为0,将 ε(i) 代入公式得②:
② 第i个观测值对应的误差的概率密度函数将公式 ε(i) = y(i) - θTX (i) ① 代入概率密度函数②得③:
③ - 左侧的含义:在给定了x和某种参数θ的情况下y的概率密度函数。∵ 联合概率密度函数等于似然函数,L(θ|x) = f(x|θ);
∴ 得出公式④
现在似然函数已经求完了,接下来我们要求L(θ) 是最大值情况下的 θ 的值。
首先考虑公式④的求导,显然不太好求。要取
对数似然该函数是根据极大似然估计推导出来的一个目标函数,我们要使得目标函数值最大,那么就要让式子后面这部分的值最小。
所以现在问题转化为求如下式子最小值时θ的值:
目标函数然后再用去求解这个θ的值。
10 回归算法 - 梯度下降在线性回归中的应用
12 回归算法 - 手写梯度下降代码
梯度下降法
把步骤写出来即可。
梯度下降的步骤学习率都是人为设定的,或者可以理解为不断得尝试。根据迭代速度和结果进行不断得调整。学习率没有一个明确的设定范围,一般可以选择1左右的数字进行尝试,如果迭代的速度还可以,且结果能够获得即可。
更新每一个θ的步骤第一步链式求导,不再赘述。
解释一下最后一步是如何转化的:
= ∂ / ∂θj
= xj
然后再思考以下的问题:
步骤1:初始化θ(随机初始化,可以初始化为0)
(θ1、θ2、... 、θn) = (0,0,...,0)
在第1步进行计算的时候,首先应该更新的是θ1的值:
θ1 = θ1 - ( hθ(x)-y )x1 ;
然后要更新θ2的值:
θ2 = θ2 - ( hθ(x)-y )x2 ;
问题来了:
当θ还没有经过更新的时候,所有(θ1、θ2、... 、θn) = (0,0,...,0)
但当数据更新完θ1后,在要更新θ2时,在
中θ1的值是更新完之前的值0,还是θ1更新完后的值?(完成了最后一次迭代更新后的值)
答案是: 更新完之前的值0。
也就是说,每次在计算更新θ值的时候,我们不会去关心其他θ最终更新后的值是多少。
只有当所有的θ都更新完成后, 中θ1中的θ值才会发生变化。
关于J(θ)的函数要找到极小值点,对应的就是找到最小值点时θ的取值(哪一组θ的向量可以让损失函数最小)。
选择多个初始值点,来对比梯度下降法收敛时,两个极值点是否有区别。
简单举例:当θ=3时,J(θ)=2.5;当θ=5时,J(θ)=3.3; 最后比较后选择2.5是全局最优解。
注意:梯度下降只能求出近似解,而不是精确的解析解。但是这种求法速度快,能无限接近于真实值。
======
前面说的梯度下降算法是针对某一个样本进行的。实际上,我们拥有m个样本,针对每一个样本我们都应该有一个对应的梯度下降。
所以引入可批量梯度下降算法(BGD),这是一个 ,但是计算时的算法。
批量梯度下降算法 BGD如上公式所示,批量梯度算法BGD,是对所有样本的梯度进行了求和的操作。
随机梯度下降算法:不再考虑样本梯度的求和了,而是来一个新的样本,我就更新一次θ。
随机梯度下降算法 SGD如果有m条数据,SGD算法更新了m次。
但是在批量梯度下降算法 BGD中,对于θ我只更新了1次 (全部样本都计算完后求和)
所以在随机梯度下降算法中,迭代更新的速度会更快。
实际生产当中,我们选择随机梯度下降的场景会更多。
毕竟,如果我有上百万条数据,如果一次性全遍历完后再得到θ的值,这样太慢了。
小批量梯度下降法 MBGD BGD、SGD、MBGD的区别
二、最小二乘法求解 (最小平方法)
如果用最大似然估计的思路无法理解上述的目标函数,也可理解为:每个观测值和实际值差的平方和的最小值。
每个观测值和实际值差的平方和的最小值 最小二乘法的参数解析式最小二乘法的使用要求矩阵是;为了防止不可逆或者过拟合的问题存在,可以增加额外数据影响,导致最终的矩阵是可逆的:
其实本质上就是加入了
最小二乘法的参数解析式 + L2正则,Ridge回归案例
网友评论