inflearn logo
강의

Course

Instructor

[Revised Edition] The Complete Guide to Python Machine Learning

hyperopt를 이용한 하이퍼파라미터 튜닝

615

pc12384

4 asked

0

선생님, 안녕하세요. hyperopt 파트 공부하다가 의문점이 있어서 글을 남깁니다.

 

page. 264 코드에서 xgb_clf = XGBClassifier()로 모델을 선언하는 부분에서 eval_metric='logloss'를 넣는 이유가 궁금합니다. eval_metric='logloss'를 안쓰고 나머지 코드만 돌려도 잘돌아가고, 뒤에 산탄데르 실습 page 272에서는 eval_metric='auc'를 안쓴걸로 확인이 되는데

이전에 xgboost 버전 업그레이드 전 warning 메시지를 없애기 위해서 넣은것 같다고 생각을 하고있습니다. 현 버전에는 모델 선언시 eval_metric를 안써도 잘 돌아가는데

제가 생각하는게 맞는건가요?

머신러닝 배워볼래요? 머신러닝 python 통계 통계

Answer 1

0

dooleyz3525

안녕하십니까,

eval_metric을 넣은 이유는 검증 데이터에 evaluation(평가)를 iteration 별로 수행하면서 evaluation 지표가 좋아지는 방향성으로 XGBoost가 최적으로 학습시키기 위해서 입니다.

XGBClassifier에서는 logloss와 auc만 evaluation metric으로 지원이 되는데,

위스콘신 암 데이터로는 정확도 평가 지표 최적화를 진행하려는데 정확도는 eval_metric이 지원되지 않아서 log_loss를 적용한 것이고, 산탄데르는 roc auc 평가 지표 최적화를 위해서 eval_metric으로 auc를 적용하였습니다.

책의 page 272에는 eval_metric을 기재하는 부분이 없습니다. 273 page를 보시면 xgb_clf.fit()에서 eval_metric을 auc로 적용합니다.

그리고 아마 개정판 책이 나올 시점은 Xgboost는 말씀하신 대로 eval_metric에 logloss등을 지정하지 않으면 warning이 나왔던 걸로 기억합니다. 하지만 eval_metric은 상황이 허락한다면 명시해 주는 것이 좋습니다. XGBoost가 조금이라도 해당 eval_metric을 최적화 하는 방향성으로 학습을 진행하기 때문입니다.

감사합니다.

0

pc12384

선생님, 답변 감사합니다.

그래도 잘 이해가 안가는데 cross_val_score는 early stopping이 지원되지 않아서, 산탄 데이터에서는 kfold로 적용후 fit을 할 때 early stopping을 사용하면서 평가지표로 eval_metric을 auc로 지정했습니다. 그러면 검증 데이터를 iteration 별로 확인이 가능하고

 

앞 실습에서 위스콘신 암 데이터는 cross_val_score를 사용함으로써 검증 데이터 iteration별로 확인이 불가능한데 굳이 page. 264 코드에서 xgb_clf = XGBClassifier()로 모델을 선언하는 부분에서 eval_metric='logloss'을 넣는지 궁금합니다(산탄 데이터의 경우 모델 선언시 eval_metric 코드 안쓰고, fit()을 할 때 eval_metric 지정). 검증 데이터 이터레이션 별로 확인이 불가능한데 넣는 이유가 있나요? 물론 cross_val_score로 학습데이터로 다시 학습, 검증으로 데이터가 나눠지긴 하는데 cross_val_score는 조기중단 기능이 없는데...

선생님 답변이 이해가 갈랑 말랑합니다 ,죄송합니다

0

dooleyz3525

굳이 page. 264 코드에서 xgb_clf = XGBClassifier()로 모델을 선언하는 부분에서 eval_metric='logloss'을 넣는지 궁금합니다

=> cross_val_score()사용시 eval_metric을 안넣으셔도 됩니다. 다만 보통은 cross_val_score() 방식 보다는 eval_metric을 활용하기 위해 kfold 방식으로 적용하는게 보다 더 일반적입니다. 굳이 cross_val_score냐 kfold냐에 따라 eval_metric을 넣느냐 마느냐를 구분할 필요는 없을 것 같습니다만, 가능하다면 eval_metric을 넣어주시면 좋을 것 같습니다.

 

0

pc12384

답변 정말 감사합니다!

안녕하세요 열심히 수강중인 학생입니다

0

63

2

정수 인덱싱

0

68

2

넘파이 오류

0

85

2

11강 numpy의 axis 축 질문 드립니다.

0

85

2

Kaggle 에서 Santander customer satisfaction data 를 다운로드 되지가 않습니다.

0

79

2

Feature importances 를 보여주는 barplot 이 그래프로 안보여져요.

0

70

2

타이타닉 csv 파일이 주피터 화면에 보이지 않습니다.

0

75

2

타이타닉 csv 파일이 주피터 화면에 보이지 않습니다.

0

64

2

5강 강의 오류가 있어요.

0

84

1

실무에서 LTV 관련 모델 선택 질문입니다!

0

72

2

14강 강의 듣는중에 궁금한게 있어서 질문합니다~

0

69

3

파이썬 다운그레이 후 사이킷런 재설치

0

117

2

좋은 강의 감사합니다.

0

72

2

scoring 함수 음수값

0

67

2

6번 강의에 사이킷런, 파이썬, 아나콘다 각각 버전 일치 안 시키고 진행해도 강의 따라가 지나요?

0

100

2

분류 평가 정확도 예측

0

77

2

안녕하세요. 강의 들으면서 업무에 적용하고 싶은 수강생입니다.

0

99

1

카카오톡 채널 있나요

0

107

1

혹시 강의에서 사용하시는 ppt 받을 수 있는건가요

0

190

2

pca 스케일링 관련하여 질문드립니다.

0

100

2

주피터 대신 구글 코랩

0

172

2

강의에서 사용하는 pdf or ppt자료는 따로 없는 건가요?

0

148

2

실루엣 스코어..

0

86

2

float64 null 값 처리 방법

0

103

2