Robust principal component analysis

Robust principal component analysis (RPCA) seeks a decomposition of a matrix as a sum of a low-rank and sparse matrix, i.e.,

\[M = L + S,\]

where a balance is sought between the rank of \(L\) and the number of nonzeros in \(S\). Such a balance is (weakly) imposed via convex relaxations of penalties on the number of nonzero singular values of \(L\) and entries of \(S\) to their \(\ell_1\) counterparts. In particular, a solution is sought for the problem

\[\min_{L,S} \| L \|_* + \| \text{vec}(S) \|_1 \text{ such that } M = L + S,\]

where \(\| \cdot \|_*\) denotes the nuclear norm and \(\| \text{vec}(\cdot) \|_1\) denotes the entrywise one-norm.

C++ API

class RPCACtrl
bool useALM
bool usePivQR
bool progress
Int numPivSteps
Int maxIts
Real tau
Real beta
Real rho
Real tol
RPCACtrl()
void RPCA(const AbstractDistMatrix<F> &M, AbstractDistMatrix<F> &L, AbstractDistMatrix<F> &S, const RPCACtrl<Base<F>> &ctrl = RPCACtrl<Base<F>>())

C API

ElError ElRPCADist_s(ElConstDistMatrix_s M, ElDistMatrix_s L, ElDistMatrix_s S)
ElError ElRPCADist_d(ElConstDistMatrix_d M, ElDistMatrix_d L, ElDistMatrix_d S)
ElError ElRPCADist_c(ElConstDistMatrix_c M, ElDistMatrix_c L, ElDistMatrix_c S)
ElError ElRPCADist_z(ElConstDistMatrix_z M, ElDistMatrix_z L, ElDistMatrix_z S)