데이터 수집
목적에 맞는 데이터 수집
데이터 전처리
데이터 분석(EDA)
정형/비정형 데이터
수치형/범주형 변수
결측치/이상치 처리
- 결측치 : 삭제(목록/열) / 대체(Imputation:통계값/회귀)
- 이상치(Outlier) : 삭제/대체/변환(Transformation)
- 상황적/집단적
- Z-SCore
- IQR (Inter Quartile Range)
- Log/squre
연속형/범주형 변수 처리(참고lib: category_encoders)
- 연속형 변수
- 함수변환
- 스케일링
- 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 : 이전 모델의 예측 결과를 다음 모델 구축에 어떻게 활용하는지에 따라 두 방법이 존재
- AdaBoost : 틀린값 가중치 부여, 다음모델 조정 방식
- 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 튜닝
학습 및 평가
학습,검증,평가(데이터셋 분할)
학습(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)