인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

ABC님의 프로필 이미지
ABC

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

early_stopping_rounds 변화에 따른 loss와 정확도

해결된 질문

작성

·

289

0

안녕하세요. 항상 강의 보며 많은 도움 받고 있습니다.

섹션4.분류 XGBoost를 이용한 위스콘신 유방암 예측(사이킷런 Wrapper XGBoost 사용)

위의 강의를 듣고 궁금점이 생겨 질문 드립니다.

아래 코드를 사용해 early_stopping_rounds를 50, 10일 때 결과를 봤는데

강의와 다르게 성능이 올라가는 것이 의문입니다.

10일때가 loss는 분명 더 큰데 정확도는 높게 나옵니다.

from xgboost import XGBClassifier

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)
ws50_pred_proba = xgb_wrapper.predict_proba(X_test)[:, 1]
get_clf_eval(y_test , ws50_preds, ws50_pred_proba)

early_stopping_rounds=50일 때의 결과:

validation_1-logloss:0.23533 , 정확도 0.9649

정확도: 0.9649, 정밀도: 0.9740, 재현율: 0.9740,    F1: 0.9740, AUC:0.9961

early_stopping_rounds=10일 때의 결과:

validation_1-logloss:0.25165, 정확도 0.9737

정확도: 0.9737, 정밀도: 0.9868, 재현율: 0.9740,    F1: 0.9804, AUC:0.9954

답변 1

1

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

강의에서 사용된 위스콘신 데이터 세트는 검증 세트가 그렇게 크지 않아서 early stopping 별로 정확도의 차이에 대해서 너무 민감하게 생각하시지 않으셨으면 합니다.

일반적으로 early stopping이 많으면(여기서는 50) 좀 더 최적화 성능이 좋아집니다. 하지만 early stopping이 크다고 무조건 최적화 성능이 좋아지지는 않습니다. 오버 피팅이 될 확률도 높아지기 때문입니다. 예를 들어 평가는 logloss이기 때문에 loss값이 적어지는 방향성으로 최적화가 되지만, 검증 데이터에 대한 다른 평가지표, 예를 들어 정확도는 오히려 조금 떨어질 수 있습니다. 그렇지만 이런 경우는 그렇게 흔하지는 않으며, 아마 위스콘신 데이터의 검증 데이터가 그렇게 크지 않으므로 평가시 이러한 결과가 나오는 걸로 생각됩니다.

요약드리면 전반적으로는 early stopping 이 클 수록 최적화 성능이 좀 더 나은 경향이 있지만, 반드시 그렇지는 않습니다. 특히나 검증 데이터 세트가 작은 경우에는 그렇지 않은 경우가 발생할 확률이 좀 더 높은 것 같습니다.

감사합니다.

ABC님의 프로필 이미지
ABC

작성한 질문수

질문하기