我已经使用IRLS 算法编写了逻辑回归。我想应用LASSO 惩罚以自动选择正确的功能。在每次迭代中,解决以下问题:
让是一个非负实数。我没有像The Elements of 中建议的那样惩罚拦截。统计学习。同样适用于已经为零的系数。否则,我从右侧减去一个术语:
但是,我不确定 IRLS 算法的修改。这是正确的做法吗?
编辑:虽然我对此没有信心,但这是我最终想出的解决方案之一。有趣的是这个解决方案对应于我现在对 LASSO 的理解。每次迭代确实有两个步骤,而不仅仅是一个:
- 第一步与之前相同:我们对算法进行迭代(好像在上面的梯度公式中),
- 第二步是新的:我们对每个组件应用一个软阈值(除了组件,对应于向量的截距)第一步获得。这称为迭代软阈值算法。