XGBoost Python 패키지 소개

XGBoost Python 패키지 소개

xgboost 패키지는 Python에서 기본 인터페이스, scikit-learn 인터페이스, dask 인터페이스까지 3가지 인터페이스를 제공해요. 학습 데이터를 다양한 형식으로 로드할 수 있고, DMatrix 객체로 관리해 학습·예측에 활용해요.

출처: XGBoost Python Package Introduction

설치 확인

설치 후 Python에서 정상 동작하는지 확인해요.

import xgboost as xgb

데이터 인터페이스

XGBoost Python 모듈은 CPU·GPU 데이터 구조를 포함한 다양한 데이터 형식에서 데이터를 로드해요. 입력 데이터는 DMatrix 객체에 저장돼요.

  • NumPy 배열을 DMatrix로 로드:
data = np.random.rand(5, 10)  # 5 entities, each contains 10 features
label = np.random.randint(2, size=5)  # binary target
dtrain = xgb.DMatrix(data, label=label)
  • scipy.sparse 배열을 DMatrix로 로드:
csr = scipy.sparse.csr_matrix((dat, (row, col)))
dtrain = xgb.DMatrix(csr)
  • Pandas 데이터프레임을 DMatrix로 로드:
data = pandas.DataFrame(np.arange(12).reshape((4,3)), columns=['a', 'b', 'c'])
label = pandas.DataFrame(np.random.randint(2, size=4))
dtrain = xgb.DMatrix(data, label=label)
  • DMatrix를 XGBoost 바이너리 파일로 저장:
dtrain.save_binary('train.buffer')
  • 결측값을 DMatrix 생성자에서 기본값으로 대체:
dtrain = xgb.DMatrix(data, label=label, missing=np.NaN)
  • 필요 시 가중치 설정:
w = np.random.rand(5, 1)
dtrain = xgb.DMatrix(data, label=label, missing=np.NaN, weight=w)

파라미터 설정

XGBoost는 파라미터를 쌍(pair) 리스트나 딕셔너리로 설정할 수 있어요.

param = {'max_depth': 2, 'eta': 1, 'objective': 'binary:logistic'}
param['nthread'] = 4
param['eval_metric'] = 'auc'

# 평가 메트릭을 여러 개 지정할 수도 있어요
param['eval_metric'] = ['auc', 'ams@0']

# 검증셋을 지정해 성능을 지켜보기
evallist = [(dtrain, 'train'), (dtest, 'eval')]

학습

모델 학습에는 파라미터 리스트와 데이터셋이 필요해요.

num_round = 10
bst = xgb.train(param, dtrain, num_round, evallist)

학습이 끝나면 모델을 저장하고 예측에 쓸 수 있어요. xgb.train에 검증셋(evallist)을 넘기면 학습 중 평가 메트릭을 로그로 확인할 수 있어요.

더 알아보기