[파이썬][scikit-learn] scikit-learn에서 부스팅 (AdaBoost, XGBoost)

머신 러닝의 앙상블 기법 중 하나인 부스팅은 약한 학습기를 이용하여 강력한 학습기를 만드는 방법입니다. 부스팅은 여러 개의 약한 학습기를 순차적으로 학습하고 예측을 수행하며, 이때 이전 학습기의 오차를 보완하는 방식으로 학습을 진행합니다. Scikit-learn은 파이썬에서 머신 러닝을 수행할 수 있는 대표적인 라이브러리로, AdaBoost와 XGBoost 같은 부스팅 알고리즘을 제공합니다.

AdaBoost

AdaBoost는 Adaptive Boosting의 약자로, 부스팅 알고리즘의 하나입니다. 이전 학습기가 잘못 분류한 샘플에 가중치를 부여하여 다음 학습기에서 더 잘 학습할 수 있도록 하는 방식입니다. AdaBoost는 Scikit-learn의 AdaBoostClassifier 클래스를 통해 사용할 수 있습니다.

아래는 AdaBoost를 사용하여 붓꽃 데이터를 분류하는 예제입니다.

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import AdaBoostClassifier
from sklearn.metrics import accuracy_score

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

# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# AdaBoost 분류기 생성 및 학습
clf = AdaBoostClassifier()
clf.fit(X_train, y_train)

# 예측 및 정확도 평가
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")

XGBoost

XGBoost는 Gradient Boosting의 약자로, 부스팅 알고리즘의 하나입니다. XGBoost는 경사 하강법을 이용하여 학습하기 때문에 높은 예측 성능을 보장합니다. Scikit-learn의 XGBClassifier 클래스를 통해 XGBoost를 사용할 수 있습니다.

아래는 XGBoost를 사용하여 붓꽃 데이터를 분류하는 예제입니다.

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from xgboost import XGBClassifier
from sklearn.metrics import accuracy_score

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

# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# XGBoost 분류기 생성 및 학습
clf = XGBClassifier()
clf.fit(X_train, y_train)

# 예측 및 정확도 평가
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")

부스팅 알고리즘인 AdaBoost와 XGBoost는 강력한 예측 성능과 과적합 방지 메커니즘을 가지고 있기 때문에 다양한 분류 및 회귀 문제에 적용될 수 있습니다. Scikit-learn 라이브러리를 통해 간편하게 사용할 수 있으며, 데이터셋과 사용자의 요구에 맞게 파라미터를 조정하여 최적의 성능을 얻을 수 있습니다.