Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

bike5/O2O

Repository files navigation

赛题:预测用户7月份领券后15天内线下优惠券的使用情况。给出了用户2016年1到6月份的线上线下消费记录,线下字段包括用户id、商户id、优惠券id、折扣、用户距离信息、领券时间、消费时间,线上字段包括用户id、商户id、行为、优惠券id、折扣、领券时间、消费时间

数据处理:将测试集里没有在训练集中出现过的用户、商户记录删除。。缺失值填充(有的距离为null,第一赛季独热编码,第二赛季将nul值填充为了11,想做个区分)....将折扣转换为门槛值(打折的门槛为0,满减的门槛为需要到达的钱,如满200减100,门槛为200)

第一赛季:1百多万条数据 样本不平(正负样本比大概为7:1) 60多维 第二赛季:1千多万条 100多维特征

首先考虑的是直接统计法,统计每张券(每个用户、每个商家、距离、折扣,以及字段联合)的实际15天内使用概率,然后做一个加权平均,得出7月份相同字段记录的概率值,结果很低

然后考虑将问题转化为一个二分类问题,领券后15天内消费的记录为1,领券后15天内不消费的记录为0,没有领券的记录剔除。 初步考虑使用LR模型,之后使用GBDT。

每个商户发的券不同 每张券的折扣相同

最终特征工程: 三部分:当月特征(作用最大)、往月特征(从当月之前的所有月份统计)、线上特征(作用较小)

往月特征: 各种使用券的统计,比如该用户领券后15天内消费次数,15天内使用概率、浪费的券的个数、消费的次数占总记录的比例(还有各种字段的联合统计)

最有效的一个特征:领券时间距离上次消费时间的天数(直观上来看有用的原因可能是因为刚刚使用过,则再次使用的概率更大些)

线上特征: 线上数据较多,且没有相同的商户、优惠券,所以首先做数据的筛选,将线下没有出现过的用户数据剔除掉 ---------观察数据后发现: 当月特征: 观察发现当用户领了某券消费后,大部分商店会在使用券的当天再发一张券,所以可以假定该用户领了该券的个数越多,用户使用的概率越大。还有就是如果某条记录是该用户最后一次领该券,很可能是因为这次没有使用所以没有再给该用户发券,则该记录不使用券的概率就很大

用户id、券id字段联合统计,即该用户领了该券的个数 用户id、券id字段联合统计,即该用户是否是最后一次领该券

用户id、商户id字段联合统计,即该用户在该商户领的优惠券总个数 用户领券总个数、商户发券总个数等等。。。

------------------------学到了什么 1、需要弄明白评价指标,这样才能清楚努力的方向。比如最终的评价指标对每个优惠券coupon_id单独计算预测结果的AUC值,再对所有优惠券的AUC值求平均作为最终的评价标准。明白了AUC的计算方式,便知道了重要的不是预测概率的绝对值,而是其相对值。 同时清楚了评价的指标,也便于自己线下评估。根据本题AUC的计算方式,自己写一个评价函数,对不同的券单独计算AUC,然后求平均值(需要去除那些只有之中标签的券,比如某张券全都是1或全都是0,这样的券无法计算AUC值),使用自己构造的线下测试集,将预测结果使用评价函数进行计算,观察模型在线下的结果如何。

2、对AUC评价指标有了深入的理解,明白了对不同数据集需要不同的评价指标。相比于召回率、精确率、F1值,数据类不平衡时,AUC表现更好。

3、构造一个好的线下测试集很重要(或许应该构造两个线下测试集,看结果是否一致,防止过拟合)。刚开始以六月份数据为测试集,第一赛季时线上线下基本一致。第二赛季时发现六月份数据仅有前半月没有15日之后,这样线上线下结果就差别很大,改用了5月份数据作为线下测试集。 最好能构造一个和线上测试集分布比较接近的一个线下测试集

4、认真观察数据。比如该数据就有一个小小的bug,线上测试集里泄露了标签信息(领券就发券)

5、相比于模型调参,找到有效的特征更重要。所以将所有能想到的特征全部都堆到gbdt模型里面去(不重要特征对gbdt影响貌似很小??)

6、gbdt调参

About

生活大实惠:O2O优惠券使用预测

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /