LASSO
FTRL
这种写法有点意思
参数 σ \sigma σ
sigma = ((n + grad ** 2).sqrt() - n.sqrt()) / group["alpha"]
σ
\sigma
σ是梯度下降的学习率的倒数
,对于每个参数都有一个学习率。
可以这么理解:梯度越大,学习率越小
思考:与AdaGrad的区别与联系
【adagrad原理】Adagrad是解决不同参数应该使用不同的更新速率的问题。Adagrad自适应地为各个参数分配不同学习率的算法。其公式如下:
z.add_(grad - sigma * p.data)
n.add_(grad ** 2)
p.data = (
-1
/ (group["l2"] + (group["beta"] + n.sqrt()) / group["alpha"])
* (z - group["l1"] * z.sign())
)
p.data[z.abs() < group["l1"]] = 0
鸢尾花玩具数据集上:
FM + SGD:
FM + FTRL:
LR + FTRL:
LR + SGD:
公司hERG数据集上:
在FTRL筛选结果上再做FTRL的效果更好