Modéliser avec tidymodels en R
David Svancer
Data Scientist
Les arbres de décision découpent l'espace des prédicteurs en zones rectangulaires
Découpage binaire récursif

Les arbres de décision découpent l'espace des prédicteurs en zones rectangulaires
Découpage binaire récursif

Les arbres de décision découpent l'espace des prédicteurs en zones rectangulaires
Découpage binaire récursif

Les arbres de décision découpent l'espace des prédicteurs en zones rectangulaires
Découpage binaire récursif

Les arbres de décision découpent l'espace des prédicteurs en zones rectangulaires
Découpage binaire récursif
Produit des zones rectangulaires distinctes


Les nœuds internes sont en pointillés et les nœuds terminaux sont des zones rectangulaires en surbrillance

Spécification de modèle dans parsnip
decision_tree()parsnip'rpart''classification' ou 'regression''classification'dt_model <- decision_tree() %>%set_engine('rpart') %>%set_mode('classification')
Transformations des données pour le lead scoring
recipeDeux objets R à gérer
parsnip et spécification 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()
Le package workflows sert à rationaliser le processus de modélisation
parsnip et un objet recipe en un seul objet workflow
Initialisé avec la fonction workflow()
add_model()recipe avec add_recipe()recipe entraînéeleads_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
Entraîner un objet workflow
workflow à last_fit() et fournir l'objet de découpe des donnéescollect_metrics()En coulisses
recipe entraînée et appliquéeleads_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
Un workflow entraîné avec last_fit() peut être passé à collect_predictions()
yardstick pour explorer des métriques personnaliséesleads_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
Créer un jeu de métriques personnalisé avec metric_set()
Passer les prédictions à leads_metrics() pour calculer les métriques
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
Données financières sur des prêts à la consommation en banque
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
Modéliser avec tidymodels en R