用户对品类下店铺的购买预测
杰少,天池 id: 老师社会
2019/6/1
Contents
1 前言
2 赛题解析
2.1 赛题细节 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1 赛题背景 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.2 比赛规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.2.1 比赛时间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.2.2 赛制规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.2.3 评测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.3 数据说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.3.1 数据概览 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.3.2 详细数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.4 提交格式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.5 评分指标 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 赛题难点 & 注意事项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1 赛题难点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.2 注意事项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 数据探索分析
3.1.1
3.1.2
3.1.3
3.1.4
3.1.5
3.1 基础数据信息观察 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
jdata_action 数据表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
jdata_user 数据表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
jdata_comment 数据表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
jdata_product 数据表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
jdata_shop 数据表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 单变量分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
jdata_action 数据表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
jdata_user 数据表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
jdata_comment 数据表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
jdata_product 数据表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
jdata_shop 数据表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 特征变量 & 标签的关系分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4 特征变量 & 特征变量的关系分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1
3.2.2
3.2.3
3.2.4
3.2.5
3
4
4
4
4
4
4
5
5
5
6
7
8
8
8
9
10
10
10
11
12
13
14
15
15
18
20
22
25
26
28
1
4 算法建模
4.1 候选集的构建 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.1 暴力构建候选集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.2 启发式构建候选集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 降低噪音带来的影响 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3 我们的策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 特征工程 & LGB 建模
5.1 用户特征 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.1 基于用户的特征 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.2 基于用户与品类的交叉特征 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.3 基于用户与店铺的交叉特征 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 商店特征 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3 LGB 模型训练 & 测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6 其他提升角度
30
30
30
30
31
31
35
35
35
36
38
40
42
43
44
2
1 前言
本篇文章我们对“用户对品类下店铺的购买预测”赛题进行分析,介绍此类问题的难点,包括候选
集的选择,数据集噪音的影响等。然后针对这些问题,我们会介绍我们处理候选集构建的问题所采
用的方案以及构建的原因,在构建好对应的候选集之后我们阐述此类问题该如何进行特征工程的构
建以及进行线下指标的优化,我们将按照下面的五块内容进行方案的介绍:
• 赛题解析,在这一部分,我们会介绍本次比赛的赛题背景,比赛的规则,包括时间、赛制规
则、评测指标,数据的说明,提交的格式;然后我们会介绍此类问题所存在的难点以及经常
需要注意的事项等;
• 数据探索分析,在本部分我们会对赛题的数据进行细致的分析,使我们可以更好的了解我们
手上的数据的性质以及存在的诸多特性,包括是否存在缺失情况,是否某天有很大的噪音等;
• 候选集的构建,这一部分,我们介绍候选集的构建思路,如何通过滑动标签来减少噪音数据
带来的影响方案;
• 特征工程,我们介绍特征工程的构建方案,此处我们的特征工程的框架,并在此基础上介绍
多种常用的特征;
• 其他提升角度,
本篇文章我们重点介绍建模相关的思路以及部分核心特征的构建思路,期间我们会附上部分核心代
码进行辅助介绍,完整的A 榜线上 0.058, Top20的代码可以前往我的 Github 进行下载,剩下的
思路我已经在其他提升角度进行了讲述,该文章会在答辩之后补充上其他选手的一些思路,To be
continued......
3
2 赛题解析
在本章节,我们首先对本次赛题的内容进行回顾,包括本次比赛的应用场景,赛题的意义;比赛规
则的内容(该比赛已经结束,此处为了文章的完整性将其加入)以及赛题中我们所能获得的数据;
然后我们对此类问题中需要注意的细节以及对应的难点进行简要的分析与阐述。
2.1 赛题细节
2.1.1 赛题背景
京东零售集团坚持“以信赖为基础、以客户为中心的价值创造”这一经营理念,在不同的消费场景
和连接终端上,在正确的时间、正确的地点为 3 亿多活跃用户提供最适合的产品和服务。目前,京
东零售集团第三方平台签约商家超过 21 万个,实现了全品类覆盖,为维持商家生态繁荣、多样和
有序,全面满足消费者一站式购物需求,需要对用户购买行为进行更精准地分析和预测。基于此,
本赛题提供来自用户、商家、商品等多方面数据信息,包括商家和商品自身的内容信息、评论信息
以及用户与之丰富的互动行为。参赛队伍需要通过数据挖掘技术和机器学习算法,构建用户购买商
家中相关品类的预测模型,输出用户和店铺、品类的匹配结果,为精准营销提供高质量的目标群体。
同时,希望参赛队伍通过本次比赛,挖掘数据背后潜在的意义,为电商生态平台的商家、用户提供
多方共赢的智能解决方案。
2.1.2 比赛规则
本次比赛的重要时间段信息如下:
2.1.2.1 比赛时间
• 2019 年 04 月 18 日 10:00 开放赛题信息和报名;
• 2019 年 04 月 25 日 10:00 开放 A 榜数据、评测以及排行榜平台;
• 2019 年 05 月 20 日 12:00 报名截止,并关闭组队;
• 2019 年 05 月 20 日 14:00 关闭 A 榜提交;
• 2019 年 05 月 20 日 16:00 开放 B 榜数据及提交,并进行小号作弊和算法有效性排查;
• 2019 年 05 月 26 日 14:00 关闭 B 榜提交,并开放提交相关审核材料;
• 2019 年 05 月 29 日 14:00 关闭代码复现资料提交;
• 2019 年 06 月 07 日 18:00 公布入围决赛的 10 支队伍名单;
• 2019 年 06 月 13 日现场决赛答辩。
2.1.2.2 赛制规则
本次比赛的参赛对象以及组队规则如下:
1. 参赛对象
• 大赛面向全社会开放,高等院校、科研单位、互联网企业等人员,均可报名参赛。
4
• 大赛主办和相关单位有机会提前接触赛题和数据的人员不得参加比赛,其他员工可以参
与比赛排名,但不领取任何奖项。
2. 组队规则,参赛选手可以选择个人或组队身份参赛,每支队伍 1-5 人。注:
• 每人只能参与一个队伍;禁止邀请外援;
• 保证参赛队员报名信息准确有效,不得使用小号,否则会被取消参赛资格及奖励;
• 参赛身份的变化及队伍变化,之前的提交结果将被删除且不可恢复,所涉及选手排行榜
成绩清空。
2.1.2.3 评测
本次比赛评测相关的信息具体如下:
• A 榜期间每支队伍每天提交次数不超过 2 次,采用实时评测;
• B 榜期间每支队伍每天提交次数不超过 2 次,采用定期评测 2 次,即第 1 次评测时间是开放
B 榜数据后第二天(5 月 21 日)16 点,第 2 次评测时间是 B 榜截止当天(5 月 26 日)16
点;每次评测的文件是每支队伍中所有成员提交的文件,按提交时间取最后 2 个文件;排行
榜取最优成绩;注:
1. 禁止扫描答案,一经查出存在扫描答案,将取消该选手的所有成绩。
2. 为保证竞赛公平公正,如果在 A 榜赛程中发现异常行为,组委会将保留对 B 榜进行赛
制调整的权利,并且将在 B 榜开放前发出公告通知。
2.1.3 数据说明
赛题的数据可以通过点击下面的链接进行下载: 数据下载链接
2.1.3.1 数据概览
1. 训练数据:
• 提供 2018-02-01 到 2018-04-15 用户集合 U 中的用户,对商品集合 S 中部分商品的行为、
评价、用户数据。
2. 预测/测试数据
• 提供 2018-04-16 到 2018-04-22 预测用户 U 对哪些品类和店铺有购买,用户对品类下的
店铺只会购买一次。
3. 数据表说明
• 具体的可以参考下面的数据表格说明。
5
Figure 2.1: 数据表格说明
Figure 2.2: 行为数据
2.1.3.2 详细数据
在上一小节,我们了解到我们一共有五张不同的表格,在这一部分,我们将上述提到的五张不同的
表格进行展开,并对每张表格中的字段做简短的介绍。
1)行为数据(jdata_action):介绍用户在某个特定时间段的操作,包括下单、浏览等;
2)评论数据(jdata_comment):介绍产品在某个时间段内评论的情况;
Figure 2.3: 评论数据
3)商品数据(jdata_product):介绍商品所属的拼配,店铺,类别以及上市的时间信息等;
4)商家店铺数据(jdata_shop):介绍商家的粉丝数目,开店时间,主营的类别和店铺的评分
等信息;
5)用户数据(jdata_user):介绍用户的性别,注册时间,所在地以及会员级别等信息;
6
Figure 2.4: 商品数据
Figure 2.5: 商家店铺数据
Figure 2.6: 用户数据
2.1.4 提交格式
本赛题要求提交 CSV 文件,具体的文件要求如下:
1. UTF-8 无 BOM 格式编码;
2. 第一行为字段名,即:user_id,cate,shop_id(数据使用英文逗号分隔),其中每个字段的含义
如下:
• user_id:用户表(jdata_user)中用户 ID;
• cate:商品表(jdata_product)中商品 sku_id 对应的品类 cate ;
• shop_id:商家表(jdata_shop)中店铺 ID;
3. 结果不存在重复的记录行数,否则无效;对于预测出没有购买意向的用户,在提交的 CSV 文
件中不要包含该用户的信息。提交结果示例如下图:
7
Figure 2.7: 提交格式
2.1.5 评分指标
参赛者提交的结果文件中包含对所有用户购买意向的预测结果。对每一个用户的预测结果包括两方
面:
1. 该用户 2018-04-16 到 2018-04-22 是否对品类有购买,提交的结果文件中仅包含预测为下单的
用户和品类(预测为未下单的用户和品类无须在结果中出现)。评测时将对提交结果中重复的
“用户-品类”做排重处理,若预测正确,则评测算法中置 label=1,不正确 label=0。
2. 如果用户对品类有购买,还需要预测对该品类下哪个店铺有购买,若店铺预测正确,则评
测算法中置 pred=1,不正确 pred=0。对于参赛者提交的结果文件,按如下公式计算得分:
score = 0.4F 11 + 0.6F 12, 此处的 F 1 值定义为:
Figure 2.8: 提交格式
2.2 赛题难点 & 注意事项
在这一部分我们对本次赛题中存在的难点进行分析并给出需要重点注意的事项。
2.2.1 赛题难点
我们将本次的赛题难点归结为如下两点:
1. 候选集的构建,该时序分类问题和很多传统的问题最大的不同之处在于,我们没有标准的训
练集也没有标准的测试集合,这些都需要我们自己构建。其中最简单的构建方案是枚举用户
id(user_id),类型 (cate) 和商品 id(shop_id),这是最直观的一个想法,但是这么做最大的
2. 降低“噪音”带来的影响,几乎在所有的时序类问题中,都会或多或少都会存在一些“噪音”
较大地影响我们的建模,此处我们将噪音细分为下面的三类噪音。
• 随机噪音,这类噪音往往是不可避免的,也是无法预测的;
8