웹 로그 기반 조회수 예측 해커톤

알고리즘 | 정형 | 회귀 | 웹 로그 | RMSE

  • moneyIcon 상금 : 인증서
  • 639명 마감

 

[Private 2위] CatBoost+KFold+SoftVoting+bounced 컬럼 활용

2024.03.05 19:08 472 조회 language

<모델 개요>
- 사용한 모델은 CatboostRegressor입니다.

<적용 방법론 요약>
- train 데이터 EDA 과정에서 Target의 최솟값이 1인 것을 보고 예측값이 1보다 작은 경우 1로 바꾸어주었습니다.
- train 데이터 EDA 과정에서 bounced의 값이 1일 경우 무조건 Target 값이 1로 고정되어 있는 것을 보았습니다. 만약 bounced가 1일 때 Target이 1로 고정되는 것이 맞다면 bounced가 1인 데이터를 학습하는 것은 오히려 모델에게 혼란을 줄 수 있다고 생각을 하였고 bounced가 1인 데이터를 학습에서 모두 제외하고 결과 값 출력 시에 예측값을 1로 고정했습니다.
- 수치형 변수들과 Target의 상관관계를 분석해보니 거래 관련 지표들이 낮은 상관관계를 가지고 있었고 거래 관련 지표들을 제거해가면서 실험을 해본 결과 transaction_revenue를 제거하였을 때 가장 성능이 좋았습니다.(모델1)
- 수치형 변수들의 분포에 로그 변환을 적용하여보았습니다. 수치형 변수들과 Target 값에 로그 변환을 적용하였을 때 quality와 duration이 Target과 높은 상관관계를 가지는 것을 보고 두 변수와 Target에 로그 변환을 적용한 뒤 학습을 진행하였습니다.(모델2)
- 모델의 과적합 방지와 성능향상을 위하여 KFold를 적용하였습니다.
- 과적합 방지와 성능 향상을 위해 서로 다른 특성을 가진 데이터들로 학습을 시킨 모델을 SoftVoting 방식을 활용한 앙상블을 수행하였습니다.
- 이외에도 많은 실험을 진행하며 성능을 테스트하였습니다.

<기타 사항>
- google colab의 기본 cpu 환경에서 수행하였습니다.
- 베이스라인은 고세구님의 Catboost regressor baseline (public : 2.949479045)를 사용하였습니다.
- EDA 부분에서는 bonecar님의 EDA 분석 내용을 많이 참고하였습니다.
- 시간 부족으로 하이퍼파라미터 실험은 진행하지 못하였습니다.

코드