고객 대출등급 분류 AI 해커톤

알고리즘 | 정형 | 분류 | 금융 | Macro F1 Score

  • moneyIcon 상금 : 인증서
  • 1,665명 마감

 

[Private 2위] 결측치 대체, RandomForest, GradientBoosting, voting

2024.02.08 18:09 1,249 조회 language

데이터 전처리 및 모델링 과정 전반적으로 요약해서 업로드합니다..!
내용이 길기 때문에, 모델 선택과정은 생략하겠습니다. 또한, 파라미터 튜닝, LGBM 학습은 출력결과가 너무 길어 출력을 지웠습니다.
이번 분석 전반적인 개요는 다음과 같습니다.

1. 총상환이자와 총상환원금 중심 설계
EDA에서, 총상환이자와 총상환원금이 예측에 매우 중요하다는 사실이 포착되었습니다. 이 데이터의 특성을 잘 이용하고자 로그변환을 하였고, 자연스럽게 원금과 이자가 0의 값을 가지느냐 아니냐에 따라 데이터를 분리하여 분석을 달리 하였습니다.

2. 원금 이자 결측치 처리
원금이나 이자가 0인 데이터를 결측치로 간주하고, 다른 변수들로 예측하여 값을 추정하여 사용했습니다.

3.  모델 선택 
모델링 시, 모델 후보로는 RandomForest, LGBM, XGB, KNN, GradientBoosting, ExtraTrees로 두었고, 이 안에서 간단한 학습 후, 검증결과가 좋은 모델은 선택했습니다.

4. 모델 성능 향상
- 피쳐선택은 RFECV함수도 사용하였고, 그 후 피쳐를 하나씩 추가해서 검증점수가 향상되었는 지를 체크하는 방식으로 피쳐를 줄이고 늘렸습니다.
- GridSearchCV함수를 사용하여 하이퍼 파라미터 튜닝을 하였습니다.
- 이 과정을 반복실행하며, 세세하게 성능향상이 이루어질 수 있도록 신경썼습니다.

5. 예측 타겟 축소
이자나 원금이 0인 데이터에 대해서는, 모델이 그 복잡한 패턴을 파악하는 것이 어렵다고 판단되었습니다.
 따라서, 이 데이터에 대해서는 모델이 예측 및 학습하는 타겟을 줄이고, 빈도수가 높은 타겟 위주로 학습하며 성능을 높였습니다.

6. 소프트 보팅
모델의 안정성을 더하기 위해 최종 모델에 소프트 보팅 알고리즘을 적용시켰습니다. 그 결과 실제 퍼블릭 스코어는 덜했지만, 프라이빗 스코어는 더 높은 점수를 얻을 수 있었습니다.

언제든지 질문해주시면 감사하겠습니다! 좋은 하루 보내세요.

코드
로그인이 필요합니다
0 / 1000
zerotiger03
2024.02.10 13:37

앞으로 제가 나갈 대회들에 중요한 참고자료가 될 것 같습니다,, 감사합니다!

시호
2024.02.10 16:43

많이 부족한데 좋게봐주셔서 감사합니다!!

시호
2024.02.10 16:48

오타 정정) model3라고 언급된 부분은 model1로 바꾸면 됩니다.

시호
2024.02.18 07:45

탈자 추가) train2와 test2에 원금과 이자데이터가 모두 대체되고 난 직후, 다시 data1과 data2를 병합해야합니다. 하지 않을 시 train 데이터가 업데이트 되지 않아 무한대값을 가지는 로그값에 의해 오류가 발생합니다. 아래 코드를 추가합니다.

pd.concat([train1,train2], axis=0).sort_index().reset_index(drop = True)
pd.concat([test1,test2], axis=0).sort_index().reset_index(drop = True)

David8
2024.02.11 18:17

많은 공부가 되었습니다. 감사합니다 !!

시호
2024.02.18 07:46

좋은 말씀 감사합니다..!!

Sano3
2024.02.19 13:22

덕분에 많이 배워갑니다. 좋은 자료 감사합니다 !