Project2. 신용카드 사용자 연체 예측 AI 경진대회 | 월간 데이콘 14 | 금융 | 정형 | Logloss

DonghyunAnn·2021년 7월 25일
0

포트폴리오

목록 보기
2/4
post-thumbnail
post-custom-banner

✔ Summary

Task: 신용카드 사용자 데이터를 보고 사용자의 대금 연체 정도를 예측하는 알고리즘 개발
Data: train-(26457,20), test-(10000,19)
Tools: Python
ML ALgoritms: LightGBM
Evaluation: Logloss
Rank : Top 36%
Public score- Logloss score 0.72151
Private score- Logloss score 0.68963

📝 Issue

🤦‍♂️ 중복데이터

  • 모든 피쳐가 동일한 경우 : 중복 데이터 제거
  • 신용도(Label)을 제외한, 모든 피쳐가 동일한 경우 : 그대로 분석에 사용함
  • 실험을 진행했던 방법 : 1) 전부 삭제, 2) 최빈값으로 처리, 3) 예측값으로 처리, 4) label에 비율값 부여 or label smoothing(딥러닝)

🤔 중복 고객 데이터 문제

  • begin_month와 신용도(Label)을 제외한, 모든 피쳐가 동일한 경우를 같은 고객으로 처리함
  • 추가로, income_total, family_size, occyp_type 등에서도 변화한 경우 몇 개의 컬럼을 확인함
  • 같은 고객 처리 문제를 해결하고, 고객의 과거 이력을 구분하기 위한 파생변수들을 추가함

👨‍💻 불균형 데이터 처리 문제

  • 신용도 별로 데이터 불균형이 존재함 : Stratified K-Fold를 적용함
  • 실험을 진행했던 방법 : Imblearn (언더/오버 샘플링)

📊 train/test 및 신용도(label)에 대한 분포 비교

  • begin_month 등 에서의 분포 차이를 발견함
  • 최초 발급 및 발급 초기에는 신용도를 좋게 평가받는 경향이 존재함
  • DAYS_BIRTH, DAYS_EMPLOYED, income_total은 신용도와 양의 상관관계를 보임
  • adversarial validation을 수행한 결과, AUC 값이 0.5에 가깝게 나옴

🧐 개선방향

  • 고객을 구별해주는 고객 ID 변수를 만들어 놓고, 활용하지 못했음 -> ID 변수 활용
  • Stacking 앙상블 알고리즘의 적용
  • 더 많은 파생 변수와 catboost 알고리즘의 적용
    (범주형 변수가 많았기 때문에 Catboost와 같은 더 좋은 모델을 찾아서 활용하면 좋은 결과를 가져갈 수 있었을 것으로 사료됨)
  • 모델링에 따른 적절한 하이퍼 파라미터 선정이 필요함
    (특히, TabNet 모델 같은 경우에는 튜닝이 더 필요함)
  • 후처리(post-processing) 작업의 적용
  • 우수 사례 링크 클릭

😀 배운점

  • 중복과 데이터의 불균형이 심한 데이터를 다뤄보는 것은 처음이었음. 추후 불완전한 데이터를 다루는데 있어서 중복데이터, 노이즈, 데이터 불균형을 해결하기 위한 다양한 방법들을 배울 수 있었음
  • 도메인 지식의 중요성, 알고리즘 뿐만아니라 문제제기된 주제의 분야까지 객관적인 지식을 찾아봐야함을 배울 수 있었음
  • 특성 공학을 생각보다 더 조심스럽게 시도해볼 필요가 있음
  • 첫 경진대회였던 만큼 data leakage에 대한 경각심을 가질 수 있었음
  • 머신러닝을 처음 사용해본 프로젝트, 다양한 알고리즘에 대한 배경지식을 얻을 수 있었음

Github

EDA 및 모델링 코드

profile
운동을 좋아하는 데이터 사이언티스트
post-custom-banner

0개의 댓글