tick.prox.
ProxL2
(strength: float, range: tuple = None, positive: bool = False)[source]¶Proximal operator of the L2 penalization. Do not mix up with ProxL2sq, which is regular ridge (squared L2) penalization. ProxL2 induces sparsity on the full vector, whenever the norm of it is small enough. This is mostly used in the ProxGroupL1 for group-lasso penalization.
strength : float
Level of penalization. Note that in this proximal operator,
strength
is automatically multiplied by the square-root ofend
-start
, when a range is used, orn_coeffs
, when no range is used (size of the passed vector). This allows to consider strengths that have the same order as withProxL1
or other separable proximal operators.
range : tuple
of two int
, default=`None`
Range on which the prox is applied. If
None
then the prox is applied on the whole vector
positive : bool
, default=`False`
If True, apply L2 penalization together with a projection onto the set of vectors with non-negative entries
dtype : {'float64', 'float32'}
Type of the arrays used.
__init__
(strength: float, range: tuple = None, positive: bool = False)[source]¶Initialize self. See help(type(self)) for accurate signature.
call
(coeffs, step=1.0, out=None)¶Apply proximal operator on a vector. It computes:
coeffs : numpy.ndarray
, shape=(n_coeffs,)
Input vector on which is applied the proximal operator
step : float
or np.array
, default=1.
The amount of penalization is multiplied by this amount
If
float
, the amount of penalization is multiplied by this amountIf
np.array
, then each coordinate of coeffs (within the given range), receives an amount of penalization multiplied by t (available only for separable prox)
out : numpy.ndarray
, shape=(n_params,), default=None
If not
None
, the output is stored in the givenout
. Otherwise, a new vector is created.
output : numpy.ndarray
, shape=(n_coeffs,)
Same object as out
Notes
step
must have the same size as coeffs
whenever range is
None
, or a size matching the one given by the range
otherwise