# `tensorly.decomposition`.ConstrainedCP

class ConstrainedCP(rank, n_iter_max=100, n_iter_max_inner=10, init='svd', svd='truncated_svd', tol_outer=1e-08, tol_inner=1e-06, random_state=None, verbose=0, return_errors=False, cvg_criterion='abs_rec_error', fixed_modes=None, non_negative=None, l1_reg=None, l2_reg=None, l2_square_reg=None, unimodality=None, normalize=None, simplex=None, normalized_sparsity=None, soft_sparsity=None, smoothness=None, monotonicity=None, hard_sparsity=None)[source]

CANDECOMP/PARAFAC decomposition via alternating optimization of alternating direction method of multipliers (AO-ADMM):

Computes a rank-rank decomposition of tensor [1] such that:

```tensor = [|weights; factors[0], ..., factors[-1] |],
```

where factors are either penalized or constrained according to the user-defined constraint.

In order to compute the factors efficiently, the ADMM algorithm introduces an auxilliary factor which is called factor_aux in the function.

Parameters:
tensorndarray
rankint

Number of components.

n_iter_maxint

Maximum number of iteration for outer loop

n_iter_max_innerint

Number of iteration for inner loop

init{‘svd’, ‘random’, cptensor}, optional

Type of factor matrix initialization. See initialize_factors.

svdstr, default is ‘truncated_svd’

function to use to compute the SVD, acceptable values in tensorly.SVD_FUNS

tol_outerfloat, optional

(Default: 1e-8) Relative reconstruction error tolerance for outer loop. The algorithm is considered to have found a local minimum when the reconstruction error is less than tol_outer.

tol_innerfloat, optional

(Default: 1e-6) Absolute reconstruction error tolerance for factor update during inner loop, i.e. ADMM optimization.

random_state{None, int, np.random.RandomState}
verboseint, optional

Level of verbosity

return_errorsbool, optional

Activate return of iteration errors

non_negativebool or dictionary

This constraint is clipping negative values to ‘0’. If it is True, non-negative constraint is applied to all modes.

l1_regfloat or list or dictionary, optional

Penalizes the factor with the l1 norm using the input value as regularization parameter.

l2_regfloat or list or dictionary, optional

Penalizes the factor with the l2 norm using the input value as regularization parameter.

l2_square_regfloat or list or dictionary, optional

Penalizes the factor with the l2 square norm using the input value as regularization parameter.

unimodalitybool or dictionary, optional

If it is True, unimodality constraint is applied to all modes. Applied to each column seperately.

normalizebool or dictionary, optional

This constraint divides all the values by maximum value of the input array. If it is True, normalize constraint is applied to all modes.

simplexfloat or list or dictionary, optional

Projects on the simplex with the given parameter Applied to each column seperately.

normalized_sparsityfloat or list or dictionary, optional

Normalizes with the norm after hard thresholding

soft_sparsityfloat or list or dictionary, optional

Impose that the columns of factors have L1 norm bounded by a user-defined threshold.

smoothnessfloat or list or dictionary, optional

Optimizes the factors by solving a banded system

monotonicitybool or dictionary, optional

Projects columns to monotonically decreasing distrbution Applied to each column seperately. If it is True, monotonicity constraint is applied to all modes.

hard_sparsityfloat or list or dictionary, optional

Hard thresholding with the given threshold

cvg_criterion{‘abs_rec_error’, ‘rec_error’}, optional

Stopping criterion if tol is not None. If ‘rec_error’, algorithm stops at current iteration if `(previous rec_error - current rec_error) < tol`. If ‘abs_rec_error’, algorithm terminates when |previous rec_error - current rec_error| < tol.

fixed_modeslist, default is None

A list of modes for which the initial value is not modified. The last mode cannot be fixed due to error computation.

Returns:
CPTensor(weight, factors)
• weights : 1D array of shape (rank, )

• factors : List of factors of the CP decomposition element i is of shape `(tensor.shape[i], rank)`

errorslist

A list of reconstruction errors at each iteration of the algorithms.

References

[1]

T.G.Kolda and B.W.Bader, “Tensor Decompositions and Applications”, SIAM REVIEW, vol. 51, n. 3, pp. 455-500, 2009.

[2]

Huang, Kejun, Nicholas D. Sidiropoulos, and Athanasios P. Liavas. “A flexible and efficient algorithmic framework for constrained matrix and tensor factorization.” IEEE Transactions on Signal Processing 64.19 (2016): 5052-5065.

fit_transform(tensor)[source]

Decompose an input tensor

Parameters:
tensortensorly tensor

input tensor to decompose

Returns:
CPTensor

decomposed tensor