데이터 수집

목적에 맞는 데이터 수집

데이터 전처리

데이터 분석(EDA)

정형/비정형 데이터
수치형/범주형 변수

결측치/이상치 처리

  • 결측치 : 삭제(목록/열) / 대체(Imputation:통계값/회귀)
  • 이상치(Outlier) : 삭제/대체/변환(Transformation)
    • 상황적/집단적
    • Z-SCore
    • IQR (Inter Quartile Range)
    • Log/squre

연속형/범주형 변수 처리(참고lib: category_encoders)

  • 연속형 변수
    • 함수변환
      • 로그변환
      • 제곱근 변환
      • Box-Cox 변환
    • 스케일링
      • Min-Max 스케일링 (0< <1)
      • 표준화
      • 로버스트 스케일링 : IQR 기준으로 변환
    • 구간화(Binning, Bucketing)
  • 범주형 변수
    • 원-핫 인코딩
    • 레이블 인코딩
    • 빈도 인코딩
    • 타켓 인코딩
      • 스무팅 : 데이터셋을 평균에 가깝게 전환
      • K-Fold (교차검증)

파생변수 생성(Feature Engineering)

기존 변수의 정보를 토대로 정제 및 생성된 새로운 변수

  • 변수자체를 변환
  • 변수 간의 관계를 활용

변수선택(Feature Selection)

  • Filter Method : 변수들간의 통계적 관계를 기반으로 변수의 중요도 설정(상관관계 등)
    • 카이제곱(Chi-square) 검정(귀무가설/대립가설/p-value)
  • Wrapper Method : 실제 머신러닝 모델의 성는ㅇ을 기반으로 변수의 중요도 설정(Forward Selection, Backard elimination)
  • Embedded methods : 모델 훈련과정에서 변수의 중요도 설정(Feature importance, Regularizer 기반선택)
    • Tree 기반 : Feature Importance
    • Regulaization 기반 : Lasso(L1), Ridge(L2), ElasticNet

(예시)

  • Correlation 기반
  • Feature Importance 기반
  • Permutation Importance 기반 : 검증 데이터셋의 Feature를 하나하나 Shuffle 하면서 성능 관찰
  • Adversarial validation 개념 : 학습과 검증 데이터셋에서 상이한 분포를 갖는 변수를 제거하는 방법

모델선택

목적에 맞는 모델 선택

머신러닝 모델 구축 : 선형회귀 vs 비선형 모델

  • 선형 회귀 모델
    • 다중공선성 확인 방법(VIF)
    • IQR
    • R-squre(결정계수) : 1에 가까울수록 회귀모형에 맞는 완벽한 선형관계
  • KNN
  • Decision Tree(의사 결정 나무)
    • 불순도
    • 가지치기(Pruning)
    • Depth
    • Feature Importance
  • Random Forest
    • 앙상블(Ensemble) : 주어진 데이터로 여러개의 서로 다른 예측 모형을 생성해, 이들의 결과를 종합하는것.
    • 부트스트랩(Bootstrap) : 복원추출을 사용해 표본을 추출해 모집단의 통계량을 추론하는 통계적 방법
    • 배깅(Bagging, Boostrap aggregation) : 부트스트랩의 복원 추출 과정을 머신러닝 앙상블에 사용/표본을 여러번 뽑아 모델을 학슴시키고, 그 결과를 집계(Aggregation) 모델
    • 랜던포레스트는 데이터 뿐 아니라 독립변수(X)들도 무작위로 선택해 트리를 생성하는 방법

현재의 SOTA 모델 : Boosting 기반의 모델

Decision Tree -> Bagging -> Random Forest -> Boosting -> Gradient Boosting -> XGBoost -> LightGBM -> CatBoost

  • 배깅(Bagging) : 데이터 분할로 독립적인 계산 가능
  • Boosting : 이전 모델에서 잘못 예측된 집합을 다음 모델 학습 데이터로 추출(이전 모델의 성능에 영향을 받아 다음 모델이 구축)
    • Boosting Algorithms : 이전 모델의 예측 결과를 다음 모델 구축에 어떻게 활용하는지에 따라 두 방법이 존재
    1. AdaBoost : 틀린값 가중치 부여, 다음모델 조정 방식
    2. GBM : 오차 함수(Lost Function)을 두고, Gradient 사용
      • 과적합(Overfitting) 방지 : Regularization(Subsampling, Shrinkage, Early Stopping)

ligthGBM

GOSS : Gradient-based One-Side Sampling (Data->Down Sample Data)
EFB : Execlusive Feature Bundling (Feature ->Feature Bundle)

Parameters

  • boosting : gbdt/dart
  • data_sample_strategy : bagging/goss
  • objective : regression, cross_entropy, cross_entropy_lambda...
  • max_depth : default->20
  • num_leaves : < 2^(max_depth), default 31
  • min_data_in_leaf : 트리의 leaf가 가질수 있는 최소 인스턴스 수, 큰값을 주면 과적합 방지, 단 과소적합 발생, default 20
  • feature_fraction : default 1.0, 매 iteration 마다 학습에 사용할 feature의 수를 조절하여 학습 속도를 향상
  • bagging_fraction : data에 대한 무작위 선택, default 1.0
  • device_type : gpu,cuda,cpu,mse(맥 m1-3)

Hyperparameter 튜닝

  • Optuna

학습 및 평가

학습,검증,평가(데이터셋 분할)

학습(train) / 검증(validation) / 테스트(test)

  • Holdout : Train/Valid
  • K-Fold
  • Stratified K-Fold : K개의 Fold를 구성하는 방법은 K-Fold 동일, 하지만 Fold별 Y의 비율도 동일하게 하는 분할 방법
  • Group K-Fold : Train과 Valid에 같은 값이 들어가지 않도록 Group을 구성후 배분
  • Time-Series Split : 시계열 데이터에 사용되는 확장된 K-Fold 방법

모델의 성능 측정

  • 디버깅 모드
  • 시드 고정
  • Pseudo Labeling

배포

실제 결과 유효성 확인

기타

EDA 자동화 도구

dataprep...

시각화 도구

Weight & Biases(WanDB)

profile
인공지능관련 작업중

0개의 댓글