0Pricing
Python Academy · Aula

Modelos baseados em árvores: árvores de decisão e florestas aleatórias

Crie e ajuste modelos de árvores de decisão e florestas de conjunto.

Modelos baseados em árvores: árvores de decisão e florestas aleatórias é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.

Conceitos de árvores de decisão

Uma árvore de decisão divide os dados em subconjuntos fazendo uma sequência de perguntas binárias. Cada nó interno é um limiar de uma característica; cada folha contém uma previsão.

from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris

X, y = load_iris(return_X_y=True)
model = DecisionTreeClassifier(max_depth=3, random_state=0).fit(X, y)
print("Depth:", model.get_depth())
print("Leaves:", model.get_n_leaves())

DecisionTreeClassifier

Hiperparâmetros principais: max_depth, min_samples_split, min_samples_leaf. Árvores mais profundas sofrem sobreajuste; árvores mais rasas sofrem subajuste.

from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

X, y = make_classification(random_state=0)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, random_state=0)

model = DecisionTreeClassifier(max_depth=5, min_samples_leaf=5)
model.fit(X_tr, y_tr)
print("Test acc:", model.score(X_te, y_te))

DecisionTreeRegressor

As árvores de decisão também lidam com regressão, prevendo o valor médio do alvo em cada folha.

from sklearn.tree import DecisionTreeRegressor
from sklearn.datasets import make_regression
from sklearn.metrics import mean_squared_error

X, y = make_regression(noise=15, random_state=0)
model = DecisionTreeRegressor(max_depth=4).fit(X, y)
print("RMSE:", mean_squared_error(y, model.predict(X))**0.5)

Importância das características

model.feature_importances_ fornece a importância relativa de cada característica, com base na redução da impureza.

from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
import numpy as np

X, y = load_iris(return_X_y=True)
feature_names = load_iris().feature_names
model = DecisionTreeClassifier().fit(X, y)
for name, imp in sorted(zip(feature_names, model.feature_importances_), key=lambda x: -x[1]):
    print(f"{name}: {imp:.3f}")

Visão geral de florestas aleatórias

Uma floresta aleatória treina muitas árvores de decisão descorrelacionadas em amostras de bootstrap e calcula a média de suas previsões — reduzindo a variância sem aumentar o viés.

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

X, y = make_classification(random_state=0)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, random_state=0)

model = RandomForestClassifier(n_estimators=100, random_state=0)
model.fit(X_tr, y_tr)
print("Test acc:", model.score(X_te, y_te))

RandomForestRegressor

As florestas aleatórias funcionam igualmente bem para regressão.

from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import make_regression
from sklearn.metrics import r2_score

X, y = make_regression(noise=10, random_state=0)
model = RandomForestRegressor(n_estimators=100, random_state=0).fit(X, y)
print("R²:", r2_score(y, model.predict(X)))

Pontuação fora da amostra

Defina oob_score=True para obter uma pontuação de validação gratuita usando amostras que não estão no bootstrap de cada árvore (não é necessário um conjunto de teste separado).

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification

X, y = make_classification(random_state=0)
model = RandomForestClassifier(n_estimators=100, oob_score=True, random_state=0).fit(X, y)
print("OOB score:", model.oob_score_)

Boosting de gradiente

O boosting de gradiente (GBM) treina árvores sequencialmente, cada uma corrigindo os erros da anterior. Em geral, é mais preciso do que as florestas aleatórias, mas demora mais para treinar.

from sklearn.ensemble import GradientBoostingClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

X, y = make_classification(random_state=0)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, random_state=0)
model = GradientBoostingClassifier(n_estimators=100).fit(X_tr, y_tr)
print("Test acc:", model.score(X_te, y_te))

XGBoost / LightGBM

XGBoost e LightGBM são bibliotecas otimizadas de boosting de gradiente — mais rápidas, mais escaláveis e, muitas vezes, mais precisas do que o GBM do sklearn.

# pip install xgboost lightgbm
from xgboost import XGBClassifier
from lightgbm import LGBMClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

X, y = make_classification(random_state=0)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, random_state=0)

xgb = XGBClassifier(n_estimators=100, eval_metric="logloss").fit(X_tr, y_tr)
print("XGB acc:", xgb.score(X_te, y_te))

Ajuste de n_estimators

Mais árvores em uma floresta aleatória reduzem a variância (até certo ponto) sem causar sobreajuste. Use a curva de validação para encontrar a quantidade ideal.

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
from sklearn.datasets import make_classification
import numpy as np

X, y = make_classification(random_state=0)
for n in [10, 50, 100, 200]:
    scores = cross_val_score(RandomForestClassifier(n_estimators=n, random_state=0), X, y, cv=5)
    print(f"n={n}: {scores.mean():.3f}")

Visualização de uma árvore de decisão

Use sklearn.tree.plot_tree ou export_text para examinar o que a árvore aprendeu.

from sklearn.tree import DecisionTreeClassifier, export_text, plot_tree
from sklearn.datasets import load_iris

X, y = load_iris(return_X_y=True)
model = DecisionTreeClassifier(max_depth=2).fit(X, y)
print(export_text(model, feature_names=load_iris().feature_names.tolist()))

Verificação rápida

Como uma floresta aleatória reduz o sobreajuste em comparação com uma única árvore de decisão?

Recapitulação

As árvores de decisão dividem os dados por limiares de características e fazem previsões usando os valores das folhas. Ajuste max_depth para controlar o sobreajuste. As florestas aleatórias calculam a média de muitas árvores para reduzir a variância. O boosting de gradiente treina árvores sequencialmente para obter alta precisão. Em produção, prefira XGBoost ou LightGBM.

Perguntas Frequentes

A aula “Modelos baseados em árvores: árvores de decisão e florestas aleatórias” é grátis?

Sim — o texto completo de “Modelos baseados em árvores: árvores de decisão e florestas aleatórias” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.

O que vou aprender em “Modelos baseados em árvores: árvores de decisão e florestas aleatórias”?

Crie e ajuste modelos de árvores de decisão e florestas de conjunto. Você pratica Python Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Python Academy?

Nenhuma experiência prévia é necessária. Python Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Modelos baseados em árvores: árvores de decisão e florestas aleatórias”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Python Academy?

Sim. Cada aula de Python Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. A API do scikit-learn: fit, transform, predict
  2. Modelos lineares: regressão e classificação
  3. Modelos baseados em árvores: árvores de decisão e florestas aleatórias
  4. Avaliação de modelos e validação cruzada
← Voltar para Python Academy