典型相关分析(Canonical Correlation Analysis)是研究两组变量之间相关关系的一种多元统计方法,它能够揭示出两组变量之间的内在联系。 在一元统计分析中,用相关系数来衡量两个随机变量的线性相关关系,用复相关系数研究一个随机变量与多个随机变量的线性相关关系。然而,这些方法均无法用于研究两组变量之间的相关关系,于是提出了CCA。 其基本思想和主成分分析非常相似。首先,在每组变量中寻找出变量的线性组合,使得两组的线性组合之间具有最大的相关系数;然后选取和已经挑选出的这对线性组合不相关的另一对线性组合,并使其相关系数最大,如此下去,直到两组变量的相关性被提取完毕为止。被选出的线性组合配对称为典型变量,它们的相关系数称为典型相关系数。
设有两组随机变量X=(x1,x2,⋯,xp)′和Y=(y1,y2,⋯,yq)′,不妨设p≤q。设第一组变量均值为EX=μ1,方差为Var(X)=cov(X,X)=Σ11。第二组变量均值为EY=μ2,方差为Var(Y)=cov(Y,Y)=Σ22。第一组与第二组变量的协方差矩阵为cov(X,Y)=Σ12=Σ′21。 分别对两组变量做线性组合,得式(1)、(2),如下: 所以U,V的方差,协方差,相关系数为式(3)、(4)、(5)、(6),如下:: 其中U,V称为典型变量,它们之间的相关系数ρ称为典型相关系数。 CCA要解决的问题是,在所有线性组合U和V中选取典型相关系数最大的那对,即选取a(1),b(1)使U1=(a(1))′X与V1=(b(1))′Y之间的相关系数最大,这里(U1,V1)称为第一对典型相关变量;然后在选取a(2),b(2)使得U1=(a(2))′X,V2(b(2))′Y,在与U1,V1不相关的情况下,使得(U2,V2)的相关系数最大,称为第二对典型相关变量;如此继续下去,直到所有分别与(U1,V1),(U2,V2),⋯,(Up−1,Vp−1)都不相关的线性组合(Up,Vp)为止,此时p为X与Y之间的协方差矩阵的秩。 由上面的分析可得模型,式(7): 由于收缩U和V的值并不会影响ρ,故我们可引入限制条件a′Σ11a=1,b′Σ22b=1将模型转化为式(8): 引入Lagrange乘子,得式(9): 对Lagrange函数求导得式(10)、(11): 将上两式分别左乘a′,左乘b′得: 又因为(a′Σ12b)′=b′Σ21a⟹λa′Σ11a=νb′Σ22b。由限制条件知:λ=ν=ρ=a′Σ12b,即λ的值就是线性组合U和V的相关系数。我们重新将上式写成式(12)、(13): 然后左乘Σ12Σ−122得式(14): 结合式(12)得式(15): 同理,将式子(12)左乘Σ21Σ−111,并将式子(13)代入式子(12)得式(16): 将Σ−111左乘式子(15),Σ−122左乘式子(16)得式(17): 于是,λ2既是矩阵A也是矩阵B的特征值,a与b分别是对应的特征向量。所以我们的问题转化成求矩阵A,B的最大特征值对应的特征向量,而特征值的平方根√λ为相关系数,从而求出第一对典型相关变量。 此时,我们可以得到如下的猜想:矩阵A,B的所有非零特征值的平方跟都会是其对应的典型相关系数。 见证明
典型相关性分析是用来探索两个多变量(向量)之间之间的关联关系的,这两个多变量来自于一个相同的个体。
一般有两个典型的目的:
Data Reduction:用少量的线性组合来解释两组变量之间的相关作用。Data Interpretation:寻找特征值,这些特征值对于解释两个变量集合之间的相互作用十分关键。举例来说,我们判定一个人解题能力X与他/她的阅读能力Y之间的关系。一方面,我们使用观察一个人的解题速度x1,解题正确率x2作为解题能力的指标;另一方面,我们观察一个人的阅读速度y1,理解程度y2作为阅读能力的指标。我们可以观察二者之间的关联关系。
假设两组随机变量X=(x1,x2)′和Y=(y1,y2)′。设第一组变量均值为EX=μ1,方差为Var(X)=cov(X,X)=Σ11。第二组变量均值为EY=μ2,方差为Var(Y)=cov(Y,Y)=Σ22。第一组与第二组变量的协方差矩阵为cov(X,Y)=Σ12=Σ′21,而我们通过对样本计算协方差矩阵得到如下结果:
由上述原理说明及实例展示,我们可以归纳得出CCA算法计算基本步骤如下:
计算X的方差Var(X)=cov(X,X)=Σ11, Y的方差Var(Y)=cov(Y,Y)=Σ22,X和Y的协方差cov(X,Y)=Σ12=Σ′21;
计算矩阵A:、B;
求A、B的特征值和特征向量a,b,并对A、B进行相应的向量化操作,求得满足a,b约束条件下的A’、B’;
根据上述步骤结果,求相关系数,并对此进行分析
本文参考来源: https://zhuanlan.zhihu.com/p/52110862 典型相关分析 (Canonical Correlation Analysis ,CCA) https://www.cnblogs.com/jerrylead/archive/2011/06/20/2085491.html 典型关联分析(Canonical Correlation Analysis) https://www.cnblogs.com/boostable/p/lec_canonical_correlation_analysis.html 典型相关分析 https://blog.csdn.net/zyb228/article/details/107096880 CCA典型关联分析原理与Python案例 https://blog.csdn.net/weixin_38208741/article/details/84271297 机器学习(32)之典型相关性分析(CCA)详解 http://www.docin.com/p-619663847.html CCA算法数学推导