Regressão de Ridge com Kernel

Beginner

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

Introdução

Neste laboratório, aprenderemos sobre a Regressão de Ridge Kernel (KRR) e sua implementação usando a biblioteca scikit-learn em Python. A KRR combina a regressão de ridge com o truque do kernel para aprender uma função linear no espaço induzido pelo kernel. É um método de regressão não linear que pode lidar com relações não lineares entre as variáveis de entrada e saída.

Dicas da Máquina Virtual

Após o início da VM, clique no canto superior esquerdo para mudar para a aba Notebook para acessar o Jupyter Notebook para praticar.

Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação de operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão e resolveremos o problema para você prontamente.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 90%. Recebeu uma taxa de avaliações positivas de 91% dos estudantes.

Importar Bibliotecas

Primeiro, vamos importar as bibliotecas necessárias para este laboratório.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.kernel_ridge import KernelRidge

Gerar Dados Sintéticos

Em seguida, vamos gerar alguns dados sintéticos para trabalhar. Criaremos uma função-alvo sinusoidal e adicionaremos algum ruído aleatório a ela.

## Gerar dados de entrada
np.random.seed(0)
X = np.sort(5 * np.random.rand(100, 1), axis=0)
y = np.sin(X).ravel()
y += 0.5 * (0.5 - np.random.rand(y.size))

Ajustar o Modelo de Regressão Kernel Ridge

Agora, vamos ajustar um modelo de Regressão Kernel Ridge aos dados. Usaremos o kernel RBF (Radial Basis Function), comumente utilizado para regressão não linear.

## Ajustar o modelo de Regressão Kernel Ridge
alpha = 1.0  ## Parâmetro de regularização
gamma = 0.1  ## Coeficiente do kernel para o kernel RBF
krr = KernelRidge(alpha=alpha, kernel='rbf', gamma=gamma)
krr.fit(X, y)

Visualizar a Função Prevista

Após o treinamento do modelo, vamos visualizar a função prevista juntamente com os pontos de dados originais.

## Gerar pontos de dados de teste
X_test = np.linspace(0, 5, 100)[:, None]

## Prever os valores-alvo
y_pred = krr.predict(X_test)

## Visualizar os dados e a função prevista
plt.scatter(X, y, color='blue', label='Dados')
plt.plot(X_test, y_pred, color='red', label='Função Prevista')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()

Otimizar Hiperparâmetros

No passo anterior, usamos valores padrão de hiperparâmetros para alpha e gamma. Para melhorar o desempenho do modelo, podemos otimizar esses hiperparâmetros usando busca em grade.

from sklearn.model_selection import GridSearchCV

## Define a grade de parâmetros
param_grid = {'alpha': [1e-3, 1e-2, 1e-1, 1, 10],
              'gamma': [1e-3, 1e-2, 1e-1, 1, 10]}

## Realizar a busca em grade
grid_search = GridSearchCV(krr, param_grid, cv=5)
grid_search.fit(X, y)

## Obter os melhores hiperparâmetros
best_alpha = grid_search.best_params_['alpha']
best_gamma = grid_search.best_params_['gamma']
best_krr = grid_search.best_estimator_

print("Melhor alpha:", best_alpha)
print("Melhor gamma:", best_gamma)

Visualizar a Função Prevista Otimizada

Finalmente, vamos visualizar a função prevista utilizando os hiperparâmetros otimizados.

## Prever os valores-alvo usando o modelo otimizado
y_pred_opt = best_krr.predict(X_test)

## Visualizar os dados e a função prevista otimizada
plt.scatter(X, y, color='blue', label='Dados')
plt.plot(X_test, y_pred_opt, color='green', label='Função Prevista Otimizada')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()

Resumo

Neste laboratório, aprendemos sobre Regressão de Ridge com Kernel (KRR) e como implementá-la usando a biblioteca scikit-learn em Python. Geramos dados sintéticos, ajustamos um modelo KRR aos dados, visualizamos a função prevista e otimizamos os hiperparâmetros usando busca em grade. A KRR é um poderoso método de regressão não linear que pode lidar com relações complexas entre variáveis.