Predittori numerici

Modellazione con tidymodels in R

David Svancer

Data Scientist

Variabili predittive correlate

La correlazione misura la forza della relazione lineare tra due variabili numeriche

  • Va da -1 a 1
  • Predittori altamente correlati vicini a -1 o 1

    • Forniscono informazioni ridondanti
    • Problemi di stima del modello (multicollinearità)

     

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')

Grafico a dispersione dei clic totali rispetto alle pagine per visita nei dati di lead scoring

Modellazione con tidymodels in R

Trovare variabili predittive correlate

Calcolare una matrice di correlazione

  • Passa il dataset alla funzione select_if()
    • Fornisci is.numeric come argomento
  • Passa a 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
Modellazione con tidymodels in R

Elaborare predittori correlati

Rimuovere la multicollinearità con recipes

  • Specifica l’oggetto recipe con recipe()
  • Passalo a step_corr()
    • Aggiungi tutte le colonne numeriche
      • Nomi di colonna separati da virgole
    • Fornisci la soglia di correlazione threshold
      • Valore assoluto
      • Una soglia di 0.9 rimuove correlazioni ≥ 0.9 e ≤ -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
Ricetta dati
Input:
      ruolo #variabili
    outcome          1
  predittore         6

Operazioni:
Filtro di correlazione su total_visits,..., total_clicks
Modellazione con tidymodels in R

Selezionare i predittori per tipo

  • all_outcomes()
    • Seleziona la variabile di outcome
  • all_numeric()
    • Seleziona tutte le variabili numeriche
      • Include l’outcome se è numerico

Per selezionare predittori numerici nei passaggi recipe

  • Passa all_numeric() alle funzioni step_*()
  • Se l’outcome è numerico, passa anche -all_outcomes()
leads_cor_rec <- recipe(purchased ~ .,
                        data = leads_training) %>%

step_corr(all_numeric(), threshold = 0.9)
leads_cor_rec
Ricetta dati
Input:
      ruolo #variabili
    outcome          1
  predittore         6

Operazioni:
Filtro di correlazione su all_numeric()
Modellazione con tidymodels in R

Addestrare e applicare la recipe

  • Allena con prep()
    • Fornisci leads_training per l’addestramento
  • Applica con bake()
    • pages_per_visit rimosso da leads_test
    • pages_per_visit verrà rimosso anche da tutti i dati futuri
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
# ... con altre 327 righe
Modellazione con tidymodels in R

Normalizzazione

Centratura e scaling delle variabili numeriche

  • Sottrai la media
  • Dividi per la deviazione standard
  • Trasforma i dati in unità di deviazione standard
    • La variabile trasformata avrà media 0 e deviazione standard 1

La variabile total_time in leads_training

  • 1.273 secondi sul sito è 1,19 deviazioni standard sopra la media tempo dei clienti

 

Esempio di normalizzazione della variabile total time da leads training

Modellazione con tidymodels in R

Combinare passaggi di preprocessing

Normalizzare i predittori numerici con recipes

  • step_normalize()
    • Nomi di colonne o selettore all_numeric()
    • Medie e deviazioni standard dai dati di training applicate ai nuovi dati

Puoi aggiungere più funzioni step_*() a una recipe

  • L’ordine conta
leads_norm_rec <- recipe(purchased ~ .,
                         data = leads_training) %>%

step_corr(all_numeric(), threshold = 0.9) %>% step_normalize(all_numeric())
leads_norm_rec
Ricetta dati
Input:
      ruolo #variabili
    outcome          1
  predittore         6

Operazioni:
Filtro di correlazione su all_numeric()
Centratura e scaling per all_numeric()
Modellazione con tidymodels in R

Trasformare i dati di test

pages_per_vist è rimosso e i predittori numerici sono normalizzati

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           
# ... con altre 327 righe
Modellazione con tidymodels in R

Passons à la pratique !

Modellazione con tidymodels in R

Preparing Video For Download...