Кодування категоріальних даних із супервізованим навчанням

Feature Engineering в R

Jorge Zazueta

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

Знайомство із супервізованим кодуванням

На відміну від інших підходів, супервізоване кодування використовує значення цілі, щоб отримати числові ознаки з номінативних предикторів.

Feature Engineering в R

Знайомство із супервізованим кодуванням

Супервізоване кодування використовує значення цілі, щоб отримати числові ознаки з номінативних предикторів.

Деякі функції супервізованого кодування в пакеті embed

Function Definition
step_lencode_glm() Використовує правдоподібнісне кодування, щоб перетворити номінативний предиктор на один набір оцінок, отриманих із узагальненої лінійної моделі.
step_lencode_bayes() Застосовує баєсівське правдоподібнісне кодування, щоб перетворити номінативний предиктор на один набір оцінок, отриманих із узагальненої лінійної моделі, оціненої за баєсівським підходом.
step_lencode_mixed() Перетворює номінативні предиктори на один набір оцінок, отриманих із узагальненої змішаної лінійної моделі.
Feature Engineering в R

Прогнозування успіху заявки на грант

Ми хочемо передбачити успіх заявки на грант лише за кодом спонсора.

lr_model <- logistic_reg() # declare model

lr_recipe_glm <- # Set recipe glm
  recipe(class ~ sponsor_code, 
         data = grants_train) %>%
  step_lencode_glm(sponsor_code, 
                   # Declare outcome variable
                   outcome = vars(class))

lr_workflow_glm <- # Create Workflow
  workflow() %>%
  add_model(lr_model) %>%
  add_recipe(lr_recipe_glm)

Підсумок Workflow

lr_workflow_glm
-- Workflow ------------------------------------
Preprocessor: Recipe
Model: logistic_reg()

-- Preprocessor --------------------------------
1 Recipe Step

- step_lencode_glm()

-- Model --------------------------------------
Logistic Regression Model Specification (classification)

Computational engine: glm
Feature Engineering в R

Навчання, розширення та оцінювання

Навчимо та оцінимо модель

lr_fit_glm <- # Fit
  lr_workflow_glm %>%
  fit(grants_train)

lr_aug_glm <- # Augment
  lr_fit_glm %>%
  augment(grants_test)

glm_model <- lr_aug_glm %>% # Assess
  class_evaluate(truth = class,
                 estimate = .pred_class,
                 .pred_successful)

Результати якості збережено в glm_model

glm_model
# A tibble: 2 × 3
  .metric  .estimator .estimate
  <chr>    <chr>          <dbl>
1 accuracy binary         0.728
2 roc_auc  binary         0.684
Feature Engineering в R

Об'єднання моделей разом

Створимо bayes_model і mixed_model, щоб порівняти якість відповідних кроків.

# Define model names
model <- c("glm", "glm",
           "bayes","bayes",
           "mixed", "mixed")
# Bind models in a tibble
models <- 
bind_rows(glm_model,
          bayes_model,
          mixed_model)%>%
  add_column(model = model)%>%
  select(-.estimator) %>%
  spread(model,.estimate)

Зручна таблиця продуктивності

models
# A tibble: 2 × 4
  .metric  bayes   glm mixed
  <chr>    <dbl> <dbl> <dbl>
1 accuracy 0.718 0.728 0.720
2 roc_auc  0.686 0.684 0.682
Feature Engineering в R

Візуалізація результатів

Візуалізуйте результати на діаграмі паралельних координат із пакета Gally.

# Libraries
library(GGally)

# Parallel coordinates chart
ggparcoord(models,
           columns = 2:4, 
           groupColumn = 1,
           scale="globalminmax",
           showPoints = TRUE)

Діаграма паралельних координат для accuracy та roc_auc: порівняння всіх моделей.

Діаграма паралельних координат для accuracy та roc_auc: порівняння всіх моделей.

Feature Engineering в R

Давайте потренуємось!

Feature Engineering в R

Preparing Video For Download...