Reduzindo a dimensionalidade

Feature Engineering em R

Jorge Zazueta

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

Atributos com variância zero

Alguns conjuntos de dados têm colunas com valores constantes ou variância zero. Você pode filtrar esses atributos adicionando step_zv() à sua recipe().

Tabela ilustrando um atributo com variância zero.

Feature Engineering em R

Atributos com variância quase zero

Atributos com variância quase zero incluem preditores com um único valor e preditores com ambas as características abaixo:

  • Poucos valores únicos em relação ao número de amostras

  • Grande razão entre a frequência do valor mais comum e a do segundo mais comum

Exemplo de variância quase zero:

  • Em 100 observações há dois valores diferentes, mas um aparece só uma vez.

step_nzv() identifica e remove preditores com essas características.

Feature Engineering em R

Análise de Componentes Principais (PCA)

Conjunto de dados original tridimensional com duas classes associadas.

Um gráfico tridimensional com duas classes de dados.

Conjunto reduzido representando os dados pelos dois primeiros componentes principais.

Um gráfico bidimensional mostrando duas classes como dispersão dos dois primeiros componentes principais.

Feature Engineering em R

Vamos preparar uma receita

Criando uma receita para executar PCA e obtendo a saída com prep().

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

Podemos ver as informações disponíveis chamando names() em 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 em R

Descobrindo a variância explicada

Extraia o desvio padrão do objeto pca_output e calcule a variância explicada.

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

Uma tabela mostrando a variância explicada por componente principal.

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

Visualizando a variância explicada

Podemos plotar a saída como um gráfico de colunas usando ggplot2.

PCA %>% 
ggplot(aes(x = PC, 
           y = var_explained)) +
  geom_col(fill = "steelblue") +
  xlab("Componentes principais") +
  ylab("Variância explicada")

Variância explicada por componente principal.

Gráfico de colunas mostrando a variância explicada por componente principal.

Feature Engineering em R

Vamos praticar!

Feature Engineering em R

Preparing Video For Download...