In statistics, canonical-correlation analysis (CCA), also called canonical variates analysis, is a way of inferring information from cross-covariance matrices. If we have two vectors X = (X1, ..., Xn) and Y = (Y1, ..., Ym) of random variables, and there are correlations among the variables, then canonical-correlation analysis will find linear combinations of X and Y which have maximum correlation with each other. T. R. Knapp notes that "virtually all of the commonly encountered parametric tests of significance can be treated as special cases of canonical-correlation analysis, which is the general procedure for investigating the relationships between two sets of variables." The method was first introduced by Harold Hotelling in 1936, although in the context of angles between flats the mathematical concept was published by Jordan in 1875.
CCA is now a cornerstone of multivariate statistics and multi-view learning; and a great number of interpretations and extensions have been proposed (e.g. probabilistic CCA, sparse CCA, multi-view CCA, Deep CCA - all of which are implemented in the CCA-Zoo python package). Unfortunately, perhaps because of its popularity, the literature can be inconsistent with notation, we attempt to highlight such inconsistencies in this article to help the reader make best use of the existing literature and techniques available.
Like its sister method PCA, CCA can be viewed in population form (corresponding to random vectors and their covariance matrices) or in sample form (corresponding to datasets and their sample covariance matrices). These two forms are almost exact analogues of each other, which is why their distinction is often overlooked, but they can behave very differently in high dimensional settings. We next give explicit mathematical definitions for the population problem and highlight the different objects in the so-called canonical decomposition - understanding the differences between this objects is crucial for interpretation of the technique.
Population CCA definition via correlations
Given two column vectors and of random variables with finite second moments, one may define the cross-covariance to be the matrix whose entry is the covariance . In practice, we would estimate the covariance matrix based on sampled data from and (i.e. from a pair of data matrices).
Canonical-correlation analysis seeks a sequence of vectors () and () such that the random variables and maximize the correlation . The (scalar) random variables and are the first pair of canonical variables. Then one seeks vectors maximizing the same correlation subject to the constraint that they are to be uncorrelated with the first pair of canonical variables; this gives the second pair of canonical variables. This procedure may be continued up to times.
The sets of vectors are called canonical directions or weight vectors or simply weights. The 'dual' sets of vectors are called canonical loading vectors or simply loadings; these are often more straightforward to interpret than the weights.
Computation
Derivation
Let be the cross-covariance matrix for any pair of (vector-shaped) random variables and . The target function to maximize is
The first step is to define a change of basis and define
where and can be obtained from the eigen-decomposition (or by diagonalization):
and
And thus we have
By the Cauchy–Schwarz inequality, we have
There is equality if the vectors and are collinear. In addition, the maximum of correlation is attained if is the eigenvector with the maximum eigenvalue for the matrix (see Rayleigh quotient). The subsequent pairs are found by using eigenvalues of decreasing magnitudes. Orthogonality is guaranteed by the symmetry of the correlation matrices.
Another way of viewing this computation is that and are the left and right singular vectors of the correlation matrix of X and Y corresponding to the highest singular value.
Solution
The solution is therefore: is an eigenvector of is proportional to
Reciprocally, there is also: is an eigenvector of is proportional to
Reversing the change of coordinates, we have that
is an eigenvector of , is proportional to is an eigenvector of is proportional to .
The canonical variables are defined by:
Implementation
CCA can be computed using singular value decomposition on a correlation matrix. It is available as a function in