Dantzig selector¶
The Dantzig selector (DS) attempts to balance the approximate satisfaction of a highly underdetermined system of equations with a sparsity-promoting \(\ell_1\) penalty on the solution using only linear programming:
In addition to the specific LP formulation in Candes and Tao’s original paper, Friedlander and Saunders proposed two mappings, (DS1):
(DS2):
which they argued to be superior in performance and conditioning. Elemental defaults to (DS1) for dense matrices and (DS2) for sparse matrices and applies a Mehrotra Predictor-Corrector primal-dual Interior Point Method.
Python API¶
-
DS
(A, b, lambd[, ctrl=None])¶ - Parameters
A – dense or sparse, sequential or distributed matrix
b – dense right-hand side vector (with type compatible to
A
)lambd – bound on the maximum absolute value of \(A^T (b-Ax)\)
ctrl – (optional)
LPAffineCtrl
instance
- Return type
dense solution vector (with type matching that of
b
)
C++ API¶
-
void
DS
(const Matrix<Real> &A, const Matrix<Real> &b, Real lambda, Matrix<Real> &x, const lp::affine::Ctrl<Real> &ctrl = lp::affine::Ctrl<Real>())¶
-
void
DS
(const ElementalMatrix<Real> &A, const ElementalMatrix<Real> &b, Real lambda, ElementalMatrix<Real> &x, const lp::affine::Ctrl<Real> &ctrl = lp::affine::Ctrl<Real>())¶
-
void
DS
(const SparseMatrix<Real> &A, const Matrix<Real> &b, Real lambda, Matrix<Real> &x, const lp::affine::Ctrl<Real> &ctrl = lp::affine::Ctrl<Real>())¶
-
void
DS
(const DistSparseMatrix<Real> &A, const DistMultiVec<Real> &b, Real lambda, DistMultiVec<Real> &x, const lp::affine::Ctrl<Real> &ctrl = lp::affine::Ctrl<Real>())¶
C API¶
Single-precision¶
Double-precision¶
-
ElError
ElDSDistSparse_d
(ElConstDistSparseMatrix_d A, ElConstDistMultiVec_d b, double lambda, ElDistMultiVec_d x)¶
Expert interface¶
Single-precision¶
-
ElError
ElDSX_s
(ElConstMatrix_s A, ElConstMatrix_s b, float lambda, ElMatrix_s x, ElLPAffineCtrl_s ctrl)¶
-
ElError
ElDSXDist_s
(ElConstDistMatrix_s A, ElConstDistMatrix_s b, float lambda, ElDistMatrix_s x, ElLPAffineCtrl_s ctrl)¶
Double-precision¶
-
ElError
ElDSX_d
(ElConstMatrix_d A, ElConstMatrix_d b, double lambda, ElMatrix_d x, ElLPAffineCtrl_d ctrl)¶
-
ElError
ElDSXDist_d
(ElConstDistMatrix_d A, ElConstDistMatrix_d b, double lambda, ElDistMatrix_d x, ElLPAffineCtrl_d ctrl)¶