Redução de Dimensionalidade com Algoritmos PLS

Beginner

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

Introdução

O módulo cross_decomposition no scikit-learn contém estimadores supervisionados para redução de dimensionalidade e regressão, especificamente para algoritmos de Mínimos Quadrados Parciais (PLS). Estes algoritmos encontram a relação fundamental entre duas matrizes projetando-as num subespaço de menor dimensão de forma que a covariância entre as matrizes transformadas seja máxima.

Neste laboratório, exploraremos os diferentes algoritmos de decomposição cruzada fornecidos pelo scikit-learn e aprenderemos como utilizá-los para tarefas de redução de dimensionalidade e regressão.

Dicas da Máquina Virtual

Após o arranque da VM, clique no canto superior esquerdo para mudar para a aba Notebook para aceder ao Jupyter Notebook para a prática.

Por vezes, pode ser necessário esperar alguns segundos para o Jupyter Notebook terminar de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se tiver problemas durante o aprendizado, não hesite em contactar o Labby. Forneça feedback após a sessão e resolveremos o problema rapidamente para si.

Importar as bibliotecas necessárias

Comecemos importando as bibliotecas necessárias para este laboratório.

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

Carregar o conjunto de dados

Em seguida, carregaremos um conjunto de dados de amostra para demonstrar os algoritmos de decomposição cruzada. Para simplificar, criaremos duas matrizes X e Y com valores aleatórios.

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

PLSRegression

Ajustar o modelo PLSRegression

Começaremos com o algoritmo PLSRegression, que é uma forma de regressão linear regularizada. Ajustaremos o modelo aos nossos dados.

pls = PLSRegression(n_components=2)
pls.fit(X, Y)
Transformar os dados

Podemos transformar os dados originais usando o modelo ajustado. Os dados transformados terão dimensões reduzidas.

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

PLSCanonical

Ajustar o modelo PLSCanonical

Em seguida, usaremos o algoritmo PLSCanonical, que encontra a correlação canônica entre duas matrizes. Este algoritmo é útil quando há multicolinearidade entre as características.

plsc = PLSCanonical(n_components=2)
plsc.fit(X, Y)
Transformar os dados

Podemos transformar os dados originais usando o modelo ajustado. Os dados transformados terão dimensões reduzidas.

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

CCA

Ajustar o modelo CCA

O algoritmo CCA é um caso especial de PLS e representa a Análise de Correlação Canônica. Ele encontra a correlação entre dois conjuntos de variáveis.

cca = CCA(n_components=2)
cca.fit(X, Y)
Transformar os dados

Podemos transformar os dados originais usando o modelo ajustado. Os dados transformados terão dimensões reduzidas.

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

PLSSVD

Ajustar o modelo PLSSVD

O algoritmo PLSSVD é uma versão simplificada do PLSCanonical que calcula a Decomposição em Valores Singulares (SVD) da matriz de covariância cruzada apenas uma vez. Este algoritmo é útil quando o número de componentes é limitado a um.

plssvd = PLSSVD(n_components=1)
plssvd.fit(X, Y)
Transformar os dados

Podemos transformar os dados originais usando o modelo ajustado. Os dados transformados terão dimensões reduzidas.

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

Resumo

Neste laboratório, exploramos os algoritmos de decomposição cruzada fornecidos pelo scikit-learn. Aprendemos sobre PLSRegression, PLSCanonical, CCA e PLSSVD. Também vimos como ajustar esses modelos aos dados e transformar os dados em representações de menor dimensão. Esses algoritmos são úteis para redução de dimensionalidade e tarefas de regressão, especialmente quando há multicolinearidade entre as características ou quando o número de variáveis é maior que o número de amostras.