Home | Trees | Indices | Help |
---|
|
object --+ | properties.Function --+ | properties.AtomicFunction --+ | object --+ | | | properties.Penalty --+ | object --+ | | | properties.Constraint --+ | object --+ | | | properties.ProximalOperator --+ | object --+ | | | properties.ProjectionOperator --+ | L0
The proximal operator of the "pseudo" L0 function f(x) = l * (||x||_0 - c), where ||x||_0 is the L0 loss function. The constrainted version has the form ||x||_0 <= c. Warning: Note that this function is not convex, and the regular assumptions when using it in e.g. ISTA or FISTA will not apply. Nevertheless, it will still converge to a local minimum if we can guarantee that we obtain a reduction of the smooth part in each step. See e.g.: http://eprints.soton.ac.uk/142499/1/BD_NIHT09.pdf http://people.ee.duke.edu/~lcarin/blumensath.pdf Parameters ---------- l : Non-negative float. The Lagrange multiplier, or regularisation constant, of the function. c : Float. The limit of the constraint. The function is feasible if ||x||_0 <= c. The default value is c=0, i.e. the default is a regularisation formulation. penalty_start : Non-negative integer. The number of columns, variables etc., to be exempt from penalisation. Equivalently, the first index to be penalised. Default is 0, all columns are included.
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
Inherited from Inherited from |
|
|||
__abstractmethods__ =
|
|||
Inherited from Inherited from |
|
|||
Inherited from |
|
x.__init__(...) initializes x; see help(type(x)) for signature
|
Function value. From the interface "Function". Example ------- >>> import numpy as np >>> from parsimony.functions.penalties import L0 >>> import parsimony.utils.maths as maths >>> >>> np.random.seed(42) >>> x = np.random.rand(10, 1) >>> l0 = L0(l=0.5) >>> maths.norm0(x) 10 >>> l0.f(x) - 0.5 * maths.norm0(x) 0.0 >>> x[0, 0] = 0.0 >>> maths.norm0(x) 9 >>> l0.f(x) - 0.5 * maths.norm0(x) 0.0
|
The corresponding proximal operator. From the interface "ProximalOperator". Example ------- >>> import numpy as np >>> from parsimony.functions.penalties import L0 >>> import parsimony.utils.maths as maths >>> >>> np.random.seed(42) >>> x = np.random.rand(10, 1) >>> l0 = L0(l=0.5) >>> maths.norm0(x) 10 >>> l0.prox(x) array([[ 0. ], [ 0.95071431], [ 0.73199394], [ 0.59865848], [ 0. ], [ 0. ], [ 0. ], [ 0.86617615], [ 0.60111501], [ 0.70807258]]) >>> l0.f(l0.prox(x)) 3.0 >>> 0.5 * maths.norm0(l0.prox(x)) 3.0
|
The corresponding projection operator. From the interface "ProjectionOperator". Examples -------- >>> import numpy as np >>> from parsimony.functions.penalties import L0 >>> >>> np.random.seed(42) >>> x = np.random.rand(10, 1) * 2.0 - 1.0 >>> l0 = L0(c=5.0) >>> l0.proj(x) array([[ 0. ], [ 0.90142861], [ 0. ], [ 0. ], [-0.68796272], [-0.68801096], [-0.88383278], [ 0.73235229], [ 0. ], [ 0. ]])
|
Feasibility of the constraint. From the interface "Constraint". Parameters ---------- beta : Numpy array. The variable to check for feasibility. Examples -------- >>> import numpy as np >>> from parsimony.functions.penalties import L0 >>> >>> np.random.seed(42) >>> x = np.random.rand(10, 1) * 2.0 - 1.0 >>> l0 = L0(c=5.0) >>> l0.feasible(x) False >>> l0.feasible(l0.proj(x)) True
|
Home | Trees | Indices | Help |
---|
Generated by Epydoc 3.0.1 on Mon Apr 6 23:52:11 2015 | http://epydoc.sourceforge.net |