具有拉普拉斯误差的线性回归

机器算法验证 回归 拉普拉斯分布
2022-03-03 04:33:42

考虑一个线性回归模型: 其中,即,均值的拉普拉斯分布尺度参数,都是相互独立的。考虑未知参数的最大似然估计: 其中

yi=xiβ+εi,i=1,,n,
εiL(0,b)0bβ
logp(yX,β,b)=nlog(2b)+1bi=1n|xiβyi|
β^ML=argminβRmi=1n|xiβyi|

如何在这个模型中找到残差分布yXβ^ML

2个回答

残差(实际上称为误差)被假定为随机分布的双指数分布(拉普拉斯分布)。如果您要拟合此 x 和 y 数据点,请以数字方式进行。您首先使用上面发布的公式计算这些点的 beta-hat_ML。这将确定一条通过这些点的线。然后从该 x 值处的线的 y 值中减去每个点的 y 值。这是该点的残差。所有点的残差可用于构建直方图,该直方图将为您提供残差分布。

Yang (2014)有一篇很好的数学文章

——李

我认为这相当于稳健回归。在稳健回归中,您最小化 1 范数,而不是 2 范数 - 并尝试找到正如你所写。argminβRmi=1n|xiβyi|

解决它的一种方法是使用代理来近似 1-范数,例如 Huber 损失:即用于一些小的平滑参数所以现在损失是 并且你可以使用类似 Gradient-Descent 的东西(现在可微)函数。hη(x)=x2+ηηi=1n(xiβyi)2+η

这是我为 MATLAB 中的硬件练习编写的一些代码:

fun_g = @(u) sum( sqrt (u.^ 2 + eta^ 2 ));
fun_f = @(w) fun_g(X*w-z);
grad_g = @(u) u.*( 1. /( sqrt (u.^ 2 + eta^ 2 )));
grad_f = @(w) X'*grad_g(X*w-z);
grad = grad_f(w);
while (norm(grad) > epsilon)
    w = w - t*grad;
    fun_val = fun_f(w);
    grad = grad_f(w);
    fprintf( 'iter_number = %3d norm_grad = %2.6f fun_val = %2.6f\n' ,iter,norm(grad),fun_val);
end