Ridurre la dimensionalità

Feature Engineering in R

Jorge Zazueta

Research Professor and Head of the Modeling Group at the School of Economics, UASLP

Feature a varianza zero

Alcuni dataset hanno colonne con valori costanti o varianza zero. Possiamo filtrare queste feature aggiungendo step_zv() alla nostra recipe().

Tabella che illustra una feature con varianza zero.

Feature Engineering in R

Feature a quasi zero varianza

Le feature a quasi zero varianza includono predittori con un solo valore E predittori con entrambe le seguenti caratteristiche:

  • Pochi valori unici rispetto al numero di campioni

  • Rapporto alto tra la frequenza del valore più comune e quella del secondo più comune

Esempio di quasi zero varianza:

  • Su 100 osservazioni ci sono due valori, ma uno compare solo una volta.

step_nzv() identifica e rimuove i predittori con queste caratteristiche.

Feature Engineering in R

Analisi delle Componenti Principali (PCA)

Dataset originale tridimensionale con due classi associate.

Grafico 3D con due classi di dati.

Dataset ridotto che rappresenta i dati usando le prime due componenti principali.

Grafico 2D con due classi come scatterplot delle prime due componenti principali.

Feature Engineering in R

Prepariamo una recipe

Crea una recipe per eseguire la PCA e recuperane l’output con prep().

pc_recipe <- 
recipe(~., data = loans_num) %>%
  step_nzv(all_numeric()) %>%
  step_normalize(all_numeric()) %>%
  step_pca(all_numeric())
pca_output <- prep(pc_recipe)

Possiamo vedere le info disponibili chiamando names() su pca_output.

names(pca_output)
 [1] "var_info"       "term_info"     
 [3] "steps"          "template"      
 [5] "levels"         "retained"      
 [7] "requirements"   "tr_info"       
 [9] "orig_lvls"      "last_term_info"
Feature Engineering in R

Scoprire la varianza spiegata

Estrai la deviazione standard da pca_output e calcola la varianza spiegata.

stdv <- pca_output$steps[[3]]$res$sdev
var_explained <- stdv^2/sum(stdv^2)
PCA = tibble(PC = 1:length(stdv),
          var_explained = var_explained, 
          cumulative = cumsum(var_explained))

Tabella con la varianza spiegata per componente principale.

# A tibble: 5 × 3
     PC var_explained cumulative
  <int>         <dbl>      <dbl>
1     1        0.315       0.315
2     2        0.214       0.529
3     3        0.202       0.730
4     4        0.198       0.928
5     5        0.0722      1
Feature Engineering in R

Visualizzare la varianza spiegata

Possiamo graficare l’output come istogramma con ggplot2.

PCA %>% 
ggplot(aes(x = PC, 
           y = var_explained)) +
  geom_col(fill = "steelblue") +
  xlab("Componenti principali") +
  ylab("Varianza spiegata")

Varianza spiegata per componente principale.

Istogramma della varianza spiegata per componente principale.

Feature Engineering in R

Ayo berlatih!

Feature Engineering in R

Preparing Video For Download...