
여러 개의 분류 모델이 각각 예측하고, 마지막에 다수결(또는 평균)로 최종 예측을 내리는 방식
1) Training set
전처리/EDA/피처 엔지니어링을 거친 후 모델 학습에 넣는 데이터
X = features
y = target (credit)
2) Classification models
C1, C1 ... Cm
C들은 서로 다른 분류 모델로 예를 들면...
C1 = Logistic Regression
C2 = Random Forest
C3 = XGBoost
...
3) Predictions
각 모델이 학습 후에 예측을 내놓음.
P1, P2 ... Pm
4) Voting
각 모델의 예측을 "투표"로 합쳐서 최종 결과를 정함
5) Final prediction
맨 아래의 Pf -> 최종 예측 결과
앙상블을 쓰는 이유
단일 모델보다 더 안정적이고 성능이 좋은 경우가 많기 때문
각 모델이 최종 클래스(label)를 바로 예측하고, 그 중 가장 많이 나온 클래스를 선택하는 방식
각 모델이 클래스별 확률(probability)을 내놓고, 그것을 평균 내서 최종 클래스를 정하는 방식.
장점:
단점:

원본 데이터에서 여러 개의 샘플 데이터를 랜덤하게 뽑아 각각 모델을 만들고, 마지막에 예측을 합치는 방식 (같은 데이터에서 여러 번 랜덤하게 다르게 뽑아서 여러 모델을 학습시키고, 그 결과를 평균/다수결로 합쳐서 더 안정적인 최종 모델을 만드는 방법)
한 모델만 만들면 그 모델이 우연히 특정 데이터 패턴에 치우칠 수 있음
그래서
Final Model
마지막에 하나의 결과로 합치는 것
회귀(regression)이면 -> 평균
분류(calssicification)이면 -> 다수결
로 합친다
Voting Ensemble은 같은 데이터를 사용하여 모델만 다르게 하는 데 반해, Bagging은 다르게 샘플링한 데이터를 사용하고 보통 같은 종류의 모델을 여러 개 사용한다.
Random Forest는 Decision Tree를 여러 개 만든 대표적인 Bagging 모델

의사결정나무는 사람처럼 질문을 하나씩 하면서 결정:
Bagging에서 샘플링은 보통 복원추출(with replacement) 을 사용, 이를 Booststrap Sampling이라고 함.
1) 과적합 완화
2 예측 안정성 증가
3) 성능 향상 가능성
1) 해석이 어려워짐 (너무 많은 트리는 직관적으로 이해하기 어려움)
2) 계산량 증가
3) 너무 단순한 모델에는 효과가 제한적일 수 있음
코드 예
Bagging Classifier
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
bagging_model = BaggingClassifier(
estimator=DecisionTreeClassifier(),
n_estimators=100,
random_state=42
)
bagging_model.fit(X_train, y_train)
pred = bagging_model.predict(X_valid)
Random Forest
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
bagging_model = BaggingClassifier(
estimator=DecisionTreeClassifier(),
n_estimators=100,
random_state=42
)
bagging_model.fit(X_train, y_train)
pred = bagging_model.predict(X_valid)

약한 분류기(weak learner)를 여러 개 순서대로 학습시켜서, 틀린 데이터에 점점 더 집중하게 만든 뒤, 마지막에 함쳐서 강한 분류기(strong classifier)를 만든다.
1) Original Data set,
+, - 는 두개의 클래스 즉 + = 클래스 1, - = 클래스 0
이진 분류(binary classification)문제를 나타내는 데이터셋
2) Trained classifier
첫번째 분류기를 학습 시킴
파란 영역 = - 로 예측
분홍 영역 = + 로 예측
가운데 점선 = 결정 경계(decision boundary)
첫번째 모델은 단순하게 위쪽 - 아래쪽 + 로 나눔
-> 그러나 동그라미 친 점들은 틀리게 분리된 샘플
3) Update weights,
첫번째 모델이 틀린 샘플에 대해:
4) 두 번째 Trained classifier
이번에는 세로 방향 경계를 사용해서, 이전 모델이 놓친 부분을 보완하려고 함
5) Update weights,
6) 세 번째 Trained classifier
7) Combined classifier
1) 장점
2) 단점

XGBoost는 트리를 비교적 "균형 있게(level_wise)" 확장하고, LightGBM은 가장 성능 향상 여지가 큰 가지를 먼저 "집중적으로(leaf-wise)" 확장한다.
1) XGBoost = Level-wise Tree Growth
장점
단점
2) LightGBM = Leaf-wise Tree Growth
장점
단점
| 방법 | 핵심 아이디어 | 모델 구성 | 데이터 사용 방식 | 학습 방식 | 대표 예 |
|---|---|---|---|---|---|
| Voting | 여러 모델 예측을 투표로 합침 | 보통 서로 다른 모델 | 같은 데이터 | 병렬 | VotingClassifier |
| Bagging | 다른 샘플 데이터로 같은 모델 여러 개 학습 | 보통 같은 모델 | 샘플링 다름 | 병렬 | Random Forest |
| Boosting | 이전 모델의 실수를 다음 모델이 보완 | 보통 같은 계열 약한 모델들 | 같은 데이터(가중치/잔차 변화) | 순차 | XGBoost, LightGBM |
| Stacking | 여러 모델 예측값을 다시 학습 | 서로 다른 모델 + 메타 모델 | 같은 데이터 + 예측값 | 2단계 학습 | StackingClassifier |