Grassmannian Kernels

In several applications the use of subspaces is essential to describe the underlying geometry of data. However, it is well-known that sets of subspaces do not follow Euclidean geometry. Instead they have a Reimannian structure and lie on a Grassmann manifold. Grassmannian kernels can be used to embed the structure of the Grassmann manifold into a Hilbert space. On the Grassmann manifold, a kernel is defined as a positive definite function \(k:\mathcal{G}(p,n)\times \mathcal{G}(p,n) \rightarrow \mathbb{R}\) [65], [66].

UQpy includes Grassmannian kernels through the GrassmannianKernel parent class, with specific kernels included as subclasses. This is described in the following.

Grassmannian Kernel Class

The GrassmannianKernel class is imported using the following command:

>>> from UQpy.utilities.kernels.baseclass.GrassmannianKernel import GrassmannianKernel
class GrassmannianKernel(kernel_parameter=None)[source]
Parameters:

kernel_parameter (Union[float, int, None]) – Number of independent p-planes of each Grassmann point.

calculate_kernel_matrix(x, s)[source]

Abstract method that needs to be implemented by the user when creating a new Covariance function.

Projection Kernel

The projection kernel is defined as:

\[k_p(\mathbf{X}_i, \mathbf{X}_j) = ||\mathbf{X}_i^T\mathbf{X}_j||_F^2\]

where \(\mathbf{X}_i, \mathbf{X}_j \in \mathcal{G}(p,n)\)

The ProjectionKernel class is imported using the following command:

>>> from UQpy.utilities.kernels.ProjectionKernel import ProjectionKernel

One can use the following command to instantiate the ProjectionKernel class.

class ProjectionKernel(kernel_parameter=None)[source]
Parameters:

kernel_parameter (Union[float, int, None]) – Number of independent p-planes of each Grassmann point.

element_wise_operation(xi_j)[source]

Compute the Projection kernel entry for a tuple of points on the Grassmann manifold.

Parameters:

xi_j (Tuple) – Tuple of orthonormal matrices representing the grassmann points.

Return type:

float

ProjectionKernel.kernel_matrix

Binet-Cauchy Kernel

The Binet-Cauchy Kernel is defined as:

\[k_p(\mathbf{X}_i, \mathbf{X}_j) = \det(\mathbf{X}_i^T\mathbf{X}_j)^2\]

where \(\mathbf{X}_i, \mathbf{X}_j \in \mathcal{G}(p,n)\)

The BinetCauchyKernel class is imported using the following command:

>>> from UQpy.utilities.kernels.BinetCauchyKernel import BinetCauchyKernel

One can use the following command to instantiate the BinetCauchyKernel class.

class BinetCauchyKernel(kernel_parameter=None)[source]
Parameters:

kernel_parameter (Union[float, int, None]) – Number of independent p-planes of each Grassmann point.

element_wise_operation(xi_j)[source]

Compute the Projection kernel entry for a tuple of points on the Grassmann manifold.

Parameters:

xi_j (Tuple) – Tuple of orthonormal matrices representing the grassmann points.

Return type:

float

BinetCauchyKernel.kernel_matrix