Classes for ADMM algorithms for Robust PCA optimisation

Classes

 RobustPCA(S[, lmbda, opt]) ADMM algorithm for Robust PCA problem [8] [7].

Class Descriptions¶

class sporco.admm.rpca.RobustPCA(S, lmbda=None, opt=None)[source]

ADMM algorithm for Robust PCA problem [8] [7].

Solve the optimisation problem

$\mathrm{argmin}_{X, Y} \; \| X \|_* + \lambda \| Y \|_1 \quad \text{such that} \quad X + Y = S \;\;.$

This problem is unusual in that it is already in ADMM form without the need for any variable splitting.

After termination of the solve method, attribute itstat is a list of tuples representing statistics of each iteration. The fields of the named tuple IterationStats are:

Iter : Iteration number

ObjFun : Objective function value

NrmNuc : Value of nuclear norm term $$\| X \|_*$$

NrmL1 : Value of $$\ell_1$$ norm term $$\| Y \|_1$$

Cnstr : Constraint violation $$\| X + Y - S\|_2$$

PrimalRsdl : Norm of primal residual

DualRsdl : Norm of dual residual

EpsPrimal : Primal residual stopping tolerance $$\epsilon_{\mathrm{pri}}$$

EpsDual : Dual residual stopping tolerance $$\epsilon_{\mathrm{dua}}$$

Rho : Penalty parameter

Time : Cumulative run time

Parameters: S : array_like Signal vector or matrix lmbda : float Regularisation parameter opt : RobustPCA.Options object Algorithm options
class Options(opt=None)[source]

Bases: sporco.admm.admm.Options

RobustPCA algorithm options

Options include all of those defined in sporco.admm.admm.ADMM.Options, together with an additional option:

fEvalX : Flag indicating whether the $$f$$ component of the objective function should be evaluated using variable X (True) or Y (False) as its argument.

gEvalY : Flag indicating whether the $$g$$ component of the objective function should be evaluated using variable Y (True) or X (False) as its argument.

Parameters: opt : dict or None, optional (default None) RobustPCA algorithm options
uinit(ushape)[source]

Return initialiser for working variable U

solve()[source]

Start (or re-start) optimisation.

xstep()[source]

Minimise Augmented Lagrangian with respect to $$\mathbf{x}$$.

ystep()[source]

Minimise Augmented Lagrangian with respect to $$\mathbf{y}$$.

obfn_fvar()[source]

Variable to be evaluated in computing regularisation term, depending on ‘fEvalX’ option value.

obfn_gvar()[source]

Variable to be evaluated in computing regularisation term, depending on ‘gEvalY’ option value.

eval_objfn()[source]

Compute components of objective function as well as total contribution to objective function.

cnst_A(X)[source]

Compute $$A \mathbf{x}$$ component of ADMM problem constraint. In this case $$A \mathbf{x} = \mathbf{x}$$.

cnst_AT(X)[source]

Compute $$A^T \mathbf{x}$$ where $$A \mathbf{x}$$ is a component of ADMM problem constraint. In this case $$A^T \mathbf{x} = \mathbf{x}$$.

cnst_B(Y)[source]

Compute $$B \mathbf{y}$$ component of ADMM problem constraint. In this case $$B \mathbf{y} = -\mathbf{y}$$.

cnst_c()[source]

Compute constant component $$\mathbf{c}$$ of ADMM problem constraint. In this case $$\mathbf{c} = \mathbf{s}$$.