甲乙小朋友的房子

甲乙小朋友很笨,但甲乙小朋友不会放弃

0%

机器学习实践-O2O优惠券预测-思路总结

最近看各种机器学习算法,感觉没有实战,总是空空的。刚好这个月没什么事情,趁此机会拿赛题练习一下。 # 资料整理 1. 阿里天池O2O优惠券消费行为预测竞赛优胜方案。第一名。北大。解题思路。 2. O2O优惠券使用预测思路总结。16名。解题思路。 3. O2O优惠券使用预测复赛第三名思路。3名。PPT. 4. 各竞赛QQ群 5. 竞赛官网 6. 论坛专区 7. 天池新人实战赛[o2o优惠券使用预测] 8. 也可以去天池官网上,点学习入口,下面的视频,这边也有对这次020比赛的一些视频解说 9. 数加平台指南+文档、视频、FAQ及精华帖干货集锦 10. 数据科学完整学习路径

赛题背景

  • O2O(Online to Offline)消费
  • O2O:是指将线下的商务机会与互联网结合,让互联网成为线下交易的平台
  • 以优惠券盘活老用户或吸引新客户进店消费是O2O的一种重要营销方式

赛题目标

  • 个性化投放优惠券,提高核销率
  • 通过分析建模,精准预测用户是否会在规定时间内使用相应优惠券
  • 已知:用户在2016年1月1日至2016年6月30日之间真实线上线下消费行为
  • 预测:用户在2016年7月领取优惠券后15天以内的使用情况
  • 评价标准:优惠券核销预测的平均AUC(ROC曲线下面积)。即对每个优惠券coupon_id单独计算核销预测的AUC值,再对所有优惠券的AUC值求平均作为最终的评价标准。 关于AUC的含义与具体计算方法,可参考维基百科

数据描述及分析

数据描述

  • Table 1: 用户线下消费和优惠券领取行为,ccf_offline_stage1_train.csv
  • Table 2: 用户线上点击/消费和优惠券领取行为,ccf_online_stage1_train
  • Table 3:用户O2O线下优惠券使用预测样本,ccf_offline_stage1_test_revised.csv
  • Table 4:选手提交文件字段,其中user_id,coupon_id和date_received均来自Table 3,而Probability为预测值

** TABLE 1: 用户线下消费和优惠券领取行为 **

** Table 2: 用户线上点击/消费和优惠券领取行为**

** Table 3:用户O2O线下优惠券使用预测样本**

** Table 4选手提交文件字段** 其中user_id,coupon_id和date_received均来自Table 3,而Probability为预测值

数据分析

初步分析

** TABLE 1 分析 **

  • 特点: -- 标题:用户线下消费和优惠券领取行为 -- 场景:线下 -- 行为:消费、优惠券领取 -- 数据:优惠券领取、使用情况,消费情况,用户常活动地点与最近门店距离
  • 分析1:用户行为有三种情况 -- 领了优惠券 && 未消费 = 负样本 (Date=null & Coupon_id != null) -- 没领优惠券 && 已消费(Date!=null & Coupon_id = null) -- 领了优惠券 && 已消费(Date!=null & Coupon_id != null) -- 总结:本数据作为刻画用户特点的主要依据较为合理
  • 分析2:优惠率 -- 总结:有可能用户会根据优惠率来决定是否进行消费
  • 分析3:距离 -- 离用户近的门店可能会总领取优惠券,但不一定会使用。 -- 离用户远的门店如果有优惠券,则可能会为了很大的优惠率专程去使用。
  • 总结 -- 本数据集主要刻画线下用户特征。

** TABLE 2 分析 **

  • 特点: -- 标题:用户线上点击/消费和优惠券领取行为 -- 场景:线上 -- 行为:点击、消费、优惠券领取 -- 数据:用户是否点击。购买。领取优惠券。
  • 分析1:用户行为有三种情况 -- 领了优惠券 && 未消费 = 负样本(Date=null & Coupon_id != null) -- 没领优惠券 && 已消费 (Date!=null & Coupon_id = null) -- 领了优惠券 && 已消费 (Date!=null & Coupon_id != null)
  • 分析2:用户点击、消费、优惠券情况 -- 用户点击了 && 没领优惠券 && 未消费 = 负样本 -- 用户点击了 && 领了优惠券 && 未消费 -- 用户点击了 && 领了优惠券 && 已消费 -- 用户点击了 && 没领优惠券 && 已消费 -- 用户没点击
  • 总结 -- 本数据集主要刻画线上用户特征。

** Table 3:用户O2O线下优惠券使用预测样本 **

  • 测试集

认识数据

感谢wepon的无私奉献

对提供的数据做一些基本的统计,有助于对赛题的理解,可以熟悉业务逻辑,也方便后面的特征工程。

特征提取

  • 特征提取:将原始特征转换为一组具有明显物理意义(Gabor、几何特征[角点、不变量]、纹理[LBP HOG])或者统计意义或核的特征
  • 经验上来说,这些特征提取的越多越好,并不用担心特征过多,因为推荐系统的数据量都比较大,并且基于一些规则可以很好的筛选特征。
  • 第一次做特征提取,很多东西想得不够周到。参考了很多第一名的思想。

用户特征

用途:描述用户消费偏好

线下: 1. 领取优惠券率(领取次数/总次数) 2. 优惠券核销率(优惠券使用次数/优惠券领取次数) 3. 消费率(消费次数/总次数) 4. 核销时的优惠率 5. 领取、使用优惠券间隔 6. user经常活动的地点离平均/最大/最小用户-商家的最近门店距离 7. 消费频数 8. 优惠券领取频数 9. 优惠券使用频数 10. 用户满减优惠券核销率(满减优惠券使用次数/优惠券领取次数) 11. 用户满减优惠券核销比重(满减优惠券使用次数/优惠券使用次数) 12. 核销优惠券的平均/最低/最高消费打率 13. 核销过的商户数量,以及不同商家的比重 14. 核销过的不同优惠券数量,以及其与优惠券种类数的比重 15. 平均每个商家核销多少张优惠券

线上: 1. 优惠券领取率(领取/总) 2. 点击频数 3. 优惠券领取频数 4. 优惠券使用频数 5. 优惠券核销率(使用/领取) 6. 消费频数 7. 消费率(消费次数/总) 8. 核销时的优惠率 9. 领取、使用优惠券间隔 10. 用户线上不消费次数 11. 用户线下不消费次数占线上线下总的不消费次数的比重 12. 用户线下的优惠券核销次数占线上线下总的优惠券核销次数的比重

线下消费的优惠券特征

  1. 优惠率
  2. 优惠券被领取次数
  3. 优惠券核销率
  4. 领取、使用优惠券间隔

线上商户特征

  1. 点击频数
  2. 购买频数
  3. 优惠券被领取频数
  4. 优惠券被使用频数
  5. 消费率(购买/总)
  6. 优惠券领取率(领取/总)
  7. 优惠券核销率(使用/领取)
  8. 优惠率
  9. 领取、使用优惠券间隔

现在遇到了一些瓶颈。参考了前人的教程数据科学完整学习路径,发现自己基础还是不够扎实。决定先看看机器学习技法教程,再进行下一步。

=======2017.3.1======

看了一下GBDT,发现我的疑问还是不能解决。

  • 多类特征,怎么处理?
  • 处理的流程究竟是怎样的?

为了解决上述问题,我决定开始深入分析第一名的队伍的阿里天池O2O优惠券消费行为预测竞赛优胜方案源码。

=======2017.3.8======

算是大致看完了前辈的代码。见本博客文章“O2O优惠券预测——对第一名的思路源码分析”

这其中的奥妙深不可测。

知识累积不是一蹴而就的。加油吧。

=======2017.3.12======