배깅(bagging)은 머신 러닝의 앙상블 기법 중 하나로, 같은 학습 알고리즘을 사용하여 다양한 훈련 데이터를 샘플링하여 모델을 구성하는 방법입니다. 이를 통해 모델의 예측력과 일반화 성능을 향상시킬 수 있습니다.
scikit-learn은 파이썬에서 머신 러닝 모델을 구축하는 데 사용되는 강력한 라이브러리이며, 배깅에 대한 구현 역시 제공합니다. 이번 포스트에서는 scikit-learn을 사용하여 배깅을 어떻게 적용할 수 있는지 알아보겠습니다.
배깅의 개요
배깅은 Bootstrap Aggregating의 약자로, 다음의 과정으로 이루어집니다:
- 원본 데이터에서 중복을 허용한 랜덤한 부분집합을 생성합니다. (부트스트래핑)
- 생성된 부분집합을 사용하여 모델을 각각 학습시킵니다.
- 학습된 모델들을 결합하여 최종 예측을 수행합니다. (평균, 투표 등)
이렇게 함으로써, 개별 모델의 오버피팅을 방지하고 예측을 더욱 안정적으로 만들 수 있습니다.
scikit-learn의 배깅 구현
scikit-learn에서는 BaggingClassifier
와 BaggingRegressor
클래스를 통해 배깅을 구현할 수 있습니다. 간단한 예제를 통해 사용법을 살펴보겠습니다.
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의 BaggingClassifier
와 BaggingRegressor
클래스를 사용하여 배깅을 간편하게 구현할 수 있습니다.
더 자세한 내용은 scikit-learn 공식 문서를 참고하시기 바랍니다. Happy coding!