Снижение размерности с использованием алгоритмов PLS

Machine LearningMachine LearningBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Модуль cross_decomposition в scikit-learn содержит контролируемые оценщики для снижения размерности и регрессии, конкретно для алгоритмов Partial Least Squares (PLS). Эти алгоритмы находят фундаментальное отношение между двумя матрицами, проектируя их в ниж-мерное подпространство таким образом, чтобы ковариация между преобразованными матрицами была максимальной.

В этом практическом занятии мы исследуем различные алгоритмы cross decomposition, предоставляемые scikit-learn, и узнаем, как использовать их для задач по снижению размерности и регрессии.

Советы по работе с ВМ

После запуска ВМ кликните в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы сталкиваетесь с проблемами при обучении, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/cross_decomposition("Cross decomposition") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/cross_decomposition -.-> lab-71105{{"Снижение размерности с использованием алгоритмов PLS"}} ml/sklearn -.-> lab-71105{{"Снижение размерности с использованием алгоритмов PLS"}} end

Импортируем необходимые библиотеки

Начнем с импорта необходимых библиотек для этого практического занятия.

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. Также увидели, как настраивать эти модели на данные и преобразовывать данные в представления с меньшей размерностью. Эти алгоритмы полезны для уменьшения размерности и задач регрессии, особенно когда между признаками есть мультиколлинеарность или когда количество переменных превышает количество образцов.