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

2017 年 12 月 16 日 机器学习算法与Python学习

微信公众号

关键字全网搜索最新排名

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

【机器学习】:排名第一

【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

(备注:商务合作)


登录查看更多
12

相关内容

【经典书】机器学习:贝叶斯和优化方法,1075页pdf
专知会员服务
390+阅读 · 2020年6月8日
【清华大学】图随机神经网络,Graph Random Neural Networks
专知会员服务
152+阅读 · 2020年5月26日
【干货书】机器学习Python实战教程,366页pdf
专知会员服务
331+阅读 · 2020年3月17日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
189+阅读 · 2020年3月12日
【经典书】精通机器学习特征工程,中文版,178页pdf
专知会员服务
347+阅读 · 2020年2月15日
谷歌机器学习速成课程中文版pdf
专知会员服务
142+阅读 · 2019年12月4日
机器学习(33)之局部线性嵌入(LLE)【降维】总结
机器学习算法与Python学习
7+阅读 · 2017年12月21日
BAT机器学习面试题及解析(266-270题)
七月在线实验室
6+阅读 · 2017年12月13日
机器学习(30)之线性判别分析(LDA)原理详解
机器学习算法与Python学习
11+阅读 · 2017年12月6日
动手写机器学习算法:K-Means聚类算法
七月在线实验室
5+阅读 · 2017年12月6日
机器学习(29)之奇异值分解SVD原理与应用详解
机器学习算法与Python学习
3+阅读 · 2017年11月30日
机器学习(27)【降维】之主成分分析(PCA)详解
机器学习算法与Python学习
9+阅读 · 2017年11月22日
机器学习(23)之GBDT详解
机器学习算法与Python学习
12+阅读 · 2017年10月25日
机器学习(18)之支持向量机原理(三)线性不可分支持向量机与核函数
机器学习算法与Python学习
3+阅读 · 2017年9月23日
机器学习(17)之集成学习原理总结
机器学习算法与Python学习
19+阅读 · 2017年9月16日
机器学习(13)之最大熵模型详解
机器学习算法与Python学习
7+阅读 · 2017年8月24日
VIP会员
相关VIP内容
【经典书】机器学习:贝叶斯和优化方法,1075页pdf
专知会员服务
390+阅读 · 2020年6月8日
【清华大学】图随机神经网络,Graph Random Neural Networks
专知会员服务
152+阅读 · 2020年5月26日
【干货书】机器学习Python实战教程,366页pdf
专知会员服务
331+阅读 · 2020年3月17日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
189+阅读 · 2020年3月12日
【经典书】精通机器学习特征工程,中文版,178页pdf
专知会员服务
347+阅读 · 2020年2月15日
谷歌机器学习速成课程中文版pdf
专知会员服务
142+阅读 · 2019年12月4日
相关资讯
机器学习(33)之局部线性嵌入(LLE)【降维】总结
机器学习算法与Python学习
7+阅读 · 2017年12月21日
BAT机器学习面试题及解析(266-270题)
七月在线实验室
6+阅读 · 2017年12月13日
机器学习(30)之线性判别分析(LDA)原理详解
机器学习算法与Python学习
11+阅读 · 2017年12月6日
动手写机器学习算法:K-Means聚类算法
七月在线实验室
5+阅读 · 2017年12月6日
机器学习(29)之奇异值分解SVD原理与应用详解
机器学习算法与Python学习
3+阅读 · 2017年11月30日
机器学习(27)【降维】之主成分分析(PCA)详解
机器学习算法与Python学习
9+阅读 · 2017年11月22日
机器学习(23)之GBDT详解
机器学习算法与Python学习
12+阅读 · 2017年10月25日
机器学习(18)之支持向量机原理(三)线性不可分支持向量机与核函数
机器学习算法与Python学习
3+阅读 · 2017年9月23日
机器学习(17)之集成学习原理总结
机器学习算法与Python学习
19+阅读 · 2017年9月16日
机器学习(13)之最大熵模型详解
机器学习算法与Python学习
7+阅读 · 2017年8月24日
Top
微信扫码咨询专知VIP会员