Proč transformovat existující příznaky?

Feature Engineering v R

Jorge Zazueta

Research Professor. Head of the Modeling Group at the School of Economics, UASLP

Usnadnění práce modelu

Výkon modelu strojového učení lze zlepšit tím, že data učiníme přehlednějšími.

glimpse(loans_num)
Rows: 614
Columns: 6
$ Loan_Status       <fct> Y, N, Y, Y, Y, Y, Y, N, Y, N, Y, Y, Y, N...
$ ApplicantIncome   <dbl> 5849, 4583, 3000, 2583, 6000, 5417, 233...
$ CoapplicantIncome <dbl> 0, 1508, 0, 2358, 0, 4196, 1516, 2504, 1...
$ LoanAmount        <dbl> NA, 128, 66, 120, 141, 267, 95, 158, 168...
$ Loan_Amount_Term  <dbl> 360, 360, 360, 360, 360, 360, 360, 360, ...
$ Credit_History    <fct> 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1...
Feature Engineering v R

Logaritmická transformace

Logaritmická transformace číselných příznaků:

  • Zpracování zešikmených dat
  • Snížení vlivu odlehlých hodnot
  • Převod multiplikativních vztahů na aditivní
  • Zlepšení vhodnosti dat pro modelování
  • Funguje pouze pro kladné hodnoty

Logaritmicky transformovaná data výše úvěru

Grafické porovnání surových a logaritmicky transformovaných dat

Feature Engineering v R

Normalizace

Normalizace nebo škálování číselných příznaků:

  • Zabrání dominanci jednoho příznaku nad ostatními
  • Usnadní interpretaci díky srovnatelné velikosti a
  • Zlepší vhodnost dat pro modelování

Např. hodnoty doby splácení úvěru se výrazně liší

Histogram zobrazující hodnoty výše úvěru.

Feature Engineering v R

Normalizace

Normalizace nebo škálování číselných příznaků:

  • Zabrání dominanci jednoho příznaku nad ostatními
  • Pomůže zpracovat odlehlé hodnoty a
  • Chybějící data
  • Zlepší vhodnost dat pro modelování

Normalizované hodnoty zachovávají distribuci, ale obsahují variaci.

Histogram zobrazující hodnoty výše úvěru s překrytím normalizovanými daty.

Feature Engineering v R

Definování modelu a receptu

Deklarujeme model logistické regrese a přidáme recept pro imputaci, normalizaci a logaritmickou transformaci příslušných příznaků.

lr_model <- logistic_reg()

lr_recipe <- 
  recipe(Loan_Status ~., 
         data = train) %>%
  step_impute_knn(
    all_numeric_predictors())%>%
  step_normalize(Loan_Amount_Term) %>%
  step_log(all_numeric_predictors(),
           -Loan_Amount_Term, offset = 1)

Výpis objektu receptu zobrazí souhrn použitých kroků.

lr_recipe
Recipe

Inputs:

      role #variables
   outcome          1
 predictor          5

Operations:

K-nearest neighbor imputation for all_numeric_predictors()
Centering and scaling for Loan_Amount_Term
Log transformation on all_numeric_predictors(),-Loan_Amount_Term
Feature Engineering v R

Efektivní měření výkonu

Definujeme sadu metrik – roc_auc, accuracy a sens – pro vyhodnocení objektu workflow lr_fit.

class_evaluate <- metric_set(
  roc_auc, accuracy, sens)

A spustíme ji jako jakoukoli jinou funkci.

lr_aug %>% 
  class_evaluate(
    truth = Loan_Status, 
    estimate = .pred_class, 
    .pred_Y)

Vlastní sada metrik

# A tibble: 3 × 3
  .metric  .estimator .estimate
  <chr>    <chr>          <dbl>
1 accuracy binary         0.813
2 sens     binary         0.467
3 roc_auc  binary         0.288
Feature Engineering v R

Pojďme si procvičit!

Feature Engineering v R

Preparing Video For Download...