Creșterea conținutului informațional al datelor brute

Ingineria caracteristicilor în R

Jorge Zazueta

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

Lucrul cu date brute

Un set de date tipic cu valori lipsă

Tabel cu un exemplu de date lipsă

Valori ca factori

Tabel cu un exemplu de date de tip factor

Ingineria caracteristicilor în R

Lucrul cu date brute

Set de date cu valori imputate

Tabel fără valori lipsă după imputare

Factori reprezentați ca variabile dummy

Factori reprezentați ca variabile dummy

Ingineria caracteristicilor în R

Setul de date loans

# A tibble: 614 × 13
   Loan_ID  Gender Married Dependents Educa…¹ Self_…² Appli…³ Coapp…⁴ LoanA…⁵ Loan_…⁶
   <fct>    <fct>  <fct>   <fct>      <fct>   <fct>     <dbl>   <dbl>   <dbl>   <dbl>
 1 LP001002 Male   No      0          Gradua… No         5849       0      NA     360
 2 LP001003 Male   Yes     1          Gradua… No         4583    1508     128     360
 3 LP001005 Male   Yes     0          Gradua… Yes        3000       0      66     360
 4 LP001006 Male   Yes     0          Not Gr… No         2583    2358     120     360
 5 LP001008 Male   No      0          Gradua… No         6000       0     141     360
 6 LP001011 Male   Yes     2          Gradua… Yes        5417    4196     267     360
 7 LP001013 Male   Yes     0          Not Gr… No         2333    1516      95     360
 8 LP001014 Male   Yes     3+         Gradua… No         3036    2504     158     360
 9 LP001018 Male   Yes     2          Gradua… No         4006    1526     168     360
10 LP001020 Male   Yes     1          Gradua… No        12841   10968     349     360
# … with 604 more rows, 3 more variables: Credit_History <dbl>, Property_Area <fct>,
#   Loan_Status <fct>, and abbreviated variable names ¹​Education, ²​Self_Employed,
#   ³​ApplicantIncome, ⁴​CoapplicantIncome, ⁵​LoanAmount, ⁶​Loan_Amount_Term
# ℹ Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names
Ingineria caracteristicilor în R

Valori lipsă

Putem identifica vizual valorile lipsă din loans folosind vis_miss(loans) din pachetul naniar.

Grafic care arată valorile lipsă pentru întregul set de date.

Ingineria caracteristicilor în R

Valori lipsă

Putem mări tabelul selectând doar coloanele cu valori lipsă.

loans %>% 
select(Gender, 
       Married, 
       Dependents,
       Self_Employed,
       LoanAmount,
       Loan_Amount_Term, 
       Credit_History) %>%
  vis_miss()

O privire mai atentă asupra valorilor lipsă

Grafic care arată valorile lipsă pentru caracteristicile selectate.

Ingineria caracteristicilor în R

Valori lipsă și variabile dummy

Putem trata valorile lipsă și crea variabile dummy în același rețetar.

lr_recipe <- 
  recipe(Loan_Status ~., 
         data = train) %>%
  update_role(Loan_ID, 
              new_role = "ID" ) %>%
  step_impute_knn(all_predictors()) %>%
  step_dummy(all_nominal_predictors())

Afișați rețetarul

lr_recipe
Recipe

Inputs:

      role #variables
        ID          1
   outcome          1
 predictor         30

Operations:

K-nearest neighbor imputation for all_predictors()
Dummy variables from all_nominal_predictors()
Ingineria caracteristicilor în R

Găsirea pasului de rețetar potrivit

Alte metode de imputare și toți pașii de rețetar se găsesc în documentația tidymodels la www.tidymodels.org/find/recipes

Instrument de căutare a pașilor de rețetar în documentația tidymodels.

Ingineria caracteristicilor în R

Antrenarea și evaluarea modelului

# Fit
lr_fit <- 
  lr_workflow %>% fit(data = train)
lr_aug <- 
  lr_fit %>% augment(test)
# Assess
lr_aug %>%
  roc_curve(truth = Loan_Status, .pred_N) %>%
  autoplot()

bind_rows(lr_aug %>%
            roc_auc(truth = Loan_Status,
                    .pred_N),
          lr_aug %>%
            accuracy(truth = Loan_Status,
                     .pred_class))
# A tibble: 2 × 3
  .metric  .estimator .estimate
  <chr>    <chr>          <dbl>
1 roc_auc  binary         0.738
2 accuracy binary         0.792

Ingineria caracteristicilor în R

Să exersăm!

Ingineria caracteristicilor în R

Preparing Video For Download...