여행 상품 신청 여부 예측 AI 해커톤

알고리즘 | 정형 | 분류 | 여행 | Accuracy

  • moneyIcon 상금 : 인증서, 장학금, 스타벅스 기프티콘 등
  • 611명 마감

 

[private: 3위] 0.93011 ‘CatBoost’

2022.09.06 17:15 995 조회 language

안녕하세요.
운이 좋게 좋은 성적을 거두었습니다.
부족하지만 너그럽게 봐주시면 감사하겠습니다.
참여하신 모든 분들 수고하셨습니다!

코드
로그인이 필요합니다
0 / 1000
kisooofficial
2022.09.07 01:02

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에 해당합니다.

i-bella
2022.09.07 11:32

안녕하세요. 관심을 가져주시고 댓글 달아주셔서 감사합니다.
대회 진행 시 밑바탕은 베이스라인을 참고하여 시작했습니다.
하단의 링크 2개 살펴보시면, 베이스라인에서는 테스트 데이터를 활용한 것을 확인할 수 있습니다.

https://dacon.io/competitions/official/235959/codeshare/5934?page=1&dtype=recent
https://dacon.io/competitions/official/235959/codeshare/6009?page=1&dtype=recent

kisooofficial
2022.09.07 12:11

일단 첫번째 링크는 train data를 이용해서 라벨 인코딩을 학습시킨 후에, test data에 적용한 것이기 때문에, inee님께서 말씀하신 케이스와 작성하신 코드의 케이스는 다릅니다. 그러나, 두번째 링크는 좀 이상한게, 데이콘에서도 test 데이터를 이용해서 결측치를 채웠는데, 해당 게시글 아래에는 사용하지 말라고 하고 있습니다. 이 부분은 데이콘 측에서도 말을 해줘야 할 거 같기는한데, test data를 활용해서 결측치를 채우는 것은 명백하게 data leakage라고 명시가 되어있어서, data leakage에 해당하는 것이 맞습니다. 그러나, 두 번째 베이스라인 코드에 대해서는 왜 저렇게 되어있는 지는 저도 모르겠네요