Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Kaggle KKBox Churn Prediction

560 views

Published on

Kaggle KKBox Churn Prediction 대회 발표자료

Published in: Data & Analytics
  • Be the first to comment

Kaggle KKBox Churn Prediction

  1. 1. KKBox's Churn Prediction Challenge Can you predict when subscribers will churn?
  2. 2. 데이터소개
  3. 3. 데이터소개 극단적인불균형데이터 이탈비율: 929,560 / 63,471 나중에알게된사실: 테스트셋은이탈유저1명(?)
  4. 4. 데이터소개 Kaggle에서보기 힘든대용량데이터 train : 992,931 transaction : 21,547,746 member : 5,116,194 userlog : 392,106,544 (약4억) Pandas로읽으려하면, "MemoryError" 발생
  5. 5. Spark을활용한대용량데이터처리 데이터의사이즈를줄이고 pandas chunk, map, concat 등을이용하면 어떻게든읽을수는있으나, 전처리까지하려면한참걸림 그냥PySpark으로처리하자 쉽고 빠르게 분산처리를지원 pandas와API가 유사하면서완벽하게 호환, toPandas()
  6. 6. Spark SQL + Zeppelin EDA
  7. 7. 유저이탈정의 트랜잭션이발생하는경우: 실제결제, 자동결제설정, 취소 25일까지구독을적극적으로취소 이후30일동안거래가 갱신되지않는유저 training : 17년2월이탈유저 test : 17년3월이탈유저 실제제공된데이터의기간은2015년부터2월까지 그렇다면과거 데이터를통해이탈자를생성할수있지않을까?
  8. 8. 1월이탈자데이터생성 train, member에정의되어있는유저아이디를이용 이탈비율: 986,970 / 5,961 안타깝게도별로효과가 없었음
  9. 9. 사용한Feature 유저의히스토리(최근 6개월, 1년...) 가장마지막으로남긴 로그 음악을듣는간격, 날짜전처리 할인여부, 장수유저인지, 지불금액대비얼마나듣는지 이후에열린추천대회로부터얻은노래장르 기타등등...
  10. 10. Feature Selection
  11. 11. Feature Selection RandomForest 모델의경우, Recursive Feature Elimination을사용 sklearn.feature_selection.RFE metrics.log_loss값과 Kaggle 리더보드의log loss 값이달라변수를하 나씩추가, 삭제해가면변수를선택함
  12. 12. 데이터불균형처리 http://contrib.scikit‑learn.org/imbalanced‑learn/stable/index.html
  13. 13. Over‑sampling Naive random over‑sampling(RandomOverSampler) From random over‑sampling to SMOTE and ADASYN(SMOTE, ADASYN) Under‑sampling Prototype generation(ClusterCentroids) Prototype selection Controlled under‑sampling techniques RandomUnderSampler, NearMiss Cleaning under‑sampling techniques AllKNN, InstanceHardnessThreshold
  14. 14. 데이터불균형처리 모델의파라메터튜닝을통해해결하는방법 StatifiedKFold + Model XGBoost : scale_pos_weight, max_delta_step LightGBM : is_unbalance
  15. 15. Parameter Tuning GridSearchCV (30시간 돌리다포기) RandomizedSearchCV (log_loss값이default 보다안좋음)
  16. 16. Distributed Parameter Tuning from spark_sklearn import GridSearchCV Sklearn에서사용하던것과 동일한인터페이스사용 AWS EMR 환경 + m4.xlarge 10대에서약50분소요
  17. 17. Stacking XGBoost (scale_pos_weight로데이터불균형조정) LightGBM (is_unbalance로데이터불균형조정) RandomForest (결과 값이더안좋아짐ㅠㅠ)
  18. 18. 현재리더보드상황
  19. 19. 최종결과 및느낀점 모델을돌리기에앞서데이터셋을잘추출하는게 얼마나중요한지깨닫게 됨(대회주최자욕바가지로드심) 분산처리는강력함(전처리, 파라메터튜닝) 불균형데이터의데이터균형화가 중요 parameter tuning보다feature engineering으로로그 로스값이많이 줄어듬 로그 데이터많다고 더좋은결과 값을가져오는것은아님 Data leakage로대회는망하고 허탈함 Kaggle에서리서치대회참가는비추
  20. 20. Thank you

×