您的位置:首页 > 其它

典型关联分析(CCA)算法原理

2015-07-24 16:13 399 查看

典型关联分析(CCA)算法原理

1、问题的提出

我们知道,两个随机变量x、y之间的线性关系可以通过对这两个变量的N组样本对进行线性回归求得。但是,如果要求两组随机变量xy之间的线性关系,则可以用典型关联分析(Canonical correlation analysis)来求解。CCA是寻找两组变量对应的两个线性变换wx,wy\textbf{w}_x,\textbf{w}_y(分别和xy的维数相等),使得通过线性变换后的两个组合变量(即wTxx,wTyy\textbf{w}_x^T\textbf{x},\textbf{w}_y^T\textbf{y})之间的相关系数最大。

2、算法实现

假设两组随机变量有N个样本,把这N个样本都进行线性变换,得到以下两组数据:

Sxwx=(wTxx1,...,wTxxN)S_{x}\textbf{w}_x = (\textbf{w}_x^T\textbf{x}_1,...,\textbf{w}_x^T\textbf{x}_N)

Sywy=(wTyy1,...,wTyyN)S_{y}\textbf{w}_y = (\textbf{w}_y^T\textbf{y}_1,...,\textbf{w}_y^T\textbf{y}_N)

而CCA算法要做的就是最大化这两组数据之间的相关性,可以表示为下式:

ρ=maxwx,wycorr(Sxwx,Sywy)=maxwx,wy⟨Sxwx,Sywy⟩||Sxwx||∣∣|Sywy∣∣|\rho = \operatorname*{max}\limits_{\textbf{w}_x,\textbf{w}_y} corr(S_{x}\textbf{w}_x,S_{y}\textbf{w}_y) = \operatorname*{max}\limits_{\textbf{w}_x,\textbf{w}_y}\frac{\langle S_{x}\textbf{w}_x,S_{y}\textbf{w}_y \rangle}{\left || S_{x}\textbf{w}_x \right || \left || S_{y}\textbf{w}_y \right ||},(注意:已默认两组数据均值为零)

通过数学推导(详见《canonical correlation analysis: an overview with application to learning methods》),

可以得到如下两个公式:

wy=C−1yyCyxwxλ\textbf{w}_y = \frac{C_{yy}^{-1}C_{yx}\textbf{w}_x}{\lambda} , (2.1)

CxyC−1yyCyxwx=λ2CxxwxC_{xy}C_{yy}^{-1}C_{yx}\textbf{w}_x = \lambda^2C_{xx}\textbf{w}_x ,(2.2)

因为协方差矩阵Cxx,CyyC_{xx},C_{yy}是对称正定的,所以可以进行完整的Choleskey分解如下:

Cxx=Rxx⋅R′xxC_{xx} = R_{xx}\cdot R_{xx}'

令ux=R′xx⋅wx\textbf{u}_x = R_{xx}'\cdot \textbf{w}_x,代入2.2式可得:

R−1xxCxyC−1yyCyxR−1xx′ux=λ2uxR_{xx}^{-1}C_{xy}C_{yy}^{-1}C_{yx}{R_{xx}^{-1}}'\textbf{u}_x = \lambda^2\textbf{u}_x

这就是一个特征值求解问题Ax=λ2xA\textbf{x} = \lambda^2\textbf{x} 。求出的特征向量就是wx\textbf{w}_x,代入2.1式可以求出wy,而ρ=λ\textbf{w}_y,而\rho=\lambda。

得到以上结果后可算出Sxwx,SywyS_{x}\textbf{w}_x,S_{y}\textbf{w}_y 这两组数据的具体值,并可画图观察线性关系。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: