tick.prox.ProxNuclear

class tick.prox.ProxNuclear(strength: float, n_rows: int = None, range: tuple = None, positive: bool = False)[source]

Proximal operator of the nuclear norm, aka trace norm

Parameters:

strength : float

Level of penalization

n_rows : int

Number of rows in the matrix on which we apply this penalization. The number of columns is then given by (start - end) / n_rows

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 nuclear-norm penalization followed by a truncation to make all entries non-negative

rank_max : int, default=`None`

Maximum rank to be used in the SVD (not used yet…)

Notes

The coeffs on which we apply this prox must be flattened (using np.ravel for instance), and not two-dimensional. This operator is not usable from a solver with wrapped C++ code. It is based on scipy.linalg.svd SVD routine and is not intended for use on large matrices