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

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

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

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

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


Les nœuds internes sont des lignes en pointillé et les nœuds terminaux sont des régions rectangulaires mises en évidence

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 pointage des prospects
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
Recette de données
Entrées :
rôle #variables
issue 1
prédicteur 6
Opérations :
Filtre de corrélation sur all_numeric()
Centrage et mise à l'échelle pour all_numeric()
Variables factices à partir de all_nominal(), -all_outcomes()
Le paquet workflows sert à simplifier 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 =====================
Préprocesseur : Recipe
Modèle : decision_tree()
-- Préprocesseur -----------------
3 étapes Recipe
* step_corr()
* step_normalize()
* step_dummy()
-- Modèle --------------------------
Spécification du modèle Decision Tree (classification)
Moteur de calcul : rpart
Entraîner un objet workflow
workflow à last_fit() et fournir l'objet de découpage des donnéescollect_metrics()En coulisse
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 mesures 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 ensemble de mesures personnalisé avec metric_set()
Passer les jeux de prédictions à leads_metrics() pour calculer les mesures
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 dans une 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élisation avec tidymodels en R