典型相关分析(Canonical Correlation Analysis, CCA)

本文深入探讨了典型相关分析,这是一种用于探索两个来自同一个体的向量间关联关系的方法。通过定义典型变量对,分析健康与锻炼等复杂关系,介绍了协方差与相关系数的基本概念,以及如何通过最大化相关性来寻找最优线性组合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 什么是典型相关分析

用来探索两个向量之间的关联关系的,这两个向量来自于同一个个体。比如说,我们需要判定健康和锻炼的关系,一方面观察身体指标如血压血脂作为健康的指标,另一方面观察跑步速度等作为锻炼的指标。然后观察二者的关联关系,分析健康与锻炼有何关系。

二 基本概念

1 典型变量(Canonical Variates)

首先,两个变量集合X和Y:
在这里插入图片描述
接着,定义两个线性关系的集合U和V,其中U是X的线性组合,V是Y的线性组合:
在这里插入图片描述
其中,U为p行p列(X为p列,对每一维都线性组合),V为p行q列(Y为q列,对每一维都线性组合),至于都是p行,是为了形成典型变量对

典型变量对(canonical variate pair):
在这里插入图片描述
显然,典型变量对共有p对(p ≤ q),比如,(U2, V2) = (a21X1 + a22X2 + ··· + a2pXp, b21Y1 + b22Y2 + ··· + b2qYq)

2 补充概念

(1)协方差:

期望值分别为E[X]与E[Y]的两个实随机变量X与Y之间的协方差Cov(X,Y)定义为:

在这里插入图片描述
如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值时另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值;如果两个变量的变化趋势相反,即其中一个变量大于自身的期望值时另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值;如果X与Y是统计独立的,那么二者之间的协方差就是0,因为两个独立的随机变量满足E[XY] = E[X]E[Y],但是注意反过来并不一定成立,协方差为0时并不一定相互独立,但称协方差为0的两个随机变量不相关。

(2)相关系数:
在这里插入图片描述
若ρXY=0,则称X与Y不线性相关。

三 典型相关分析

典型相关是一种特定的相关,它指的是 i th 典型变量对中Ui和Vi的相关性
在这里插入图片描述
典型相关分析的目的就是将ρi*最大化,需要找到一种关于X和Y的线性组合,使得上述的关联系数最大化。

### 典型相关分析CCA)用于特征融合的方法实现 典型相关分析Canonical Correlation Analysis, CCA)是一种统计方法,旨在找到两个多维变量集合之间的线性关系。通过最大化两组变量在投影空间中的相关性,CCA 可以有效地提取两组或多组数据间的共同信息[^1]。 #### 使用 CCA 进行特征融合的核心原理 CCA 的目标是寻找两组变量 \(X\) 和 \(Y\) 的线性变换,使得它们的投影后的相关性达到最大。具体来说,假设输入数据为两组特征矩阵: - \( X \in R^{n \times p} \),表示第一组特征; - \( Y \in R^{n \times q} \),表示第二组特征; 其中 \( n \) 是样本数量,\( p \) 和 \( q \) 分别是每组特征的数量。CCA 寻找一对权重向量 \( a \) 和 \( b \),满足以下条件: \[ \rho = \max_{a,b} \frac{a^T Cov(X,Y) b}{\sqrt{(a^T Cov(X,X) a)(b^T Cov(Y,Y) b)}} \] 这里的 \( \rho \) 表示两组变量的最大相关系数。最终得到的加权组合 \( u = Xa \) 和 \( v = Yb \) 即为典型的线性投影[^2]。 #### Python 中基于 Scikit-Learn 的 CCA 实现 Scikit-Learn 提供了一个简单的接口来执行 CCA 计算。以下是具体的代码实现: ```python from sklearn.cross_decomposition import CCA import numpy as np # 假设我们有如下两组特征数据 np.random.seed(0) X = np.random.rand(100, 5) # 第一组特征:100个样本,每个样本5个维度 Y = np.random.rand(100, 3) # 第二组特征:100个样本,每个样本3个维度 # 初始化 CCA 模型并设置要保留的典型变量cca_model = CCA(n_components=2) # 对数据进行拟合和转换 cca_model.fit(X, Y) X_c, Y_c = cca_model.transform(X, Y) print("经过 CCA 转换的第一组特征形状:", X_c.shape) # 输出 (100, 2) print("经过 CCA 转换的第二组特征形状:", Y_c.shape) # 输出 (100, 2) ``` 上述代码实现了对两组特征 \(X\) 和 \(Y\) 的降维处理,并返回了新的低维表示 \(X_c\) 和 \(Y_c\)。这些新特征可以通过后续模型进一步利用,或者直接作为分类器或其他机器学习任务的输入[^4]。 #### 结果解释与应用 CCA 得到的新特征不仅具有较低的维度,还最大程度上保持了原始特征间的关系。因此,在许多场景下,这种技术被广泛应用于跨模态数据分析、生物医学信号处理以及图像识别等领域[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值