Inżynieria cech

Modelowanie z tidymodels w R

David Svancer

Data Scientist

Inżynieria cech z pakietem recipes

Przepływ pracy inżynierii cech z pakietem recipes

Modelowanie z tidymodels w R

Określanie typów i ról zmiennych

 

Definiowanie ról kolumn

  • Przypisanie roli wyniku lub predyktora do wszystkich zmiennych

Określanie typów danych zmiennych

  • Dane numeryczne
  • Dane kategoryczne

 

Realizowane za pomocą funkcji recipe()

 

Definiowanie receptury za pomocą funkcji recipe

Modelowanie z tidymodels w R

Kroki przetwarzania danych

Dodawanie wymaganych kroków przetwarzania danych

  • Imputacja brakujących danych
  • Transformacje danych
    • Centrowanie i skalowanie zmiennych numerycznych
  • Tworzenie nowych zmiennych
    • Obliczanie ilorazów zmiennych
  • I wiele więcej...

Każdy krok jest dodawany za pomocą unikalnej funkcji step_*()

 

Dodawanie transformacji danych za pomocą funkcji step

1 https://recipes.tidymodels.org/reference/index.html
Modelowanie z tidymodels w R

Trenowanie kroków przetwarzania wstępnego

Obiekty recipe są trenowane na źródle danych, zazwyczaj zbiorze treningowym

  • Transformacje danych są szacowane
    • Średnia i odchylenie standardowe kolumn numerycznych do centrowania i skalowania
    • Formuły tworzenia nowych kolumn są przechowywane do zastosowania na nowych danych

 

Receptury są trenowane funkcją prep()

 

Funkcja prep trenuje kroki inżynierii cech na zbiorze treningowym

Modelowanie z tidymodels w R

Stosowanie receptur do nowych danych

Stosowanie wszystkich wytrenowanych transformacji przetwarzania danych

  • Do zbiorów treningowego i testowego na potrzeby modelowania
  • Do nowych źródeł danych do przyszłych predykcji
    • Algorytmy ML wymagają tego samego formatu danych, co podczas trenowania

 

Receptury są stosowane funkcją bake()

 

Funkcja bake stosuje wytrenowaną recepturę do nowych źródeł danych

Modelowanie z tidymodels w R

Prosty potok inżynierii cech

Transformacja logarytmiczna total_time w danych lead scoring

  • Powszechna transformacja dla dużych wartości danych
  • Kompresuje zakres wartości i redukuje zmienność
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
Modelowanie z tidymodels w R

Tworzenie obiektu recipe

Funkcja recipe()

  • Formuła modelu
    • Przypisuje role zmiennym
  • Argument data
    • Określa typy danych zmiennych

 

Przekaż obiekt recipe do step_log(), aby dodać krok transformacji logarytmicznej

  • Wskaż zmienną do transformacji, total_time, i podaj podstawę logarytmu
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
Modelowanie z tidymodels w R

Eksploracja ról i typów zmiennych

Przekazanie obiektu recipe do funkcji summary()

  • Tworzy tibble z informacjami o zmiennych
  • Kolumna type
    • Zawiera typ danych zmiennej
    • 'nominal' oznacza zmienne kategoryczne
  • Kolumna role
    • Zawiera role zmiennych w modelowaniu
    • Przypisywane na podstawie formuły 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
Modelowanie z tidymodels w R

Trenowanie obiektu recipe

Funkcja prep()

  • Przyjmuje obiekt recipe jako pierwszy argument
  • Argument training
    • Wskazuje dane, na których trenowane są kroki przetwarzania

 

Wyświetlanie wytrenowanego obiektu recipe

  • Wytrenowane kroki są oznaczone [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]
Modelowanie z tidymodels w R

Przekształcanie danych treningowych

Funkcja bake()

  • Pierwszy argument to wytrenowany obiekt recipe
  • Argument new_data
    • Dane, do których stosowana jest wytrenowana recipe
  • Dane treningowe
    • leads_training było użyte do trenowania recipe
    • Domyślnie przekształcone dane są zachowywane przez funkcję prep()
    • Przekaż NULL do new_data, aby je wyodrębnić
  • Zwraca tibble z przekształconymi danymi
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
Modelowanie z tidymodels w R

Przekształcanie nowych danych

Przekształcanie zbiorów danych nieużywanych podczas trenowania recipe

  • Przekaż zbiór danych do argumentu new_data
  • Wytrenowana recipe zastosuje wszystkie kroki do nowych danych
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
Modelowanie z tidymodels w R

Czas na pieczenie!

Modelowanie z tidymodels w R

Preparing Video For Download...