본문 바로가기

사이킷런 래퍼 XGBoost

@su_hyeon2023. 3. 5. 17:53

xgboost 모델을 사용하기 위해서 앞서 설명한 것과 같이 파이썬 래퍼 XGBoost와 사이킷런 래퍼 XGBoost가 존재한다.

 

이번에는 사이킷런 래퍼 XGBoost의 사용법과 그에 관한 설명을 하도록 하겠다.

 

사이킷런 래퍼 XGBoost는 사이킷런의 프레임워크와 연동하기 위해서 개발하였고, 이 때문에 다른 Estimator와 동일하게 fit()과 predict() 메서드 만으로도 학습과 예측이 가능하고, GridSearchCV, Pipelinde 등 다른 유틸리티를 그대로 사용할 수 있다는 장점이 있다.

 

사이킷런 래퍼 XGBoost는 분류를 위한 XGBClassifier와 회귀를 위한 XGBRegressor가 존재한다.

 

  • XGBoost 하이퍼 파라미터

사이킷런 래퍼 XGBoost의 하이퍼 파라미터는 파이썬 래퍼 XGBoost와 비슷하지만 약간의 차이가 있다.

 

- eta -> learning_rate

- sub_sample -> subsample

- lambda -> reg_lambda

- alpha -> reg_alpha

 

  • 위스콘신 유방암 데이터 세트를 이용한 사이킷런 래퍼 XGBoost 사용

분류 데이터 셋이기 때문에 XGBClassifier를 사용하였다.

파이썬 래퍼 XGBoost를 실습하였을 때 만들어준 학습, 검증, 테스트 데이터 셋을 활용하였고, 

각각의 파라미터 또한, 앞서 만들어준 것과 똑같이 사용하였다.

from xgboost import XGBClassifier

# warning 메세지를 없애기 위해 eval_metric 값을 XGBClassifier 생성 인자로 입력
xgb_wrapper = XGBClassifier(n_estimators = 400, learning_rate = 0.05, max_depth = 3,
                            eval_metric = 'logloss')
xgb_wrapper.fit(X_train, y_train, verbose = True)
w_preds = xgb_wrapper.predict(X_test)
get_clf_eval(y_test, w_preds)

 

  • 조기중단 기능 사용

이 코드 또한 앞서 사용한 파이썬 래퍼 XGBoost와 똑같이 설정해 주었다.

xgb_wrapper = XGBClassifier(n_estimators = 400, learning_rate = 0.05, max_depth = 3)
evals = [(X_tr, y_tr), (X_val, y_val)]
xgb_wrapper.fit(X_tr, y_tr, early_stopping_rounds = 50, eval_metric = 'logloss',
                eval_set = evals, verbose = True)

ws50_preds = xgb_wrapper.predict(X_test)

조기중단

다음으로 이렇게 조기중단 기능을 사용한 모델의 성능평가를 알아보았다.

get_clf_eval(y_test, ws50_preds)

조기중단 기능을 설정할 때, 너무 낮은 값을 설정하며 안좋은 성능을 도출할 수 있기 때문에, 

적당한 숫자를 넣어서 조기중단 기능을 활용해야 한다.

 

사이킷런 래퍼 XGBoost를 사용하면서, 파이썬 래퍼 XGBoost에 비해 더욱 간단하게 모델을 학습, 예측 시킬 수 있는 것 같다고 느꼈다.

su_hyeon
@su_hyeon :: 나의 이야기

천천히 나아가는 나의 이야기를 소개합니다.

공감하셨다면 ❤️ 구독도 환영합니다! 🤗

목차