• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

XGBoost

23.02.15 17:13 작성 조회수 257

0

선생님 강의 덕분에 머리 속에 정리 안되는 개념들이 하나씩 정리되고 있습니다.

XGBoost 파트에서 파이썬 래퍼 XGBoost와 사이킷런 래퍼 XGBoost로 나눠지는데 early_stopping_rounds를 설정해서 결과를 보면

파이썬 래퍼의 경우

[0] train-logloss:0.65016 eval-logloss:0.66183

[1] train-logloss:0.61131 eval-logloss:0.63609

[2] train-logloss:0.57563 eval-logloss:0.61144

이런식으로 학습데이터에 대한 logloss와 검증데이터에 대한 logloss값을 확인 할 수 있었습니다.

 

사이킷런 래퍼의 경우

[0] validation_0-logloss:0.65016 validation_1-logloss:0.66183

[1] validation_0-logloss:0.61131 validation_1-logloss:0.63609

[2] validation_0-logloss:0.57563 validation_1-logloss:0.61144

오른쪽에 있는 valiation_1-logloss로 살펴보는데,

왼쪽에 있는 valiation_0-logloss는 파이썬 래퍼와 마찬가지로 학습데이터에 대한 logloss인가요? validation_0-logloss는 어떤 경우에 보는지 궁금해서 여쭤봅니다.

답변 1

답변을 작성해보세요.

1

안녕하십니까,

도움이 되었다니 저도 기쁘군요.

왼쪽에 있는 valiation_0-logloss는 파이썬 래퍼와 마찬가지로 학습데이터에 대한 logloss입니다.

제가 실습 코드에 아래와 같이 evals를 설정하고

evals = [(X_tr, y_tr), (X_val, y_val)]

학습 시 fit()에 eval_set=evals를 설정했습니다.

xgb_wrapper.fit(X_tr, y_tr, early_stopping_rounds=50, eval_metric="logloss",

eval_set=evals, verbose=True)

이렇게 설정하면 validation_0 이 학습 데이터(X_tr, y_tr), validation_1은 검증데이터(X_val, y_val)이 됩니다.

만약 evals = [(X_val, y_val)] 으로 설정하면 validation_01은 검증데이터가 됩니다.

evals = [(X_tr, y_tr), (X_val, y_val)]를 설정한 이유는 학습 데이터의 loss와 검증 데이터의 loss를 함께 보면서 과적합이 되는지 여부등을 확인해 보기 위함입니다.

감사합니다.