本帖最后由 衫衫学长 于 2017-1-7 21:42 编辑 2 M) e6 w( h$ C9 z$ D. C; V
4 S9 x4 r: l; P' z6 Y9 N8 x
) F* m- [& _- l
9 M) u! V a" p' l5 @+ E: n5 l U
- ~$ V1 F' e; p% z$ t2 h' |$ @" a0 t. x/ x
~9 O& I* I3 T8 Q6 e2 S, _/ d' i1 _# X! W8 A& P/ i( T
; W) F; h- z1 R6 N4 ]阿里天池赛冠军解决方案代码及说明:& ]' m0 b3 k4 B7 l+ u6 |
O2O-Coupon-Usage-Forecast-master.zip
(713.84 KB, 下载次数: 4)
8 z4 A& x3 u& q% a \( r, e& l
' N: S# W6 q4 Z) f# V
5 f5 s0 l' E( \ B* E g9 i$ A队伍简介
% A. Y; j* ?) a5 ^赛题回顾本赛题提供用户在2016年1月1日至2016年6月30日之间真实线上线下消费行为,预测用户在2016年7月领取优惠券后15天以内是否核销。评测指标采用AUC,先对每个优惠券单独计算核销预测的AUC值,再对所有优惠券的AUC值求平均作为最终的评价标准。
' y$ }* q! y1 r2 G比赛背景 随着移动设备的完善和普及,移动互联网+各行各业进入了高速发展阶段,这其中以O2O(Online to Offline)消费最为吸引眼球。据不完全统计,O2O行业估值上亿的创业公司至少有10家,也不乏百亿巨头的身影。O2O行业天然关联数亿消费者,各类APP每天记录了超过百亿条用户行为和位置记录,因而成为大数据科研和商业化运营的最佳结合点之一。
/ G7 S: Q5 O( j5 O 以优惠券盘活老用户或吸引新客户进店消费是O2O的一种重要营销方式。然而随机投放的优惠券对多数用户造成无意义的干扰。对商家而言,滥发的优惠券可能降低品牌声誉,同时难以估算营销成本。 : Q3 {4 {2 i5 W& V) l
个性化投放是提高优惠券核销率的重要技术,它可以让具有一定偏好的消费者得到真正的实惠,同时赋予商家更强的营销能力。本次大赛为参赛选手提供了O2O场景相关的丰富数据,希望参赛选手通过分析建模,精准预测用户是否会在规定时间内使用相应优惠券。
3 A- \- N, e8 j! e- `竞赛规则 本次大赛分为初赛、复赛和决赛三个阶段,其中:初赛由参赛队伍下载数据在本地进行算法设计和调试;复赛要求参赛者在线进行数据分析和处理;决赛要求参赛者进行现场演示和答辩。具体安排和要求如下:
0 P9 S1 r9 _" d. J( E, s6 ?5 w初赛(10月01日-11月10日)- 1、参赛队伍10月07日可下载数据,并在本地调试算法,提交结果。若参赛队伍在两次评测之间多次提交结果,新结果版本将覆盖旧版本;
- 2、从10月08日18:00起,系统每天进行4次评测和排名,评测开始时间为每天00:00, 06:00, 12:00, 18:00。按照评测指标从高到低更新排行榜,排行榜将选择参赛队伍在本阶段的历史最优成绩进行排名展示;
- 3、本竞赛排行版采用A/B榜设置,使用测试集的50%数据作为A榜测试集,另外50%作为B榜测试集,最终线上成绩与排名以B榜成绩与排名为准(B榜成绩仅在初赛最后一天公布);
- 4、初赛截止时间是11月10日18:00,同时满足以下条件的队伍进入复赛:
( m$ D: v0 J) x3 _; @" f9 w* }. w- a. 在天池网站和CCF大赛官方完成注册且“昵称/姓名/邮箱/队名和队伍结构“一致;
- b. 通过支付宝实名认证;(认证入口:天池网站-个人中心-认证-支付宝实名认证,要求初赛截至前完成认证,要求11月14日00:00前完成认证)
- c. 初赛成绩排名前100名;5 u% _- k+ B. Y
- I3 ^* u; N; m* \4 P
平台赋权(11月16日—11月17日)- 1、复赛需通过天池官网进入数加平台进行参赛;
- 2、11月16日10:00开始赋权,11月17日12:00完成赋权;
- 3、复赛队伍获得数加平台权限后,比赛详情页面左侧将显示“数加”菜单,点击进入平台;也可直接点击这里登录(注:登录数加平台需RAM子账号, RAM子账号请前往个人中心"我的RAM账号"中获取);
- 4、数加平台使用手册请查看这里
3 i, O* ?9 e3 h$ }
/ H6 n6 q* l4 B4 u复赛(11月18日—12月19日)- 1、复赛的数据不可下载,下载数据将视为违规自动失去比赛资格;
- 2、选手需要使用平台完成数据处理、建模、算法调试、产出结果等所有环节,可使用基于MaxComputer的Map Reduce、SQL、GRAPH及平台集成的各种机器学习算法包/模型;
- 3、从11月18日18:00起,系统每天进行4次评测和排名,评测开始时间为每天00:00, 06:00, 12:00, 18:00,按照评测指标从高到低进行排序更新排行榜;
- 4、本竞赛排行版采用A/B榜设置,使用测试集的50%数据作为A榜测试集,剩余50%作为B榜测试集,最终线上成绩与排名以B榜成绩与排名为准(B榜成绩仅在复赛最后一天可见);
- 5、复赛截止时间是12月19日18:00,复赛成绩排名前5名的选手将受邀参加决赛的现场答辩;2 ?: \5 }; ~& }; K& a
积分发放:进入第二赛季的队伍,会有相应排名的积分奖励 (相应积分规则详见个人中心的积分)! h! ?: N) v6 ]4 u: j/ p' h
: l$ }. d6 g/ u& h
决赛(12月30日)- 决赛将以现场答辩会的形式进行,具体形式另行通知3 G- n8 R8 x4 a$ \6 X% W, j
7 F# h" k! w3 t- p, j% B$ _. u赛题介绍:https://tianchi.shuju.aliyun.com/competition/introduction.htm?spm=5176.100068.5678.1.9Igo9O&raceId=231587 ^1 B: j' Y; _+ B
解决方案概述本赛题提供了用户线下消费和优惠券领取核销行为的纪录表,用户线上点击/消费和优惠券领取核销行为的纪录表,记录的时间区间是2016.01.01至2016.06.30,需要预测的是2016年7月份用户领取优惠劵后是否核销。根据这两份数据表,我们首先对数据集进行划分,然后提取了用户相关的特征、商家相关的特征,优惠劵相关的特征,用户与商家之间的交互特征,以及利用本赛题的leakage得到的其它特征(这部分特征在实际业务中是不可能获取到的)。最后训练了XGBoost,GBDT,RandomForest进行模型融合。 ( B+ G0 ~: j) S
数据集划分可以采用滑窗的方法得到多份训练数据集,特征区间越小,得到的训练数据集越多。以下是一种划分方式:
. W6 |, Y# U4 e. V# T划取多份训练集,一方面可以增加训练样本,另一方面可以做交叉验证实验,方便调参。
' A$ f5 N8 U; Z特征工程赛题提供了online和offline两份数据集,online数据集可以提取到与用户相关的特征,offline数据集可以提取到更加丰富的特征:用户相关的特征,商家相关的特征,优惠劵相关的特征,用户-商家交互特征。 另外需要指出的是,赛题提供的预测集中,包含了同一个用户在整个7月份里的优惠券领取情况,这实际上是一种leakage,比如存在这种情况:某一个用户在7月10日领取了某优惠券,然后在7月12日和7月15日又领取了相同的优惠券,那么7月10日领取的优惠券被核销的可能性就很大了。我们在做特征工程时也注意到了这一点,提取了一些相关的特征。加入这部分特征后,AUC提升了10个百分点,相信大多数队伍都利用了这一leakage,但这些特征在实际业务中是无法获取到的。 以下简要地说明各部分特征:
3 @5 w! |3 `6 w" G( M% {1 e模型设计与模型融合基于以上提取到的特征,进行模型设计与融合。 单模型 第一赛季只训练了XGBoost单模型提交,连续几周位居排行榜第一位。 第二赛季训练了XGBoost,GBDT,RandomForest三种单模型,其中GBDT表现最好,XGBoost次之,RandomForest相比之下最差。GBDT和XGBoost单模型在第二赛季仍然名列Top3,融合后效果更佳,尝试了以下两种方法: 加权融合 得到了单模型的预测结果后,直接将概率预测值进行加权融合,我们简单地用0.65 * GBDT + 0.35 * XGBoost就得到了第一的成绩。 Blending模型 我们尝试了两层的blending模型,首先将训练集分为两部分(D1和D2),一部分用于第一层(level 1)的训练,另一部分用于第二层(level 2)的训练。level1 在D1上训练了4个XGBoost,4个GBDT,4个RandomForest,将这些模型的预测结果作为level2的feature,在D2上训练第二层模型。Blending模型的结果相比单模型有细微的提升,但这点提升相对于模型复杂度带来的计算代价显得微不足道。 0 l5 [) Y0 X9 Q% c! X. C v
; [1 H; j1 R; V2 n( D2 P# A5 y: j
原文链接:https://github.com/wepe/O2O-Coupon-Usage-Forecast
; v$ }, A; B8 ~8 \$ Q6 p; X& r. p( Q9 E9 ~* ?
' ?3 |6 R6 K+ r) {
2 R+ t) i5 C. q% z: o
: Y" X6 R2 R. L/ `2 T |