Зачем преобразовывать существующие признаки?

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

Jorge Zazueta

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

Упростим задачу для модели

Улучшить качество модели машинного обучения можно, сделав данные более удобными для обработки.

glimpse(loans_num)
Rows: 614
Columns: 6
$ Loan_Status       <fct> Y, N, Y, Y, Y, Y, Y, N, Y, N, Y, Y, Y, N...
$ ApplicantIncome   <dbl> 5849, 4583, 3000, 2583, 6000, 5417, 233...
$ CoapplicantIncome <dbl> 0, 1508, 0, 2358, 0, 4196, 1516, 2504, 1...
$ LoanAmount        <dbl> NA, 128, 66, 120, 141, 267, 95, 158, 168...
$ Loan_Amount_Term  <dbl> 360, 360, 360, 360, 360, 360, 360, 360, ...
$ Credit_History    <fct> 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1...
Конструирование признаков в R

Логарифмическое преобразование

log-преобразование числовых признаков позволяет:

  • Работать с асимметричными данными
  • Снизить влияние выбросов
  • Перевести мультипликативные зависимости в аддитивные
  • Сделать данные более подходящими для моделирования
  • Применимо только к положительным значениям

Данные о сумме займа после log-преобразования

Сравнение исходных и log-преобразованных данных

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

Нормализация

Нормализация или масштабирование числовых признаков позволяет:

  • Исключить доминирование одного признака над остальными
  • Упростить интерпретацию за счёт сопоставимого масштаба и
  • Сделать данные более подходящими для моделирования

Пример: значения срока займа существенно варьируются

Гистограмма значений суммы займа.

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

Нормализация

Нормализация или масштабирование числовых признаков позволяет:

  • Исключить доминирование одного признака над остальными
  • Улучшить обработку выбросов и
  • Пропущенных значений
  • Сделать данные более подходящими для моделирования

Нормализованные значения сохраняют распределение, но содержат разброс.

Гистограмма значений суммы займа с наложенными нормализованными данными.

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

Определение модели и рецепта

Теперь объявим модель логистической регрессии и добавим рецепт для импутации, нормализации и логарифмического преобразования нужных признаков.

lr_model <- logistic_reg()

lr_recipe <- 
  recipe(Loan_Status ~., 
         data = train) %>%
  step_impute_knn(
    all_numeric_predictors())%>%
  step_normalize(Loan_Amount_Term) %>%
  step_log(all_numeric_predictors(),
           -Loan_Amount_Term, offset = 1)

Вывод объекта рецепта показывает сводку применённых шагов.

lr_recipe
Recipe

Inputs:

      role #variables
   outcome          1
 predictor          5

Operations:

K-nearest neighbor imputation for all_numeric_predictors()
Centering and scaling for Loan_Amount_Term
Log transformation on all_numeric_predictors(),-Loan_Amount_Term
Конструирование признаков в R

Эффективная оценка качества модели

Определим набор метрик — roc_auc, accuracy и sens — для оценки объекта рабочего процесса lr_fit.

class_evaluate <- metric_set(
  roc_auc, accuracy, sens)

Запустите его так же, как любую другую функцию.

lr_aug %>% 
  class_evaluate(
    truth = Loan_Status, 
    estimate = .pred_class, 
    .pred_Y)

Пользовательский набор метрик

# A tibble: 3 × 3
  .metric  .estimator .estimate
  <chr>    <chr>          <dbl>
1 accuracy binary         0.813
2 sens     binary         0.467
3 roc_auc  binary         0.288
Конструирование признаков в R

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

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

Preparing Video For Download...