Redukce dimenzionality

Feature Engineering v R

Jorge Zazueta

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

Příznaky s nulovou variancí

Některé datové sady obsahují sloupce s konstantními hodnotami nebo nulovou variancí. Tyto příznaky lze odfiltrovat přidáním step_zv() do recipe().

Tabulka ilustrující příznak s nulovou variancí.

Feature Engineering v R

Příznaky s téměř nulovou variancí

Příznaky s téměř nulovou variancí zahrnují prediktory s jedinou hodnotou a prediktory s oběma následujícími vlastnostmi:

  • Velmi málo jedinečných hodnot vzhledem k počtu vzorků

  • Poměr frekvence nejčastější hodnoty k frekvenci druhé nejčastější hodnoty je vysoký

Příklad téměř nulové variance:

  • Ze 100 pozorování existují dvě různé hodnoty, přičemž jedna se vyskytuje jen jednou.

step_nzv() identifikuje a odstraní prediktory s těmito vlastnostmi.

Feature Engineering v R

Analýza hlavních komponent (PCA)

Původní třídimenzionální datová sada se dvěma třídami.

Trojrozměrný graf se dvěma datovými třídami.

Redukovaná datová sada reprezentující data pomocí prvních dvou hlavních komponent.

Dvojrozměrný graf zobrazující dvě datové třídy jako bodový graf prvních dvou hlavních komponent.

Feature Engineering v R

Připravme recepturu

Vytvoření receptury pro provedení PCA a získání jejího výstupu pomocí prep().

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

Dostupné informace lze zobrazit voláním names() na 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 v R

Výpočet vysvětlené variance

Extrahujte směrodatnou odchylku z objektu pca_output a vypočítejte vysvětlenou varianci.

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

Tabulka zobrazující vysvětlenou varianci podle hlavní komponenty.

# 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 v R

Vizualizace vysvětlené variance

Výstup lze vizualizovat jako sloupcový graf pomocí ggplot2.

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

Vysvětlená variance podle hlavní komponenty.

Sloupcový graf znázorňující vysvětlenou varianci podle hlavní komponenty.

Feature Engineering v R

Pojďme procvičovat!

Feature Engineering v R

Preparing Video For Download...