Réduction de la dimensionalité avec les algorithmes PLS

Beginner

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

Introduction

Le module cross_decomposition dans scikit-learn contient des estimateurs supervisés pour la réduction de dimension et la régression, plus précisément pour les algorithmes de moindres carrés partiels (PLS). Ces algorithmes trouvent la relation fondamentale entre deux matrices en les projetant dans un sous-espace de dimension réduite de manière à ce que la covariance entre les matrices transformées soit maximale.

Dans ce laboratoire, nous allons explorer les différents algorithmes de décomposition croisée fournis par scikit-learn et apprendre à les utiliser pour les tâches de réduction de dimension et de régression.

Conseils sur la VM

Une fois le démarrage de la VM terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook pour accéder à Jupyter Notebook pour la pratique.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez des commentaires après la session, et nous résoudrons rapidement le problème pour vous.

Importez les bibliothèques nécessaires

Commencez par importer les bibliothèques nécessaires pour ce laboratoire.

import numpy as np
from sklearn.cross_decomposition import PLSRegression, PLSCanonical, CCA, PLSSVD

Chargez l'ensemble de données

Ensuite, nous allons charger un ensemble de données d'échantillonnage pour démontrer les algorithmes de décomposition croisée. Pour simplifier, nous allons créer deux matrices X et Y avec des valeurs aléatoires.

np.random.seed(0)
X = np.random.random((100, 5))
Y = np.random.random((100, 3))

PLSRegression

Ajustez le modèle PLSRegression

Nous commencerons par l'algorithme PLSRegression, qui est une forme de régression linéaire régularisée. Nous allons ajuster le modèle à nos données.

pls = PLSRegression(n_components=2)
pls.fit(X, Y)
Transformez les données

Nous pouvons transformer les données d'origine à l'aide du modèle ajusté. Les données transformées auront des dimensions réduites.

X_transformed = pls.transform(X)
Y_transformed = pls.transform(Y)

PLSCanonical

Ajustez le modèle PLSCanonical

Ensuite, nous utiliserons l'algorithme PLSCanonical, qui trouve la corrélation canonique entre deux matrices. Cet algorithme est utile lorsqu'il y a multicolinéarité entre les caractéristiques.

plsc = PLSCanonical(n_components=2)
plsc.fit(X, Y)
Transformez les données

Nous pouvons transformer les données d'origine à l'aide du modèle ajusté. Les données transformées auront des dimensions réduites.

X_transformed = plsc.transform(X)
Y_transformed = plsc.transform(Y)

CCA

Ajustez le modèle CCA

L'algorithme CCA est un cas particulier de PLS et signifie Analyse de Corrélation Canonique. Il trouve la corrélation entre deux ensembles de variables.

cca = CCA(n_components=2)
cca.fit(X, Y)
Transformez les données

Nous pouvons transformer les données d'origine à l'aide du modèle ajusté. Les données transformées auront des dimensions réduites.

X_transformed = cca.transform(X)
Y_transformed = cca.transform(Y)

PLSSVD

Ajustez le modèle PLSSVD

L'algorithme PLSSVD est une version simplifiée de PLSCanonical qui calcule la Décomposition en Valeurs Singulières (SVD) de la matrice de covariance croisée une seule fois. Cet algorithme est utile lorsque le nombre de composantes est limité à une.

plssvd = PLSSVD(n_components=1)
plssvd.fit(X, Y)
Transformez les données

Nous pouvons transformer les données d'origine à l'aide du modèle ajusté. Les données transformées auront des dimensions réduites.

X_transformed = plssvd.transform(X)
Y_transformed = plssvd.transform(Y)

Résumé

Dans ce laboratoire, nous avons exploré les algorithmes de décomposition croisée fournis par scikit-learn. Nous avons appris sur PLSRegression, PLSCanonical, CCA et PLSSVD. Nous avons également vu comment ajuster ces modèles aux données et transformer les données en représentations de dimension réduite. Ces algorithmes sont utiles pour la réduction de la dimensionalité et les tâches de régression, en particulier lorsqu'il y a multicolinéarité entre les caractéristiques ou lorsque le nombre de variables est supérieur au nombre d'échantillons.