Ajuste de hiperparâmetros

Machine Learning com modelos baseados em árvores em R

Sandro Raabe

Data Scientist

Hiperparâmetros

  • Influenciam o formato e a complexidade das árvores
  • Parâmetros do modelo que controlam a complexidade e são definidos antes do treino

Hiperparâmetros em árvores de decisão do parsnip:

  • min_n: número mínimo de amostras para dividir um nó
  • tree_depth: profundidade máxima permitida da árvore
  • cost_complexity: penalidade pela complexidade da árvore
Machine Learning com modelos baseados em árvores em R

Por que ajustar?

Valores padrão definidos por parsnip:

decision_tree(min_n = 20, tree_depth = 30, cost_complexity = 0.01)
  • Funcionam bem em muitos casos, mas podem não ser os melhores para todo conjunto de dados

 

O objetivo do ajuste é encontrar o melhor conjunto de valores de hiperparâmetros.

Machine Learning com modelos baseados em árvores em R

Ajustando com tidymodels usando o pacote tune

uma grade de ajuste vazia

Machine Learning com modelos baseados em árvores em R

Ajustando com tidymodels

especificação fictícia

Machine Learning com modelos baseados em árvores em R

Ajustando com tidymodels

uma grade de ajuste com um modelo treinado por ponto da grade

Machine Learning com modelos baseados em árvores em R

Ajustando com tidymodels

o melhor ponto da grade é selecionado

Machine Learning com modelos baseados em árvores em R

Etapa 1: Criar placeholders: tune()

spec_untuned <- decision_tree(

min_n = tune(), tree_depth = tune()
) %>% set_engine("rpart") %>% set_mode("classification")
Decision Tree Model Specification 
(classification)


Main Arguments: tree_depth = tune() min_n = tune()
  • tune() marca parâmetros para ajuste
  • Resto da especificação como de costume
Machine Learning com modelos baseados em árvores em R

Etapa 2: Criar a grade de ajuste: grid_regular()

tree_grid <- grid_regular(

parameters(spec_untuned),
levels = 3 )
# A tibble: 9 x 2
  min_n tree_depth
1     2          1
2    21          1
3    40          1
4     2          8
5    21          8
6    40          8
7     2         15
8    21         15
9    40         15
  • Função auxiliar parameters()
  • levels: número de pontos na grade para cada hiperparâmetro
Machine Learning com modelos baseados em árvores em R

Etapa 3: Ajustar a grade: tune_grid()

  • Constrói um modelo para cada ponto da grade
  • Avalia cada modelo fora da amostra (CV)

 

Uso e argumentos:

  • Especificação da árvore sem ajuste
  • Fórmula do modelo
  • Folds de CV
  • Grade de ajuste
  • Lista de métricas em metric_set()
tune_results <- tune_grid(

spec_untuned,
outcome ~ .,
resamples = my_folds,
grid = tree_grid,
metrics = metric_set(accuracy))
Machine Learning com modelos baseados em árvores em R

Visualizar os resultados do ajuste

autoplot(tune_results)

resultados do ajuste

Machine Learning com modelos baseados em árvores em R

Etapa 4: Usar os melhores parâmetros: finalize_model()

# Selecionar os melhores parâmetros
final_params <- select_best(tune_results)

final_params
# A tibble: 1 x 3
    min_n    tree_depth    .config
    <int>         <int>      <chr>
1      2              8     Model4
# Inserir na especificação
best_spec <- finalize_model(spec_untuned, 
                            final_params)

best_spec
Decision Tree Model Specification 
                 (classification)

Main Arguments:
  tree_depth = 8
  min_n = 2

Computational engine: rpart
Machine Learning com modelos baseados em árvores em R

Vamos ajustar!

Machine Learning com modelos baseados em árvores em R

Preparing Video For Download...