Feature engineering

Modellazione con tidymodels in R

David Svancer

Data Scientist

Feature engineering con il pacchetto recipes

Workflow di feature engineering con recipes

Modellazione con tidymodels in R

Specificare tipi e ruoli delle variabili

 

Definisci i ruoli delle colonne

  • Assegna ruolo outcome o predictor a tutte le variabili

Determina i tipi di variabile

  • Dati numerici
  • Dati categorici

 

Si fa con la funzione recipe()

 

Specificare una recipe con la funzione recipe

Modellazione con tidymodels in R

Passaggi di preprocessing dei dati

Aggiungi i passaggi di preprocessing necessari

  • Imputazione dei valori mancanti
  • Trasformazioni dei dati
    • Centratura e scaling delle variabili numeriche
  • Creazione di nuove variabili
    • Calcolo di rapporti tra variabili
  • E molti altri...

Ogni passaggio si aggiunge con una funzione step_*() dedicata

 

Aggiungere trasformazioni con le funzioni step

1 https://recipes.tidymodels.org/reference/index.html
Modellazione con tidymodels in R

Addestrare i passaggi di preprocessing

Gli oggetti recipe vengono addestrati su una sorgente dati, di solito il training set

  • Si stimano le trasformazioni dei dati
    • Media e deviazione standard delle colonne numeriche per centrare e scalare
    • Si salvano le formule per creare nuove colonne da applicare ai nuovi dati

 

Le ricette si addestrano con la funzione prep()

 

La funzione prep addestra i passaggi di feature engineering usando il training set

Modellazione con tidymodels in R

Applicare le ricette ai nuovi dati

Applica tutte le trasformazioni di preprocessing addestrate

  • Al training e test set per il modeling
  • A nuove sorgenti dati per previsioni future
    • Gli algoritmi ML richiedono lo stesso formato dei dati usato in training per predire nuovi valori

 

Si applicano le ricette con la funzione bake()

 

La funzione bake applica una recipe addestrata a nuove sorgenti dati

Modellazione con tidymodels in R

Pipeline semplice di feature engineering

Trasforma con log total_time nei dati di lead scoring

  • Trasformazione comune per valori grandi
  • Comprimi l’intervallo e riduci la variabilità
leads_training
# A tibble: 996 x 7
   purchased  total_visits  total_time  pages_per_visit  total_clicks  lead_source    us_location
   <fct>          <dbl>       <dbl>           <dbl>          <dbl>         <fct>          <fct>      
 1 yes             7          1148            7              59        direct_traffic     west       
 2 no              5           228            2.5            25        email              southeast  
 3 no              7           481            2.33           21        organic_search     west       
 4 no              4           177            4              37        direct_traffic     west       
 5 no              2          1273            2              26        email              midwest         
# ... with 991 more rows
Modellazione con tidymodels in R

Creare un oggetto recipe

La funzione recipe()

  • Formula del modello
    • Assegna i ruoli delle variabili
  • Argomento data
    • Determina i tipi di dato delle variabili

 

Passa l’oggetto recipe a step_log() per aggiungere il passaggio di logaritmo

  • Seleziona la variabile total_time e specifica la base del log
leads_log_rec <- recipe(purchased ~ ., 
                       data = leads_training) %>% 

step_log(total_time, base = 10)
leads_log_rec
Data Recipe
Inputs:
      role #variables
   outcome          1
 predictor          6

Operations:

Log transformation on total_time
Modellazione con tidymodels in R

Esplorare ruoli e tipi delle variabili

Passare un oggetto recipe alla funzione summary()

  • Crea una tibble con info sulle variabili
  • Colonna type
    • Rileva il tipo di dato della variabile
    • "nominal" indica variabili categoriche
  • Colonna role
    • Rileva i ruoli per il modeling
    • Assegnati in base alla formula del modello
leads_log_rec %>% 
  summary()
# A tibble: 7 x 4
  variable        type     role       source  
  <chr>           <chr>    <chr>      <chr>   
1 total_visits    numeric  predictor  original
2 total_time      numeric  predictor  original
3 pages_per_visit numeric  predictor  original
4 total_clicks    numeric  predictor  original
5 lead_source     nominal  predictor  original
6 us_location     nominal  predictor  original
7 purchased       nominal  outcome    original
Modellazione con tidymodels in R

Addestrare un oggetto recipe

La funzione prep()

  • Prende un oggetto recipe come primo argomento
  • Argomento training
    • Specifica i dati su cui addestrare i passaggi di preprocessing

 

Stampare una recipe addestrata

  • I passaggi addestrati sono indicati da [trained]
leads_log_rec_prep <- leads_log_rec %>% 
  prep(training = leads_training)
leads_log_rec_prep
Data Recipe
Inputs:
      role #variables
   outcome          1
 predictor          6

Training data contained 996 data points and 
no missing data.

Operations:
Log transformation on total_time [trained]
Modellazione con tidymodels in R

Trasformare i dati di training

La funzione bake()

  • Primo argomento: una recipe addestrata
  • Argomento new_data
    • Dati su cui applicare la recipe addestrata
  • Dati di training
    • leads_training è stato usato per addestrare la recipe
    • Per default, i dati trasformati sono conservati da prep()
    • Passa NULL a new_data per estrarli
  • Restituisce una tibble con i dati trasformati
leads_log_rec_prep %>% 
  bake(new_data = NULL)
# A tibble: 996 x 7
  total_visits total_time ... us_location  purchased
    <dbl>       <dbl>     ...   <fct>       <fct>
 1     7        3.06      ...   west         yes
 2     5        2.36      ...   southeast    no
 3     7        2.68      ...   west         no
 4     4        2.25      ...   west         no
 5     2        3.10      ...   midwest      no
# ... with 991 more rows
Modellazione con tidymodels in R

Trasformare nuovi dati

Trasformare dataset non usati durante l’addestramento della recipe

  • Passa il dataset all’argomento new_data
  • La recipe addestrata applicherà tutti i passaggi ai nuovi dati
leads_log_rec_prep %>% 
  bake(new_data = leads_test)
# A tibble: 332 x 7
 total_visits  total_time ... us_location  purchased
     <dbl>       <dbl>    ...  <fct>       <fct>
 1     8          2       ...  west         no
 2     4          3.13    ...  northeast    yes
 3     3          2.25    ...  west         no
 4     2          1.20    ...  midwest      no
 5     9          3.01    ...  west         yes
# ... with 327 more rows
Modellazione con tidymodels in R

Mettiamoci a sfornare!

Modellazione con tidymodels in R

Preparing Video For Download...