Ingineria caracteristicilor

Modelare cu tidymodels în R

David Svancer

Data Scientist

Ingineria caracteristicilor cu pachetul recipes

Fluxul de lucru pentru ingineria caracteristicilor cu recipes

Modelare cu tidymodels în R

Specificarea tipurilor și rolurilor variabilelor

 

Definirea rolurilor coloanelor

  • Atribuie rol de rezultat sau predictor tuturor variabilelor

Determinarea tipurilor de date

  • Date numerice
  • Date categoriale

 

Realizat cu funcția recipe()

 

Specificarea unei rețete cu funcția recipe

Modelare cu tidymodels în R

Pași de preprocesare a datelor

Adaugă pașii necesari de preprocesare

  • Imputarea datelor lipsă
  • Transformări ale datelor
    • Centrarea și scalarea variabilelor numerice
  • Crearea de variabile noi
    • Calcularea rapoartelor dintre variabile
  • Și multe altele...

Fiecare pas se adaugă cu o funcție unică step_*()

 

Adăugarea transformărilor cu funcțiile step

1 https://recipes.tidymodels.org/reference/index.html
Modelare cu tidymodels în R

Antrenarea pașilor de preprocesare

Obiectele recipe sunt antrenate pe o sursă de date, de obicei setul de antrenament

  • Transformările sunt estimate
    • Media și deviația standard ale coloanelor numerice pentru centrare și scalare
    • Formulele pentru crearea de coloane noi sunt stocate pentru aplicare pe date noi

 

Rețetele sunt antrenate cu funcția prep()

 

Funcția prep antrenează pașii de inginerie a caracteristicilor pe setul de antrenament

Modelare cu tidymodels în R

Aplicarea rețetelor pe date noi

Aplică toate transformările de preprocesare antrenate

  • Pe seturile de antrenament și de test pentru modelare
  • Pe surse noi de date pentru predicții viitoare
    • Algoritmii de machine learning necesită același format de date ca la antrenament

 

Rețetele sunt aplicate cu funcția bake()

 

Funcția bake aplică o rețetă antrenată pe surse noi de date

Modelare cu tidymodels în R

Pipeline simplu de inginerie a caracteristicilor

Transformare logaritmică pe total_time în datele de lead scoring

  • Transformare frecventă pentru valori mari
  • Comprimă intervalul valorilor și reduce variabilitatea
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
Modelare cu tidymodels în R

Construirea unui obiect recipe

Funcția recipe()

  • Formula modelului
    • Atribuie roluri variabilelor
  • Argumentul data
    • Determină tipurile de date ale variabilelor

 

Transmite obiectul recipe la step_log() pentru a adăuga pasul de transformare logaritmică

  • Selectează variabila total_time și specifică baza logaritmului
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
Modelare cu tidymodels în R

Explorarea rolurilor și tipurilor de variabile

Transmiterea unui obiect recipe la funcția summary()

  • Creează un tibble cu informații despre variabile
  • Coloana type
    • Captează tipul de date al variabilei
    • 'nominal' reprezintă variabile categoriale
  • Coloana role
    • Captează rolurile variabilelor pentru modelare
    • Atribuite pe baza formulei modelului
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
Modelare cu tidymodels în R

Antrenarea unui obiect recipe

Funcția prep()

  • Primește un obiect recipe ca prim argument
  • Argumentul training
    • Specifică datele pe care se antrenează pașii de preprocesare

 

Afișarea unui obiect recipe antrenat

  • Pașii antrenați sunt indicați cu [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]
Modelare cu tidymodels în R

Transformarea datelor de antrenament

Funcția bake()

  • Primul argument este un obiect recipe antrenat
  • Argumentul new_data
    • Datele pe care se aplică recipe-ul antrenat
  • Datele de antrenament
    • leads_training a fost folosit pentru antrenarea recipe-ului
    • Implicit, datele transformate sunt reținute de funcția prep()
    • Transmite NULL la new_data pentru extragere
  • Returnează un tibble cu datele transformate
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
Modelare cu tidymodels în R

Transformarea datelor noi

Transformarea seturilor de date neutilizate la antrenarea recipe-ului

  • Transmite setul de date la argumentul new_data
  • Recipe-ul antrenat va aplica toți pașii pe sursele noi de date
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
Modelare cu tidymodels în R

Să exersăm!

Modelare cu tidymodels în R

Preparing Video For Download...