核化典型相关分析(Kernel Canonical Correlation Analysis, KCCA)的原理与优化求解过程
一、 题目描述
典型相关分析(Canonical Correlation Analysis, CCA)是一种经典的统计方法,用于分析两个随机变量集合(或称“视图”)之间的线性相关关系。它寻找两组变量中各一个线性组合(称为典型变量),使得这两个线性组合之间的相关性最大化。然而,CCA只能捕捉线性关系。核化典型相关分析(Kernel CCA)通过“核技巧”(Kernel Trick)将CCA扩展到非线性领域。其核心思想是:首先通过一个非线性映射函数,将原始数据隐式地映射到一个高维(甚至无限维)的再生核希尔伯特空间(RKHS)中,然后在这个高维特征空间中执行标准的线性CCA。KCCA广泛应用于特征融合、多模态学习、降维等领域。
二、 解题过程:循序渐进讲解
步骤1:回顾标准线性CCA
首先,让我们明确问题。假设我们有两组已中心化(均值为0)的数据视图:
- 视图1:
X ∈ R^{n×p}, 有n个样本,p个特征。 - 视图2:
Y ∈ R^{n×q}, 有n个样本,q个特征。
CCA的目标是找到投影向量 w_x ∈ R^p 和 w_y ∈ R^q,使得投影后的数据 X w_x 和 Y w_y 之间的皮尔逊相关系数最大化:
maximize_{w_x, w_y} (w_x^T X^T Y w_y) / sqrt((w_x^T X^T X w_x)(w_y^T Y^T Y w_y))
这是一个广义特征值问题,最终转化为求解:
(X^T X)^{-1} X^T Y (Y^T Y)^{-1} Y^T X w_x = ρ^2 w_x
其中 ρ 是最大化的相关系数(典型相关系数)。
步骤2:引入核方法与非线性的思想
线性CCA的局限在于,它假设两组变量之间的关系是线性的。对于复杂的非线性关系(例如,一个视图是图像像素,另一个是文本描述),线性模型无法有效建模。
核方法的思路是:我们不直接设计复杂的非线性变换,而是定义一个核函数 k(x_i, x_j) = φ(x_i)·φ(x_j),它计算了样本 x_i 和 x_j 在某个高维特征空间 φ(·) 中的内积。通过这个核函数,我们可以在不知道 φ(·) 具体形式的情况下,在高维空间中进行线性运算。这是核技巧的精髓。
对于KCCA,我们分别为两个视图定义核函数 k_x 和 k_y,以及对应的核矩阵:
K_x = Φ_x Φ_x^T ∈ R^{n×n},其中 Φ_x 是 X 映射到特征空间后的数据矩阵(行是样本)。
K_y = Φ_y Φ_y^T ∈ R^{n×n},定义类似。
步骤3:在特征空间中表述KCCA问题
在特征空间中,我们的数据变成了 Φ_x 和 Φ_y。根据表示定理,在RKHS中,投影方向 w_x 和 w_y 可以表示为所有样本映射的线性组合:
w_x = Φ_x^T α, α ∈ R^n
w_y = Φ_y^T β, β ∈ R^n
这里 α 和 β 是我们需要求解的新系数向量,替代了原始的 w_x 和 w_y。
那么,投影后的数据变为:
Φ_x w_x = Φ_x Φ_x^T α = K_x α
Φ_y w_y = Φ_y Φ_y^T β = K_y β
因此,KCCA的目标转化为:寻找系数向量 α 和 β,使得 K_x α 和 K_y β 之间的相关系数最大化。
步骤4:建立KCCA的优化目标函数
将投影后的表达式代入CCA的相关系数公式,目标函数变为:
maximize_{α, β} (α^T K_x^T K_y β) / sqrt((α^T K_x^T K_x α)(β^T K_y^T K_y β))
注意,K_x 和 K_y 是对称矩阵,所以 K_x^T = K_x,K_y^T = K_y。同时,为了确保问题良定并控制解的复杂度(避免过拟合),我们通常需要加入正则化项。最终,带有正则化项(Tikhonov正则化)的KCCA优化问题可以写为:
maximize_{α, β} (α^T K_x K_y β)
subject to: α^T (K_x^2 + κ_x I) α = 1
subject to: β^T (K_y^2 + κ_y I) β = 1
其中 κ_x 和 κ_y 是小的正正则化参数,I 是单位矩阵。正则化项 κI 的加入防止了当 K_x 或 K_y 奇异(或病态)时解的不稳定性。
步骤5:求解KCCA的广义特征值问题
这是一个带有等式约束的优化问题,可以通过拉格朗日乘子法求解。构建拉格朗日函数 L:
L(α, β, λ_x, λ_y) = α^T K_x K_y β - (λ_x/2)[α^T (K_x^2 + κ_x I) α - 1] - (λ_y/2)[β^T (K_y^2 + κ_y I) β - 1]
分别对 α 和 β 求导并令导数为零:
∂L/∂α = K_x K_y β - λ_x (K_x^2 + κ_x I) α = 0 -> (1)
∂L/∂β = K_y K_x α - λ_y (K_y^2 + κ_y I) β = 0 -> (2)
由(1)式可得:K_x K_y β = λ_x (K_x^2 + κ_x I) α
由(2)式可得:K_y K_x α = λ_y (K_y^2 + κ_y I) β
可以证明,在最优解处,λ_x = λ_y = ρ(即最大化后的典型相关系数)。将(1)式中的 α 用 β 表示,代入(2)式,经过整理,我们可以得到一个关于 β 的广义特征值问题(或关于 α 的对称形式):
(K_y + κ_y I)^{-1} K_y K_x (K_x + κ_x I)^{-1} K_x K_y β = ρ^2 β
同理,关于 α 的特征值方程为:
(K_x + κ_x I)^{-1} K_x K_y (K_y + κ_y I)^{-1} K_y K_x α = ρ^2 α
实际上,更稳定和常见的求解方式是将原问题转换为一个等价的、规模为 2n×2n 的广义特征值问题:
[ 0, K_x K_y; K_y K_x, 0 ] [α; β] = ρ [ (K_x^2+κ_x I), 0; 0, (K_y^2+κ_y I) ] [α; β]
求解这个广义特征值问题,最大的特征值 ρ 就是第一对典型变量的相关系数,对应的特征向量 [α; β] 给出了第一对投影系数。后续的典型变量可以通过求取次大的特征值和对应的特征向量获得,且它们与之前找到的变量是正交的。
步骤6:KCCA的计算与预测
-
训练(拟合模型):
- 输入中心化后的原始数据
X,Y。 - 选择核函数(如高斯RBF核、多项式核)及参数,计算核矩阵
K_x和K_y。 - 设置正则化参数
κ_x,κ_y。 - 求解上述广义特征值问题,得到前
d对特征向量(α_i, β_i)和特征值ρ_i(i=1,...,d)。d是想要保留的典型变量个数。
- 输入中心化后的原始数据
-
转换(降维/特征提取):
- 对于训练数据,其在第
i个典型变量上的投影(得分)为:- 视图1的投影:
f_i = K_x α_i - 视图2的投影:
g_i = K_y β_i
- 视图1的投影:
- 这
d对投影(f_i, g_i)就是降维后的非线性相关特征。
- 对于训练数据,其在第
-
预测(对新样本):
- 对于一个新样本
(x_new, y_new),要得到它在特征空间中的投影,需要计算它和所有训练样本的核函数值。 - 定义向量
k_x_new = [k_x(x_new, x_1), ..., k_x(x_new, x_n)]^T,k_y_new类似。 - 那么,新样本在第
i个典型变量上的投影为:- 视图1的投影:
f_i_new = (k_x_new)^T α_i - 视图2的投影:
g_i_new = (k_y_new)^T β_i
- 视图1的投影:
- 对于一个新样本
总结:核化典型相关分析(KCCA)通过核技巧将线性CCA扩展到了非线性领域。其核心步骤是:1) 用核函数隐式定义非线性映射;2) 利用表示定理,将投影方向表示为训练样本的线性组合;3) 构建关于组合系数 α 和 β 的、带有正则化的相关性最大化目标;4) 将其转化为一个广义特征值问题进行求解;5) 利用求得的系数对数据进行非线性相关特征提取。KCCA成功的关键在于核函数的选择和正则化参数的控制。