소득 예측 AI 해커톤

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

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

 

[private 2nd] 이상치 제거, gbr+mlp, 5 fold stratified ensemble

2024.04.08 17:49 549 조회 language

안녕하세요! private 2위를 차지한 트랙터입니다.

제가 시도한 것 중 크게 성능 향상이 있었던 방법은 이상치 제거와 gbr+mlp 앙상블이었습니다.

1. 이상치 제거
income_status column을 이용했습니다. 먼저 해당 column의 각 범주별 income 분포를 확인해보니 unknown과 under median 범주의 income 평균이 비슷함을 확인할 수 있었습니다. 이를 근거로 unknown 데이터를 under median으로 대체했습니다.
이후 income_status = under median/over median인 데이터를 나눠 IOR 기반으로 income에 대한 이상치 제거를 수행했습니다.

2.  gbr+mlp 
기존에 gbr만 사용하다가 mlpregressor와 앙상블을 했을 때 스코어가 3정도 올랐습니다. 단순 앙상블의 효과라기엔 xgb를 추가로 사용했을 때 큰 성능 향상이 일어나지 않았습니다. 이와 관련해 test set에 대한 각 모델의 예측 결과를 plot해 봤을 때 gbr의 경우 중위값인 500 주위에서 높은 빈도의 예측을 보였고, mlp는 gbr에 비해 비교적 넓은 범위로 균일하게 예측하는 것을 확인할 수 있었습니다. 이처럼 두 모델의 예측 양상이 서로 달라 두 모델의 예측을 평균 내어 사용했을 때 이점을 얻을 수 있었던 게 아닐까 싶습니다.

그 외 income 범위를 기준으로 한 5 fold stratified ensemble, feature engineering 등으로 성능을 높였습니다.
hyperparameter search는 .py file과 batch file을 이용해 수행하였습니다. 공개한 코드 외 hyperparameter search 코드는 아래 제 개인 github에서 확인하실 수 있습니다.
https://github.com/Sunbin-Lee/dacon-income

코드와 분석 내용에 대한 의견은 언제든 환영입니다!

감사합니다.

코드
로그인이 필요합니다
0 / 1000
수면잠옷
2024.04.08 21:31

안녕하세요! 궁금한 점이 있어 댓글 남깁니다 !!
저는 Household_Summary가 Household_Status를 잘 범주화했다고 생각해서 Household_Status를 제외하고 Household_Summary를 사용했는데, 트랙터님은 왜 Household_Status를 사용하신 건지 이유가 궁금합니다!

트랙터
2024.04.08 23:04

안녕하세요! 저도 Household_Status를 제외하고 Household_Summary를 사용했습니다. 주석 처리한 부분은 Household_Summary 내에서도 범주끼리 합치는 것을 시도했던 부분인데, validation 성능이 더 떨어져서 제외했습니다. 제가 코드 공유를 처음 해봐서 가독성이 조금 떨어지는 것 같습니다. 피드백 감사합니다!! 

수면잠옷
2024.04.11 01:51

아이고 drop이라고 써두신 걸 못 보고 댓글을 달았네요..! 친절하게 답해주셔서 감사합니다!!

skek
2024.04.08 22:50

너무 좋은 인사이트였습니다. 덕분에 제가 어떤 점이 부족했는지 알 수 있었어요! 감사합니다!

도균김
2024.04.09 00:54

'Hispanic_Origin', 'Household_Status', 'Birth_Country', 'Birth_Country (Father)', 'Birth_Country (Mother)'와 같은 피쳐들을 제거할때 세운 기준이 있으신지 여쭤봐도 될까요??

트랙터
2024.04.09 11:40

안녕하세요! 해당 피쳐들은 범주의 개수가 많고, 대부분의 데이터가 한 범주로 몰려있어 학습에 큰 영향이 없을 것 같았고, Race, Household_Summary, Citizenship 피쳐들이 해당 피쳐들과 비슷하지만 조금 더 압축된 정보를 포함하고 있다고 판단했습니다. 또한 해당 피쳐들을 제외하고 학습시켰을 때 validation 성능이 올라가거나 조금 떨어지는 것을 확인했습니다.