Allen's 데이터 맛집

앙상블(Ensemble) 기법에 대해 - Votin, Bagging, Boosting, Stacking 본문

Machine Learning/머신러닝

앙상블(Ensemble) 기법에 대해 - Votin, Bagging, Boosting, Stacking

Allen93 2024. 1. 18. 01:33
이번 포스팅에서는 데이터 분석의 강력한 도구 중 하나인 앙상블(Ensemble) 기법에 대해 쉽게 알아보려고 합니다. 앙상블은 여러 모델을 결합하여 단일 모델보다 높은 성능을 얻을 수 있도록 도와주는 획기적인 방법 중 하나입니다.

 

 

 



앙상블 기법이란?

 

앙상블은 여러 다른 모델들을 결합하여 하나의 강력한 모델을 만드는 방법입니다. 이는 여러 모델의 다양성을 활용하여 성능을 향상시키는 아이디어에 기반합니다.

 

Voting, Bagging, Boosting, Stacking: 간단히 알아보기


1. Voting (보팅)
Voting은 여러 다른 모델들의 예측을 종합하여 최종 예측을 결정하는 방법입니다. 주로 더 간단하고 다양한 모델들을 결합하여 성능을 높이는 데 사용됩니다.

앙상블 보팅



2. Bagging (베깅)
Bagging은 Bootstrap Aggregating의 줄임말로, 데이터 샘플을 여러 번 복원추출하여 각각의 모델을 학습시키는 방법입니다. 이렇게 학습된 모델들의 예측을 평균화하여 최종 예측을 만듭니다.



3. Boosting (부스팅)
Boosting은 약한 모델들을 순차적으로 학습시켜 강력한 모델을 만드는 방법입니다. 각 모델은 이전 모델이 예측을 틀린 데이터에 가중치를 높여 학습됩니다.



4. Stacking (스태킹)
Stacking은 여러 모델의 예측을 입력으로 받아 최종 예측을 하는 메타 모델을 사용하는 방법입니다. 기본 모델들의 예측을 특성(feature)으로 사용하여 메타 모델을 학습시킵니다.

 




어떻게 현업에서 사용되고 있을까?


예시: 고객 이탈 예측
배경: 서비스 제공업체에서는 고객 이탈을 최소화하고자 합니다. 이를 위해 고객 이탈 예측 모델을 구축하고자 합니다.

해결 방법:
Ensemble 기법을 사용하여 Voting과 Bagging을 결합하여 이탈 예측 모델을 만듭니다.

from sklearn.ensemble import VotingClassifier, BaggingClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
from sklearn.linear_model import LogisticRegression

# 가상의 데이터셋 생성
X, y = make_classification(n_samples=1000, n_features=20, n_informative=15, n_classes=2, random_state=42)

# 학습 데이터와 테스트 데이터로 나누기
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 다양한 모델 생성
model1 = DecisionTreeClassifier(random_state=42)
model2 = SVC(probability=True, random_state=42)
model3 = LogisticRegression(random_state=42)

# Voting 모델 생성
voting_model = VotingClassifier(estimators=[('dt', model1), ('svc', model2), ('lr', model3)], voting='soft')
voting_model.fit(X_train, y_train)

# Bagging 모델 생성
bagging_model = BaggingClassifier(base_estimator=model1, n_estimators=50, random_state=42)
bagging_model.fit(X_train, y_train)

# 각 모델의 예측
y_pred_voting = voting_model.predict(X_test)
y_pred_bagging = bagging_model.predict(X_test)

# 성능 평가
accuracy_voting = accuracy_score(y_test, y_pred_voting)
accuracy_bagging = accuracy_score(y_test, y_pred_bagging)

print(f"Voting Model Accuracy: {accuracy_voting:.2f}")
print(f"Bagging Model Accuracy: {accuracy_bagging:.2f}")

 

이 예시에서는 Decision Tree, SVM, Logistic Regression 세 가지 모델을 Voting과 Bagging으로 결합하여 고객 이탈 예측 모델을 만들었습니다. 이런 방식으로 앙상블 기법을 활용하면 단일 모델보다 더 강력하고 안정적인 예측 성능을 얻을 수 있습니다.



앙상블 기법은 다양한 데이터 분석 문제에서 활용되며, 모델의 다양성과 조합에 따라 성능이 크게 향상될 수 있습니다. 계속해서 다양한 기법에 대해 알아가며 데이터 분석 역량을 더 향상시키는 것이 중요합니다. 현업에서는 이러한 앙상블 기법을 실제로 적용하여 모델의 예측 성능을 향상시키고, 복잡한 현실세계의 데이터에 대응하는 데 활용하고 있습니다.