典型关联分析(CCA)算法原理
2015-07-24 16:13
399 查看
典型关联分析(CCA)算法原理
1、问题的提出
我们知道,两个随机变量x、y之间的线性关系可以通过对这两个变量的N组样本对进行线性回归求得。但是,如果要求两组随机变量x、y之间的线性关系,则可以用典型关联分析(Canonical correlation analysis)来求解。CCA是寻找两组变量对应的两个线性变换wx,wy\textbf{w}_x,\textbf{w}_y(分别和x,y的维数相等),使得通过线性变换后的两个组合变量(即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 这两组数据的具体值,并可画图观察线性关系。
相关文章推荐
- Spring @Transaction配置示例及发生不回滚原因深度剖析
- 线段覆盖
- hdu5289 2015多校联合第一场1002 Assignment
- Permutations
- HDU 2602 Bone Collector (01背包)
- 推荐方法和评价指标体系
- 感谢及建议(网友留言)
- [MySQL] gap lock/next-key lock浅析
- resteasy入门
- 个人信息发布平台
- 第十六章――处理锁、阻塞和死锁(1)――确定长时间运行的事务
- redis--windows下 安装配置
- redis--windows下 安装配置
- redis--windows下 安装配置
- 最小错误率贝叶斯决策
- vs2005 为函数自动添加注释
- git命令 详解
- Java 类的卸载机制
- 找点 nyoj 891
- 【源代码】java.util.Vector