CIKM 2019 EComm AI用户行为预测大赛三大方案解读

2021-05-14 16:08:37 浏览数 (1)

作者:一元,炼丹笔记三品炼丹师

杰少, 炼丹笔记备胎小编

CIKM 2019 EComm AI方案解读

背景

本文解读CIKM 2019电商竞赛的三大获奖方案,这些方案都十分简单而且实用,如果刚刚做这块的朋友可以速速搭建一个非常高效的Baseline哦。

赛题背景

问题定义

在电商场景中,推荐系统作为电商核心功能之一,对用户体验的提升有重要作用。预测用户的兴趣,为其做出合理的推荐是工业界与学术界长久以来研究的课题。经典方法包括基于内容的推荐、协同过滤等,一定程度上完成了推荐系统的任务。近年来,随着图神经网络研究的兴起,基于深度学习的GNN(Graph Neural Network)在推荐领域也逐渐称为研究热点。

电商场景中, 用户,商品,以及两者之间的行为可以用一张二部图来表示。预测用户未来的行为, 转化为预测二部图中用户-商品边的概率,有更好的可解释性、可推理性。

图1是一个包含用户和商品的二部图。两种类型的节点之间存在不同的用户行为,即曝光、点击、支付、加入购物车、收藏。对图结构的探索,比如预测用户与商品之间是否会存在一条潜在的“点击”边,等价于对用户兴趣的建模/完成推荐。准确的推荐会给电商系统带来更好的用户体验,减少用户面对海量的商品时的信息过载。

但是,构建这样的推荐系统常常面临一些挑战, 首先是如何处理各种用户行为。比如用户商品之前存在的“点击边”和“收藏边”,对用户个性的刻画有什么不同的影响?相同的“点击边”对不同的商品——日用品&奢侈品,有什么不用的信号?不同时间长度的边,其影响力改如何衡量?其次的挑战是冷启动问题。具体来讲, 是一些没有行为/行为很少的用户/商品节点,如何将他们纳入推荐体系?第三个挑战在于何如处理边之上的时间信息。

任务: 根据用户历史行为预测未来行为

对于特定的用户, 为其推荐最多50个TA未来3天可能会点击的商品

提交格式

提交格式参见 表格 1。参赛选手需要在user_id之后添加一列预测结果(item_ids),逗号分隔不同的商品id。注意,推荐商品数量上限为50。user_id与item_ids之间以制表符(t)分隔,item_id之间以逗号分隔。

注意,推荐商品数量上限为50。如果此处结果超过50个商品,评测将返回错误信息。

数据集

训练数据集总共分为4部分。第一部分是是用户对商品的行为, 参加 表格 2。这里可能的行为包括点击、购买、加入购物车、收藏。第二部分是用户特征,参见 表格 3. 第三部分是商品的特征,参见 表格 4.

用户提交结果后,会在验证集上给出相应的指标反馈。比赛末期会给参赛选手提供与每日测试不同的测试集,其效果决定了最终比赛的排名。

评估指标

recall@50 = frac{1}{N} sum_{i=1}^N frac{|P_i cap I_i|}{|P_i|}, s.t. |I_i| le 50

其中为用户未来点击的商品集合, 为选手提交的预测商品集合

第五名思路

  • CCSnet: Three layers network with count layer, correlate layer and sum layer

这个cssnet是作者自取的名字,所以网上没有,该方案很简单,基本不是很耗时,很值得借鉴。

第一层: 网络计数层

  • 统计每个用户在每个商品上面的交互次数,对于时间距离使用了1/N进行衰减。

第二层:商品相关性层

  • 统计两个商品之间的关联度,A和B关联度采用AB同时出现的次数除以A出现的次数来计算的。
  • 为了防止次数过少的商品的关联度的置信度受到严重影响,此处使用了平滑因子(此处取100)。

第三层: 神奇的SUM

  • 最后我们采用相乘的方式来做最终的排序:用用户和共现的商品的次数表示用户对于某个商品的关联度,然后再通过商品的关联度寻找和该商品最相近的商品,然后相乘排序推荐。

第四名方案

  • 当你不知道召回什么时,请加入最热门商品!

协同过滤高评分商品

经过对数据的探索,观察发现这题比较适用于基于物品的协同过滤。对于训练数据,我预处理了和每件物品相似度最高(以相交用户数来评判相似度)的一些物品。对用户有过历史行为的物品,根据时间、行为类型计算,加权计算其协同过滤列表中的物品的相似度,并以相似度作为关键值排序后从大到小召回。

同类热门商品

经过对数据的探索发现,用户对物品有行为之后,之后的行为大概率发生在同类、同商店的物品中。因此,对于用户最后若干次行为的物品,我召回了其同类、同商店的一定数量的热门物品,作为第 一类规则未填充满50个物品时的备选项。

全局热门商品

当上述两种规则均无法召回到50种商品时,将使用所有商品中最热门的商品进行填充。

第二名方案

整体流程:先通过协同过滤等策略筛选出候选集,然后采用Ranking策略(类似于精排)并进行集成选出最终的结果。

数据分割

  • 第一阶段:候选集产出,在候选集生成的过程中,我们先用最后三天作为验证,进行候选集的产出(确保能尽可能召回多的靠谱的商品)。
  • 第二阶段:排序,从召回的覆盖率高的商品中找出用户最有可能交互的50个商品。

候选集产出

1. 整体框架

  • 基于Item的协同过滤策略
  • 通过Deepwalk获取Embedding
  • 计算UI的相似矩阵,计算II的相似矩阵,然后采用UI * II = UI的方式得到新的UI矩阵。
2. UI矩阵

因为用户的兴趣会随着时间而改变,所以我们需要对此加权。

F(u,v) = sum_{clicks ~ between~(u,v)} exp(-0.1 * the ~ day ~ since ~ the ~ click/buy/collect/cart)
3. II矩阵
  • 对矩阵进行稀疏表示,然后保留每行的Top10的分数的item;
  • 采用Deepwalk中的embedding,
I(v_1,v_2) = exp(-L_2~ distance(v_1,v_2)) * exp(- alpha_{v_2}) \ alpha_v = frac{log(1 how~many~users~click~v~the~last~day)}{log(number~of~users)}

此处的为流行率。

排序

1. 特征工程
  • 过于简单,不再阐述
2. 标签集合

3. 模型训练

模型预测结果

参考文献

  1. CIKM2019用户行为预测 比赛分享_江离:https://tianchi.aliyun.com/forum/postDetail?postId=81694
  2. CIKM2019用户行为预测 季军(Top5)比赛攻略_聪明恬恬傻歪歪:https://tianchi.aliyun.com/forum/postDetail?postId=81501
  3. CIKM2019用户行为预测 亚军攻略比赛攻略_JKY2019:https://tianchi.aliyun.com/notebook-ai/detail?postId=81149

是不是很好奇没有冠军方案,如果希望提前获取冠军方案解读,记得关注我们哦。

0 人点赞