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

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

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

 

[private: 4위] 0.92954 코드 공유

2022.09.03 15:27 928 조회 language

코드공유를 처음 해봐서 미흡한 부분이 있을 수 있으나 너그러히 양해바랍니다 :)
Catboost와 optuna를 사용했습니다.

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

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에 해당하는 것 같습니다.

JS09
2022.09.07 10:26

규정에는 test셋을 훈련에 사용하지 말라고 했습니다. 해당 데이터 내부 데이터만으로 결측치를 채운 행위는 부정행위와 관련 없다고 생각됩니다.
test 세트를 훈련에는 사용하지 않았습니다.

kisooofficial
2022.09.07 10:59

- label encoding, one-hot encoding 시 test 데이터 셋 활용
- data scaling 적용 시 test 데이터 셋 활용
- test 데이터 셋의 결측치 처리 시 test 데이터 셋의 통계 값 활용
- 위 예시 외에도 test 데이터 셋이 모델 학습에 활용되는 경우에 Data leakage에 해당

위 4가지가 데이콘에서 말한 기본적인 data leakage라서, 학습시키는 것이 아니라 전처리를 할 때도 사용하면 안됩니다!