작성
·
303
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를 함께 보면서 과적합이 되는지 여부등을 확인해 보기 위함입니다.
감사합니다.