前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2019JDATA-用户对品类下店铺的购买预测方案及代码分享(亚军)

2019JDATA-用户对品类下店铺的购买预测方案及代码分享(亚军)

作者头像
Coggle数据科学
发布2019-09-12 17:37:00
2K1
发布2019-09-12 17:37:00
举报
文章被收录于专栏:Coggle数据科学Coggle数据科学

写在前面

感谢太白南路点子王、安之zh、小幸运,特别致谢太白南路点子王的各路好点子。

本次比赛将给出完整方案和完整代码,直接学习代码,没有比这个更“硬核”的了。

JDATA竞赛详情页​jdata.jd.com

图标
图标

正文

赛题背景

京东零售集团坚持“以信赖为基础、以客户为中心的价值创造”这一经营理念,在不同的消费场景和连接终端上,在正确的时间、正确的地点为3亿多活跃用户提供最适合的产品和服务。目前,京东零售集团第三方平台签约商家超过21万个,实现了全品类覆盖,为维持商家生态繁荣、多样和有序,全面满足消费者一站式购物需求,需要对用户购买行为进行更精准地分析和预测。基于此,本赛题提供来自用户、商家、商品等多方面数据信息,包括商家和商品自身的内容信息、评论信息以及用户与之丰富的互动行为。参赛队伍需要通过数据挖掘技术和机器学习算法,构建用户购买商家中相关品类的预测模型,输出用户和店铺、品类的匹配结果,为精准营销提供高质量的目标群体。同时,希望参赛队伍通过本次比赛,挖掘数据背后潜在的意义,为电商生态平台的商家、用户提供多方共赢的智能解决方案。

评价指标

参赛者提交的结果文件中包含对所有用户购买意向的预测结果。对每一个用户的预测结果包括两方面:

(1)该用户2018-04-16到2018-04-22是否对品类有购买,提交的结果文件中仅包含预测为下单的用户和品类(预测为未下单的用户和品类无须在结果中出现)。评测时将对提交结果中重复的“用户-品类”做排重处理,若预测正确,则评测算法中置label=1,不正确label=0。

(2)如果用户对品类有购买,还需要预测对该品类下哪个店铺有购买,若店铺预测正确,则评测算法中置pred=1,不正确pred=0。

对于参赛者提交的结果文件,按如下公式计算得分:score=0.4F11+0.6F12

此处的F1值定义为:

其中:Precise为准确率,Recall为召回率;F11 是label=1或0的F1值,F12 是pred=1或0的F1值。

问题定义

问题一:“预测该用户2018-04-16到2018-04-22是否对品类有购买”

问题二:“预测对该品类下哪个店铺有购买”

我们将问题一定义为预测用户ID+品类ID组合成的F11ID,在2018-04-16到2018-04-22是否发生购买行为的二分类问题。

我们将问题二定义为预测用户ID+品类ID+店铺ID组合成的F12ID,在2018-04-16到2018-04-22是否发生购买行为的二分类问题。

解决方案: 我们针对问题一和问题二分别建立模型,考虑到问题一和问题二关联度很强,采用的特征工程的思路基本相同,最终对两个结果进行融合得到预测结果。

探索性数据分析

EDA探索的一些重要发现:

预测需要的cate条目存在于商品表中,且店铺表中同样存在cate条目,此条目(shop_cate) 和商品表中的cate条目不同,仅是同名的不同特征,更不可用于F11问题的预测;

店铺表下, 仅有vender_id==3666(商家ID )关联多个shop_id,进一步探索后发现,这些shop_id关联的所有行为记录中(约占全部数据的40%),没有一条是购买记录

用户行为中的type=5的情况(加入购物车)仅在4.08之后出现

存在未关联数据,需要进行剔除。

异常数据处理方法:

1.由于春节前后数据分布异常,很可能与测试集的数据分布不一致,在构建训练集的时候应避免使用2.22日之前的数据。

2.构建时间相关(前N天行为统计等)特征避免使用春节前后的数据,构建累积特征则不需要特别考虑。

3.对3.27,3.28两天出现的异常采样问题,我们考虑到其购买行为的分布与前后基本一致,只在构建部分时间相关特征避免使用,其他并未做特别处理。

训练集构建

2018-03-10到2018-04-11的行为表中出现的F11ID、F12ID作为训练集的F11ID、F12ID。

2018-04-11到2018-04-16的行为表中出现的,且也在训练集中出现过的F11ID、F12ID作为标签集。

在2018-02-01到2018-04-11(全量)时间区间内完成对训练集中F11ID、F12ID的特征提取。

测试集构建

2018-03-15到2018-04-16的行为表中出现的F11ID、F12ID作为测试集的F11ID、F12ID。

在2018-02-01到2018-04-16(全量)时间区间内完成对测试集中F11ID、F12ID的特征提取。

此外,为了合理利用只有在最后八天存在的加入购物车行为记录,建立了另一个类似的模型,随后将做介绍。

特征工程基本思

结合基本的统计特征,通过使用户的行为记录,在长效、中期、短期三个时间维度,对用户、品类、商铺、F11ID(消费者和品类)、F12ID(消费者、品类、店铺)进行表示建立,建立时效行为兴趣特征;同时合理利用type==5存在的最后八天数据,围绕type==5建立特征工程以及新的模型。

结合以上思路,我们的特征可以基本分为三类

基础统计特征

时效行为兴趣特征

时效行为兴趣特征-user_id上的补充

购物车行为上的探索

在EDA环节中,我们提到过,用户行为中的type==5的记录(加入购物车)仅在4月8日零点之后出现,仅有最后八天的记录。

经过EDA后发现这8天内type==5的分布较为稳定,应该是前后差异应当是人工采样的结果。

这种结果导致训练集(3.10-4.09)只含有一天的加入购物车记录,而测试集(3.15-4.16)则含有8天的加入购物车记录,导致两个数据集的分布严重不同,因而比赛的初期,在考虑特征工程时暂时先将所有的购物车记录进行了删除。

购物车行为特征建立

第一中思路为在原有七天作为label的模型的基础上,通过对购物车记录进行处理保证前后分分布一致。

具体方法为:训练集中保留4.08当天的type==5的记录;

测试集中保留4.15当天的type==5的记录;

并针对这一天(也是数据集的最后一天)的购物车记录进行特征提取,特征如下:

1. 加入购物车行为在5个维度下的次数;

2. 加入购物车行为在5个维度下的转化率(与其他行为次数的比值);

3. 加入购物且未发生购买行为次数;

4. 加入购物且未发生购买行为的相关商品数。

购物车相关新模型建立

在上一步的基础上,我们思考了如何能利用更多的购物车信息。为满足分布一致的要求,我们将原预测七天改为预测五天,可以将训练集的购物车信息从一天增加到三天,同时删去测试集除最后三天之外所有购物车信息,使分布一致。最后使用类似的特征工程方法对type==5的记录进行了特征提取。

具体构建方法如下:

训练集构建:

2018-03-10到2018-04-11的行为表中出现的F11ID、F12ID作为训练集的F11ID、F12ID。

2018-04-11到2018-04-16的行为表中出现的,且也在训练集中出现过的F11ID、F12ID作为标签集。

在2018-02-01到2018-04-11(全量)时间区间内完成对训练集中F11ID、F12ID的特征提取。

测试集构建:

2018-03-15到2018-04-16的行为表中出现的F11ID、F12ID作为测试集的F11ID、F12ID。

在2018-02-01到2018-04-16(全量)时间区间内完成对测试集中F11ID、F12ID的特征提取。

模型的训练与融合

模型训练:

1.采用LightGBM模型进行训练,降低二分类的log loss。

2.为加快模型的训练速度,使用全部的正样本,并通过随机抽样选取正样本数三十倍左右的负样本进行训练(正样本数约为2.6万,负样本数约为80万)。

模型融合:

通过对评价函数的解读,可知F11的β^2为0.5,F12的β^2为1.5,因而F11分数对准确率更为敏感,F12分数对召回率更为敏感。

我们采取的融合方法如下:

1.取出F11模型预测结果prob的TOP26000,F12模型的预测结果prob的TOP32000,按照F11ID取交集进行inner merge操作,再取出F12模型的TOP15000条融合后去重。

2.两组F11/F12模型都完成融合后,各得到长度22000条的最终结果,取出五天模型的TOP15000与七天模型进行融合并去重,得到最终结果。

赛后经验

1.EDA是理解赛题,处理数据以及构建特征的基础,这一步的工作的好坏,决定了整体工作的方向是否正确以及模型性能的最终上限;

2.在充分的EDA的基础之上,将直觉认为可行的方法快速落地,是一种能有效提高工作效率与质量的方法;

3.过于复杂的推导和脱离数据本身的特征工程往往不会有效,且会浪费非常多的时间,将方法快速落地再根据结果更新改进的方式更有效率。

工作的不足之处

1.由于比赛全程时间较短,且过程中使用的计算机的算力非常有限,还有很多直觉上可行的方案没有机会实践;

2.对score以及F11、F12分数定义公式的理解程度不足,很多问题都是赛后总结中才最终发现;

3.建立的线下验证集可靠程度有限,直觉上感觉最后的融合方法仍然欠佳;

4.特征工程比较复杂,可能存在一些冗余特征,对模型的时间性能有一定的影响。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
  • 正文
  • 问题定义
  • 探索性数据分析
  • 训练集构建
  • 测试集构建
  • 特征工程基本思
  • 基础统计特征
  • 时效行为兴趣特征
  • 时效行为兴趣特征-user_id上的补充
  • 购物车行为上的探索
  • 购物车行为特征建立
  • 购物车相关新模型建立
  • 模型的训练与融合
  • 赛后经验
  • 工作的不足之处
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档