Снижение размерности

Конструирование признаков в R

Jorge Zazueta

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

Признаки с нулевой дисперсией

Некоторые наборы данных содержат столбцы с постоянными значениями или нулевой дисперсией. Такие признаки можно исключить, добавив step_zv() в recipe().

Таблица, иллюстрирующая признак с нулевой дисперсией.

Конструирование признаков в R

Признаки с около нулевой дисперсией

Признаки с около нулевой дисперсией — это предикторы с единственным значением и предикторы, обладающие обоими из следующих свойств:

  • Очень мало уникальных значений относительно числа наблюдений

  • Отношение частоты наиболее распространённого значения к частоте второго по распространённости велико

Пример около нулевой дисперсии:

  • Среди 100 наблюдений присутствуют два различных значения, одно из которых встречается лишь один раз.

step_nzv() выявляет и удаляет предикторы с такими характеристиками.

Конструирование признаков в R

Метод главных компонент (PCA)

Исходный трёхмерный набор данных с двумя классами.

Трёхмерный график с двумя классами данных.

Сокращённый набор данных, представленный первыми двумя главными компонентами.

Двумерный график с двумя классами данных в виде диаграммы рассеяния первых двух главных компонент.

Конструирование признаков в R

Подготовим рецепт

Создание рецепта для выполнения PCA и получение его результата с помощью prep().

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

Можно просмотреть доступные данные, вызвав names() для 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"
Конструирование признаков в R

Анализ объяснённой дисперсии

Извлекаем стандартное отклонение из объекта pca_output и вычисляем объяснённую дисперсию.

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

Таблица объяснённой дисперсии по главным компонентам.

# 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
Конструирование признаков в R

Визуализация объяснённой дисперсии

Результат можно отобразить в виде столбчатой диаграммы с помощью ggplot2.

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

Объяснённая дисперсия по главным компонентам.

Столбчатая диаграмма объяснённой дисперсии по главным компонентам.

Конструирование признаков в R

Давайте потренируемся!

Конструирование признаков в R

Preparing Video For Download...