Neden mevcut özellikleri dönüştürmeliyiz?

R'da Feature Engineering

Jorge Zazueta

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

Modelinizin işini kolaylaştırma

Verileri daha yönetilebilir hale getirerek makine öğrenimi modelimizin performansını artırabiliriz.

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'da Feature Engineering

Log dönüşümü

Sayısal özelliklere log dönüşümü uygulayın:

  • Çarpık dağılımı ele almak için
  • Aykırı değer etkisini azaltmak için
  • Çarpımsal ilişkileri toplamsala dönüştürmek için
  • Verileri modellemeye daha uygun hale getirmek için
  • Yalnızca pozitif değerlerde çalışır

Log-dönüştürülmüş kredi tutarı verisi

Ham ve log-dönüştürülmüş verinin görsel karşılaştırması

R'da Feature Engineering

Normalizasyon

Sayısal özellikleri normalleştirin veya ölçekleyin:

  • Bir özelliğin diğerlerine baskın olmasını önlemek için
  • Karşılaştırılabilir büyüklük vererek yorumu kolaylaştırmak için
  • Verileri modellemeye daha uygun hale getirmek için

ör. kredi vade tutarı değerleri ciddi şekilde değişir

Kredi vade tutarı değerlerini gösteren histogram.

R'da Feature Engineering

Normalizasyon

Sayısal özellikleri normalleştirin veya ölçekleyin:

  • Tek bir özelliğin diğerlerine baskın olmasını önlemek için
  • Aykırı değerlerle başa çıkmaya ve
  • Eksik veriye yardımcı olmak için
  • Verileri modellemeye daha uygun hale getirmek için

Normalleştirilmiş değerler dağılımı korur, ancak değişkenlik içerir.

Kredi tutarı değerlerinin normalleştirilmiş verilerle üst üste gösterildiği histogram.

R'da Feature Engineering

Modeli ve recipe'i tanımlama

Şimdi mantıksal regresyon modelini tanımlayıp ilgili özellikleri imput etmek, normalleştirmek ve log-dönüştürmek için bir recipe ekleyebiliriz.

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)

Recipe nesnesini yazdırmak, uygulanan adımların özetini gösterir.

lr_recipe
Recipe

Inputs:

      role #variables
   outcome          1
 predictor          5

Operations:

K-en yakın komşu imputasyonu: all_numeric_predictors()
Merkezleme ve ölçekleme: Loan_Amount_Term
Log dönüşümü: all_numeric_predictors(),-Loan_Amount_Term
R'da Feature Engineering

Performansı verimli ölçme

lr_fit iş akışı nesnesinin uyumunu değerlendirmek için roc_auc, accuracy ve sens metriklerini tanımlarız.

class_evaluate <- metric_set(
  roc_auc, accuracy, sens)

Ve herhangi bir fonksiyon gibi çalıştırırız.

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

Özelleştirilmiş metrik seti

# 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'da Feature Engineering

Hadi pratik yapalım!

R'da Feature Engineering

Preparing Video For Download...