Fluxuri de lucru pentru machine learning

Modelare cu tidymodels în R

David Svancer

Data Scientist

Clasificare cu arbori de decizie

Arborii de decizie segmentează spațiul predictorilor în regiuni rectangulare

Împărțire binară recursivă

  • Algoritm care segmentează spațiul predictorilor în regiuni rectangulare non-suprapuse

Scatter pentru datele de lead scoring

Modelare cu tidymodels în R

Clasificare cu arbori de decizie

Arborii de decizie segmentează spațiul predictorilor în regiuni rectangulare

Împărțire binară recursivă

  • Algoritm care segmentează spațiul predictorilor în regiuni rectangulare non-suprapuse
  • Împărțirile sunt adăugate iterativ
    • Puncte de tăiere orizontale sau verticale

Scatter cu prima împărțire a arborelui de decizie

Modelare cu tidymodels în R

Clasificare cu arbori de decizie

Arborii de decizie segmentează spațiul predictorilor în regiuni rectangulare

Împărțire binară recursivă

  • Algoritm care segmentează spațiul predictorilor în regiuni rectangulare non-suprapuse
  • Împărțirile sunt adăugate iterativ
    • Puncte de tăiere orizontale sau verticale

Scatter cu a doua împărțire a arborelui de decizie

Modelare cu tidymodels în R

Clasificare cu arbori de decizie

Arborii de decizie segmentează spațiul predictorilor în regiuni rectangulare

Împărțire binară recursivă

  • Algoritm care segmentează spațiul predictorilor în regiuni rectangulare non-suprapuse
  • Împărțirile sunt adăugate iterativ
    • Puncte de tăiere orizontale sau verticale

Scatter cu a treia împărțire a arborelui de decizie

Modelare cu tidymodels în R

Clasificare cu arbori de decizie

Arborii de decizie segmentează spațiul predictorilor în regiuni rectangulare

Împărțire binară recursivă

  • Algoritm care segmentează spațiul predictorilor în regiuni rectangulare non-suprapuse
  • Împărțirile sunt adăugate iterativ
    • Puncte de tăiere orizontale sau verticale

 

Produce regiuni rectangulare distincte

  • La clasificare, se prezice clasa majoritară

Scatter cu patru regiuni rectangulare de predicție

Modelare cu tidymodels în R

Diagrame arbore

  • Noduri interioare
    • Împărțirile arborelui de decizie (casete închise la culoare)
  • Noduri terminale
    • Regiuni care nu mai sunt împărțite
    • Casete verzi și mov

Diagramă arbore de decizie

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

Scatter cu patru regiuni rectangulare de predicție

Modelare cu tidymodels în R

Specificarea modelului

Specificarea modelului în parsnip

  • decision_tree()
    • Interfață generală pentru modelele arbore de decizie în parsnip
    • Motorul comun este 'rpart'
    • Modul poate fi 'classification' sau 'regression'
      • Pentru datele de lead scoring, se utilizează 'classification'
dt_model <- decision_tree() %>% 

set_engine('rpart') %>%
set_mode('classification')
Modelare cu tidymodels în R

Rețetă de inginerie a caracteristicilor

Transformări de date pentru datele de lead scoring

  • Codificate într-un obiect recipe
    • Eliminarea multicoliniarității
    • Normalizarea predictorilor numerici
    • Crearea variabilelor dummy pentru predictorii nominali

Două obiecte R de gestionat

  • Model parsnip și specificație recipe
  • Combinarea într-un singur obiect ar simplifica procesul
leads_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()
Modelare cu tidymodels în R

Combinarea modelelor și rețetelor

Pachetul workflows este conceput pentru simplificarea procesului de modelare

  • Combină un model parsnip și un obiect recipe într-un singur obiect workflow

 

Inițializat cu funcția workflow()

  • Adăugați modelul cu add_model()
  • Adăugați obiectul recipe cu add_recipe()
    • Trebuie să fie specificația, nu o 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
Modelare cu tidymodels în R

Antrenarea modelului cu workflows

Antrenarea unui obiect workflow

  • Transmiteți workflow la last_fit() și furnizați obiectul de împărțire a datelor
  • Vizualizați rezultatele evaluării cu collect_metrics()

În fundal

  • Se creează seturile de antrenare și testare
  • recipe este antrenat și aplicat
  • Arborele de decizie este antrenat cu datele de antrenare
  • Predicții și metrici pe datele de testare
leads_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
Modelare cu tidymodels în R

Colectarea predicțiilor

Un workflow antrenat cu last_fit() poate fi transmis la collect_predictions()

  • Produce rezultate detaliate pe datele de testare
  • Ca și anterior, poate fi utilizat cu funcțiile yardstick pentru metrici personalizate
leads_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
Modelare cu tidymodels în R

Explorarea metricilor personalizate

Creați un set de metrici personalizat cu metric_set()

  • Aria de sub curba ROC, sensibilitate și specificitate

 

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
Modelare cu tidymodels în R

Set de date privind neîndeplinirea obligațiilor de credit

Date financiare pentru împrumuturi de consum la o bancă

  • Variabila de rezultat este 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

Să exersăm construirea de workflows!

Modelare cu tidymodels în R

Preparing Video For Download...