왜 기존 특성을 변환할까요?

R로 배우는 Feature Engineering

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로 배우는 Feature Engineering

로그 변환

수치형 특성에 로그 변환을 적용하면:

  • 왜도 있는 데이터를 완화
  • 이상치 영향 감소
  • 곱셈 관계를 덧셈 관계로 변환
  • 모델링 적합성 향상
  • 양의 값에만 적용 가능

로그 변환된 대출 금액 데이터

원시 데이터와 로그 변환 데이터의 시각적 비교

R로 배우는 Feature Engineering

정규화

수치형 특성을 정규화 또는 스케일링하면:

  • 한 특성이 다른 특성을 지배하는 것 방지
  • 크기를 비교 가능하게 하여 해석 용이
  • 모델링에 더 적합하게 변환

예: 대출 상환 기간 값의 변동이 큽니다

대출 금액 상환 기간 값의 히스토그램.

R로 배우는 Feature Engineering

정규화

수치형 특성을 정규화/스케일링하면:

  • 한 특성이 다른 특성을 지배하는 것을 방지
  • 이상치와 결측값 처리에 도움
  • 모델링에 더 적합하게 변환

정규화된 값은 분포는 유지하되 변동을 포함합니다.

대출 금액 값 위에 정규화된 데이터가 오버레이된 히스토그램.

R로 배우는 Feature Engineering

모델과 레시피 정의

이제 로지스틱 회귀 모델을 선언하고, 관련 특성에 대해 대치, 정규화, 로그 변환을 수행하는 레시피를 추가합니다.

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로 배우는 Feature Engineering

효율적으로 성능 측정하기

워크플로우 객체 lr_fit의 적합도를 평가할 지표 roc_auc, accuracy, sens를 정의합니다.

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로 배우는 Feature Engineering

Ayo berlatih!

R로 배우는 Feature Engineering

Preparing Video For Download...