앙상블 학습이란?
앙상블 학습(Ensemble Learnning)
- 여러 개의 학습 모델을 결합하여 하나의 강력한 모델을 만드는 기법
- 앙상블 학습은 개별 모델의 예측을 결합함으로써, 단일 모델보다 더 높은 예측 성능과 일반화 능력을 얻을수 있음
- 주요 기법으로는 배깅(Bagging) 과 부스팅(Boosting) 이 있음
배깅이란?
배깅(Bagging, Bootstrap Aggregating)
- 여러 개의 학습 모델을 병렬로 학습시키고
그 예측 결과를 평균 또는 다수결로 결합하는 앙상블 기법 - 배깅은 데이터의 샘플링 과정에서 부트스트래핑(Bootstrap) 기법을 사용하여,
원본 데이터셋에서 중복을 허용한 무작위 샘플을 생성 - 각 모델은 서로 다른 데이터 샘플을 학습하게 되어,
모델 간의 상관성을 줄이고 예측 성능을 향상시킴
배깅의 장점
- 과적합 감소 : 여러 모델의 예측을 결합함으로써 과적합을 줄일 수 있다
- 안정성 향상 : 데이터의 변동에 덜 민감해진다
- 병렬 처리 가능 : 각 모델을 독립적으로 학습시킬 수 있어 병렬 처리가 가능
Ex) 랜덤포레스트 (Random Forest) 가 대표적인 배깅 기법
부스팅이란?
부스팅(Boosting)
- 여러 개의 약한 학습기(weak learner)를 순차적으로 학습시키고,
그 예측 결과를 결합하여 강한 학습기를 만드는 앙상블 기법 - 부스팅은 이전 모델이 잘못 예측한 데이터 포인트에 가중치를 부여하여,
다음 모델이 이를 더 잘 학습하도록 한다
부스팅의 장점
- 높은 예측 성능 : 약한 학습기를 결합하여 높은 예측 성능을 얻을 수 있다
- 과적합 방지 : 모델의 복잡도를 조절하여 과적합을 방지할 수 있다
- 순차적 학습 : 이전 모델의 오류를 보완하는 방식으로 학습이 진행
Ex) AdaBoost, Gradient Boosting, XGBoost 등
스태킹이란?
스태킹(Stacking)
- 여러 개의 기본 모델을 훈련시킨 후, 이들의 예측을 새로운 데이터로 취급해
다시 메타모델(meta-model)을 훈련시킨다
이 메타 모델이 최종 예측을 담당 - Ex) 기본 모델로는 랜덤포레스트, SVM, 로지스틱 회귀 등이 사용될 수 있으며,
메타 모델로는 보통 회귀 모델이나 분류 모델이 사용된다
예시
- 데이터 로드
from sklearn.ensemble import BaggingRegressor
from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import mean_squared_error
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# 유방암 데이터 로드
cancer_data = load_breast_cancer()
X, y = cancer_data.data, cancer_data.target
# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 데이터 스케일링
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
- 배깅 모델 구현 및 평가
# 배깅 모델 생성
bagging_model = BaggingRegressor(estimator=DecisionTreeRegressor(), n_estimators=100, random_state=42)
# 모델 학습
bagging_model.fit(X_train_scaled, y_train)
# 예측
y_pred_bagging = bagging_model.predict(X_test_scaled)
# 평가
mse_bagging = mean_squared_error(y_test, y_pred_bagging)
print(f'배깅 모델의 MSE: {mse_bagging}')
- 부스팅 모델 구현 및 평가
from sklearn.ensemble import GradientBoostingRegressor
# 부스팅 모델 생성
boosting_model = GradientBoostingRegressor(n_estimators=100, random_state=42)
# 모델 학습
boosting_model.fit(X_train_scaled, y_train)
# 예측
y_pred_boosting = boosting_model.predict(X_test_scaled)
# 평가
mse_boosting = mean_squared_error(y_test, y_pred_boosting)
print(f'부스팅 모델의 MSE: {mse_boosting}')
'AI > ML' 카테고리의 다른 글
[ML] 앙상블 학습 - 그래디언트 부스팅 머신 (GBM) (0) | 2024.12.29 |
---|---|
[ML] 앙상블 학습 - 랜덤 포레스트 (0) | 2024.12.29 |
[ML] 비지도학습 - 차원축소 (LDA) (2) | 2024.12.29 |
[ML] 비지도학습 - 차원축소 (t-SNE) (0) | 2024.12.29 |
[ML] 비지도학습 - 차원축소 (PCA) (0) | 2024.12.29 |