public class L1Updater extends Updater
Instead of subgradient of the regularizer, the proximal operator for the L1 regularization is applied after the gradient step. This is known to result in better sparsity of the intermediate solution.
The corresponding proximal operator for the L1 norm is the soft-thresholding function. That is, each weight component is shrunk towards 0 by shrinkageVal.
If w > shrinkageVal, set weight component to w-shrinkageVal. If w < -shrinkageVal, set weight component to w+shrinkageVal. If -shrinkageVal < w < shrinkageVal, set weight component to 0.
Equivalently, set weight component to signum(w) * max(0.0, abs(w) - shrinkageVal)
|Constructor and Description|
|Modifier and Type||Method and Description|
Compute an updated value for weights given the gradient, stepSize, iteration number and regularization parameter.
public scala.Tuple2<Vector,Object> compute(Vector weightsOld, Vector gradient, double stepSize, int iter, double regParam)
weightsOld- - Column matrix of size dx1 where d is the number of features.
gradient- - Column matrix of size dx1 where d is the number of features.
stepSize- - step size across iterations
iter- - Iteration number
regParam- - Regularization parameter