세 역할, 세 set
Training data가 모델을 fit. Validation data가 hyperparameter를 튜닝하고 모델 사이 선택. Test data는 한 질문에만 답해 — validation에서 한 결정이 일반화됐나? 최종 모델 freeze 전에 test score를 한 번이라도 보면, test set이 또 다른 validation set이 되고 정직한 추정치를 잃는 거야.
Stratify, group, time-respect
class imbalance 있는 classification은 label로 stratify. group 데이터(user 당 여러 row)는 user로 split. time-series는 time으로 split하고 미래 row가 절대 training에 못 들어오게 해. 전략 섞으면 leaderboard가 game 당하고 production system이 부끄러워져.
frozen test set 의식
day 1에 test set의 index를 pickle하고 다시 계산하지 마. 데이터가 바뀌면 새 dataset을 만들어. test set을 슬쩍 옮기는 거 아냐. frozen-test-set 의식이 calibrate된 팀과 자기 자신에게 거짓말하는 팀의 차이야.