相关文章
spark mllib源码分析之L-BFGS(一)
spark mllib源码分析之L-BFGS(二)
线搜索
spark mllib源码分析之逻辑回归弹性网络ElasticNet(一)
spark在Elastic Net中当使用L1正则化时,optimizer使用OWLQN,我们结合理论介绍其在spark中的实现。
1. OWLQN算法
结合论文《Scalable training of L1-regularized log-linear models》中的内容,简单介绍OWLQN算法,以与spark(breeze)中的实现相对照,首先定义目标函数
f(x)=ℓ(x)+C∥x∥1
其中C是大于0的常数。
定义 π 函数,对于向量 x⃗ 与 y⃗ ,有
π(x;y)={
xi0sign(xi)==sign(yi)otherwise
也就是说对于任一维度,符号相同取 xi ,否则取0,这个函数可理解为向量 x⃗ 必须与 y⃗ 同象限,否则就在坐标轴上
1.1. 伪梯度
因为L1不可导,因此这里需要重新定义梯度替代,首先定义目标函数的左右导数
∂±if(x)=∂∂xil(x)+{
Csign(xi)±C