Table of Contents
728x90

앙상블(Ensemble)은 여러 개의 학습 모델을 결합하여 더 나은 예측 성능을 도출하는 머신러닝 기법입니다. 개별 모델의 약점을 보완하고, 모델의 예측을 종합함으로써 성능을 향상시키는 것을 목표로 합니다. 앙상블 기법은 다양한 모델을 조합하여 더욱 강력하고 견고한 예측을 가능하게 합니다.
주요 앙상블 기법
- 배깅(Bagging)
- 배깅은 Bootstrap Aggregating의 줄임말로, 여러 개의 모델을 독립적으로 학습시킨 후 그 결과를 평균 내거나 다수결 투표를 통해 결합하는 방법입니다.
- 각 모델은 원래 데이터셋에서 부트스트랩 샘플링(복원 추출)을 통해 생성된 여러 데이터셋에서 학습됩니다.
- 대표적인 예: 랜덤 포레스트(Random Forest)
- 부스팅(Boosting)
- 부스팅은 여러 약한 학습기(weak learner)를 순차적으로 학습시키고, 각 단계에서 이전 단계의 오류를 보완하는 방식입니다.
- 이전 모델이 잘못 예측한 데이터 포인트에 더 큰 가중치를 부여하여 다음 모델이 이를 더 잘 학습하도록 합니다.
- 대표적인 예: AdaBoost, Gradient Boosting Machines(GBM), XGBoost, LightGBM, CatBoost
- 스태킹(Stacking)
- 스태킹은 서로 다른 종류의 여러 모델을 학습시킨 후, 이들의 예측을 새로운 데이터셋으로 사용하여 메타 모델(meta-model)을 학습시키는 방법입니다.
- 각 개별 모델의 예측 결과를 입력 특성으로 사용하여 최종 예측을 수행하는 메타 모델을 학습합니다.
- 투표(Voting)
- 여러 모델의 예측 결과를 다수결 투표를 통해 최종 예측을 결정하는 방법입니다.
- 하드 보팅(hard voting): 각 모델의 예측 클래스 중 가장 많이 나온 클래스를 최종 예측으로 선택.
- 소프트 보팅(soft voting): 각 모델의 클래스 확률을 평균 내어 가장 높은 확률을 가진 클래스를 최종 예측으로 선택.
주요 앙상블 모델
- 랜덤 포레스트(Random Forest)
- 여러 개의 결정 트리를 배깅 방식으로 결합한 모델입니다.
- 각 트리는 데이터의 무작위 샘플링과 특징의 무작위 선택을 통해 학습됩니다.
- 높은 예측 성능과 안정성을 가집니다.
- AdaBoost (Adaptive Boosting)
- 약한 학습기를 순차적으로 학습시키며, 이전 학습기에서 잘못 예측한 데이터 포인트에 가중치를 부여합니다.
- 최종 예측은 모든 약한 학습기의 가중치가 부여된 예측을 결합하여 결정합니다.
- Gradient Boosting Machines (GBM)
- 이전 모델의 잔여 오류(residual)를 학습하여 점진적으로 성능을 향상시키는 부스팅 방법입니다.
- 각 단계에서 모델은 이전 단계의 오류를 보완하도록 학습됩니다.
- XGBoost
- GBM의 효율성을 높인 버전으로, 빠른 학습 속도와 높은 성능을 제공합니다.
- 정규화(term regularization)를 포함하여 과적합을 방지합니다.
- LightGBM
- 대규모 데이터셋에 효율적인 부스팅 방법으로, 트리 기반 학습을 최적화하여 빠른 학습 속도를 제공합니다.
- 리프 중심 트리 분할 방식을 사용합니다.
- CatBoost
- 범주형 데이터를 처리하는 데 최적화된 부스팅 방법입니다.
- 자동으로 범주형 데이터를 인코딩하고, 학습 속도와 성능을 최적화합니다.
장점
- 향상된 예측 성능: 개별 모델보다 높은 정확도를 제공합니다.
- 안정성: 단일 모델보다 더 견고하고 일관된 성능을 제공합니다.
- 과적합 감소: 여러 모델의 예측을 결합하여 과적합 위험을 줄입니다.
단점
- 복잡성: 모델이 복잡해지고, 해석이 어려울 수 있습니다.
- 계산 비용: 여러 모델을 학습시키고 결합하는 과정에서 계산 비용이 증가합니다.
- 시간 소모: 학습과 예측에 필요한 시간이 증가할 수 있습니다.
코드 예시
앙상블 모델의 간단한 구현 예시로 랜덤 포레스트를 사용해 보겠습니다.
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# 데이터 로드 및 분할
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3, random_state=42)
# 랜덤 포레스트 모델 생성
clf = RandomForestClassifier(n_estimators=100, random_state=42)
clf.fit(X_train, y_train)
# 예측 및 평가
y_pred = clf.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))
이 코드는 사이킷런(Scikit-learn)을 사용하여 간단한 랜덤 포레스트 모델을 학습시키고, 예측 성능을 평가하는 예제입니다. 앙상블 기법을 통해 더 나은 예측 성능을 도출할 수 있습니다.
'ML' 카테고리의 다른 글
Random Forest에서의 Out-of-Bag (OOB) (0) | 2024.05.29 |
---|---|
Ensemble > Bagging(Bootstrap Aggregating), Random Forest (1) | 2024.05.29 |
Decision tree -> pre-pruning, post-pruning (0) | 2024.05.29 |
Decision Tree (0) | 2024.05.29 |
Classification의 종류: 이진Binary분류, 다중클래스Multiclass분류 (0) | 2024.05.29 |
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- git
- Python
- Lora
- t5
- 티스토리챌린지
- English
- Hugging Face
- recursion #재귀 #자료구조 # 알고리즘
- Array
- nlp
- cnn
- speaking
- Numpy
- 파이썬
- 코딩테스트
- #패스트캠퍼스 #패스트캠퍼스ai부트캠프 #업스테이지패스트캠퍼스 #upstageailab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- #패스트캠퍼스 #패스트캠퍼스AI부트캠프 #업스테이지패스트캠퍼스 #UpstageAILab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- 손실함수
- Transformer
- 리스트
- 오블완
- classification
- Github
- clustering
- RAG
- 해시
- #패스트캠퍼스 #UpstageAILab #Upstage #부트캠프 #AI #데이터분석 #데이터사이언스 #무료교육 #국비지원 #국비지원취업 #데이터분석취업 등
- LIST
- PEFT
- LLM
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함