Is there a way to extend this to more than two views? I suppose one way would be to apply CCA/KCCA recursively in a tree structure, but this appears to be rather inefficient. Is there a single optimisation that can achieve this in one step? Or are there any alternative methods that do the same thing?
If by more than two 'views' you actually mean extending the CCA framework to k-blocks data structure, then you might be interested in
The corresponding R package is called RGCCA.
This is just a guess. Is it not that CCA can be interpreted as a probabilistic model of the following form?
X | Z ~ N(A*Z,Psi)
Y | Z ~ N(B*Z,Phi)
where X is vector in first view, Y is vector in second view, and Z is latent variable which captures the relation between X and Y. Psi and Phi are covariance matrices which soak up all the rest of the variations not captured by Z. Generalization to >2 views is now straightforward.
Learning in this framework would presumably be EM but that is not very efficient. It is likely that the typical generalized eigenvalue computations for CCA is a more efficient method to get at the maximum likelihood solution in 2 view case, and there might be a generalization to >2 view2 setting?