소득 예측 AI 해커톤

알고리즘 | 정형 | 회귀 | 사회 | RMSE

  • moneyIcon 상금 : 인증서 + 데이스쿨
  • 1,209명 마감

 

[Private 1위] Target Encoding + LGBM + StratifiedKFold

2024.04.09 14:54 576 조회 language

코드 작성 및 실행은 Google colab 환경에서 진행했습니다.

1. train 데이터를 보았을 때 Income이 0인 데이터가 대다수였기 때문에 0으로 예측될만한 것들은 확실히 0으로 예측될 수 있게끔 했습니다.
    - Age - 15 미만
    - Employment_Status - Not Working
    - Occupation_Status - Armed Forces, Unknown
    - Industry_Status - Armed Forces, Not in universe or children
    - Education_Status - Children
    위의 경우는 train 데이터 기준 Income 값이 0인 것을 확인하여 0으로 예측하도록 하였고, 이 경우들을 제외하고 모델 학습을 진행했습니다.
    
    후처리 단계에서도 이와 비슷하게 진행했습니다. 아래의 경우 Income이 0일 확률이 높다고 판단하여 0으로 처리해줬습니다.
    - Employment_Status가 Seeking Full-Time인 경우
    - Age가 83 이상 90 미만인 경우
    - Income이 200 이하로 예측된 경우 
    
2. 중복 데이터가 존재하여 제거했습니다.

3. train 데이터의 Income 값에도 이상치가 존재할 것이라고 생각하여 Income의 최댓값 범위를 제한하여 실험해 봤을 때 퍼블릭 스코어 기준 성능이 올랐습니다.

4. 여러 조합으로 파생 변수를 생성해 보고 성능이 좋은 조합으로 진행했습니다. 변수 제거도 고려했지만 시간이 부족해서 제대로 실험해보지 못했습니다.

5. LGBMRegressor 단일 모델로 진행했고, CatBoostRegressor와 앙상블도 시도해 봤지만 유의미하게 성능이 오르지는 않았습니다. 하이퍼파라미터는 Optuna를 사용하여 최적화한 후 고정해서 사용했습니다.

코드