About 앙상블
여러개의 다양한 모델의 예측 결과를 결합함으로써 단일 모델보다 신뢰성이 높은 예측값을 얻는 것
1. 배깅
Parallel Ensemble
독립된 모델들의 결과를 합산하여 다수결 투표(Voting)을 통해 결과를 산출하는 것.
위 그림의 왼쪽처럼 bootstrap된(=랜덤 복원샘플링) 데이터가 각 분류기에 input되고, 각각에 따른 결과물들을 한 데 결합하여(Aggregation) 중 다수가 추측한 결과대로 결과를 뽑는 것
2. 부스팅
Sequential Ensemble
특정 모델의 결과를 다른 모델의 input으로 사용하는 방식으로, 모델간 가중치를 부여하여 결과를 산출.
오차가 큰 데이터(=잘못 예측한 데이터)는 가중치를 크게 부여하고, 잘 예측한 데이터에 대해서는 낮은 가중치를 부여하여 다음 모델로 넘겨줌. 이 때 각 모델은 다른 정확도/성능을 지니고 있기 때문에 모델간 가중치도 부여하여 최종 결과를 산출
부스팅이 통상 성능이 더 좋지만, 소요되는 시간이 오래 걸리고 연산량도 많다.
GBM
Gradient Boosting Machine
부스팅 모델의 일종
연산량이 많아서 속도가 느림
따라서 효율적 처리를 위해 GBM을 개선한 모델 → XGBoost, lightGBM, CatBoost 등
- tree 1이 예측하고 남은 잔차들을 tree 2, tree 3를 차례로 지나가면서 줄여가는 것
- 각 tree들이 weak learner
*Weak learner : 편향이 높거나(과소적합되어 있음) 분산이 높은(과대적합되어 있음), 성능이 좋지 않은 모델
=편향-분산 트레이드오프
- gradient descent + boosting을 합친 용어
- 잔차(실제값과 예측값의 차이)에 대한 음의 경사도(기울기)를 이용하여 잔차가 줄어드는 방향으로 모델을 학습하는 기법
- 그래서 잔차 적합(=residual fitting) 과정 이라고도 함.
- 잘못 예측한 데이터에 가중치를 부여해서 오류를 개선해 나가는 방식
- GBM은 가중치 업데이트에 경사하강법 즉, 손실함수를 최소화하는 방향성을 가지고 가중치 값을 업데이트하는 것
- 잔차를 최적화할수록 오차는 적으나 과적합될 가능성이 있으므로
→ 정규화 알고리즘 사용, 학습률learning rate 설정으로 해결(보통 0.1 ~ 0.001 범위)
순차적으로 Tree n개 각 트리의 예측결과를 합산한 값을 D(x)로 정의하였을 때, 이 D(x)와 실제 함수 f(x)간의 차이를 줄여나가는 것.
Light GBM (LGBM)
- 가장 큰 장점으로 학습에 걸리는 시간이 적다(GBM->XGBoost->LightGBM 순으로 빠름)
- XGBoost와의 예측 성능 차이가 크게 안나는 편.
- 반면 적은 데이터셋에 적용시 과적합이 발생하기 쉽다는 것이 단점
- → 일반적으로 10,000건 이상의 데이터셋은 필요함.
- 리프 중심 트리 분할(leaf wise) 방식 사용
- level-wise 트리 분할: 균형 잡힌 트리 모양을 유지함으로써 트리의 깊이를 효과적으로 줄임 -> overfitting에 강함(대신 트리 균형을 맞추는 데에 시간이 소요됨)
- leaf-wise 트리 분할: 트리의 균형을 맞추지 않고, 최대 손실값(max delta loss)을 가지는 리프 노드 분할 -> 예측 오류 손실을 최소화 할 수 있음(대신 트리의 깊이가 깊어지고 비대칭적임)
장점:
- 카테고리형 피처의 자동 변환이 가능하고 최적 분할이 가능(원-핫 인코딩과 같은 범주형 변수->수치형 변수로 바꿔주는 과정을 사용하지 않고도 범주형 변수를 최적으로 변환하고 이에 따른 노드 분할 수행이 이루어짐)
- 메모리 사용량이 작음
하이퍼 파라미터
- num_leaves : [ default=31 ] 하나의 트리가 가질 수 있는 최대 리프 개수
- max_depth : [ default=-1 ] 트리 최대 깊이
- n_estimators : [ default=100 ] 반복 수행하려는 트리 개수를 지정. 크게 지정할수록 예측 성능이 높아질 수 있으나, 너무 크게 지정하면 overfitting을 유발.
- min_child_samples : [ default=20 ] 최종 결정 클래스인 리프 노드가 되기 위해서 최소한으로 필요한 레코드 수
- reg_alpha / reg_lambda : [ default=0.0 ] 각각 L1 정규화, L2 정규화를 위한 값이다.
→ 모델 복잡도 제어 (num_leaves 높이면 정확도가 높아지지만, 트리의 깊이가 깊어지고 모델이 복잡해짐)
→ Overfitting 제어 (min_child_samples 높이고 num_leaves와 max_depth 조정, reg_lambda와 reg_alpha 적용)
→ 성능 향상 (learning_rate 작게 하면서 n_estimators 크게 (오버피팅 주의))
참고
https://julie-tech.tistory.com/m/30
https://heeya-stupidbutstudying.tistory.com/m/entry/ML-GBM-알고리즘-및-LightGBM-소개-기본구조-parameters
실습 : https://hmkim312.github.io/posts/HAR_데이터로_해보는_GBM,_XGBoost,_LightGBM/
https://bkshin.tistory.com/entry/머신러닝-15-Gradient-Boost
NMF
음수 미포함 행렬 분해(Non-negative Matrix Factorization, NMF)
음수를 포함하지 않는 행렬 X 를 음수를 포함하지 않는 행렬 W와 H의 곱으로 분해하는 알고리즘
(수식)
- 비지도학습 기반의 독립특성 추출을 위한 알고리즘
- 음수가 아닌 특성과 가중치를 반환
- 전체 원소가 양수인 행렬 V가 있을 때, V를 W*H=V인 두 행렬 W(가중치 행렬), H(특성 행렬)로 분해
- 행렬 W의 각 열 ⇒ 행렬 H의 각 행 ⇒ 데이터의 특성
- 행렬 W의 각 행 ⇒ 행렬 H의 각 열 ⇒ 특성에 대한 중요도
'DATA SCIENCE_ 💻' 카테고리의 다른 글
[SQL] 표준조인 ~ 서브쿼리 정리 (2) | 2023.11.25 |
---|---|
Linear Regression & GLM 정리 (1) | 2023.11.11 |
NLP 개념 정리 (0) | 2023.11.05 |
05 콜드스타트 문제 해결하기 (0) | 2023.10.14 |
04 GNN 기반 추천 알고리즘 (1) | 2023.10.07 |