Elliptope

Manifolds.Elliptope — Type
Elliptope{T} <: AbstractDecoratorManifold{ℝ}

The Elliptope manifold, also known as the set of correlation matrices, consists of all symmetric positive semidefinite matrices of rank $k$ with unit diagonal, i.e.,

\[\begin{aligned} \mathcal E(n,k) = \bigl\{p ∈ ℝ^{n×n}\ \big|\ &a^\mathrm{T}pa \geq 0 \text{ for all } a ∈ ℝ^{n},\\ &p_{ii} = 1 \text{ for all } i=1,\ldots,n,\\ &\text{and } p = qq^{\mathrm{T}} \text{ for } q \in ℝ^{n×k} \text{ with } \operatorname{rank}(p) = \operatorname{rank}(q) = k \bigr\}. \end{aligned}\]

And this manifold is working solely on the matrices $q$. Note that this $q$ is not unique, indeed for any orthogonal matrix $A$ we have $(qA)(qA)^{\mathrm{T}} = qq^{\mathrm{T}} = p$, so the manifold implemented here is the quotient manifold. The unit diagonal translates to unit norm rows of $q$.

The tangent space at $p$, denoted $T_p\mathcal E(n,k)$, is also represented by matrices $Y\in ℝ^{n×k}$ and reads as

\[T_p\mathcal E(n,k) = \bigl\{ X ∈ ℝ^{n×n}\,|\,X = qY^{\mathrm{T}} + Yq^{\mathrm{T}} \text{ with } X_{ii} = 0 \text{ for } i=1,\ldots,n \bigr\}\]

endowed with the Euclidean metric from the embedding, i.e. from the $ℝ^{n×k}$

This manifold was for example investigated in[JBAS10].

Constructor

Elliptope(n::Int, k::Int; parameter::Symbol=:type)

generates the manifold $\mathcal E(n,k) \subset ℝ^{n×n}$.

parameter: whether a type parameter should be used to store n and k. By default size is stored in type. Value can either be :field or :type.

source
ManifoldsBase.check_point — Method
check_point(M::Elliptope, q; kwargs...)

checks, whether q is a valid representation of a point $p=qq^{\mathrm{T}}$ on the Elliptope M, i.e. is a matrix of size (N,K), such that $p$ is symmetric positive semidefinite and has unit diagonal. Since by construction $p$ is symmetric, this is not explicitly checked. Since $p$ is by construction positive semidefinite, this is not checked. The tolerance for the unit diagonal can be set using the kwargs....

source
ManifoldsBase.check_vector — Method
check_vector(M::Elliptope, q, Y; kwargs... )

Check whether $X = qY^{\mathrm{T}} + Yq^{\mathrm{T}}$ is a tangent vector to $p=qq^{\mathrm{T}}$ on the Elliptope M, i.e. Y has to be of same dimension as q and X has to be a symmetric matrix with zero diagonal.

The diagonal has to vanish up to max(atol, 2 * rtol * norm(Y)). The relative tolerance rtol refers to the size of X; its default is the one of isapprox. Note that symmetry of X holds by construction and is not explicitly checked.

source
Random.rand! — Method
rand(M::Elliptope; vector_at=nothing, σ::Real=1.0)
rand!(rng::AbstractRNG, M::Elliptope, pX; vector_at=nothing, σ::Real=1.0)

Project a matrix of independent normally distributed entries with standard deviation σ onto M, or onto the tangent space at vector_at.

source

Literature

[JBAS10]
M. Journée, F. Bach, P.-A. Absil and R. Sepulchre. Low-Rank Optimization on the Cone of Positive Semidefinite Matrices. SIAM Journal on Optimization 20, 2327–2351 (2010), arXiv:0807.4423.