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 (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 \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
image(out1$S, main="lambda=0.01") image(out2$S, main="lambda=0.1")