admm.rpca {ADMM} | R Documentation |
Robust Principal Component Analysis
Description
Given a data matrix M
, it finds a decomposition
\textrm{min}~\|L\|_*+\lambda \|S\|_1\quad \textrm{s.t.}\quad L+S=M
where \|L\|_*
represents a nuclear norm for a matrix L
and
\|S\|_1 = \sum |S_{i,j}|
, and \lambda
a balancing/regularization
parameter. The choice of such norms leads to impose low-rank property for L
and
sparsity on S
.
Usage
admm.rpca(
M,
lambda = 1/sqrt(max(nrow(M), ncol(M))),
mu = 1,
tol = 1e-07,
maxiter = 1000
)
Arguments
M |
an |
lambda |
a regularization parameter |
mu |
an augmented Lagrangian parameter |
tol |
relative tolerance stopping criterion |
maxiter |
maximum number of iterations |
Value
a named list containing
- L
an
(m\times n)
low-rank matrix- S
an
(m\times n)
sparse matrix- history
dataframe recording iteration numerics. See the section for more details.
Iteration History
For RPCA implementation, we chose a very simple stopping criterion
\|M-(L_k+S_k)\|_F \le tol*\|M\|_F
for each iteration step k
. So for this method, we provide a vector of only relative errors,
- error
relative error computed
References
Candès EJ, Li X, Ma Y, Wright J (2011). “Robust principal component analysis?” Journal of the ACM, 58(3), 1–37. ISSN 00045411, doi: 10.1145/1970392.1970395.
Examples
## generate data matrix from standard normal
X = matrix(rnorm(20*5),nrow=5)
## try different regularization values
out1 = admm.rpca(X, lambda=0.01)
out2 = admm.rpca(X, lambda=0.1)
out3 = admm.rpca(X, lambda=1)
## visualize sparsity
opar <- par(no.readonly=TRUE)
par(mfrow=c(1,3))
image(out1$S, main="lambda=0.01")
image(out2$S, main="lambda=0.1")
image(out3$S, main="lambda=1")
par(opar)