Feature engineering en R
Jorge Zazueta
Research Professor and Head of the Modeling Group at the School of Economics, UASLP
Certains jeux de données contiennent des colonnes constantes ou à variance nulle. On peut filtrer ces variables avec step_zv() dans notre recipe().

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 :
step_nzv() identifie et supprime les prédicteurs ayant ces caractéristiques.
Jeu de données initial en trois dimensions avec deux classes associées.

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

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"
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
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.

Feature engineering en R