天池 O2O 优惠券使用新人赛
赛题简介
………
本次大赛为参赛选手提供了O2O场景相关的丰富数据,希望参赛选手通过分析建模,精准预测用户是否会在规定时间内使用相应优惠券。
数据
本赛题提供用户在2016年1月1日至2016年6月30日之间真实线上线下消费行为,预测用户在2016年7月领取优惠券后15天以内的使用情况。即对每个优惠券coupon_id
单独计算核销预测的 AUC 值,再对所有优惠券的 AUC 值求平均作为最终的评价标准。
ROC 曲线
复习一下混淆矩阵(confusion matrix):
Predicted Positive(1) Predicted Negative(0) Actual Positive(1) TP FN Actual Negative(0) FP TN 有新的评价指标真阳率(TPRate)、伪阳率(FPRate):
TPRate 的意义是所有真实类别为 $1$ 的样本中,预测类别为 $1$ 的比例。
FPRate 的意义是所有真实类别为 $0$ 的样本中,预测类别为 $1$ 的比例。
ROC 曲线的横轴是 FPRate,纵轴是 TPRate。
AUC
AUC 即 ROC 曲线下的面积,AUC 越大,模型越强。
字段表
- | Field | Description |
| ——————- | —————————————————————————————— |
| User_id | 用户ID |
| Merchant_id | 商户ID |
| Coupon_id | 优惠券ID:null表示无优惠券消费,此时Discount_rate和Date_received字段无意义 |
| Discount_rate | 优惠率:x \in [0,1]代表折扣率;x:y表示满x减y。单位是元 |
| Distance | user经常活动的地点离该merchant的最近门店距离是x*500米(如果是连锁店,则取最近的一家门店),x\in[0,10];null表示无此信息,0表示低于500米,10表示大于5公里; |
| Date_received | 领取优惠券日期 |
| Date | 消费日期:如果Date=null & Coupon_id != null,该记录表示领取优惠券但没有使用,即负样本;如果Date!=null & Coupon_id = null,则表示普通消费日期;如果Date!=null & Coupon_id != null,则表示用优惠券消费日期,即正样本; |
工具导入
1 | import os, sys, pickle |
数据导入
1 | dfoff = pd.read_csv('data/ccf_offline_stage1_train.csv') |
特征工程
1 | def getDiscountType(row): # 针对满:减,新增特征:是否打折、满、减、打折率 |
训练模型
1 | original_feature = ['discount_rate', 'weekday_type', 'discount_man', 'discount_jian', 'distance', 'weekday', 'weekday_type'] + weekdaycols |
对于SGDClassifier
函数。明天再写