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) 對 \(\xi_k\) 進行 \(X_k\) 迴歸,也就是找到一個向量 \(\gamma_k \in \mathbb{R}^d\),使得秩 1 矩陣 \(\xi_k \gamma_k^T\) 盡可能接近 \(X_k\)。對 \(\omega_k\) 執行 \(Y_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\),如預期的結果。可以從 x_rotations_
屬性存取旋轉矩陣 \(P\)。
類似地,可以使用旋轉矩陣 \(V(\Delta^T V)^{-1}\) 轉換 \(Y\),可以透過 y_rotations_
屬性存取。
預測目標 Y
#
為了預測某些數據 \(X\) 的目標值,我們正在尋找一個係數矩陣 \(\beta \in R^{d \times t}\),使得 \(Y = X\beta\)。
其概念是嘗試預測轉換後的目標值 \(\Omega\),作為轉換後樣本 \(\Xi\) 的函數,透過計算 \(\alpha \in \mathbb{R}\),使得 \(\Omega = \alpha \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
的簡化版本:PLSSVD
並非迭代地對矩陣 \(X_k\) 和 \(Y_k\) 進行降階,而是只計算一次 \(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
估計器類似於 PLSCanonical
,其中 algorithm='nipals'
,但有兩個顯著差異
在計算 \(u_k\) 和 \(v_k\) 的冪方法步驟 a) 中,\(v_k\) 從未被正規化。
在步驟 c) 中,目標值 \(Y_k\) 是使用 \(X_k\) 的投影 (即 \(\xi_k\)) 而不是 \(Y_k\) 的投影 (即 \(\omega_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\) 的反轉,如果特徵或目標值的數量大於樣本數量,則此估計器可能不穩定。
參考文獻
範例