Введение
Модуль cross_decomposition в scikit-learn содержит контролируемые оценщики для снижения размерности и регрессии, конкретно для алгоритмов Partial Least Squares (PLS). Эти алгоритмы находят фундаментальное отношение между двумя матрицами, проектируя их в ниж-мерное подпространство таким образом, чтобы ковариация между преобразованными матрицами была максимальной.
В этом практическом занятии мы исследуем различные алгоритмы cross decomposition, предоставляемые scikit-learn, и узнаем, как использовать их для задач по снижению размерности и регрессии.
Советы по работе с ВМ
После запуска ВМ кликните в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы сталкиваетесь с проблемами при обучении, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импортируем необходимые библиотеки
Начнем с импорта необходимых библиотек для этого практического занятия.
import numpy as np
from sklearn.cross_decomposition import PLSRegression, PLSCanonical, CCA, PLSSVD
Загружаем датасет
Далее мы загрузим примерный датасет, чтобы продемонстрировать алгоритмы cross decomposition. Для простоты мы создадим две матрицы X и Y со случайными значениями.
np.random.seed(0)
X = np.random.random((100, 5))
Y = np.random.random((100, 3))
PLSRegression
Настраиваем модель PLSRegression
Начнем с алгоритма PLSRegression, который представляет собой форму регуляризованной линейной регрессии. Настроим модель на наших данных.
pls = PLSRegression(n_components=2)
pls.fit(X, Y)
Преобразуем данные
Мы можем преобразовать исходные данные с использованием настроенной модели. Преобразованные данные будут иметь уменьшенную размерность.
X_transformed = pls.transform(X)
Y_transformed = pls.transform(Y)
PLSCanonical
Настраиваем модель PLSCanonical
Далее мы будем использовать алгоритм PLSCanonical, который находит каноническую корреляцию между двумя матрицами. Этот алгоритм полезен, когда между признаками есть мультиколлинеарность.
plsc = PLSCanonical(n_components=2)
plsc.fit(X, Y)
Преобразуем данные
Мы можем преобразовать исходные данные с использованием настроенной модели. Преобразованные данные будут иметь уменьшенную размерность.
X_transformed = plsc.transform(X)
Y_transformed = plsc.transform(Y)
CCA
Настраиваем модель CCA
Алгоритм CCA представляет собой особый случай PLS и означает Анализ канонической корреляции. Он находит корреляцию между двумя наборами переменных.
cca = CCA(n_components=2)
cca.fit(X, Y)
Преобразуем данные
Мы можем преобразовать исходные данные с использованием настроенной модели. Преобразованные данные будут иметь уменьшенную размерность.
X_transformed = cca.transform(X)
Y_transformed = cca.transform(Y)
PLSSVD
Настраиваем модель PLSSVD
Алгоритм PLSSVD представляет собой упрощенную версию PLSCanonical, который вычисляет разложение сингулярных значений (SVD) кросс-ковариационной матрицы только один раз. Этот алгоритм полезен, когда количество компонентов ограничено одним.
plssvd = PLSSVD(n_components=1)
plssvd.fit(X, Y)
Преобразуем данные
Мы можем преобразовать исходные данные с использованием настроенной модели. Преобразованные данные будут иметь уменьшенную размерность.
X_transformed = plssvd.transform(X)
Y_transformed = plssvd.transform(Y)
Резюме
В этом практическом занятии мы изучили алгоритмы кросс-разложения, предоставляемые scikit-learn. Мы узнали о PLSRegression, PLSCanonical, CCA и PLSSVD. Также увидели, как настраивать эти модели на данные и преобразовывать данные в представления с меньшей размерностью. Эти алгоритмы полезны для уменьшения размерности и задач регрессии, особенно когда между признаками есть мультиколлинеарность или когда количество переменных превышает количество образцов.