Feature engineering

Modeling with tidymodels in R

David Svancer

Data Scientist

Feature engineering s balíčkem recipes

Workflow feature engineeringu s balíčkem recipes

Modeling with tidymodels in R

Typy a role proměnných

 

Definování rolí sloupců

  • Přiřaďte roli výstupu nebo prediktoru všem proměnným

Určení datových typů proměnných

  • Numerická data
  • Kategorická data

 

Zajišťuje funkce recipe()

 

Specifikace receptu pomocí funkce recipe

Modeling with tidymodels in R

Kroky předzpracování dat

Přidání požadovaných kroků předzpracování dat

  • Imputace chybějících hodnot
  • Datové transformace
    • Centrování a škálování numerických proměnných
  • Vytváření nových proměnných
    • Výpočet poměrů proměnných
  • A mnoho dalšího...

Každý krok se přidává jedinečnou funkcí step_*()

 

Přidávání datových transformací pomocí step funkcí

1 https://recipes.tidymodels.org/reference/index.html
Modeling with tidymodels in R

Trénování kroků předzpracování

Objekty recipe jsou trénovány na datovém zdroji, obvykle trénovací sadě

  • Datové transformace jsou odhadnuty
    • Průměr a směrodatná odchylka numerických sloupců pro centrování a škálování
    • Vzorce pro vytváření nových sloupců jsou uloženy pro použití na nová data

 

Recipes se trénují funkcí prep()

 

Funkce prep natrénuje kroky feature engineeringu na trénovací sadě

Modeling with tidymodels in R

Aplikace receptů na nová data

Aplikuje všechny natrénované transformace předzpracování dat

  • Na trénovací a testovací sadu pro modelování
  • Na nové datové zdroje pro budoucí predikce
    • Algoritmy strojového učení vyžadují stejný formát dat jako při tréninku

 

Recipes se aplikují funkcí bake()

 

Funkce bake aplikuje natrénovaný recept na nové datové zdroje

Modeling with tidymodels in R

Jednoduchý pipeline feature engineeringu

Logaritmická transformace total_time v datech lead scoringu

  • Běžná transformace pro velké hodnoty dat
  • Komprimuje rozsah hodnot a snižuje variabilitu
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
Modeling with tidymodels in R

Vytvoření objektu recipe

Funkce recipe()

  • Vzorec modelu
    • Přiřazuje role proměnných
  • Argument data
    • Určuje datové typy proměnných

 

Předejte objekt recipe funkci step_log() pro přidání kroku logaritmické transformace

  • Vyberte proměnnou total_time a zadejte základ logaritmu
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
Modeling with tidymodels in R

Prozkoumání rolí a typů proměnných

Předání objektu recipe funkci summary()

  • Vytvoří tibble s informacemi o proměnných
  • Sloupec type
    • Zachycuje datový typ proměnné
    • 'nominal' označuje kategorické proměnné
  • Sloupec role
    • Zachycuje role proměnných pro modelování
    • Přiřazeno na základě vzorce modelu
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
Modeling with tidymodels in R

Trénování objektu recipe

Funkce prep()

  • Přijímá objekt recipe jako první argument
  • Argument training
    • Určuje data, na kterých se trénují kroky předzpracování

 

Výpis natrénovaného objektu recipe

  • Natrénované kroky jsou označeny [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]
Modeling with tidymodels in R

Transformace trénovacích dat

Funkce bake()

  • První argument je natrénovaný objekt recipe
  • Argument new_data
    • Data, na která se aplikuje natrénovaný recipe
  • Trénovací data
    • leads_training bylo použito k natrénování recipe
    • Ve výchozím nastavení si prep() transformovaná data uchovává
    • Předejte NULL do new_data pro extrakci
  • Vrací tibble s transformovanými daty
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
Modeling with tidymodels in R

Transformace nových dat

Transformace datových sad nepoužitých při tréninku recipe

  • Předejte datovou sadu do argumentu new_data
  • Natrénovaný recipe aplikuje všechny kroky na nové datové zdroje
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
Modeling with tidymodels in R

Pojďme péct!

Modeling with tidymodels in R

Preparing Video For Download...