Aumentando o conteúdo informativo dos dados brutos

Feature Engineering em R

Jorge Zazueta

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

Trabalhando com dados brutos

Um conjunto de dados típico com valores ausentes

Tabela mostrando um exemplo de dados ausentes

Valores como fatores

Tabela mostrando um exemplo de dados do tipo fator

Feature Engineering em R

Trabalhando com dados brutos

Conjunto de dados com imputação

Tabela sem dados ausentes após imputação

Fatores representados como variáveis dummies

Fatores representados como variáveis dummies

Feature Engineering em R

O conjunto de dados de empréstimos

# 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
Feature Engineering em R

Valores ausentes

Podemos identificar visualmente valores ausentes em loans usando vis_miss(loans) do pacote naniar.

Gráfico mostrando valores ausentes em todo o conjunto de dados.

Feature Engineering em R

Valores ausentes

Podemos ampliar a tabela selecionando apenas as colunas com valores ausentes.

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

Um olhar mais atento aos valores ausentes

Gráfico mostrando valores ausentes para as variáveis selecionadas.

Feature Engineering em R

Valores ausentes e variáveis dummies

Podemos tratar valores ausentes e criar variáveis dummies na mesma receita.

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

Imprima a receita

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()
Feature Engineering em R

Encontrando a etapa certa da receita

Você encontra outros métodos de imputação e todas as etapas de receita na documentação do tidymodels em www.tidymodels.org/find/recipes

Ferramenta de busca por etapas de receita na documentação do tidymodels.

Feature Engineering em R

Ajustando e avaliando nosso modelo

# 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

Feature Engineering em R

Vamos praticar!

Feature Engineering em R

Preparing Video For Download...