Modelare cu tidymodels în R
David Svancer
Data Scientist
Arborii de decizie segmentează spațiul predictorilor în regiuni rectangulare
Împărțire binară recursivă

Arborii de decizie segmentează spațiul predictorilor în regiuni rectangulare
Împărțire binară recursivă

Arborii de decizie segmentează spațiul predictorilor în regiuni rectangulare
Împărțire binară recursivă

Arborii de decizie segmentează spațiul predictorilor în regiuni rectangulare
Împărțire binară recursivă

Arborii de decizie segmentează spațiul predictorilor în regiuni rectangulare
Împărțire binară recursivă
Produce regiuni rectangulare distincte


Nodurile interioare sunt linii întrerupte, iar nodurile terminale sunt regiuni rectangulare evidențiate

Specificarea modelului în parsnip
decision_tree()parsnip'rpart''classification' sau 'regression''classification'dt_model <- decision_tree() %>%set_engine('rpart') %>%set_mode('classification')
Transformări de date pentru datele de lead scoring
recipeDouă obiecte R de gestionat
parsnip și specificație 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()
Pachetul workflows este conceput pentru simplificarea procesului de modelare
parsnip și un obiect recipe într-un singur obiect workflow
Inițializat cu funcția workflow()
add_model()recipe cu add_recipe()recipe antrenatăleads_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
Antrenarea unui obiect workflow
workflow la last_fit() și furnizați obiectul de împărțire a datelorcollect_metrics()În fundal
recipe este antrenat și aplicatleads_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 antrenat cu last_fit() poate fi transmis la collect_predictions()
yardstick pentru metrici personalizateleads_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
Creați un set de metrici personalizat cu metric_set()
Transmiteți setul de predicții la leads_metrics() pentru a calcula metricile
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
Date financiare pentru împrumuturi de consum la o bancă
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
Modelare cu tidymodels în R