admmSolverGroupSLOPE: Alternating direction method of multipliers

View source: R/optimization.R

admmSolverGroupSLOPER Documentation

Alternating direction method of multipliers

Description

Compute the coefficient estimates for the Group SLOPE problem.

Usage

admmSolverGroupSLOPE(
  y,
  A,
  group,
  wt,
  lambda,
  rho = NULL,
  max.iter = 10000,
  verbose = FALSE,
  absolute.tol = 1e-04,
  relative.tol = 1e-04,
  z.init = NULL,
  u.init = NULL,
  ...
)

Arguments

y

the response vector

A

the model matrix

group

A vector describing the grouping structure. It should contain a group id for each predictor variable.

wt

A vector of weights (per coefficient)

lambda

A decreasing sequence of regularization parameters \lambda

rho

Penalty parameter in the augmented Lagrangian (see Boyd et al., 2011)

max.iter

Maximal number of iterations to carry out

verbose

A logical specifying whether to print output or not

absolute.tol

The absolute tolerance used in the stopping criteria for the primal and dual feasibility conditions (see Boyd et al., 2011, Sec. 3.3.1)

relative.tol

The relative tolerance used in the stopping criteria for the primal and dual feasibility conditions (see Boyd et al., 2011, Sec. 3.3.1)

z.init

An optional initial value for the iterative algorithm

u.init

An optional initial value for the iterative algorithm

...

Options passed to prox_sorted_L1

Details

admmSolverGroupSLOPE computes the coefficient estimates for the Group SLOPE model. The employed optimization algorithm is the alternating direction method of multipliers (ADMM).

Value

A list with the entries:

x

Solution (n-by-1 matrix)

status

Convergence status: 1 if optimal, 2 if iteration limit reached

iter

Number of iterations of the ADMM method

References

S. Boyd, N. Parikh, E. Chu, B. Peleato, and J. Eckstein (2011) Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers. Foundations and Trends in Machine Learning 3 (1).

Examples

set.seed(1)
A   <- matrix(runif(100, 0, 1), 10, 10)
grp <- c(0, 0, 1, 1, 2, 2, 2, 2, 2, 3)
wt  <- c(2, 2, 2, 2, 5, 5, 5, 5, 5, 1)
x   <- c(0, 0, 5, 1, 0, 0, 0, 1, 0, 3)
y   <- A %*% x
lam <- 0.1 * (10:7)
result <- admmSolverGroupSLOPE(y = y, A = A, group = grp, wt = wt,
                               lambda=lam, rho = 1, verbose = FALSE)
result$x
#           [,1]
#  [1,] 0.000000
#  [2,] 0.000000
#  [3,] 3.856002
#  [4,] 2.080742
#  [5,] 0.000000
#  [6,] 0.000000
#  [7,] 0.000000
#  [8,] 0.000000
#  [9,] 0.000000
# [10,] 3.512829


grpSLOPE documentation built on May 31, 2023, 5:27 p.m.