sporco.admm.rpca¶
Classes for ADMM algorithms for Robust PCA optimisation
Classes
|
Class Descriptions¶
- class sporco.admm.rpca.RobustPCA(*args, **kwargs)[source]¶
Bases:
ADMM
ADMM algorithm for Robust PCA problem [12] [11].
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, attributeitstat
is a list of tuples representing statistics of each iteration. The fields of the named tupleIterationStats
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:
- Sarray_like
Signal vector or matrix
- lmbdafloat
Regularisation parameter
- optRobustPCA.Options object
Algorithm options
- class Options(opt=None)[source]¶
Bases:
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:
- optdict or None, optional (default None)
RobustPCA algorithm options
- defaults = {'AbsStopTol': 0.0, 'AutoRho': {'AutoScaling': True, 'Enabled': True, 'Period': 1, 'RsdlRatio': 1.2, 'RsdlTarget': None, 'Scaling': 1000.0, 'StdResiduals': False}, 'Callback': None, 'DataType': None, 'FastSolve': False, 'IterTimer': 'solve', 'MaxMainIter': 1000, 'RelStopTol': 0.001, 'RelaxParam': 1.8, 'StatusHeader': True, 'U0': None, 'Verbose': False, 'Y0': None, 'fEvalX': True, 'gEvalY': True, 'rho': None}¶
Default content and allowed dict keys
- itstat_fields_objfn = ('ObjFun', 'NrmNuc', 'NrmL1', 'Cnstr')¶
Fields in IterationStats associated with the objective function; see
eval_objfn
- hdrtxt_objfn = ('Fnc', 'NrmNuc', 'Nrmℓ1', 'Cnstr')¶
Display column headers associated with the objective function; see
eval_objfn
- hdrval_objfun = {'Cnstr': 'Cnstr', 'Fnc': 'ObjFun', 'NrmNuc': 'NrmNuc', 'Nrmℓ1': 'NrmL1'}¶
Dictionary mapping display column headers in
hdrtxt_objfn
to IterationStats entries
- 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}\).