既存特徴を変換する理由

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で学ぶ特徴量エンジニアリング

対数変換

数値特徴を対数変換して:

  • 歪度に対処
  • 外れ値の影響を低減
  • 乗法関係を加法に変換
  • モデリングに適した形にする
  • 正の値にのみ有効

ローン金額の対数変換データ

生データと対数変換後の比較グラフ

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_aucaccuracysens を定義し、ワークフロー 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で学ぶ特徴量エンジニアリング

Passons à la pratique !

Rで学ぶ特徴量エンジニアリング

Preparing Video For Download...