분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
[Private 1위] CatBoost + Optuna + StratifiedKFold(group)
[모델]
- CatBoostRegressor을 사용했고, optuna를 이용한 hyperparameter 설정을 하였습니다.
[전처리]
- object type의 column 들은 Targetencoder를 사용하여 encoding을 하였습니다.
- 결측값이 존재하는 컬럼들을 제거하였고, sessionID를 제거하였습니다.
- 학습 데이터에서 중복 데이터를 제거하였습니다.
- ChatGPT에게 질문하여, 새로운 파생변수를 생성하였습니다.
[학습]
- optuna를 이용해 hyperparameter를 먼저 설정한 후 학습을 진행하였습니다.
- optuna 과정과 제출을 위한 학습 과정 모두 동일한 cross-validation 학습 방법을 사용하였습니다.
- cross-validation은 StratifiedKFold를 사용하였으며, 이는 252,289개의 학습 데이터 중 Target의 nunique가 117개 밖에 존재하지 않아 사용할 수 있겠다고 판단하였습니다.
- StratifiedKFold의 groups 변수에 학습 데이터의 'userID'를 할당하였으며, 데이터셋 분할 후 해당 컬럼을 제거하였습니다.(이 방법을 사용했을 때, validation rmse가 크게 감소하였습니다.)
- EDA를 통해 bounced가 1일 때는 항상 Target이 1인 것을 관찰하였고, 학습 과정에서 bounced가 0인 데이터만 학습하였습니다.
- 각 fold마다 학습을 진행하였고, 학습된 모델을 테스트 데이터셋에 대해 추론을 하여 결과를 평균을 내는 Soft voting을 하였습니다.
[후처리]
- EDA를 통해 Target의 범위가 1이상 386이하인 것을 관찰하였고, 모델의 예측 결과가 0.xx부터 92.xx 사이인 것을 확인하고, 1 이하로 예측된 결과값들을 1로 변환하였습니다.
- bounced가 1인 데이터들의 예측값을 1로 변환하였습니다.
[🎻]
- 코드는 직접 작성하였습니다.
- Intel i7-13700F (24 core) 환경에서 학습하였습니다.
여러번 시도해서 얻은 결과이고, 오래되서 기록이 없네요.....
우와 깔끔하네요
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
직업정보제공사업 신고번호: J1204020250004
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io |
전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved
Chatgtp한테는 어떻게 물었는지 여쭤봐도 될까요?