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.
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.