tensorly.decomposition
.robust_pca
- robust_pca(X, mask=None, tol=1e-06, reg_E=1.0, reg_J=1.0, mu_init=0.0001, mu_max=10000000000.0, learning_rate=1.1, n_iter_max=100, return_errors=False, verbose=1)[source]
Robust Tensor PCA via ALM with support for missing values
Decomposes a tensor X into the sum of a low-rank component D and a sparse component E.
- Parameters:
- Xndarray
tensor data of shape (n_samples, N1, …, NS)
- maskndarray
array of booleans with the same shape as X should be zero where the values are missing and 1 everywhere else
- tolfloat
convergence value
- reg_Efloat, optional, default is 1
regularisation on the sparse part E
- reg_Jfloat, optional, default is 1
regularisation on the low rank part D
- mu_initfloat, optional, default is 10e-5
initial value for mu
- mu_maxfloat, optional, default is 10e9
maximal value for mu
- learning_ratefloat, optional, default is 1.1
percentage increase of mu at each iteration
- n_iter_maxint, optional, default is 100
maximum number of iteration
- return_errorsbool, default is False
if True, additionally returns the reconstruction errors
- verboseint, default is 1
level of verbosity
- Returns:
- (D, E) or (D, E, rec_errors)
Robust decomposition of X
- DX-like array
low-rank part
- EX-like array
sparse error part
- rec_errorslist of errors
only returned if return_errors is True
Notes
The problem we solve is, for an input tensor \(\tilde X\):
\begin{equation*} \begin{aligned} & \min_{\{J_i\}, \tilde D, \tilde E} & & \sum_{i=1}^N \text{reg}_J \|J_i\|_* + \text{reg}_E \|E\|_1 \\ & \text{subject to} & & \tilde X = \tilde A + \tilde E \\ & & & A_{[i]} = J_i, \text{ for each } i \in \{1, 2, \cdots, N\}\\ \end{aligned} \end{equation*}