1.8. Перекрёстное разложение
Модуль перекрёстного разложения содержит обучаемые с учителем оцениватели для снижения размерности и регрессии, относящиеся к семейству «Частичных наименьших квадратов».
Алгоритмы перекрёстного разложения находят фундаментальные связи между двумя матрицами (X и Y). Это методы моделирования структур ковариации в этих двух пространствах с использованием скрытых переменных. Они пытаются найти многомерное направление в пространстве X, которое объясняет максимальное многомерное направление дисперсии в пространстве Y. Другими словами, PLS проецирует и X, и Y в подпространство меньшей размерности таким образом, чтобы ковариация между transformed(X) и transformed(Y) была максимальной.
PLS имеет сходство с регрессией на главные компоненты (PCR), где объекты сначала проецируются в подпространство меньшей размерности, а целевые значения y предсказываются с использованием transformed(X). Одна из проблем 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) можно выполнить двумя способами: вычислить полное SVD матрицы \(C\) и оставить только сингулярные векторы с наибольшими сингулярными значениями либо напрямую вычислить сингулярные векторы с помощью степенного метода (см. раздел 11.3 в работе [1]); последний способ соответствует параметру 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\).
Идея состоит в том, чтобы предсказать преобразованные целевые значения \(\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\).
\(\beta\) можно получить через атрибут coef_.
1.8.2. PLSSVD
PLSSVD — упрощённая версия описанного выше алгоритма PLSCanonical: вместо итеративной дефляции матриц \(X_k\) и \(Y_k\) алгоритм PLSSVD вычисляет SVD матрицы \(C = X^TY\) только один раз и сохраняет 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', но имеет два существенных отличия:
- на шаге a) при использовании степенного метода для вычисления \(u_k\) и \(v_k\) вектор \(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, соответствующий режиму «Mode B» в литературе.
CCA отличается от PLSCanonical способом вычисления весов \(u_k\) и \(v_k\) степенным методом на шаге a). Подробности приведены в разделе 10 работы [1].
Поскольку алгоритм CCA предполагает обращение матриц \(X_k^TX_k\) и \(Y_k^TY_k\), этот оцениватель может быть нестабильным, если число признаков или целевых переменных превышает число объектов.
Литература
Примеры
© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/cross_decomposition.html