- Public Score : 0.75611
- Final Score : 0.76485
- MQL데이터를 활용하여 영업 기회 전환 고객을 선별하기 위한 AI모델 개발합니다.
- 온라인 해커톤에서 교육생들의 문제 해결 능력을 검증하여 오프라인 해커톤에 진출할 약 100명을 선별하기 위한 과정입니다.
- 주최 : LG AI Research
- 주관 : 엘리스그룹
- 참여 : 한경닷컴
- 평가 산식 : F1 score
- Public score : 전체 테스트 데이터 샘플 중 사전 샘플링된 50%로 계산
- Private score : Public score 계산에 포함되지 않은 나머지 50%의 테스트 데이터로 계산
-
etc, other, others
$\rightarrow$ etc -
end-customer, end customer, end-user 등
- 결측치와는 다르게 처리
- 수치형 데이터는 0 대체해도 무방 했음
- 범주형은 None이라는 문자열로 범주처럼 처리
pycaret ML workflow을 자동화 하는 opensource library로 여러 머신러닝 task에서 사용하는 모델들을 하나의 환경에서 비교하고 튜닝하는 등 간단한 코드를 통해 편리하게 사용할 수 있도록 자동화환 라이브러리
- 각 모델에 대해서 어떤 모델을, 몇 개를 조합할 것인지에 대한 실험이 필요
앞선 타겟 컬럼인 is_converted의 True와 False 값의 비율이 약 11:1로 클래스 불균형이 심한 상태. 이를 그대로 학습하게 되면 False 클래스에 편향된 모델이 되기 때문에 오버 샘플링 / 언더 샘플링을 진행 실험 결과 언더 샘플링의 F1-score가 더 높아 언더 샘플링을 진행
정보 손실의 위험
public score 0.6
여러개의 예측 모델을 결합하여 과적합을 줄이고 모델을 일반화하는 방법 앞서 고른 상위 5개 모델을 앙상블하여 모델 일반화 진행 함.
train 데이터에서 customer_idx = 25096 의 경우 영업 횟수 2421 모두 성공한 것으로 관측됨. train 데이터의 True 개수가 4850개 임을 생각하면 위 idx에 편향되어 학습된다고 판단했고, test 셋에는 이 idx가 없는 것을 확인하여 위 2421개 중 일부를 샘플링하여 과적합을 줄이려는 시도 pubilc score 0.7
- 언더 샘플링 시 정보손실의 문제가 있음.
- False 데이터 54449 개를 랜덤 셔플 후, 모두 20등분하고 True와 합쳐 클래스 비율이 1:1인 데이터셋 20개를 생성.
- 각각 데이터셋의 모델에서의 결과를 확률로 받은 후 0, 1 클래스의 확률을 평균을 내어 최종 결과로 생성 (Soft voting)
$\rightarrow$ public score 0.02 정도 상승을 보임
모델 학습은 GridSearch를 이용
앞서 선택한 5개 모델 중 5개, 3개, 1개로 나누어 앙상블 후 가장 public score가 높은 모델 선택
- 'xgb' 1개 사용시 가장 성능이 높음.