1.8. 交叉分解#
交叉分解模块包含用于降维和回归的**监督**估计器,属于“偏最小二乘法”家族。
交叉分解算法寻找两个矩阵(X 和 Y)之间的基本关系。它们是建模这两个空间中协方差结构的潜在变量方法。它们将尝试找到 X 空间中的多维方向,该方向解释了 Y 空间中的最大多维方差方向。换句话说,PLS 将 X
和 Y
投影到低维子空间,使得 transformed(X)
和 transformed(Y)
之间的协方差最大。
PLS 与主成分回归 (PCR) 类似,其中样本首先投影到低维子空间,然后使用 transformed(X)
预测目标 y
。PCR 的一个问题是降维是无监督的,可能会丢失一些重要变量:PCR 会保留方差最大的特征,但方差小的特征也可能与预测目标相关。在某种程度上,PLS 允许进行相同类型的降维,但同时考虑了目标 y
。以下示例说明了这一点:* 主成分回归与偏最小二乘回归。
除了 CCA 之外,当预测变量矩阵的变量数多于观测数,并且特征之间存在多重共线性时,PLS 估计器特别适用。相比之下,除非进行正则化,否则标准线性回归在这种情况下会失败。
此模块中包含的类是 PLSRegression
、PLSCanonical
、CCA
和 PLSSVD
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_
属性访问。
类似地,可以使用旋转矩阵\(V(\Delta^T V)^{-1}\)转换\(Y\),可以通过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\)。
可以通过 coef_
属性访问 \(\beta\)。
1.8.2. PLSSVD#
PLSSVD
是前面描述的 PLSCanonical
的简化版本:它不是迭代地对矩阵 \(X_k\) 和 \(Y_k\) 进行降维,PLSSVD
只计算一次 \(C = X^TY\) 的SVD,并将对应于最大奇异值的 n_components
个奇异向量存储在矩阵 U
和 V
中,分别对应于 x_weights_
和 y_weights_
属性。在这里,变换后的数据简单地是 transformed(X) = XU
和 transformed(Y) = YV
。
如果 n_components == 1
,则 PLSSVD
和 PLSCanonical
严格等价。
1.8.3. PLSRegression#
PLSRegression
估计器类似于使用 algorithm='nipals'
的 PLSCanonical
,但有两个显著的区别:
在步骤 a) 中,使用幂法计算 \(u_k\) 和 \(v_k\) 时,\(v_k\) 从不进行归一化。
在步骤 c) 中,使用 \(X_k\) 的投影(即 \(\xi_k\))而不是 \(Y_k\) 的投影(即 \(\omega_k\))来逼近目标 \(Y_k\)。换句话说,载荷计算是不同的。结果,步骤 d) 中的降维也会受到影响。
这两个修改会影响 predict
和 transform
的输出,它们与 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。
CCA
与 PLSCanonical
在步骤 a) 的幂法中计算权重 \(u_k\) 和 \(v_k\) 的方式不同。详细信息可以在 [1] 的第 10 节找到。
由于CCA
涉及到 \(X_k^TX_k\) 和 \(Y_k^TY_k\) 的求逆,如果特征数量或目标数量大于样本数量,则该估计器可能不稳定。
参考文献
示例