Kỹ thuật đặc trưng (Feature Engineering) với R
Jorge Zazueta
Research Professor. Head of the Modeling Group at the School of Economics, UASLP
Ta có thể cải thiện hiệu năng mô hình máy học bằng cách làm dữ liệu dễ xử lý hơn.
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...
Biến đổi log các đặc trưng số để:
Dữ liệu khoản vay sau biến đổi log

Chuẩn hóa/scale đặc trưng số để:
ví dụ, kỳ hạn khoản vay có độ biến thiên lớn

Chuẩn hóa/scale đặc trưng số để:
Giá trị đã chuẩn hóa giữ nguyên phân phối nhưng vẫn có biến thiên.

Ta khai báo mô hình hồi quy logistic và thêm recipe để bù khuyết, chuẩn hóa và log-transform các đặc trưng liên quan.
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)
In recipe khi in ra sẽ tóm tắt các bước đã áp dụng.
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
Định nghĩa bộ metric roc_auc, accuracy và sens để đánh giá đối tượng workflow khớp lr_fit.
class_evaluate <- metric_set(
roc_auc, accuracy, sens)
Và chạy như một hàm thông thường.
lr_aug %>%
class_evaluate(
truth = Loan_Status,
estimate = .pred_class,
.pred_Y)
Bộ metric tùy chỉnh
# 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
Kỹ thuật đặc trưng (Feature Engineering) với R