Feature engineering in R
Jorge Zazueta
Research Professor and Head of the Modeling Group at the School of Economics, UASLP
Sommige datasets hebben kolommen met constante waarden of nulvariantie. We kunnen die kenmerken filteren met step_zv() in onze recipe().

Kenmerken met bijna nulvariantie zijn voorspellers met één waarde én voorspellers met beide eigenschappen hieronder:
Heel weinig unieke waarden vergeleken met het aantal samples
De verhouding tussen de frequentie van de meest voorkomende waarde en die van de op één na meest voorkomende is groot
Voorbeeld van bijna nulvariantie:
step_nzv() vindt en verwijdert voorspellers met deze eigenschappen.
Oorspronkelijke driedimensionale dataset met twee klassen.

Gereduceerde dataset met de eerste twee hoofdcomponenten.

Een recipe maken voor PCA en de output ophalen met prep().
pc_recipe <-
recipe(~., data = loans_num) %>%
step_nzv(all_numeric()) %>%
step_normalize(all_numeric()) %>%
step_pca(all_numeric())
pca_output <- prep(pc_recipe)
We kunnen de beschikbare info bekijken met names() op 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"
Haal de standaarddeviatie uit het object pca_output en bereken de verklaarde variantie.
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))
Een tabel met de verklaarde variantie per hoofdcomponent.
# 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
We kunnen de output als kolomgrafiek plotten met ggplot2.
PCA %>%
ggplot(aes(x = PC,
y = var_explained)) +
geom_col(fill = "steelblue") +
xlab("Principal components") +
ylab("Variance explained")
Verklaarde variantie per hoofdcomponent.

Feature engineering in R