분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
[Private 8th] Multi-stage binary classification
안녕하세요,
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가 높아졌던 파생변수를 일부 반영했고, 기본 파라미터를 사용했습니다.
감사합니다.
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
직업정보제공사업 신고번호: J1204020250004
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io |
전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved