当前glmnet算法采用的收敛判定准则是什么?
glmnet当前实际收敛判定准则
你之前复现的是早期版本文档提及的单特征系数更新量判定逻辑,该规则已经在后续版本迭代中被替换,这是你复现的迭代次数和官方运行结果存在偏差的核心原因。
截至glmnet v4.x稳定版本,官方采用的收敛判定规则统一基于目标函数偏差的相对变化,具体逻辑如下:
- 每完成一轮全特征坐标下降迭代(即所有非冻结特征全部更新一次)后,分别计算当前轮次和上一轮次的目标偏差值(deviance,等于负对数似然的2倍,高斯场景下对应残差平方和加正则项的总损失)
- 代入判定公式判断是否满足收敛条件:
其中abs(current_dev - last_dev) / (abs(last_dev) + 0.1) < epseps为用户自定义的收敛阈值,默认取值为1e-4;分母添加0.1是为了避免上一轮偏差接近0时出现数值除零的不稳定问题。 - 广义线性模型场景的判定逻辑和高斯场景完全一致,仅偏差的计算适配对应分布的似然函数即可。
内容的提问来源于stack exchange,提问作者mbeauch
相关产品推荐
相关产品推荐

