Joint diagonalization of matrices using the quasi-Newton method
Set of matrices to be jointly diagonalized. C[0] is the first matrix, etc…
Initial point for the algorithm. If None, a whitener is used.
Weights for each matrix in the loss: L = sum(weights * KL(C, C’)) / sum(weights). No weighting (weights = 1) by default.
Maximum number of iterations to perform.
A positive scalar giving the tolerance at which the algorithm is considered to have converged. The algorithm stops when |gradient| < tol.
A positive regularization scalar. Each eigenvalue of the Hessian approximation below lambda_min is set to lambda_min.
Maximum number of line-search tries to perform.
If true, the line search is done by computing only the diagonals of the dataset. The dataset is then computed after the line search. Taking diag_only = True might be faster than diag_only=False when the matrices are large (n_features > 200)
Chooses whether or not to return the list of iterates.
Chooses whether to check that the provided dataset contains only symmetric positive definite matrices, as should be.
Prints informations about the state of the algorithm if True.
If true, performs joint diagonlization under orthogonal constrains.
Set of matrices jointly diagonalized
Estimated joint diagonalizer matrix.
Dictionnary of monitoring informations, containing the times, gradient norms and objective values.
References
P. Ablin, J.F. Cardoso and A. Gramfort. Beyond Pham’s algorithm for joint diagonalization. Proc. ESANN 2019. https://www.elen.ucl.ac.be/Proceedings/esann/esannpdf/es2019-119.pdf https://hal.archives-ouvertes.fr/hal-01936887v1 https://arxiv.org/abs/1811.11433