典型关联分析(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=λ2Cxxwx C_{xy}C_{yy}^{-1}C_{yx}\textbf{w}_x = \lambda^2C_{xx}\textbf{w}_x ,(2.2)

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

Cxx=Rxx⋅R′xx C_{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=λ2ux R_{xx}^{-1}C_{xy}C_{yy}^{-1}C_{yx}{R_{xx}^{-1}}'\textbf{u}_x = \lambda^2\textbf{u}_x

这就是一个特征值求解问题 Ax=λ2x A\textbf{x} = \lambda^2\textbf{x} 。求出的特征向量就是 wx \textbf{w}_x,代入2.1式可以求出 wy,而ρ=λ \textbf{w}_y,而\rho=\lambda。
得到以上结果后可算出 Sxwx,Sywy S_{x}\textbf{w}_x,S_{y}\textbf{w}_y 这两组数据的具体值,并可画图观察线性关系。

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

  1. 典型关联分析CCA(canonical correlation analysis)

    先看两个数学概念: 相关系数(参看百度百科) 相关系数是用以反映变量之间相关关系密切程度的统计指标.相关系数是按积差方法计算,同样以两变量与各自平均值的离差为基础,通过两个离差相乘来反映两变量之间相关 ...

  2. 典型相关分析(cca)原理_CCA典型关联分析原理与Python案例

    文章来源于"脑机接口社区" CCA典型关联分析原理与Python案例​mp.weixin.qq.com Rose今天分享一下CCA的相关原理以及Python应用,CCA在EEG等脑 ...

  3. 典型相关性分析(CCA)原理详细总结合集

    典型相关性分析(CCA) 最近研究CCA相关的算法,从头原理入手 推荐以下两位大佬的Blog,希望对你有所帮助. 刘建平Pinard 网名为JerryLead的大佬 第一位大佬的Blog: 第二位大佬 ...

  4. 典型相关分析python实现_CCA典型关联分析原理与Python案例

    文章来源于"脑机接口社区"CCA典型关联分析原理与Python案例​mp.weixin.qq.com Rose今天分享一下CCA的相关原理以及Python应用,CCA在EEG等脑电 ...

  5. 交叉分解(Cross decomposition)、典型关联分析(Canonical Correlation Analysis,CCA)、偏最小二乘回归PLS

    交叉分解(Cross decomposition).典型关联分析(Canonical Correlation Analysis,CCA).偏最小二乘回归PLS 目录 交叉分解.典型关联分析(Canon ...

  6. 机器学习(32)之典型相关性分析(CCA)详解 【文末有福利......】

    微信公众号 关键字全网搜索最新排名 [机器学习算法]:排名第一 [机器学习]:排名第一 [Python]:排名第三 [算法]:排名第四 人工智能与Python公开课 限时免费 文末领取 前言 典型关联 ...

  7. 独立成分分析FastICA算法原理

    独立成分分析FastICA算法原理 首先对于d维的随机变量x∈Rd×1\displaystyle \mathbf{x} \in R^{d\times 1}x∈Rd×1,我们假设他的产生过程是由相互独立 ...

  8. 核典型关联分析(KCCA)算法原理

    Kernel Canonical Correlation Analysis 1.CCA的不足 普通的线性CCA只能探索两组随机变量之间的线性关系,而在实际情况中,变量间的关系往往是非线性的,于是非线性 ...

  9. 机器学习-关联之Apriori算法原理及实战

    Apriori算法 前言 关联分析是一种无监督的机器学习方法,主要用于发现大规模数据集中事物之间的依存性和关联性.挖掘数据中隐藏的有价值的关系(如频繁项集.关联规则),有利于对相关事物进行预测,也能帮 ...

最新文章

  1. 团队需要Scrum Master做这六件事-Scrum中文网
  2. win服务器管理器“丢失”了怎么办?
  3. 彻底搞清楚浏览器渲染过程
  4. JAVA面向对象程序设计(第二版) 袁绍欣 第四章答案
  5. 工业级PoE交换机的分类知识详解
  6. 分披萨问题_比萨疯狂问题
  7. MySQL笔记-左连接的使用(left join有关联的多表查询)
  8. python解析格式文件
  9. JQuery的 serializeObject 序列化form表单
  10. 第三章:学生管理模块
  11. 江苏大学考研计算机录取率,报考数据分析—江苏大学
  12. (二)开源IT资产管理系统--OCS(win)客户端代理安装
  13. 【路由和交换之H3C自导自演】
  14. SpringBoot整合QueryDSL
  15. java如何通过拼音搜索功能_如何实现拼音搜索
  16. C#学习记录——C#项目开发实战:快递单打印精灵(一)
  17. 1972:【15NOIP普及组】推销员
  18. 初学cocoa开发:带你走入不一样的世界
  19. SILENTCAST是另一类UBUNTU最好的GIF视频录制器
  20. 网页应该如何录屏呢?

热门文章

  1. 关于检测目标主机的漏洞
  2. LOTUS调用RFC
  3. 2021-2-15 基础语法
  4. Eclipse 12大使用技巧
  5. C++ MFC 画函数曲线(包含坐标)
  6. html header设置语言,Content-Language
  7. android 高仿拼多多,Android高仿拼多多分类列表
  8. 自由拼音输入法的测试
  9. 【PCB专题】怎么样将BMP图片导入Allegro中生成log
  10. NB-IOT物联卡与物联流量卡的区别