Modelowanie z tidymodels w R
David Svancer
Data Scientist
Drzewa decyzyjne dzielą przestrzeń predyktorów na regiony prostokątne
Rekurencyjny podział binarny

Drzewa decyzyjne dzielą przestrzeń predyktorów na regiony prostokątne
Rekurencyjny podział binarny

Drzewa decyzyjne dzielą przestrzeń predyktorów na regiony prostokątne
Rekurencyjny podział binarny

Drzewa decyzyjne dzielą przestrzeń predyktorów na regiony prostokątne
Rekurencyjny podział binarny

Drzewa decyzyjne dzielą przestrzeń predyktorów na regiony prostokątne
Rekurencyjny podział binarny
Tworzy odrębne regiony prostokątne


Węzły wewnętrzne to linie przerywane, a węzły końcowe to wyróżnione regiony prostokątne

Specyfikacja modelu w parsnip
decision_tree()parsnip'rpart''classification' lub 'regression''classification'dt_model <- decision_tree() %>%set_engine('rpart') %>%set_mode('classification')
Transformacje danych dla danych lead scoring
recipeDwa obiekty R do zarządzania
parsnip i specyfikacja 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()
Pakiet workflows usprawnia proces modelowania
parsnip i obiekt recipe w jeden obiekt workflow
Inicjowany funkcją workflow()
add_model()recipe za pomocą add_recipe()recipeleads_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
Trenowanie obiektu workflow
workflow do last_fit() i podaj obiekt podziału danychcollect_metrics()Za kulisami
recipeleads_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
Obiekt workflow wytrenowany z last_fit() można przekazać do collect_predictions()
yardstick do eksploracji własnych metrykleads_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
Utwórz własny zestaw metryk za pomocą metric_set()
Przekaż zbiory predykcji do leads_metrics(), aby obliczyć metryki
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
Dane finansowe dotyczące pożyczek konsumenckich w banku
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
Modelowanie z tidymodels w R