분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
[private: 14위] 0.925 catboost
참가의 의의를 두고 했습니다.부족한 내용이지만 참고하시면 좋을 것 같습니다.
모델은 catboost 파라미터 튜닝은 optuna를 사용했습니다.
많이 부족한 내용이네요 ^^
영업기밀 좀 나눠요 파이썬짱님 ^^
삭제된 댓글입니다
train_set['Age'].fillna(train_set.groupby('Designation')['Age'].transform('mean'), inplace=True)
test_set['Age'].fillna(test_set.groupby('Designation')['Age'].transform('mean'), inplace=True)
여기서 test_set의 평균값을 이용하는 것은 data leakage에 해당됩니다.
말씀해주신 내용 감사합니다.하지만 해당 코드는 데이콘 측에서 공유한 basic에 있는 타이타닉 연습에서 베이스라인과 비슷한 맥락으로 코드를 작성하였습니다. test_set에 결측을 훈련이 아닌 test_set 본인의 결측 해결을 위해 사용한 것이 부정인지는 의문입니다.혹시 몰라 링크는 남겨놓습니다.
https://dacon.io/competitions/open/235539/codeshare/4157?page=1&dtype=recent
- label encoding, one-hot encoding 시 test 데이터 셋 활용
- data scaling 적용 시 test 데이터 셋 활용
- test 데이터 셋의 결측치 처리 시 test 데이터 셋의 통계 값 활용
- 위 예시 외에도 test 데이터 셋이 모델 학습에 활용되는 경우에 Data leakage에 해당
위 4가지가 data leakage에 해당하는 코드입니다. 링크를 남겨주신 베이스라인은, train 데이터에서 male을 0으로 female을 1로 했기 때문에, test도 동일하게 0, 1로 바꿔준거라서 data leakage에 해당하지는 않습니다. 명목형 변수를 라벨인코딩할 때 train에서 했던 걸 기준으로 test에 동일하게 적용하는 것은 leakage가 아니지만, 결측치를 처리할 때 test_set의 통계량을 조금이라도 이용하는 것은 data leakage에 해당합니다.
test_set['Age'].fillna(train_set.groupby('Designation')['Age'].transform('mean'), inplace=True)이 맞습니다
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io | 전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved
수고하셨습니다.