월간 데이콘 신용카드 사용자 연체 예측 AI 경진대회

알고리즘 | 정형 | 분류 | 금융 | LogLoss

  • moneyIcon Prize : 100만원
  • 3,612명 마감

 

[Private 5위 0.66016] | Team SsulleBal | Catboost

2021.05.24 19:41 7,967 Views language

안녕하세요. Team SsulleBal 입니다.
우선, 좋은 대회 열어주셔서 감사합니다. 정말 열심히 하기도 했지만, 운 좋게 좋은 성적을 낼 수 있었던 것 같습니다.
아직 부족한 점이 많지만, 너그럽게 봐주시면 감사하겠습니다.
마지막에 점수가 조금 떨어져서 아쉽지만, 순위권에 들어오신 모든 분들 축하드립니다.!!

Code
로그인이 필요합니다
0 / 1000
초보산님
2021.05.24 20:27

멋진 코드 공유 감사합니다. 정말 궁금했었는데 이제서야 보게되니 반갑네요 ㅎㅎ 덕분에 더 즐겁게 임할수 있었습니다.

렛서팬더
2021.05.24 20:47

네 좋은 말씀 감사합니다. 초보산님도 코드 공유해주시면 한 수 배우도록하겠습니다.ㅎㅎ

함께하는우리
2021.05.24 21:48

시작 부터 1 위를 유지하셔서 코드가 너무 궁금했는데, 역시 Feature engineering 이 중요하군요 !! 축하드립니다.
혹시 catboost 말고 다른 모델과 앙상블 하지 않으신 이유는 따로 있으신가요 ??

렛서팬더
2021.05.24 22:02

저도 앙상블을 시도 하려고 하였지만 다른 모델과는 성능의 차이가 많이 나고,  다른 모델에서는 object 변수들을 따로 전처리 해줘야 되서 통합하는 것이 비효율적이라고 생각했습니다. 그래서 catboost 단일 모델로만 진행하였습니다. 감사합니다.

인디고
2021.05.24 21:50

하나하나 놓칠게 없는 코드네요. 정말 많이 배웠습니다. 생각지 못한 Feature engineering들이 인상적이네요. 축하드립니다.

렛서팬더
2021.05.24 22:04

넵 저도 다른 분들이 올려주신 EDA와 비슷한 주제의 대회의 코드 등을 참고하면서 많은 아이디어를 얻은 것 같습니다. 좋게 봐주셔서 감사합니다.

shki
2021.05.24 22:30

한수 배우고 갑니다! 좋은 코드 공유 감사합니다~

렛서팬더
2021.05.25 07:03

넵 감사합니다.

Vale
2021.05.24 22:49

잘봤습니다! 여러가지 변수들 만드실 때 고생하셨을 것 같습니다.. ㅠㅠ 덕분에 저희 팀도 정말 열심히 할 수 있었어요. 좋은 코드 감사합니다!

렛서팬더
2021.05.25 07:05

네 변수 고민하느라 힘들었습니다.ㅜ 저도 덕분에 더 분발할 수 있었습니다. 1위 축하드립니다!!

dswook
2021.05.24 23:15

고생하셨습니다. 저도 catboost가 핵심 알고리즘이라는걸 알게 된 후로 끊임없는 실험을 거듭한것 같습니다.

렛서팬더
2021.05.25 07:06

네 저도 공유해주신 튜닝방법 적용해볼걸 그랬네요ㅎㅎ 고생하셨습니다.

uhaihu
2021.05.30 20:01

안녕하세요 렛서펜더님 자료들 많이 참고하고 있는 입문자입니다.
다름이 아니라 전처리 부분에서 질문이 있습니다.
성능을 저하시키는 불필요변수 부분에서 
# 불필요 변수 제거
train = train.drop(['income_total', 'DAYS_EMPLOYED', 'FLAG_MOBIL'], axis=1)
부분이 있는데 feature importance로 확인한 것도 아닌데 어떻게 해당 컬럼들이 모델 성능을 저하시키는지 아셨나요?
심지어 income, employed는 중요한 컬럼처럼 보이는데도 말이에요.

렛서팬더
2021.05.30 20:14

네 안녕하세요.
'income_total', 'DAYS_EMPLOYED' 변수는 Feature engineering에서 log변환을 해주었기 때문에 제거 하였습니다.
'FLAG_MOBIL' 변수는 모두 가지고 있는 것으로 되어 있어서 제거하였습니다.
그리고, 실험적으로 변수를 추가 및 제거를 해보면서 모델 성능을 저하시키는지 확인하였습니다.
결과적으로, 3가지 변수는 제거 하였을 때 모델의 성능이 더 좋게 나와서 제거하게되었습니다.
감사합니다.

uhaihu
2021.05.30 20:27

그렇군요! 감사합니다!

와퍼세트
2021.06.25 11:38

늦었지만 질문 드려도 될까요? 모델을 보니까 최종적으로는 AutoML을 사용한 모델로 학습했는데, 그전에 K-Fold로 학습을 진행하는 이유를 알 수 있을까요?

렛서팬더
2021.06.25 13:33

네, 안녕하세요. 최종적으로 AutoML 모델을 사용한 것은 아니고, AutoML 모델을 사용할 때 Finalize로 데이터 전체를 학습 시킨 것처럼 catboost 모델로 전체 데이터를 학습시킨 것입니다. 그전에 K-Fold로 진행한 것은 파라미터 튜닝 및 Feature engineering을 할 때 성능을 비교하기 위해서 진행하였습니다. 결과적으로 K-Fold를 한 것 보다 전체 데이터를 한 번에 학습시켜서 제출하였을 때 public 점수가 높게 나왔습니다. 하지만,  private에서 등수가 떨어진 것을 보면 오히려 데이터 전체를 학습시켰을 때 오버피팅이 있었을 수도 있을 것 같습니다.  오버피팅을 최소화하려면 K-Fold 및 앙상블 모델을 활용하는 것이 더 좋을 것 같습니다. 감사합니다.

djsh_2113
2021.07.14 00:14

혹시나 보시면 답해주세요.
정확히 Feature Importance로 알 수 있는 정보가 무엇인가요?
Feature Importance가 극히 낮으면 오히려 없애는 게 더 좋은 거 아닌가요?