典型相关分析(CCA)

典型相关分析的基本思想 Canonical Correlation Analysis

CCA典型相关分析
(canonical correlation analysis)利用综合变量对之间的相关关系来反映两组指标之间的整体相关性的多元统计分析方法。它的基本原理是:为了从总体上把握两组指标之间的相关关系,分别在两组变量中提取有代表性的两个综合变量U1和V1(分别为两个变量组中各变量的线性组合),利用这两个综合变量之间的相关关系来反映两组指标之间的整体相关性。

Canonical Correlation Analysis典范相关分析/Canonical Correspondence Analysis典范对应分析

简单相关系数描述两组变量的相关关系的缺点:只是孤立考虑单个X与单个Y间的相关,没有考虑X、Y变量组内部各变量间的相关。两组间有许多简单相关系数,使问题显得复杂,难以从整体描述。典型相关是简单相关、多重相关的推广。典型相关是研究两组变量之间相关性的一种统计分析方法。也是一种降维技术。
1936年,Hotelling提出典型相关分析。考虑两组变量的线性组合, 并研究它们之间的相关系数p(u,v).在所有的线性组合中, 找一对相关系数最大的线性组合, 用这个组合的单相关系数来表示两组变量的相关性, 叫做两组变量的典型相关系数, 而这两个线性组合叫做一对典型变量。在两组多变量的情形下, 需要用若干对典型变量才能完全反映出它们之间的相关性。下一步, 再在两组变量的与u1,v1不相关的线性组合中, 找一对相关系数最大的线性组合, 它就是第二对典型变量, 而且p(u2,v2)就是第二个典型相关系数。这样下去, 可以得到若干对典型变量, 从而提取出两组变量间的全部信息。
典型相关分析的实质就是在两组随机变量中选取若干个有代表性的综合指标(变量的线性组合), 用这些指标的相关关系来表示原来的两组变量的相关关系。这在两组变量的相关性分析中, 可以起到合理的简化变量的作用; 当典型相关系数足够大时, 可以像回归分析那样, 由- 组变量的数值预测另一组变量的线性组合的数值。

典型关联分析(Canonical Correlation Analysis)

[pdf版本] 典型相关分析.pdf
1. 问题

在线性回归中,我们使用直线来拟合样本点,寻找n维特征向量X和输出结果(或者叫做label)Y之间的线性关系。其中clip_image002clip_image004。然而当Y也是多维时,或者说Y也有多个特征时,我们希望分析出X和Y的关系。

当然我们仍然可以使用回归的方法来分析,做法如下:

假设clip_image002[1]clip_image006,那么可以建立等式Y=AX如下

clip_image008

其中clip_image010,形式和线性回归一样,需要训练m次得到m个clip_image012

这样做的一个缺点是,Y中的每个特征都与X的所有特征关联,Y中的特征之间没有什么联系。

我们想换一种思路来看这个问题,如果将X和Y都看成整体,考察这两个整体之间的关系。我们将整体表示成X和Y各自特征间的线性组合,也就是考察clip_image014clip_image016之间的关系。

这样的应用其实很多,举个简单的例子。我们想考察一个人解题能力X(解题速度clip_image018,解题正确率clip_image020)与他/她的阅读能力Y(阅读速度clip_image022,理解程度clip_image024)之间的关系,那么形式化为:

clip_image026  clip_image028

然后使用Pearson相关系数

clip_image030

来度量u和v的关系,我们期望寻求一组最优的解a和b,使得Corr(u, v)最大,这样得到的a和b就是使得u和v就有最大关联的权重。

到这里,基本上介绍了典型相关分析的目的。

2. CCA表示与求解

给定两组向量clip_image032clip_image034(替换之前的x为clip_image032[1],y为clip_image034[1]),clip_image032[2]维度为clip_image036clip_image034[2]维度为clip_image038,默认clip_image040。形式化表示如下:

clip_image042

clip_image044是x的协方差矩阵;左上角是clip_image032[3]自己的协方差矩阵;右上角是clip_image046;左下角是clip_image048,也是clip_image050的转置;右下角是clip_image034[3]的协方差矩阵。

与之前一样,我们从clip_image032[4]clip_image034[4]的整体入手,定义

clip_image052 clip_image054

我们可以算出u和v的方差和协方差:

clip_image056 clip_image058 clip_image060

上面的结果其实很好算,推导一下第一个吧:

clip_image062

最后,我们需要算Corr(u,v)了

clip_image064

我们期望Corr(u,v)越大越好,关于Pearson相关系数,《数据挖掘导论》给出了一个很好的图来说明:

clip_image066

横轴是u,纵轴是v,这里我们期望通过调整a和b使得u和v的关系越像最后一个图越好。其实第一个图和最后一个图有联系的,我们可以调整a和b的符号,使得从第一个图变为最后一个。

接下来我们求解a和b。

回想在LDA中,也得到了类似Corr(u,v)的公式,我们在求解时固定了分母,来求分子(避免a和b同时扩大n倍仍然符号解条件的情况出现)。这里我们同样这么做。

这个优化问题的条件是:

Maximize clip_image068

Subject to: clip_image070

求解方法是构造Lagrangian等式,这里我简单推导如下:

clip_image072

求导,得

clip_image074

clip_image076

令导数为0后,得到方程组:

clip_image078

clip_image080

第一个等式左乘clip_image082,第二个左乘clip_image084,再根据clip_image086,得到

clip_image088

也就是说求出的clip_image090即是Corr(u,v),只需找最大clip_image090[1]即可。

让我们把上面的方程组进一步简化,并写成矩阵形式,得到

clip_image092

clip_image094

写成矩阵形式

clip_image096

clip_image098

那么上式可以写作:

clip_image100

显然,又回到了求特征值的老路上了,只要求得clip_image102的最大特征值clip_image104,那么Corr(u,v)和a和b都可以求出。

在上面的推导过程中,我们假设了clip_image106clip_image108均可逆。一般情况下都是可逆的,只有存在特征间线性相关时会出现不可逆的情况,在本文最后会提到不可逆的处理办法。

再次审视一下,如果直接去计算clip_image102[1]的特征值,复杂度有点高。我们将第二个式子代入第一个,得

clip_image110

这样先对clip_image112求特征值clip_image114和特征向量clip_image116,然后根据第二个式子求得b。

待会举个例子说明求解过程。

假设按照上述过程,得到了clip_image090[2]最大时的clip_image118clip_image120。那么clip_image118[1]clip_image120[1]称为典型变量(canonical variates),clip_image090[3]即是u和v的相关系数。

最后,我们得到u和v的等式为:

clip_image122 clip_image124

我们也可以接着去寻找第二组典型变量对,其最优化条件是

Maximize clip_image126

Subject to: clip_image128

clip_image130

其实第二组约束条件就是clip_image132

计算步骤同第一组计算方法,只不过是clip_image090[4]clip_image112[1]的第二大特征值。

得到的clip_image134clip_image136其实也满足

clip_image138  clip_image140

总结一下,i和j分别表示clip_image142clip_image144得到结果

clip_image146

clip_image148

3. CCA计算例子

我们回到之前的评价一个人解题和其阅读能力的关系的例子。假设我们通过对样本计算协方差矩阵得到如下结果:

clip_image150

clip_image152

然后求clip_image112[2],得

clip_image154

这里的A和前面的clip_image156中的A不是一回事(这里符号有点乱,不好意思)。

然后对A求特征值和特征向量,得到

clip_image158

然后求b,之前我们说的方法是根据clip_image160求b,这里,我们也可以采用类似求a的方法来求b。

回想之前的等式

clip_image092[1]

clip_image094[1]

我们将上面的式子代入下面的,得

clip_image162

然后直接对clip_image164求特征向量即可,注意clip_image164[1]clip_image112[3]的特征值相同,这个可以自己证明下。

不管使用哪种方法,

clip_image166

clip_image168

这里我们得到a和b的两组向量,到这还没完,我们需要让它们满足之前的约束条件

clip_image170

这里的clip_image172应该是我们之前得到的VecA中的列向量的m倍,我们只需要求得m,然后将VecA中的列向量乘以m即可。

clip_image174

这里的clip_image176是VecA的列向量。

clip_image178

因此最后的a和b为:

clip_image180

第一组典型变量为

clip_image182

相关系数

clip_image184

第二组典型变量为

clip_image186

相关系数

clip_image188

这里的clip_image190(解题速度),clip_image192(解题正确率),clip_image194(阅读速度),clip_image196(阅读理解程度)。他们前面的系数意思不是特征对单个u或v的贡献比重,而是从u和v整体关系看,当两者关系最密切时,特征计算时的权重。

  • 25
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
CCACanonical Correlation Analysis)典型相关分析是一种多元统计分析方法,用于研究两组变量之间的线性关系。其基本思想是将两组变量通过线性变换映射到低维空间中,使得两组变量在该空间中的相关性最大。具体来说,CCA通过构造Lagrangian等式,利用拉格朗日乘子法求解出两组变量的典型相关变量,即两组变量在低维空间中的投影向量,从而得到它们之间的典型相关系数。典型相关系数越大,说明两组变量之间的相关性越强。 在实际应用中,CCA可以用于数据降维、特征提取、模式识别等领域。例如,在故障检测中,可以利用CCA来分析传感器数据和故障模式之间的关系,从而实现故障检测和诊断。 代码示例: ```python import numpy as np from scipy.linalg import eig # 构造两组变量X和Y X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) Y = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]]) # 计算X和Y的协方差矩阵 Cxx = np.cov(X.T) Cyy = np.cov(Y.T) Cxy = np.cov(X.T, Y.T) # 计算广义特征值和广义特征向量 eigvals, eigvecs = eig(np.dot(np.dot(np.linalg.inv(Cxx), Cxy), np.dot(np.linalg.inv(Cyy), Cxy.T))) # 取前k个最大的广义特征值对应的广义特征向量 k = 2 idx = np.argsort(eigvals)[::-1][:k] Wx = eigvecs[:, idx].real Wy = np.dot(np.dot(np.linalg.inv(Cyy), Cxy.T), Wx).real # 计算典型相关变量 U = np.dot(X, Wx) V = np.dot(Y, Wy) # 计算典型相关系数 R = np.corrcoef(U.T, V.T)[k:, :k] print("典型相关系数:", R) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值