Särdragsframställning

Modellering med tidymodels i R

David Svancer

Data Scientist

Särdragsframställning med paketet recipes

Arbetsflöde för särdragsframställning med recipes

Modellering med tidymodels i R

Ange variabeltyper och roller

 

Definiera kolumnroller

  • Tilldela alla variabler rollen utfall eller prediktor

Bestäm variablernas datatyper

  • Numeriska data
  • Kategoriska data

 

Detta görs med funktionen recipe()

 

Specificera ett recept med funktionen recipe

Modellering med tidymodels i R

Förbearbetningssteg

Lägg till nödvändiga förbearbetningssteg

  • Imputering av saknade värden
  • Datatransformationer
    • Centrering och skalning av numeriska variabler
  • Skapa nya variabler
    • Beräkna kvoter av variabler
  • Och mycket mer...

Varje steg läggs till med en unik step_*()-funktion

 

Lägga till datatransformationer med step-funktioner

1 https://recipes.tidymodels.org/reference/index.html
Modellering med tidymodels i R

Träna förbearbetningssteg

recipe-objekt tränas på en datakälla, vanligtvis träningsdatamängden

  • Datatransformationer estimeras
    • Medelvärde och standardavvikelse för numeriska kolumner – för centrering och skalning
    • Formler för att skapa nya kolumner sparas för tillämpning på nya data

 

Recept tränas med funktionen prep()

 

Funktionen prep tränar särdragsframställningssteg med träningsdatamängden

Modellering med tidymodels i R

Tillämpa recept på nya data

Tillämpa alla tränade förbearbetningstransformationer

  • På tränings- och testdatamängder för modellering
  • På nya datakällor för framtida prediktioner
    • Maskininlärningsalgoritmer kräver samma dataformat som användes under träning för att predicera nya värden

 

Recept tillämpas med funktionen bake()

 

Funktionen bake tillämpar ett tränat recept på nya datakällor

Modellering med tidymodels i R

Enkel pipeline för särdragsframställning

Logaritmtransformera total_time i lead-scoringdata

  • Vanlig transformation för stora datavärden
  • Komprimerar värdeintervallet och minskar variabiliteten
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
Modellering med tidymodels i R

Skapa ett recipe-objekt

Funktionen recipe()

  • Modellformel
    • Tilldelar variabelroller
  • Argumentet data
    • Bestämmer variablernas datatyper

 

Skicka recipe-objektet till step_log() för att lägga till ett logaritmtransformationssteg

  • Välj variabel för transformation, total_time, och ange logaritmbasen
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
Modellering med tidymodels i R

Utforska variabelroller och typer

Skicka ett recipe-objekt till funktionen summary()

  • Skapar en tibble med variabelinformation
  • Kolumnen type
    • Anger variabelns datatyp
    • "nominal" representerar kategoriska variabler
  • Kolumnen role
    • Anger variabelroller för modellering
    • Tilldelas utifrån den angivna modellformeln
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
Modellering med tidymodels i R

Träna ett recipe-objekt

Funktionen prep()

  • Tar ett recipe-objekt som första argument
  • Argumentet training
    • Anger de data som förbearbetningsstegen ska tränas på

 

Skriva ut ett tränat recipe-objekt

  • Tränade steg markeras med [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]
Modellering med tidymodels i R

Transformera träningsdata

Funktionen bake()

  • Första argumentet är ett tränat recipe-objekt
  • Argumentet new_data
    • Data som det tränade recipet ska tillämpas på
  • Träningsdata
    • leads_training användes för att träna recipet
    • Som standard behåller funktionen prep() de transformerade data
    • Skicka NULL till new_data för att extrahera dem
  • Returnerar en tibble med transformerade data
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
Modellering med tidymodels i R

Transformera nya data

Transformera datamängder som inte användes vid träning av recipet

  • Skicka datamängden till argumentet new_data
  • Det tränade recipet tillämpar alla steg på nya datakällor
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
Modellering med tidymodels i R

Nu kör vi en övning!

Modellering med tidymodels i R

Preparing Video For Download...