작성
·
340
0
4.9 실습에서
1.처음 xgb_clf 객체를 생성할때, n_estimators 나 learning rate같은 파라미터 값들은 어떤값을 줘도 상관이 없을까요? 처음 분류기 모델을 생성할때 어떤값을 줘도 상관없는지 궁금합니다!
그다음줄 코드 xgb_clf.fit(X_tr, y_tr, early_stopping_rounds=100, eval_metric='auc', eval_set=[(X_tr, y_tr), (X_val, y_val)]) 에서 eval_metric 을 이전 xgb실습때에는 'logloss'값을 줬는데 이번 실습에서는 roc_score를 평가지표로 사용한건가요? 학습을 시킬때, 어떤경우에는 평가지표를 어떤값을 줘야하는지 궁금합니다!
목적함수 설정 부분에서 kfold방식으로 x_train을 나눈 이유가 궁금합니다!
답변 1
0
안녕하십니까,
가능하면 적절한(?) 값을 부여해 주면 좋습니다. 여기서 적절한 값이란, 어느 정도 경험에 따라 합리적인 값을 부여해 주면 좋을 것 같습니다. 예를 들어 learning_rate는 0.01 ~ 0.1 사이 정도, estimator는 많이 설정하면 좋긴 하지만, 수행 시간이 오래 걸립니다. 나중에 튜닝할 생각을 하고, 기본적으로 모델이 어느정도 성능이 나오는지 baseline적으로 확인해 보기 위해 적절히 생성하면 좋을 것 같습니다. 학습 데이터가 작으면 500이상도 무방합니다.
산탄데르가 경연대회 문제라 조금이라도 더 최적화를 하기 위해서 손실함수 평가를 경연대회 평가 기준인 roc-auc로 적용했습니다. 그리고 손실함수 평가를 기본값 logloss가 아니라 roc-auc로도 할 수 있다는 것을 보여 드리기 위해서 적용했습니다. 경험적으로 해보면 logloss와 roc-auc는 큰 차이가 없는것 같습니다만, 경연대회와 같이 조금의 차이라도 중요하면 손실함수를 경연대회 평가 지표로 적용하면 좋습니다.
kfold로 나눈 이유는 최적 하이퍼 파라미터를 위한 손실함수 평가를 좀 더 공정하게(?) 적용하기 위해서 입니다. 학습과 검증으로만 나누면 데이터를 나눌 때 뭔가 특정 방향성으로 피처들이 치우치게 데이터가 나뉘어 지면, 평가가 제대로 이뤄지지 않을 가능성이 있어서, 좀 더 여러번 데이터를 나누는 기준을 적용해서 손실함수 평가를 진행한 것입니다.
감사합니다.
자세한 답변감사합니다!