Modelagem com tidymodels em R
David Svancer
Data Scientist
Árvores de decisão segmentam o espaço dos preditores em regiões retangulares
Divisão binária recursiva

Árvores de decisão segmentam o espaço dos preditores em regiões retangulares
Divisão binária recursiva

Árvores de decisão segmentam o espaço dos preditores em regiões retangulares
Divisão binária recursiva

Árvores de decisão segmentam o espaço dos preditores em regiões retangulares
Divisão binária recursiva

Árvores de decisão segmentam o espaço dos preditores em regiões retangulares
Divisão binária recursiva
Produz regiões retangulares distintas


Nós internos são linhas tracejadas e nós terminais são regiões retangulares destacadas

Especificação do modelo em parsnip
decision_tree()parsnip'rpart''classification' ou 'regression''classification'dt_model <- decision_tree() %>%set_engine('rpart') %>%set_mode('classification')
Transformações de dados para lead scoring
recipeDois objetos R para gerenciar
parsnip e especificação da recipeleads_recipe <- recipe(purchased ~ ., data = leads_training) %>%step_corr(all_numeric(), threshold = 0.9) %>% step_normalize(all_numeric()) %>% step_dummy(all_nominal(), -all_outcomes())
leads_recipe
Data Recipe
Inputs:
role #variables
outcome 1
predictor 6
Operations:
Correlation filter on all_numeric()
Centering and scaling for all_numeric()
Dummy variables from all_nominal(), -all_outcomes()
O pacote workflows foi feito para agilizar o processo de modelagem
parsnip e um objeto recipe em um único objeto workflow
Inicialize com a função workflow()
add_model()recipe com add_recipe()recipe treinadaleads_wkfl <- workflow() %>%add_model(dt_model) %>%add_recipe(leads_recipe)leads_wkfl
== Workflow =====================
Preprocessor: Recipe
Model: decision_tree()
-- Preprocessor -----------------
3 Recipe Steps
* step_corr()
* step_normalize()
* step_dummy()
-- Model --------------------------
Decision Tree Model Specification (classification)
Computational engine: rpart
Treinando um objeto workflow
workflow para last_fit() e forneça o objeto de divisão dos dadoscollect_metrics()Por trás dos panos
recipe é treinada e aplicadaleads_wkfl_fit <- leads_wkfl %>% last_fit(split = leads_split)leads_wkfl_fit %>% collect_metrics()
# A tibble: 2 x 3
.metric .estimator .estimate
<chr> <chr> <dbl>
1 accuracy binary 0.771
2 roc_auc binary 0.775
Um workflow treinado com last_fit() pode ser passado para collect_predictions()
yardstick para explorar métricas personalizadas de desempenholeads_wkfl_preds <- leads_wkfl_fit %>% collect_predictions()leads_wkfl_preds
# A tibble: 332 x 6
id .pred_yes .pred_no .row .pred_class purchased
<chr> <dbl> <dbl> <int> <fct> <fct>
train/test split 0.120 0.880 2 no no
train/test split 0.755 0.245 17 yes yes
train/test split 0.120 0.880 21 no no
train/test split 0.120 0.880 22 no no
train/test split 0.755 0.245 24 yes yes
# ... with 327 more rows
Crie um conjunto de métricas personalizado com metric_set()
Passe os dados de predição para leads_metrics() para calcular as métricas
leads_metrics <- metric_set(roc_auc, sens, spec)leads_wkfl_preds %>% leads_metrics(truth = purchased, estimate = .pred_class, .pred_yes)
# A tibble: 3 x 3
.metric .estimator .estimate
<chr> <chr> <dbl>
1 sens binary 0.75
2 spec binary 0.783
3 roc_auc binary 0.775
Dados financeiros de empréstimos ao consumidor em um banco
loan_default
loans_df
# A tibble: 872 x 8
loan_default loan_purpose missed_payment_2_yr loan_amount interest_rate installment annual_income debt_to_income
<fct> <fct> <fct> <int> <dbl> <dbl> <dbl> <dbl>
no debt_consolidation no 25000 5.47 855. 62823 39.4
yes medical no 10000 10.2 364. 40000 24.1
no small_business no 13000 6.22 442. 65000 14.0
no small_business no 36000 5.97 1152. 125000 8.09
yes small_business yes 12000 11.8 308. 65000 20.1
# ... with 867 more rows
Modelagem com tidymodels em R