微信公众号

关键字全网搜索最新排名

【机器学习算法】:排名第一

【机器学习】:排名第一

【Python】:排名第三

【算法】:排名第四

人工智能与Python公开课

限时免费

文末领取

前言

典型关联分析(Canonical Correlation Analysis,简称CCA)是最常用的挖掘数据关联关系的算法之一。比如我们拿到两组数据,第一组是人身高和体重的数据,第二组是对应的跑步能力和跳远能力的数据。那么我们能不能说这两组数据是相关的呢?CCA可以帮助我们分析这个问题。

CCA概述

在数理统计里面,都知道相关系数这个概念。假设有两组一维的数据集X和Y,则相关系数ρ的定义为:


其中cov(X,Y)是X和Y的协方差,而D(X),D(Y)分别是X和Y的方差。相关系数ρ的取值为[-1,1], ρ的绝对值越接近于1,则X和Y的线性相关性越高。越接近于0,则X和Y的线性相关性越低。


虽然相关系数可以很好的帮我们分析一维数据的相关性,但是对于高维数据就不能直接使用了。如上所述,如果X是包括人身高和体重两个维度的数据,而Y是包括跑步能力和跳远能力两个维度的数据,就不能直接使用相关系数的方法。那我们能不能变通一下呢?CCA给了我们变通的方法。

CCA使用的方法是将多维的X和Y都用线性变换为1维的X'和Y',然后再使用相关系数来看X'和Y'的相关性。将数据从多维变到1位,也可以理解为CCA是在进行降维,将高维数据降到1维,然后再用相关系数进行相关性的分析。

CCA算法思想

上面提到CCA是将高维的两组数据分别降维到1维,然后用相关系数分析相关性。但是有一个问题是,降维的标准是如何选择的呢?回想下主成分分析PCA,降维的原则是投影方差最大;再回想下线性判别分析LDA,降维的原则是同类的投影方差小,异类间的投影方差大。对于我们的CCA,它选择的投影标准是降维到1维后,两组数据的相关系数最大。

假设数据集是X和Y,X为n1×m的样本矩阵,Y为n2×m的样本矩阵.其中m为样本个数,而n1,n2分别为X和Y的特征维度。对于X矩阵,将其投影到1维,对应的投影向量为a, 对于Y矩阵,将其投影到1维,对应的投影向量为b, 这样X ,Y投影后得到的一维向量分别为X',Y'。我们有


CCA的优化目标是最大化ρ(X′,Y′),得到对应的投影向量a,b,即


在投影前,一般会把原始数据进行标准化,得到均值为0而方差为1的数据X和Y。这样我们有:


由于X,Y的均值均为0,则


令SXY=cov(X,Y),则优化目标可以转化为:


由于分子分母增大相同的倍数,优化目标结果不变,我们可以采用和SVM类似的优化方法,固定分母,优化分子,具体的转化为


进而CCA算法的目标最终转化为一个凸优化过程,只要求出了这个优化目标的最大值,就是前面提到的多维X和Y的相关性度量,而对应的a,b则为降维时的投影向量。

这个函数优化一般有两种方法,第一种是奇异值分解SVD,第二种是特征分解,两者得到的结果一样。

SVD求解CCA

对于上面的优化目标,可以做一次矩阵标准化后在使用SVD来求解。

首先令


进而


优化目标变成下式:



可以看出,SVD的求解方式非常简洁方便。但如果不熟悉SVD的话,也可以用传统的拉格朗日函数加上特征分解来完成这个函数的优化。

特征值分解求CCA

特征分解方式比较传统,利用拉格朗日函数,优化目标转化为最大化下式:


分别对a,b求导并令结果为0得:


进而


现在拉格朗日系数就是我们要优化的目标。继续将上面的两个式子做整理得:


将上面第二个式子带入第一个式子得到


要求最大的相关系数λ,只需要对上面的矩阵做特征分解,找出最大的特征值取平方根即可,此时最大特征值对应的特征向量即为X的线性系数a。同样的办法,可以找到最大特征值对应的特征向量即为Y的线性系数b。

可以看出特征分解的方法要比SVD复杂,但是两者求得的结果其实是等价的,只要利用SVD和特征分解之间的关系就很容易发现两者最后的结果相同。

CCA算法流程

对CCA算法流程做一个归纳,以SVD方法为例:


输入:各为m个的样本X和Y,X和Y的维度都大于1

输出:X,Y的相关系数ρ,X和Y的线性系数向量a和b

流程

1)计算X的方差SXX, Y的方差SYY,X和Y的协方差SXY

2)  计算矩阵


3)对矩阵M进行奇异值分解,得到最大的奇异值ρ,和最大奇异值对应的左右奇异向量

4)  计算X和Y的线性系数向量a和b,


总结

CCA算法广泛的应用于数据相关度的分析,同时还是偏最小二乘法的基础。但是由于它依赖于数据的线性表示,当我们的数据无法线性表示时,CCA就无法使用,此时我们可以利用核函数的思想,将数据映射到高维后,再利用CCA的思想降维到1维,求对应的相关系数和线性关系,这个算法一般称为KCCA。此外,在算法里只找了相关度最大的奇异值或者特征值,作为数据的相关系数,实际上我们也可以像PCA一样找出第二大奇异值,第三大奇异值,。。。得到第二相关系数和第三相关系数。然后对数据做进一步的相关性分析。但是一般的应用来说,找出第一相关系数就可以了。

欢迎分享给他人让更多的人受益


参考:

  1. 周志华《机器学习》

  2. Neural Networks and Deep Learning by By Michael Nielsen

  3. 博客园

    http://www.cnblogs.com/pinard/p/6288716.html

  4. 李航《统计学习方法》

  5. Deep Learning, book by Ian Goodfellow, Yoshua Bengio, and Aaron Courville


近期热文

精选 | 2017年全球人工智能人才报告(附73页完整版PDF)

干货 | 自然语言处理(2)之浅谈向量化与Hash-Trick

机器学习(31)之频繁集挖掘FP Tree详解

推荐 | 机器学习经典总结,入门必读【17000字,可下载PDF】

机器学习(30)之线性判别分析(LDA)原理详解

加入微信机器学习交流群

请添加微信:guodongwe1991

备注姓名-单位-研究方向

(小编晚上才有时间,回复的可能比较晚)

广告、商业合作

请添加微信:guodongwe1991

(备注:商务合作)


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

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

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

  2. 基于典型相关性分析(CCA)的多视图学习方法综述

    本文主要借鉴自<Canonical Correlation Analysis (CCA) Based Multi-View Learning: An Overview>,转载自伍冬睿科学网 ...

  3. spss相关性分析看结果_利用spss做Pearson相关性分析步骤详解

    有蛮多的学生私信老徐问如何利用spss做相关性分析,其实相关性分析应该是spss分析中较为基础的一个功能应用,很多学生可能是因为跨专业或者对统计软件了解较少,在没有经过系统学习的前提下,感觉云里雾里. ...

  4. 基于spark mllib_Spark高级分析指南 | 机器学习和分析流程详解(下)

    - 点击上方"中国统计网"订阅我吧!- 我们在Spark高级分析指南 | 机器学习和分析流程详解(上)快速介绍了一下不同的高级分析应用和用力,从推荐到回归.但这只是实际高级分析过程 ...

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

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

  6. 【机器学习】线性回归实战案例一:多元素情况下广告投放效果分析步骤详解

    线性回归实战案例一:多元素情况下广告投放效果分析步骤详解 2 线性回归 2.1 案例一:多元素情况下广告投放效果分析 2.1.1 模块加载与绘图布局样式设置 2.1.2 加载数据和数据筛选 2.1.3 ...

  7. 第六讲 典型相关性分析

    目录 简介 步骤 SPSS操作步骤 简介 典型相关性分析(Canonical Correlation Analysis),研究两组变量(每组变量中都可能又多个指标)之间相关关系的一种多元统计方法.它能 ...

  8. Zabbix+MatrixDB大规模监控与分析解决方案详解(含PPT)

    首先,谢谢原作者:(此文为转载的文章,现将原地址贴出如下:以下文章来源于yMatrix,作者MatrixDB团队Zabbix+MatrixDB大规模监控与分析解决方案详解(含PPT)) 更多精彩Zab ...

  9. wav文件格式分析与详解

    wav文件格式分析与详解 WAV文件是在PC机平台上很常见的.最经典的多媒体音频文件,最早于1991年8月出现在Windows 3.1操作系统上,文件扩展名为WAV,是WaveFom的简写,也称为波形 ...

最新文章

  1. ASPNET Core 2.x中的Kestrel服务器
  2. 信息学奥赛一本通C++语言——1057:简单计算器
  3. java 7 40,Java 7u40 Java SE 8 sun.reflect.Reflection.getCallerClass
  4. 使用万能框架HttpHelper抓取安卓APP数据
  5. postgresql 连接超时_关于超时:如何自动关闭PostgreSQL中的空闲连接?
  6. 零基础学python全彩版答案-零基础学Python(全彩版)
  7. 宋宝华:为了不忘却的纪念,评Linux 5.13内核
  8. [UVA1449] Dominating Patterns(AC自动机,STL,计数,神坑)
  9. Vue:成功解决[Vue warn]: Failed to resolve directive: modle (found in Anonymous)
  10. 上海市区广场、商场、大厦中英文对照大全
  11. 一个好用的软件定时器模块MultiTimer
  12. 用request模块爬取拉钩招聘信息
  13. 电脑数据迁移高招,怎么把旧电脑的数据迁移到新电脑
  14. python爬虫scrapy比较常用的三个命令
  15. 处理.Dwg文件用哪种技术方案?ObjectARX,RealDWG还是Teigha(ODA)?
  16. Flutter:如何响应触摸事件
  17. Chinese Rings 矩阵快速幂
  18. SE5实现MiDas模型的运行
  19. 测试工程师必备测试常识
  20. 【商业信息】GB 11643—1999 公民身份号码

热门文章

  1. Java学习需要具备什么条件?
  2. 关于adb shell screencap 1.png
  3. 跨境电商亚马逊运用淘宝无货源店群模式?三点不可为
  4. 阿里云AI平台NLP使用
  5. 看完这篇文章,保你学会C语言while循环与 do while 循环
  6. Imagenet 完整数据集下载
  7. 绿色无捆绑大白菜U盘启动盘制作
  8. android view 半透明图片,Android ImageView 图片设置为透明
  9. 51单片机:直流电机与步进电机
  10. 撸一个自动换壁纸桌面应用