ProxADMM | R Documentation |
This function solves the optimization problem
ProxADMM(A, del, lam, P, rho = 0.1, tol = 1e-06, maxiters = 100, verb = FALSE)
A |
A symmetric matrix. |
del |
A non-negative scalar. Lower bound on eigenvalues. |
lam |
A non-negative scalar. L1 penalty parameter. |
P |
Matrix with non-negative elements and dimension of A. Allows for differing L1 penalty parameters. |
rho |
ADMM parameter. Can affect rate of convergence a lot. |
tol |
Convergence threshold. |
maxiters |
Maximum number of iterations. |
verb |
Controls whether to be verbose. |
Minimize_X (1/2)||X - A||_F^2 + lam||P*X||_1 s.t. X >= del * I.
This is the prox function for the generalized gradient descent of Bien & Tibshirani 2011 (see full reference below).
This is the R implementation of the algorithm in Appendix 3 of Bien, J., and Tibshirani, R. (2011), "Sparse Estimation of a Covariance Matrix," Biometrika. 98(4). 807–820. It uses an ADMM approach to solve the problem
Minimize_X (1/2)||X - A||_F^2 + lam||P*X||_1 s.t. X >= del * I.
Here, the multiplication between P and X is elementwise. The inequality in the constraint is a lower bound on the minimum eigenvalue of the matrix X.
Note that there are two variables X and Z that are outputted. Both are estimates of the optimal X. However, Z has exact zeros whereas X has eigenvalues at least del. Running the ADMM algorithm long enough, these two are guaranteed to converge.
X |
Estimate of optimal X. |
Z |
Estimate of optimal X. |
obj |
Objective values. |
Jacob Bien and Rob Tibshirani
Bien, J., and Tibshirani, R. (2011), "Sparse Estimation of a Covariance Matrix," Biometrika. 98(4). 807–820.
spcov
set.seed(1) n <- 100 p <- 200 # generate a covariance matrix: model <- GenerateCliquesCovariance(ncliques=4, cliquesize=p / 4, 1) # generate data matrix with x[i, ] ~ N(0, model$Sigma): x <- matrix(rnorm(n * p), ncol=p) %*% model$A S <- var(x) # compute sparse, positive covariance estimator: P <- matrix(1, p, p) diag(P) <- 0 lam <- 0.1 aa <- ProxADMM(S, 0.01, lam, P)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.