admm.rpca: Robust Principal Component Analysis

Description Usage Arguments Value Iteration History References Examples

View source: R/admm.rpca.R

Description

Given a data matrix M, it finds a decomposition

\textrm{min}~\|L\|_*+λ \|S\|_1\quad \textrm{s.t.}\quad L+S=M

where \|L\|_* represents a nuclear norm for a matrix L and \|S\|_1 = ∑ |S_{i,j}|, and λ a balancing/regularization parameter. The choice of such norms leads to impose low-rank property for L and sparsity on S.

Usage

1
2
3
4
5
6
7
admm.rpca(
  M,
  lambda = 1/sqrt(max(nrow(M), ncol(M))),
  mu = 1,
  tol = 1e-07,
  maxiter = 1000
)

Arguments

M

an (m\times n) data matrix

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 ≤ 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

\insertRef

candes_robust_2011aADMM

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
## 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)

ADMM documentation built on Aug. 8, 2021, 9:07 a.m.