소득 예측 AI 해커톤

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

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

 

[Private 13위] Cat + GBT + HGB + Voting

2024.04.09 09:36 412 조회 language

안녕하십니까 ! 초보 데이터 양얼입니다.
처음 대회라 이래 저리 어떻게 해야 할지 몰랐으나, 운이 좋게 나름 괜찮은 등수를 받았네요 !!
특히, EDA와 관련하여 여러 시도를 해보았으나, 결국 리더보드에 점수를 올리는데 급급하여 이런 코드를 짜게되었습니다.
많은 피드백 해주시면 감사하겠습니다.

[분석 순서]
1. 라이브러리 임포트
2. EDA
3. 이상치 제거
4. 파생변수 생성
5. 라벨인코딩
6. 데이터 스플릿 및 base 모델 crossvalidate
7. 하이퍼파라미터 튜닝 + voting
8. 후처리

많은 피드백 해주시면 감사하겠습니다.
더 나은 데이커가 되기 위해 꾸준히 노력하겠습니다.

코드
로그인이 필요합니다
0 / 1000
병또먹
2024.04.11 14:23

코드 잘봤습니다.
투자 관련 이상치를 제거하기 위한 수식이 어떤 의미인지, 어떤 역할을 하는것인지 궁금합니다

DABS_양얼
2024.04.11 15:31

넵 !!! 안녕하십니까 !!!
우선 eda를 통해 gains, losses, dividends의 값이 유의미성에 대해 많은 고찰을 하였습니다.
특히 각 컬럼 간의 분산이 너무 커 이를 어떻게 조정하면 좋을 지 고민하다, 
우선 단순한 접근 방식으로 파생변수를 생성하였습니다.
Gains - Losses + dividends의 값으로 Total 컬럼을 생성한 이후, 
Total 컬럼의 방향성 정도만 제시하는 수식으로 변경해주었습니다. 

아직 초보라 이 수식이 들어맞는지는 모르겠으나 모델에서는 유의미한 결과값을 도출하는데 도움을 받았습니다 !!!

트랙터
2024.04.11 17:49

수식을 확인해 보니 입력된 데이터 프레임에서 다른 데이터들의 total값의 제곱을 더해서 루트를 씌운 값으로 normalize를 하신 것 같습니다. 이렇게 하면 값이 1 이하가 되어, 분산이 작아지는 효과가 있을 것 같습니다.
우려되는 부분은 첫 번째로 data leakage가 일어나는 것 같습니다. test 데이터의 예측 시에 test 데이터셋 전체의 gains, losses, dividends를 사용하기 때문입니다. 
두 번째로는, train/test 데이터셋 각각에서 해당 피쳐들의 분포가 다를 경우 normalize가 잘 될까 의문입니다. (극단적인 예시로 train 데이터셋에서는 total의 최댓값이 100/test 데이터셋에서는 total의 최댓값이 10000 이라면 두 데이터셋에서 해당 수식의 분모 값이 크게 차이날 것입니다)
해당 부분은 train 데이터셋에서 계산한 분모 값을 따로 저장해두고 test 데이터셋의 전처리 시 그 값을 사용하면 해결할 수 있을 것 같습니다.

병또먹
2024.04.11 20:39

두분 다 좋은 답변 감사합니다!

DABS_양얼
2024.04.12 08:54

좋은 말씀 감사합니다 !
뭔가 하면서 더 좋은 근거나, 이렇게 해도 되나?는 의문점이 있었는데 조금 해소가 되었습니다!!
덕분에 다음에 더욱 더 성장해보도록 하겠습니다 !!!
data leakage에 대해서 질문드리고 싶은데, 트랙터님의 글을 해석한 바로는
test 데이터셋으로 scaling을 진행했기 때문이라고 이해하면 되는 걸까요 ?? 

트랙터
2024.04.12 15:25

넵 제 생각에는 그렇습니다. 현재 코드는 train/test 데이터셋 각각에 scaling을 fit&transform 한 것과 같습니다. 이는 규정 중 data leakage 설명에 'data scaling 적용 시 test 데이터 셋 활용'에 해당합니다.
추가적으로, test 데이터셋에 대한 추론은 test 데이터 하나하나에 대한 추론으로 생각해야 한다고 알고 있습니다. 데이터 전처리 방법이 test 데이터가 단 하나만 주어졌을 때도 똑같이 작동할 수 있는지 생각해보시면 data leakage 예방에 도움이 되지 않을까 싶습니다. 

이와 별개로, 파생변수를 생성하신 부분은 흥미롭게 잘 봤습니다. 이민자 여부라는 피쳐는 미처 생각하지 못했는데, 소득 예측에 도움이 되는 변수인 것 같습니다. 저도 도움이 많이 되었습니다!!

inda2000
2024.04.11 15:21

좋은 인사이트 감사합니다 :)

DABS_양얼
2024.04.11 15:31

제가 더 감사합니다 !!!!