admmSolverGroupSLOPE {grpSLOPE} | R 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 |
rho |
Penalty parameter in the augmented Lagrangian (see Boyd et al., 2011) |
max.iter |
Maximal number of iterations to carry out |
verbose |
A |
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 |
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