[파이썬] xgboost의 Python API 활용

xgboost (eXtreme Gradient Boosting)은 회귀 및 분류 작업에 가장 인기 있는 기계 학습 알고리즘 중 하나입니다. 이 블로그 포스트에서는 xgboost의 Python API를 사용하여 데이터를 로드하고 모델을 학습하는 방법에 대해 알아보겠습니다.

데이터 로드하기

xgboost를 사용하여 모델을 학습하기 전에 데이터를 로드해야합니다. 일반적으로 pandas를 사용하여 데이터를 로드하고 간단한 전처리 작업을 수행하는 것이 좋습니다.

import pandas as pd

# 데이터 로드
data = pd.read_csv('data.csv')

# 데이터 확인
print(data.head())

이 코드는 ‘data.csv’라는 파일에서 데이터를 로드하고, 데이터의 첫 5개 행을 출력합니다. 필요에 따라 데이터셋을 적절하게 처리하고, 특성과 레이블을 나눠야 할 수도 있습니다.

모델 학습하기

데이터를 로드한 후, xgboost를 사용하여 모델을 학습할 수 있습니다. 이를 위해 우선 데이터를 특성(X)과 레이블(y)로 나누어야합니다.

import xgboost as xgb
from sklearn.model_selection import train_test_split

# 특성(X)과 레이블(y)로 데이터 분할
X = data.drop('target', axis=1)
y = data['target']

# 학습 및 테스트 데이터로 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# xgboost 학습용 데이터셋 생성
dtrain = xgb.DMatrix(X_train, label=y_train)

# 하이퍼파라미터 설정
params = {
    'max_depth': 3,
    'eta': 0.1,
    'objective': 'reg:squarederror',
    'eval_metric': 'rmse'
}

# xgboost 모델 학습
xgb_model = xgb.train(params, dtrain, num_boost_round=100)

# 학습된 모델 저장
xgb_model.save_model('xgb_model.model')

위의 코드는 다음 작업을 수행합니다:

모델 평가하기

학습된 모델을 평가하려면 테스트 데이터를 사용하여 예측을 만들고, 이를 실제 값과 비교해야합니다.

# xgboost 모델 로드
loaded_model = xgb.Booster()
loaded_model.load_model('xgb_model.model')

# xgboost 예측
dtest = xgb.DMatrix(X_test)
y_pred = loaded_model.predict(dtest)

위의 코드는 저장된 모델을 로드하고, 테스트 데이터를 사용하여 예측을 수행합니다. 예측된 값은 y_pred 변수에 저장되어 있습니다.

모델을 평가하기 위해 다양한 평가 지표를 사용할 수 있습니다. 예를 들어, 회귀 문제의 경우 평균 제곱근 오차(Root Mean Squared Error, RMSE)를 계산할 수 있습니다.

from sklearn.metrics import mean_squared_error

# RMSE 계산
rmse = mean_squared_error(y_test, y_pred, squared=False)
print('RMSE:', rmse)

위의 코드는 예측값과 실제값을 사용하여 RMSE를 계산하고 출력합니다.

결론

xgboost의 Python API를 활용하여 데이터를 로드하고 모델을 학습하는 방법을 알아보았습니다. 이러한 기본적인 작업을 통해 xgboost를 사용하여 더 복잡한 기계 학습 문제에 대한 솔루션을 구축할 수 있습니다. xgboost의 다양한 기능과 개선된 성능을 활용하여 데이터 과학 프로젝트와 예측 모델링 작업을 위한 강력한 도구로 사용할 수 있습니다.