신용카드 고객 세그먼트 분류 AI 경진대회

알고리즘 | 월간 데이콘 | 정형 | 금융 | 분류 | F1 Score

  • moneyIcon 상금 : 데이스쿨 프로 구독권
  • 2025.03.10 ~ 2025.04.30 09:59 + Google Calendar
  • 1,541명 마감

 

[Private 8th] Multi-stage binary classification

공동작성자
2025.05.01 01:57 657 조회 language

안녕하세요, 
multi-class를 한 번에 분류하는 방식이 아닌,
여러 단계의 binary classification을 사용하는 방법입니다. 
(multi-class 단일 트리 모델 대비 LB + 0.03)

lightgbm의 'objective': 'multiclassova' 단일 LB 성능이 높다는 실험 결과에서 착안했습니다.
이는 멀티클래스 문제를 K개의 독립적 이진 분류로 쪼개는 방식입니다.

데이터 샘플 수가 많은 E>D>C>A>B 순으로 이진 분류를 수행합니다.
클래스 불균형이 심해 모델이 한 번에 전체 클래스를 분류하는 건 어려워하지만,
E or notE(A~D)로 이진 분류를 시켰을 때는 상당히 높은 f1 score를 보입니다.
이진 분류 후, E로 판정된 데이터를 제거하면
D or notD(A~C) 이진 분류 시 훨씬 수월하게 D를 구분할 수 있게 됩니다.
이를 통해 별도의 불균형 처리나 데이터 증강 없이 F1 score를 안정적으로 높일 수 있었습니다.
단계를 거칠수록 다수 클래스 데이터가 필터링되고, 모델이 자연스레 소수 클래스에 집중할 수 있게 됩니다.

cascade1(XGBoost) -> cascade2(LightGBM) -> cascade3(Catboost) 식으로 
E>D>C>A>B 이진 분류를 세 바퀴 수행했습니다.
서로 다른 모델을 쓰는 이유는 모델에 따라 결정 경계를 구분 짓는 방식에 조금씩 차이가 있어
한 모델이 FN으로 판정하는 데이터를 어느 정도 회수할 수 있기 때문입니다. (LB + 0.005)

단, 앞부분 cascade에서 FP가 많을 경우 이를 되돌릴 수 없기 때문에
앞 cascade에는 precision cut-off를 적용해 FP를 최대한 억제했습니다. 
쉽게 말해 애매모호할 때는 다음 단계로 일단 넘겨버리는 식입니다.
cascade3에서는 미분류 데이터를 회수하기 위해 F1 score를 최대화했습니다.

CV score가 높아졌던 파생변수를 일부 반영했고, 기본 파라미터를 사용했습니다.
감사합니다.

PDF
코드