[파이썬][scikit-learn] scikit-learn에서 배깅

배깅(bagging)은 머신 러닝의 앙상블 기법 중 하나로, 같은 학습 알고리즘을 사용하여 다양한 훈련 데이터를 샘플링하여 모델을 구성하는 방법입니다. 이를 통해 모델의 예측력과 일반화 성능을 향상시킬 수 있습니다.

scikit-learn은 파이썬에서 머신 러닝 모델을 구축하는 데 사용되는 강력한 라이브러리이며, 배깅에 대한 구현 역시 제공합니다. 이번 포스트에서는 scikit-learn을 사용하여 배깅을 어떻게 적용할 수 있는지 알아보겠습니다.

배깅의 개요

배깅은 Bootstrap Aggregating의 약자로, 다음의 과정으로 이루어집니다:

  1. 원본 데이터에서 중복을 허용한 랜덤한 부분집합을 생성합니다. (부트스트래핑)
  2. 생성된 부분집합을 사용하여 모델을 각각 학습시킵니다.
  3. 학습된 모델들을 결합하여 최종 예측을 수행합니다. (평균, 투표 등)

이렇게 함으로써, 개별 모델의 오버피팅을 방지하고 예측을 더욱 안정적으로 만들 수 있습니다.

scikit-learn의 배깅 구현

scikit-learn에서는 BaggingClassifierBaggingRegressor 클래스를 통해 배깅을 구현할 수 있습니다. 간단한 예제를 통해 사용법을 살펴보겠습니다.

from sklearn.datasets import load_iris
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split

# 데이터 로드
iris = load_iris()
X, y = iris.data, iris.target

# train/test 데이터 분리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# 모델 초기화
base_model = DecisionTreeClassifier()
bagging_model = BaggingClassifier(base_model, n_estimators=10)

# 모델 학습
bagging_model.fit(X_train, y_train)

# 예측
y_pred = bagging_model.predict(X_test)

# 정확도 평가
accuracy = bagging_model.score(X_test, y_test)
print(f"Accuracy: {accuracy}")

위의 코드는 iris 데이터셋을 사용하여 Decision Tree 기반의 배깅 모델을 생성하고, 학습 및 예측을 수행하는 예제입니다.

BaggingClassifier 클래스는 첫 번째 인자로 base_estimator를 받으며, 이는 개별 모델의 타입을 지정합니다. 두 번째 인자로는 n_estimators를 받으며, 이는 모델의 개수를 의미합니다.

결론

scikit-learn을 이용한 배깅은 머신 러닝에서 중요한 앙상블 기법 중 하나입니다. 부트스트래핑을 통해 다양한 학습 데이터를 활용하여 향상된 예측 성능을 얻을 수 있습니다. scikit-learn의 BaggingClassifierBaggingRegressor 클래스를 사용하여 배깅을 간편하게 구현할 수 있습니다.

더 자세한 내용은 scikit-learn 공식 문서를 참고하시기 바랍니다. Happy coding!