我已经在Python中实现了梯度下降,以使用MSE作为损失函数来执行正则多项式回归,但是对线性数据进行了验证(证明正则化的作用)。
所以我的模型采用以下形式:
在我的损失函数中,R代表正则项:
让我们以L2范数为正则化,损失函数w.r.t的偏导数。 wi如下:
最后,使用恒定的学习率更新系数wi:
问题是我无法收敛,因为正则化惩罚多项式的2级(w2)和1级(w1)的系数,而在我的情况下我希望它惩罚因为数据是线性的,所以只有前者。
由于Scikit-learn中实现的LassoCV和RidgeCV都能做到这一点,所以有可能实现这一目标吗?还是上面给出的方程式有误?
我怀疑恒定的学习率(mu)也会有问题,使它具有自适应性的简单公式是什么?
答案 0 :(得分:0)
我最终使用了this tutorial中所述的Coordinate descent
,并在其中添加了正则项(L1或L2)。经过相对大量的迭代,w2几乎为零(因此,预测模型是线性的)。