1.8. 交叉分解#

交叉分解模块包含用于降维和回归的监督估计器,属于“偏最小二乘”家族。

../_images/sphx_glr_plot_compare_cross_decomposition_001.png

交叉分解算法寻找两个矩阵(X 和 Y)之间的基本关系。它们是针对这两个空间中的协方差结构进行建模的潜在变量方法。它们将尝试找到 X 空间中的多维方向,该方向解释了 Y 空间中的最大多维方差方向。换句话说,PLS 将 XY 投影到一个低维子空间,使得 transformed(X)transformed(Y) 之间的协方差最大化。

PLS 与 主成分回归 (PCR) 类似,其中样本首先被投影到一个低维子空间,然后使用 transformed(X) 预测目标 y。PCR 的一个问题是降维是无监督的,可能会丢失一些重要的变量:PCR 会保留方差最大的特征,但可能方差小的特征对于预测目标也很重要。在某种程度上,PLS 允许进行相同类型的降维,但同时考虑了目标 y。以下示例说明了这一点:* 主成分回归与偏最小二乘回归.

除了 CCA,PLS 估计器特别适合于预测矩阵的变量数多于观测数的情况,以及特征之间存在多重共线性。相比之下,标准线性回归在这种情况下会失败,除非它被正则化。

此模块中包含的类是 PLSRegressionPLSCanonicalCCAPLSSVD

1.8.1. PLSCanonical#

这里我们描述了 PLSCanonical 中使用的算法。其他估计器使用该算法的变体,并在下面详细介绍。我们建议阅读第 [1] 节以获取更多详细信息以及这些算法之间的比较。在 [1] 中,PLSCanonical 对应于“PLSW2A”。

给定两个中心矩阵 \(X \in \mathbb{R}^{n \times d}\)\(Y \in \mathbb{R}^{n \times t}\),以及组件数量 \(K\)PLSCanonical 的执行步骤如下:

\(X_1\) 设置为 \(X\),将 \(Y_1\) 设置为 \(Y\)。然后,对于每个 \(k \in [1, K]\)

  • a) 计算 \(u_k \in \mathbb{R}^d\)\(v_k \in \mathbb{R}^t\),即交叉协方差矩阵 \(C = X_k^T Y_k\) 的第一个左奇异向量和右奇异向量。 \(u_k\)\(v_k\) 被称为权重。根据定义,\(u_k\)\(v_k\) 被选择以最大化投影后的 \(X_k\) 和投影后的目标之间的协方差,即 \(\text{Cov}(X_k u_k, Y_k v_k)\)

  • b) 将 \(X_k\)\(Y_k\) 投影到奇异向量上以获得得分\(\xi_k = X_k u_k\)\(\omega_k = Y_k v_k\)

  • c) 将 \(X_k\) 回归到 \(\xi_k\) 上,即找到一个向量 \(\gamma_k \in \mathbb{R}^d\),使得秩为 1 的矩阵 \(\xi_k \gamma_k^T\) 尽可能接近 \(X_k\)。对 \(Y_k\)\(\omega_k\) 进行相同的操作以获得 \(\delta_k\)。向量 \(\gamma_k\)\(\delta_k\) 被称为载荷

  • d) 压缩 \(X_k\)\(Y_k\),即减去秩为 1 的近似值:\(X_{k+1} = X_k - \xi_k \gamma_k^T\),以及 \(Y_{k + 1} = Y_k - \omega_k \delta_k^T\)

最后,我们将 \(X\) 近似为秩为 1 的矩阵之和:\(X = \Xi \Gamma^T\),其中 \(\Xi \in \mathbb{R}^{n \times K}\) 在其列中包含得分,而 \(\Gamma^T \in \mathbb{R}^{K \times d}\) 在其行中包含载荷。类似地,对于 \(Y\),我们有 \(Y = \Omega \Delta^T\)

请注意,得分矩阵 \(\Xi\)\(\Omega\) 分别对应于训练数据 \(X\)\(Y\) 的投影。

步骤a) 可以通过两种方式执行:要么计算 \(C\) 的完整 SVD 并仅保留具有最大奇异值的奇异向量,要么使用幂法直接计算奇异向量(参见 [1] 中的第 11.3 节),这对应于 algorithm 参数的 'nipals' 选项。

数据转换#

为了将 \(X\) 转换为 \(\bar{X}\),我们需要找到一个投影矩阵 \(P\),使得 \(\bar{X} = XP\)。我们知道,对于训练数据,\(\Xi = XP\),以及 \(X = \Xi \Gamma^T\)。设置 \(P = U(\Gamma^T U)^{-1}\),其中 \(U\) 是包含 \(u_k\) 的列的矩阵,我们有 \(XP = X U(\Gamma^T U)^{-1} = \Xi (\Gamma^T U) (\Gamma^T U)^{-1} = \Xi\),如预期的那样。旋转矩阵 \(P\) 可以从 x_rotations_ 属性中访问。

类似地,\(Y\) 可以使用旋转矩阵 \(V(\Delta^T V)^{-1}\) 进行转换,可以通过 y_rotations_ 属性访问。

预测目标 Y#

为了预测某些数据 \(X\) 的目标,我们正在寻找一个系数矩阵 \(\beta \in R^{d \times t}\),使得 \(Y = X\beta\)

想法是尝试通过计算 \(\alpha \in \mathbb{R}\),使得 \(\Omega = \alpha \Xi\),来预测转换后的目标 \(\Omega\) 作为转换后的样本 \(\Xi\) 的函数。

然后,我们有 \(Y = \Omega \Delta^T = \alpha \Xi \Delta^T\),并且由于 \(\Xi\) 是转换后的训练数据,我们有 \(Y = X \alpha P \Delta^T\),因此系数矩阵 \(\beta = \alpha P \Delta^T\)

\(\beta\) 可以通过 coef_ 属性访问。

1.8.2. PLSSVD#

PLSSVD 是前面描述的 PLSCanonical 的简化版本:它不是迭代地对矩阵 \(X_k\)\(Y_k\) 进行降维,而是只对 \(C = X^TY\) 进行 **一次** SVD 计算,并将对应于最大奇异值的 n_components 个奇异向量存储在矩阵 UV 中,分别对应于 x_weights_y_weights_ 属性。这里,变换后的数据只是 transformed(X) = XUtransformed(Y) = YV

如果 n_components == 1PLSSVDPLSCanonical 严格等价。

1.8.3. PLSRegression#

PLSRegression 估计器类似于 PLSCanonical,其中 algorithm='nipals',但有两个显著区别

  • 在步骤 a) 中,用于计算 \(u_k\)\(v_k\) 的幂方法中,\(v_k\) 从未被归一化。

  • 在步骤 c) 中,目标 \(Y_k\) 是使用 \(X_k\) 的投影(即 \(\xi_k\))来近似,而不是使用 \(Y_k\) 的投影(即 \(\omega_k\))。换句话说,载荷计算方式不同。因此,步骤 d) 中的降维也会受到影响。

这两个修改影响了 predicttransform 的输出,它们与 PLSCanonical 不同。此外,虽然在 PLSCanonical 中,组件数量受限于 min(n_samples, n_features, n_targets),但这里限制是 \(X^TX\) 的秩,即 min(n_samples, n_features)

PLSRegression 也被称为 PLS1(单目标)和 PLS2(多目标)。与 Lasso 类似,PLSRegression 是一种正则化线性回归形式,其中组件数量控制正则化的强度。

1.8.4. 典型相关分析#

典型相关分析是在 PLS 之前独立开发的。但事实证明,CCA 是 PLS 的特例,对应于文献中的“模式 B”的 PLS。

CCAPLSCanonical 在步骤 a) 的幂方法中计算权重 \(u_k\)\(v_k\) 的方式不同。详细信息可以在 [1] 的第 10 节中找到。

由于 CCA 涉及到 \(X_k^TX_k\)\(Y_k^TY_k\) 的求逆,如果特征或目标的数量大于样本数量,则该估计器可能不稳定。

参考文献

示例