머신러닝에서 분류 과제 수행 단계

2024. 10. 24. 15:58·머신러닝

 

  • 머신러닝은 크게 prediction와 classification으로 나뉘어 집니다.
  • 본 포스팅에서는 전처리 및 모델링 과정에서 정교한 classification 작업을 수행하기 위해 필요한 단계들을 설명합니다.
  • 이는 gold standard는 아니므로 참고용으로 봐주시기 바랍니다.

전처리 단계

1차적인 변수 탐색

  • 범주형 변수의 경우 2x2 table, odds ratio를 그려 변수의 영향력을 점검합니다.
    • odds ratio가 10 이상이거나 지나치게 낮은 경우 해당 변수를 제거할 지 의논이 필요합니다.
    • odds ratio가 지나치게 높거나 낮은 경우 sensitivity, specificity 값이 극단적인 경향을 띕니다.
  • 연속형 변수의 경우 기초 통계량(mean, sd 등)과 histogram을 출력하여 변수의 영향력을 점검합니다.

 

2차적인 변수 탐색

  • 연속형 변수들 간의 다중공선성을 VIF 지표로 점검하기 전에, 결측치를 제거 혹은 대체(imputation) 해줍니다.
  • 결측치가 40%가 넘는 경우, 변수의 설명력이 없다고 판단하여 해당 변수를 제거합니다.
  • imputation은 여러 기법이 있지만, test set 혹은 다른 data set이 들어왔을 때 동일한 지표를 보다 쉽게 적용하기 위해 간단한 기법을 사용합니다.
    • 연속형 변수의 경우 median(mean보다 극단값의 영향을 덜 받습니다.), 범주형 변수의 경우 mode(최빈값)을 사용합니다.
  •  결측치 대체 후 연속형 변수 간의 VIF 지수를 구한 후, VIF 지수가 10 이상이면 해당 변수를 제거합니다.
    • VIF 기준으로 변수 제거할 때에는, 10이 넘는 변수들을 한 번에 제거하는 것이 아니라, 하나씩 제거하면서 추이를 관찰합니다.
    • VIF cutoff는 주관적으로 결정할 수 있으나, 10이 넘는 변수는 무조건 제거하는 것이 좋습니다.

 

범주형 변수의 변환

  • 범주형 변수의 경우 numerical type으로 변환해 주기 위해 one-hot encoding 등을 수행합니다.
  • 머신러닝에서 one-hot encoding을 주로 사용하지만, 어떤 모델을 쓰냐에 따라 다중공선성의 우려가 있기 때문에 dummy encoding을 사용합니다.
    • dummy encoding이란, category 중 하나를 reference로 두고 더미 변환하는 것을 의미합니다.
    • 이때, reference category는 [0, 0, 0, ..., 0]의 값을 갖습니다.
      • 즉, category = ['1','2','3','4']으로 주어져 있을 때 '1'을 reference로 둔다면, category = '1'은 컬럼에 포함되지 않고 나머지들만 컬럼에 포함됩니다.
  • train set에서의 median, mode를 test set에도 동일하게 적용합니다.

 

정규화, 표준화 과정

  • 연속형 변수에서 scale의 차이가 심할 경우 모델 설명력에 영향을 미칠 수 있기 때문에 정규화 또는 표준화 작업이 필요합니다.
    • 주로 MinMaxScaler 혹은 Standardization 기법을 사용합니다.
  • Standardization을 사용한다고 했을 때, train set에서의 mean, sd를 test set에도 동일하게 적용합니다.

 

변수 선택

  • 머신러닝에서 feature의 개수가 많을수록 설명력은 높아지지만, overfitting의 문제가 발생할 수 있습니다.
    • 이를 방지하기 위해 hyperparameter 최적화 전에 변수 선택 과정을 거칩니다.
  • 변수 선택 방법으로는 여러 가지가 있으나, 여기서는 RFE (Recursice Feature Elimination)을 사용합니다.
    • 이는 Backward elimination과 유사한 방법입니다.
    • RFE 중에서도 RFE with 5-fold stratified cross-validation을 사용합니다.
    • RFE with cv에 대한 성능(?) 지표로 한 개를 고를 수 있는데, 여기서는 AUROC score를 사용합니다.
    • RFE with cv 결과 graph를 토대로 5개의 feature를 선정합니다.

Modeling 과정

  • 앞선 전처리 단계를 모두 거친 후 Modeling 과정을 수행합니다.
  • 머신러닝 모델로 XGboost, Randon Forest, Support Vector Machine, Logistic Regression, Multi-layer Perceptron을 사용합니다.
    • 모델에 대한 설명은 생략합니다.

 

  1. 먼저 whole dataset을 3:1로 stratified split을 수행합니다.
    • 3이 train set이고, 1이 test set입니다.
  2. train set에서 10-fold stratified cross validation을 수행합니다.
    • 최적의 hyperparameter 조합을 찾기 위해서 입니다.
  3. 10-fold cv를 통해 train / val set으로 나뉘어집니다.
    • train set을 표준화합니다.
    • 표준화된 train data의 mean, sd를 갖고 val set을 표준화합니다.
    • 10-fold cv를 통해 구한 성능에 평균을 취합니다.
    • 이 평균치가 제일 높은 hyperparameter 조합을 저장합니다.
      • 효율성을 높이기 위해 bayesian optimization을 사용합니다.
        • 이외에도 grid search, random search 등을 사용할 수 있습니다.
    • 전체 train data를 대상으로 다시 표준화를 실시합니다.
    • 이렇게 표준화된 train data와 앞서 찾은 best hyperparameter 조합을 갖고 model을 적합시킵니다.
      • 이 모델을 a 모델이라 하겠습니다.
    • train data의 mean, sd를 갖고 test data를 표준화합니다.
    • a 모델에 test data를 넣고 performance metrics를 출력합니다.
  4. 1~3번 작업을 총 50번 반복합니다.
    • subject selection bias를 피하고 모델의 robustness를 향상시키기 위함입니다.
  5. 50번의 performance metrics의 평균을 구합니다.
    --> 이것이 저희 모델의 최종 성능이 됩니다.
  • performance metrics로는, accuracy, precision, recall (sensiticity), F1-score, area under the receiver operating characteristic curve (AUC-ROC) 등이 사용됩니다.

 

'머신러닝' 카테고리의 다른 글

Logistic Regression  (2) 2024.09.22
MLP (Multi Layer Perceptron)  (0) 2024.09.21
XGBoost  (1) 2024.09.21
SVM (Support Vector Machine) 1탄  (1) 2024.09.20
Random Forest  (0) 2024.09.19
'머신러닝' 카테고리의 다른 글
  • Logistic Regression
  • MLP (Multi Layer Perceptron)
  • XGBoost
  • SVM (Support Vector Machine) 1탄
chaeniverse
chaeniverse
통계 학도입니다. 지금은 현업에서 data scientist로 근무하고 있습니다. 인공지능(머신러닝/딥러닝)에 관심이 많습니다.
  • chaeniverse
    채스
    chaeniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (22)
      • 통계학 (11)
      • 머신러닝 (7)
      • 딥러닝 (3)
      • 논문 리뷰 (1)
      • etc (0)
      • Project (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 포트폴리오
  • 인기 글

  • 태그

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
chaeniverse
머신러닝에서 분류 과제 수행 단계
상단으로

티스토리툴바