Canonical Correlation Analysis(CCA)典型相关分析也是一种常用的降维算法。我们知道,PCA(Principal Component Analysis) 主分量分析将数据从高维映射到低维空间同时,保证了数据的分散性尽可能地大, 也就是数据的方差或者协方差尽可能大。而LDA(Linear Discriminant Analysis) 线性判别分析则利用了类标签,利用一种监督学习的方法,将数据从高维空间映射到低维空间时,让不同类的数据尽可能地分开而同一类的数据尽可能地聚合。

但是,有的时候,我们想探讨多个线性空间之间的相关性。比如有的时候我们会从图像中提取各种特征,每一种特征都可以构成一个线性空间,为了分析这些空间之间的相关性,我们可以利用CCA 来做分析。

假设我们有两个特征空间,S1=x1∈Rd1, S2=x2∈Rd2, 我们可以将两个特征向量合并。


x=(x1x2)E(x)=(μ1μ2)Σ=(Σ11Σ21Σ12Σ22)


可以看到,Σ12=ΣT21,Σ 称为协方差矩阵。我们引入投影向量 a, b, 假设投影之后的变量满足:


u=aTx1v=bTx2


可以进一步算出 u,v 的方差和协方差:


var(u)=aTΣ11a,var(v)=bTΣ2b,cov(u,v)=aTΣ12b


可以计算出 u,v 的相关系数:


Corr(u,v)=cov(u,v)var(u)−−−−−√var(v)−−−−−√


将u,v的表达式代入,可以得到:


Corr(u,v)=aTΣ12baTΣ11a−−−−−−√bTΣ22b−−−−−−−√


我们的目标是让相关系数Corr(u,v) 尽可能地大。为了求解a,b, 可以固定分母而让分子最大化,所以上面的函数可以变成:


maxa,baTΣ12b


s.t.aTΣ11a=1,bTΣ22b=1


构造拉格朗日等式:


L=aTΣ12b−λ12(aTΣ11a−1)−λ22(bTΣ22b−1)


L 分别对a,b 求导,可以得到:


∂L∂a=Σ12b−λ1Σ11a=0

∂L∂b=Σ21a−λ2Σ22b=0


根据约束条件,可以得到:


λ1=λ2=aTΣ12b


所以只要求出 λ1 或者 λ2 就可以得到最大的相关系数。令 λ=λ1=λ2.

通过上面的偏导数,我们可以得到:


Σ−111Σ12b=λa

Σ−122Σ21a=λb


写成矩阵形式:


(Σ−11100Σ−122)(0Σ21Σ120)(ab)=λ(ab)


令:


B=(Σ1100Σ22),A=(0Σ21Σ120)w=(ab)

,

那么,上式可以表示成:

B−1Aw=λw


所以,λ 和 w 就是B−1A 的特征值和特征向量。我们可以求出 B−1A 的特征值和特征向量,然后利用特征向量将原来的特征

x1,x2做映射。对应特征值 λ 的求解,可以有更简单的方法,从上面的偏导数,我们可以得到如下等式:


Σ−111Σ12Σ−122Σ21a=λ2a


我们可以利用上面的表达式求出 λ 和 a,然后再待会上面的偏导数等式求出 b.

λ 就是 u,v的相关系数,u,v 就是一对典型变量(canonical variables)。按照 B−1A 的特征值从大到小排列,可以求出一系列的典型变量。特征值越大,说明典型变量的相关性越强。