작성
·
172
0
안녕하세요.
주어진 소스에 아이디어를 적용해서 더하고 빼면서 컬럼을 추가해보거나 여러 처리를 해 보고 있는데
로컬에서 metric 으로 측정한 점수는 조금 상승했는데
제출을 해보면 오히려 떨어지는 경우가 왕왕 있어서 의욕이 저하됩니다 ㅠㅠ
(난사하고 앙상블 하면 좋아질 줄 알았어요...)
적은 점수 차이면 자신을 가지고 밀고 나가야할지
폐기하고 아이디어 적용 전으로 돌아가서 다시 새로운 시도를 할지
경험이 너무 적어서 고민이 됩니다.
감사합니다.
답변 3
2
안녕하십니까,
적합한 validation 데이터 세트를 정하는게 경연에서 제일 어려운 부분중에 하나인것 같습니다.
Public Test 데이터로 테스트 해보았을 때는 성능이 향상되었는데, private Test 데이터에서는 성능이 동일하게나 오히려 떨어지는 경우가 발생하는 경우가 흔합니다(경연 주최 측에서 학습 데이터와 Test 데이터의 피처들의 분포를 다르게 가져가거나 public 과 private Test 데이터의 피처 분포들이 조금씩 다른 경우가 있습니다)
학습/검증 데이터를 테스트 데이터의 피처 분포와 맞추어서 만들면 최상이겠지만 이렇게 만들려면 많은 시간과 노력이 필요합니다. 따라서 보통은 아래와 같이 CV 기반으로 검증합니다.
1. CV(Cross Validation) 기반으로 evaluation한 결과를 사용합니다. cv=5 정도로 평균 검증 결과를 기반으로 새롭게 생성한 피처들을 테스트 한 뒤에 성능이 향상되었는지 판단할 수 있습니다. 그런데 여기서 문제에 봉착할 수 있습니다. cv 결과는 성능이 향상되었는데, public score가 성능이 저하되거나 반대의 경우가 나올 수 있습니다. 이럴때는 일단 cv 결과를 좀 더 신뢰하는게 좋습니다. 그리고 왜 이런 결과가 나왔는데 테스트 데이터를 분석해 보는게 좋습니다. 학습 데이터와 테스트 데이터의 어떤 차이가 있는지, 중요 피처들의 분포도는 어떻게 차이가 나는지 확인해 봐야 합니다. CV 결과를 Public score보다 더 중요하게 생각하는게 필요합니다.
2. CV를 적용하더라도, 어떻게 최적의 CV를 구성해야 테스트 데이터에 적용시 최고의 성능 결과를 이어 질 수 있는지 보다 상세하게 고민해야 할 필요도 있습니다. 앞에서 제가 CV=5 정도라고 했는데, 여기에는 답이 없습니다(보통은 5~7 사이로 합니다만). 강의에서는 말씀드리진 않았지만, 개인적으로는 CV=5 정도로 하되 random_state를 여러개로 바꿔 가면서 테스트를 해봅니다. 이때 개별 cv 세트별로 성능 편차가 심하지 않는 경우의 random_state를 결정해서 이를 기반으로 CV 세트를 만듭니다.
감사합니다. 행복한 추석 연휴 보내십시요.
0
아 며칠째 고민고민하다가 질문 올렸는데
질문하길 잘한거 같아요.
하면 할 수록 어려운거 같은데 선생님 강의와 질의응답이 도움이 많이 됩니다^^
명절에도 알려주셔서 감사합니다!
남은 연휴도 즐겁게 보내세요~
0