Spec-Zone.ru › scikit-learn

1.8. Перекрёстное разложение

Модуль перекрёстного разложения содержит обучаемые с учителем оцениватели для снижения размерности и регрессии, относящиеся к семейству «Частичных наименьших квадратов».

../_images/sphx_glr_plot_compare_cross_decomposition_001.png

Алгоритмы перекрёстного разложения находят фундаментальные связи между двумя матрицами (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\), этот оцениватель может быть нестабильным, если число признаков или целевых переменных превышает число объектов.

Литература

[1] (1,2,3,4)

Обзор методов частичных наименьших квадратов (PLS) с акцентом на случай двух блоков, JA Wegelin

Примеры

  • Сравнение методов перекрёстного разложения
  • Регрессия на главные компоненты и регрессия методом частичных наименьших квадратов

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/cross_decomposition.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API