Réduction de dimension

Feature engineering en R

Jorge Zazueta

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

Variables à variance nulle

Certains jeux de données contiennent des colonnes constantes ou à variance nulle. On peut filtrer ces variables avec step_zv() dans notre recipe().

Tableau illustrant une variable à variance nulle.

Feature engineering en R

Variables à quasi‑variance nulle

Les variables à quasi‑variance nulle incluent les prédicteurs à valeur unique et ceux qui présentent les deux caractéristiques suivantes :

  • Très peu de valeurs uniques par rapport au nombre d'échantillons

  • Rapport élevé entre la fréquence de la valeur la plus courante et celle de la deuxième plus courante

Exemple de quasi‑variance nulle :

  • Pour 100 observations, il y a deux valeurs différentes mais l'une n'apparaît qu'une fois.

step_nzv() identifie et supprime les prédicteurs ayant ces caractéristiques.

Feature engineering en R

Analyse en composantes principales (ACP)

Jeu de données initial en trois dimensions avec deux classes associées.

Un graphique 3D avec deux classes de données.

Jeu de données réduit représenté par les deux premières composantes principales.

Un graphique 2D montrant deux classes sous forme de nuage de points des deux premières composantes principales.

Feature engineering en R

Préparons une recette

Création d'une recette pour effectuer l'ACP et récupération du résultat via prep().

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

On peut examiner les informations disponibles en appelant names() sur 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 en R

Mettre au jour la variance expliquée

Extraire l'écart type de l'objet pca_output et calculer la variance expliquée.

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

Un tableau montrant la variance expliquée par composante 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 en R

Visualiser la variance expliquée

Nous pouvons tracer le résultat en histogramme avec ggplot2.

PCA %>% 
ggplot(aes(x = PC, 
           y = var_explained)) +
  geom_col(fill = "steelblue") +
  xlab("Principal components") +
  ylab("Variance explained")

Variance expliquée par composante principale.

Histogramme en barres montrant la variance expliquée par composante principale.

Feature engineering en R

Passons à la pratique !

Feature engineering en R

Preparing Video For Download...