Numerické prediktory

Modeling with tidymodels in R

David Svancer

Data Scientist

Korelované prediktorové proměnné

Korelace měří sílu lineárního vztahu mezi dvěma numerickými proměnnými

  • Nabývá hodnot od -1 do 1
  • Silně korelované prediktory blízko -1 nebo 1

    • Poskytují redundantní informace
    • Problémy s fitováním modelu (multikolinearita)

     

ggplot(leads_training,
       aes(x = pages_per_visit, y = total_clicks)) + 
  geom_point()  + 
  labs(title = 'Total Clicks vs Average Page Visits',
       y = 'Total Clicks', x = 'Average Pages per Visit')

Bodový graf celkových kliknutí vs. stránek na návštěvu v datech lead scoringu

Modeling with tidymodels in R

Hledání korelovaných prediktorových proměnných

Výpočet korelační matice

  • Předejte datovou sadu do funkce select_if()
    • Jako argument zadejte is.numeric
  • Předejte do funkce cor()
leads_training %>%

select_if(is.numeric) %>%
cor()
              total_visits total_time pages_per_visit total_clicks
total_visits        1.00       0.01            0.43         0.42
total_time          0.01       1.00            0.02         0.01
pages_per_visit     0.43       0.02            1.00         0.96
total_clicks        0.42       0.01            0.96         1.00
Modeling with tidymodels in R

Zpracování korelovaných prediktorů

Odstranění multikolinearity pomocí recipes

  • Definujte objekt recipe pomocí funkce recipe()
  • Předejte do step_corr()
    • Přidejte všechny numerické sloupce
      • Názvy sloupců oddělené čárkami
    • Zadejte korelační threshold
      • Absolutní hodnota
      • Práh 0,9 odstraní korelace ≥ 0,9 nebo ≤ -0,9
leads_cor_rec <- recipe(purchased ~ .,
                        data = leads_training) %>%

step_corr(total_visits, total_time, pages_per_visit, total_clicks, threshold = 0.9)
leads_cor_rec
Data Recipe
Inputs:
      role #variables
   outcome          1
 predictor          6

Operations:
Correlation filter on total_visits,..., total_clicks
Modeling with tidymodels in R

Výběr prediktorů podle typu

  • all_outcomes()
    • Vybere proměnnou výstupu
  • all_numeric()
    • Vybere všechny numerické proměnné
      • Zahrne i výstupní proměnnou, pokud je numerická

Výběr numerických prediktorů pro kroky recipe

  • Předejte all_numeric() do funkcí step_*()
  • Je-li výstupní proměnná numerická, přidejte také -all_outcomes()
leads_cor_rec <- recipe(purchased ~ .,
                        data = leads_training) %>%

step_corr(all_numeric(), threshold = 0.9)
leads_cor_rec
Data Recipe
Inputs:
      role #variables
   outcome          1
 predictor          6

Operations:
Correlation filter on all_numeric()
Modeling with tidymodels in R

Trénování a aplikace receptury

  • Trénování pomocí prep()
    • Jako trénovací data se použijí leads_training
  • Aplikace pomocí bake()
    • pages_per_visit odstraněno z leads_test
    • pages_per_visit bude odstraněno i z budoucích dat
leads_cor_rec %>% 

prep(training = leads_training) %>%
bake(new_data = leads_test)
# A tibble: 332 x 6
total_visits total_time total_clicks ... purchased
    <dbl>       <dbl>        <dbl>   ...   <fct>
 1   8          100           24     ...    no
 2   4          1346          22     ...    yes
 3   3          176           27     ...    no
 4   2          16            12     ...    no
 5   9          1022          12     ...    yes
# ... with 327 more rows
Modeling with tidymodels in R

Normalizace

Centrování a škálování numerických proměnných

  • Odečtení průměru
  • Dělení směrodatnou odchylkou
  • Převod dat na jednotky směrodatné odchylky
    • Transformovaná proměnná bude mít průměr 0 a směrodatnou odchylku 1

Proměnná total_time v leads_training

  • Strávení 1 273 sekund na webu je o 1,19 směrodatné odchylky více než průměrná doba strávená zákazníky

 

Příklad normalizace proměnné celkového času z trénovacích dat leads

Modeling with tidymodels in R

Kombinování kroků předzpracování dat

Normalizace numerických prediktorů pomocí recipes

  • step_normalize()
    • Názvy sloupců nebo selektor all_numeric()
    • Průměry a směrodatné odchylky z trénovacích dat se aplikují na nové datové zdroje

Do recipe lze přidat více funkcí step_*()

  • Pořadí je důležité
leads_norm_rec <- recipe(purchased ~ .,
                         data = leads_training) %>%

step_corr(all_numeric(), threshold = 0.9) %>% step_normalize(all_numeric())
leads_norm_rec
Data Recipe
Inputs:
      role #variables
   outcome          1
 predictor          6

Operations:
Correlation filter on all_numeric()
Centering and scaling for all_numeric()
Modeling with tidymodels in R

Transformace testovacích dat

pages_per_vist je odstraněno a numerické prediktory jsou normalizovány

leads_norm_rec %>% 
  prep(training = leads_training) %>% 
  bake(new_data = leads_test)
# A tibble: 332 x 6
 total_visits  total_time  total_clicks  lead_source   us_location  purchased
      <dbl>      <dbl>        <dbl>        <fct>          <fct>      <fct>    
 1    0.864     -0.984     -0.360        direct_traffic   west        no       
 2   -0.151      1.33      -0.506        direct_traffic   northeast   yes      
 3   -0.405     -0.843     -0.140        organic_search   west        no       
 4   -0.659     -1.14      -1.24         email            midwest     no       
 5    1.12       0.725     -1.24         direct_traffic   west        yes           
# ... with 327 more rows
Modeling with tidymodels in R

Pojďme si procvičit!

Modeling with tidymodels in R

Preparing Video For Download...