spd_learn.functional.kernel_logeuclid#
- spd_learn.functional.kernel_logeuclid(X, Y=None, *, Cref=None, reg=1e-10)[source]#
Log-Euclidean kernel between two sets of SPD matrices.
Log-Euclidean kernel matrix \(\mathbf{K}\) of two sets \(\mathbf{X}\) and \(\mathbf{Y}\) of SPD matrices in \(\mathbb{R}^{n \times n}\) on tangent space at \(\mathbf{C}_\text{ref}\) is calculated with pairwise inner products [1]:
\[\mathbf{K}_{i,j} = \text{tr}( (\log(\mathbf{X}_i) - \log(\mathbf{C}_\text{ref})) (\log(\mathbf{Y}_j) - \log(\mathbf{C}_\text{ref})) )\]If \(\mathbf{C}_\text{ref}\) is None [2]:
\[\mathbf{K}_{i,j} = \text{tr}(\log(\mathbf{X}_i) \log(\mathbf{Y}_j))\]- Parameters:
X (ndarray, shape (n_matrices_X, n, n)) – First set of SPD matrices.
Y (None | ndarray, shape (n_matrices_Y, n, n), default=None) – Second set of SPD matrices. If None, Y is set to X.
Cref (None | ndarray, shape (n, n), default=None) –
Reference SPD matrix. If None, Cref is defined as identity matrix.
Added in version 0.8.
reg (float, default=1e-10) – When Y is None, regularization parameter to mitigate numerical errors in kernel matrix estimation, to provide a positive-definite kernel matrix.
- Returns:
K – Log-Euclidean kernel matrix between X and Y.
- Return type:
ndarray, shape (n_matrices_X, n_matrices_Y)
Notes
Added in version 0.3.
Changed in version 0.8: Add parameter Cref to use a reference matrix.
Changed in version 0.12: Add support for NumPy and PyTorch.
See also
References
[1]A New Canonical Log-Euclidean Kernel for Symmetric Positive Definite Matrices for EEG Analysis G. L. W. vom Berg, V. Rohr, D. Platt and B. Blankertz. IEEE Transactions on Biomedical Engineering, 2024
[2]Factor analysis based spatial correlation modeling for speaker verification E. Wang, W. Guo, L. Dai, K. Lee, B. Ma and H. Li. IEEE ISCSLP, 2010