典型关联分析(CCA)算法原理
1、问题的提出
我们知道,两个随机变量x、y之间的线性关系可以通过对这两个变量的N组样本对进行线性回归求得。但是,如果要求两组随机变量x、y之间的线性关系,则可以用典型关联分析(Canonical correlation analysis)来求解。CCA是寻找两组变量对应的两个线性变换 wx,wy (分别和x,y的维数相等),使得通过线性变换后的两个组合变量(即 wTxx,wTyy )之间的相关系数最大。
2、算法实现
假设两组随机变量有N个样本,把这N个样本都进行线性变换,得到以下两组数据:
Sxwx=(wTxx1,...,wTxxN)
Sywy=(wTyy1,...,wTyyN)
而CCA算法要做的就是最大化这两组数据之间的相关性,可以表示为下式:
ρ=maxwx,wycorr(Sxwx,Sywy)=maxwx,wy⟨Sxwx,Sywy⟩||Sxwx||∣∣|Sywy∣∣| ,(注意:已默认两组数据均值为零)
通过数学推导(详见《canonical correlation analysis: an overview with application to learning methods》),
可以得到如下两个公式:
wy=C−1yyCyxwxλ , (2.1)
CxyC−1yyCyxwx=λ2Cxxwx ,(2.2)
因为协方差矩阵 Cxx,Cyy 是对称正定的,所以可以进行完整的Choleskey分解如下:
Cxx=Rxx⋅R′xx
令 ux=R′xx⋅wx ,代入2.2式可得:
R−1xxCxyC−1yyCyxR−1xx′ux=λ2ux
这就是一个特征值求解问题
Ax=λ2x
。求出的特征向量就是
wx
,代入2.1式可以求出
wy,而ρ=λ
。
得到以上结果后可算出
Sxwx,Sywy
这两组数据的具体值,并可画图观察线性关系。