2018年京东JDATA算法 大赛:"如期而至"-用户购买时间预测,方案分享

前言

去年6月份和实习生一起参加京东jdata2018算法大赛,取得了17名的成绩,本来以为这个成绩对于第一次参加算法大赛的我们来说已经算是不错了,但在听了决赛答辩之后感觉今后的路还很长,需要学习的东西太多,现在把我们的方案以及对比赛的理解和大家分享,欢迎大家讨论。

1、赛题描述

1.1数据说明
1.2赛题任务:

image

1.3评分标准:

image
S1评分思路分析:
image

  • 实验:
    在50000个用户中有25000用户有实际购买情况但排序不同的评分情况:
    前25000:0.5353
    后25000:0.4647
    随机分布:0.4999
  • 结论:
    1、S1的得分是S2的基础,因此要首先保证S1的分不能太低
    2、要在保证精确度的前提下,尽量让实际购买的用户往前排

2、总体思路

2.1 方案总体思路

image

  • S1/S2的思路基本一致

3、特征工程

3.1 总体示意

假设:用户是否购买以及购买日期只和近期的行为习惯有关
训练集构建思路:尽可能多的利用数据
时间窗口的选择思路:离标签月越近分的越详细
image

3.2 特征选择
  • 与购买相关的特征:
    订单数/商品数/商品种类/购买次数/有购买行为的天数/有购买行为的月数
  • 与浏览和收藏相关的特征:
    行为(浏览或收藏)商品数/行为(浏览或收藏)商品种类/行为(浏览或收藏)天数/收藏商品数/收藏商品种类/有收藏行为的天数
  • 地理信息:
    用户下单过的地点数/用户订单数最大的地点编号
    参数信息:
    用户所购买商品price/para1/para2/para3的最大值最小值平均值中位数
  • 用户花费:
    用户的总花费
  • 用户购买集中度:
    用户购买集中度=购买的商品次数/购买的商品种类
  • 用户商品忠诚度:
    用户购买同一sku的最大次数
  • 用户购买转化率:
    用户购买转化率=用户购买的商品种类/用户有行为(浏览或收藏)的商品种类
  • 日期特征:
    购买的最小的day/最大的day/平均的day
    近3个月/5个月 月首购买日期的最大、最小、平均、中位数
  • 特征时间窗口:7天/14天/1月/3个月/5个月
  • 品类维度:总体/(101,30)目标品类
  • 最终特征维度:347
  • 其他:未使用离散化/one-hot
3.3数据清洗与平滑

由于618的存在,用户在6月的购买模型可以认为是噪声,去除训练集汇总6月作为标签月的特征集同时对特征进行ln(1+x)平滑处理
image

4、模型选择

  • GBDT\XGBoost\LightGBM
    目前各大赛事及工程应用中最流行最高效门槛最低的选择
  • 开个脑洞:
    image
    一般来说S1用分类比较普遍,通过对用户购买概率从大到小排序来完成S1任务,但是由于S1分析可得,S1得分不仅和精确率相关也和排列顺序有关,那么有没有一种方法在保证精确率的同时能获得更好的顺序呢?我们在S1的任务中另辟蹊径,通过回归用户订单数的方式来对用户排序最终获得了更好的效果
  • bagging有放回采样
  • 调参
    使用sklearn中提供的GridSearch进行参数搜索调整参数
    参数调整顺序:
    1、learning rate/n_estimators调整
    2、树参数(max_depth/min_sample_split/max_feature/subsample)调整
    3、learning rate/n_estimators调整
  • 融合的考虑
    时间原因未进行融合

5、最终系统模型

image

6、小结

  • 本次比赛有很多收获,也有很多遗憾,收获都写上了,这里就说说遗憾,首先,在模型融合方面考虑的不多,线下训练由于计算资源有限以及平时工作比较忙的原因甚至没有使用交叉验证,直接用8月用户购买行为作为标签进行的线下训练,如果能够进行充分交叉验证和调参,再加上stacking或者blending也许会有更好的效果。
  • 特征上面我们考虑相对是比较全面的,但是听了决赛答辩之后,还是漏掉了几个强特征,比如用户标签月最后一天的购买情况,用户的购买间隔,物品消耗时长等。
  • 特征重构及变换上面我们也有很多可以改进的地方,例如通过LDA对sku进行重聚类,计算用户和商品的共现矩阵,hawkes模型的应用等等。
  • 一些比赛技巧上我们也有待加强,例如可以通过重写损失函数的方法,将S2的损失函数由系统默认的MSE改为赛题对S2的评分,据说这个方法在线上有百分位的提升。
  • 模型融合的思考:
    这次京东的大赛分为A榜和B榜两个不同的数据集,最终取B榜数据为最终排名,这极大考验模型的稳定性,有些选手A榜成绩不错,但是B榜就掉链子了,我们是从A榜的33名到B榜的17名,说明整体模型的稳定性还不错。另外通过观察现场决赛答辩,我们发现前三名的选手都没有或者只用了非常轻度的模型融合,这也从侧面反映了,单模型在稳定性上的优势。实际生产系统不是比赛,要求模型长期稳定的运行,持续输出较好的结果,而不是追求某一次的极大精度。这次比赛也让我们在使用模型融合方面有了很多的思考。
  • 深度学习应用的思考:
    限于时间、精力和硬件资源的限制,本次比赛并未尝试使用深度学习相关技术,从赛题题意上来说是可以使用LSTM/GRU等模型进行尝试的,另外如果赛题方能够提供具体的用户聊天和评论具体信息,也可以应用Bert、ELMo、GPT等深度语言模型进行尝试。

项目地址及其他

项目的源代码,大家可以通过:https://github.com/Francis1986/Jdata_2018下载,如果对大家有帮助,可以点个赞。
本文如需转载请注明出处,感谢!

  • 12
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
京东JDdata算法大赛-高潜用户购买意向预测是一个以数据挖掘和机器学习为基础的竞赛项目,其目标是通过分析京东平台上的用户行为数据,预测用户对商品的购买意向。通过这个比赛,京东希望能够进一步提高用户购买转化率,提升用户的购物体验。 在比赛中,参赛者需要利用提供的京东用户行为数据,如用户的购物记录、浏览记录、搜索记录等,以及商品的相关信息,通过建立有效的模型,预测用户是否有购买某种商品的意向。这个预测结果对于京东来说具有重要意义,可以帮助京东优化推荐系统,提供更为个性化的商品推荐,从而吸引更多的用户进行购买。 为了参赛者能够更好地完成这个任务,京东提供了大量的数据和工具。参赛者可以自由使用这些数据和工具进行分析和建模,并提交预测结果。在整个比赛过程中,参赛者可以通过不断地调整模型参数和特征工程,提升模型的预测能力。 参与这个比赛可以带来很多好处。首先,参赛者可以通过实践学习数据挖掘和机器学习的相关知识和技术,提高自己在这个领域的能力。其次,通过分析京东平台上的数据,参赛者可以深入了解用户的消费习惯,洞察用户购买行为,为企业提供有价值的业务洞见。最后,成功的参赛者还有机会获得丰厚的奖金和荣誉,进一步提升个人的社会影响力。 总之,京东JDdata算法大赛-高潜用户购买意向预测是一个很有意义的竞赛项目,对于参赛者和京东来说都具有重要的价值。通过这个比赛,可以促进数据挖掘和机器学习技术的发展,提升京东的推荐系统,为用户提供更好的购物体验。
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值