본문 바로가기
PYTHON/머신러닝

[PYTHON] 앙상블(Ensemble)

by G허니 2024. 4. 28.

앙상블(Ensemble)은 여러 개별 모델의 예측을 결합하여 더 나은 전체적인 예측을 수행하는 기법을 의미합니다. 앙상블은 다양한 모델을 결합하여 각 모델의 약점을 상쇄하고 강점을 극대화하여 더 강력하고 안정적인 예측을 제공합니다.

 

 

알고리즘 동작 방식:

  1. 개별 모델 학습: 먼저, 여러 개별 모델을 다양한 학습 알고리즘을 사용하여 학습합니다. 예를 들어, 결정 트리, 랜덤 포레스트, 그래디언트 부스팅 등의 다양한 모델을 학습할 수 있습니다.
  2. 예측 결합: 학습된 개별 모델들은 각각의 예측을 수행합니다. 앙상블은 이러한 예측을 결합하여 최종 예측을 만듭니다. 이 과정에서 다양한 결합 방법이 사용될 수 있습니다. 예를 들어, 분류 문제의 경우 다수결 투표(voting), 회귀 문제의 경우 평균 등의 방법이 사용될 수 있습니다.
  3. 앙상블 학습: 앙상블 모델은 개별 모델의 예측을 기반으로 다시 학습될 수도 있습니다. 예를 들어, 배깅(Bagging)이나 부스팅(Boosting)과 같은 앙상블 학습 알고리즘이 사용될 수 있습니다.

주요 특징:

  • 다양성: 앙상블은 서로 다른 학습 알고리즘을 사용하거나 학습 데이터를 다양하게 샘플링하여 다양성을 확보합니다. 이는 각 모델의 약점을 보완하고 일반화 성능을 향상시킵니다.
  • 안정성: 앙상블은 개별 모델의 예측을 결합하여 더 안정적이고 일관된 예측을 제공합니다. 이는 예측의 분산을 줄이고 과적합을 방지하는 데 도움이 됩니다.
  • 성능 향상: 앙상블은 개별 모델보다 높은 예측 성능을 제공할 수 있습니다. 이는 여러 모델의 강점을 결합하여 더 강력한 예측을 가능케 합니다.

적용 분야:

  • 의료 진단: 앙상블은 의료 진단에서 활용될 수 있습니다. 여러 의료 이미지를 분석하고 다양한 모델을 결합하여 질병을 정확하게 진단할 수 있습니다.
  • 금융 예측: 주식 시장 예측이나 금융 데이터 분석에서 앙상블은 많은 투자자들에게 사용되고 있습니다. 다양한 모델을 결합하여 주식 가격 변동을 예측할 수 있습니다.
XGBoost

 

XGBoost 설치

# xgboost 설치
!pip install xgboost

 

from xgboost import XGBClassifier

# 선언하기
model = XGBClassifier(max_depth=5, n_estimators=100)

# 학습하기
model.fit(x_train, y_train)

# 예측하기
y_pred = model.predict(x_test)

# 평가하기
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))

# Feature 중요도 확인
plt.barh(y=list(x), width=model.feature_importances_)
plt.show()

 

LightGBM

 

LightGBM설치

# lightgbm 설치
!pip install lightgbm

 

from lightgbm import LGBMClassifier

# 선언하기
model = LGBMClassifier(max_depth=5, n_estimators=100, verbose=-1)

# 학습하기
model.fit(x_train, y_train)

# 예측하기
y_pred = model.predict(x_test)

# 평가하기
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))

# Feature 중요도 확인
plt.barh(y=list(x), width=model.feature_importances_)
plt.show()

 

앙상블은 여러 개별 모델의 예측을 결합하여 높은 예측 성능을 제공하는 강력한 기법입니다. 다양성을 활용하여 안정성과 성능을 향상시키며, 다양한 분야에서 활용되고 있습니다.