Hepsini bir araya getirme

R'da Feature Engineering

Jorge Zazueta

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

Şekillendirilmiş süreç modelleme akışı

Tipik üst düzey modelleme adımları.

Modelleme sürecinin akış şeması.

R'da Feature Engineering

Şekillendirilmiş süreç modelleme akışı

Tipik üst düzey modelleme adımları.

Özellik mühendisliğini vurgulayan modelleme iş akışı.

R'da Feature Engineering

Hazırla

Temel düzenlemeleri yapıp bölmeleri oluşturarak başlayın.

loans <- # Basic housekeeping
  loans %>%
  mutate(across(where(is_character),
                  as_factor)) %>%
  mutate(across(Credit_History,
                  as_factor))

set.seed(123) # Set up splits
split <- initial_split(loans, 
        strata = Loan_Status)
test <- testing(split)
train <- training(split)
glimpse(train)
Rows: 460
Columns: 13
$ Loan_ID           <fct> LP001003...
$ Gender            <fct> Male, Ma...
$ Married           <fct> Yes, No,...
$ Dependents        <fct> 1, 0, 0,...
$ Education         <fct> Graduate...
$ Self_Employed     <fct> No, No, ...
$ ApplicantIncome   <dbl> 4583, 18...
$ CoapplicantIncome <dbl> 1508, 28...
$ LoanAmount        <dbl> 128, 114...
$ Loan_Amount_Term  <dbl> 360, 360...
$ Credit_History    <fct> 1, 1, 0,...
$ Property_Area     <fct> Rural, R...
$ Loan_Status       <fct> N, N, N,...
R'da Feature Engineering

Önişleme

Tarifimiz kısa da olabilir, çok karmaşık da.

recipe <- recipe(Loan_Status ~ .,
data = train) %>%
  update_role(Loan_ID, 
  new_role = "ID") %>%
  step_normalize(all_numeric_predictors()) %>% 
  step_impute_knn(all_predictors()) %>%
  step_dummy(all_nominal_predictors())
recipe
Recipe

Girdiler:

      rol #değişken
        ID          1
   çıktı            1
 yordayıcı         11

İşlemler:

Tüm sayısal yordayıcılar için merkezleme ve ölçekleme
Tüm yordayıcılar için en yakın k-komşu ataması
Tüm nominal yordayıcılardan kukla değişkenler
R'da Feature Engineering

Model

İş akışını kurma

lr_model <- logistic_reg() %>%
  set_engine("glmnet") %>%
  set_args(mixture = 1, penalty = tune())

lr_penalty_grid <- grid_regular(
  penalty(range = c(-3, 1)),
  levels = 30)

lr_workflow <-
  workflow() %>%
  add_model(lr_model) %>%
  add_recipe(recipe)
lr_workflow
--Workflow -------------------------------
Önişleyici: Recipe
Model: logistic_reg()

-- Önişleyici ----------------------------
3 Recipe Adımı
- step_normalize()
- step_impute_knn()
- step_dummy()

-- Model ---------------------------------
Lojistik Regresyon Model Tanımı (sınıflandırma)

Ana Argümanlar:
  penalty = tune()
  mixture = 1
Hesaplama motoru: glmnet
R'da Feature Engineering

Değerlendir

Lasso için ceza ayarı

lr_tune_output <- tune_grid( 
  lr_workflow,
  resamples = vfold_cv(train, v = 5),
  metrics = metric_set(roc_auc),
  grid = penalty_grid)

autoplot(tune_output)

ROC_AUC vs. Düzenlileştirme

ROC_AUC ile düzenlileştirme karşılaştırma grafiği.

R'da Feature Engineering

Değerlendir

Nihai modeli uydurma

best_penalty <-
select_by_one_std_err(lr_tune_output,
metric = 'roc_auc', desc(penalty)) 

lr_final_fit<-
finalize_workflow(lr_workflow, best_penalty) %>%
  fit(data = train)

lr_final_fit %>%
  augment(test) %>% 
  class_evaluate(truth = Loan_Status,
              estimate = .pred_class,
                         .pred_Y)

Performans metriklerimiz

# A tibble: 2 × 3
  .metric  .estimator .estimate
  <chr>    <chr>          <dbl>
1 accuracy binary         0.818
2 roc_auc  binary         0.813
R'da Feature Engineering

Hadi pratik yapalım!

R'da Feature Engineering

Preparing Video For Download...