Regressão por Árvore de Decisão

Beginner

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

Introdução

Neste laboratório, aprenderemos a utilizar o algoritmo de regressão de árvore de decisão para ajustar uma curva senoidal com observações adicionais ruidosas. As árvores de decisão serão usadas para aprender regressões lineares locais que aproximam a curva senoidal. Veremos que, se a profundidade máxima da árvore for definida muito alta, as árvores de decisão aprenderão detalhes muito específicos dos dados de treino e aprenderão com o ruído, ou seja, elas irão superajustar.

Dicas da Máquina Virtual

Após o arranque da máquina virtual, 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 o carregamento. 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 prontamente o problema para si.

Importação de bibliotecas necessárias

Importaremos as bibliotecas e módulos necessários, incluindo numpy, matplotlib e DecisionTreeRegressor.

import numpy as np
from sklearn.tree import DecisionTreeRegressor
import matplotlib.pyplot as plt

Criar um conjunto de dados aleatório

Criaremos um conjunto de dados aleatório usando o NumPy e adicionaremos algum ruído a ele.

rng = np.random.RandomState(1)
X = np.sort(5 * rng.rand(80, 1), axis=0)
y = np.sin(X).ravel()
y[::5] += 3 * (0.5 - rng.rand(16))

Ajustar o modelo de regressão

Ajustaremos modelos de regressão com duas profundidades máximas diferentes: 2 e 5.

regr_1 = DecisionTreeRegressor(max_depth=2)
regr_2 = DecisionTreeRegressor(max_depth=5)
regr_1.fit(X, y)
regr_2.fit(X, y)

Prever

Usaremos os modelos para fazer previsões numa gama de valores de 0 a 5.

X_test = np.arange(0.0, 5.0, 0.01)[:, np.newaxis]
y_1 = regr_1.predict(X_test)
y_2 = regr_2.predict(X_test)

Plotar os resultados

Vamos plotar os resultados para visualizar como os modelos ajustam os dados.

plt.figure()
plt.scatter(X, y, s=20, edgecolor="black", c="darkorange", label="dados")
plt.plot(X_test, y_1, color="cornflowerblue", label="max_depth=2", linewidth=2)
plt.plot(X_test, y_2, color="yellowgreen", label="max_depth=5", linewidth=2)
plt.xlabel("dados")
plt.ylabel("alvo")
plt.title("Regressão da Árvore de Decisão")
plt.legend()
plt.show()

Sumário

Neste laboratório, aprendemos como usar o algoritmo de regressão de árvore de decisão para ajustar uma curva senoidal com observações adicionais ruidosas. Vimos que se a profundidade máxima da árvore for definida muito alta, as árvores de decisão aprendem detalhes muito específicos dos dados de treino e aprendem com o ruído, ou seja, elas sofrem de sobreajuste. Também aprendemos como plotar os resultados para visualizar como os modelos ajustam os dados.