在过去我们介绍的推荐方法中,特别是电商领域的推荐,其考虑的只是用户的**宏观交互行为(macro interaction),如用户购买了xx物品,点击了xx物品。今天看到一篇不错的文章,将用户的微观行为如浏览商品的时间、对商品详情和评论的阅读等、渠道等等微观行为(micro behaviors)考虑进来,并取得了不错的实验效果。咱们来一探究竟。
论文名称:《Micro Behaviors: A New Perspective in E-commerce Recommender Systems》
论文地址:http://184pc128.csie.ntnu.edu.tw/presentation/18-03-13/Micro%20Behaviors%20A%20New%20Perspective%20in%20Ecommerce%20Recommender%20Systems.pdf
1、问题定义
我们首先来看一下,什么是宏观交互行为和微观行为:
上面的图中,宏观交互行为就是我们的一个点击序列,如iphone7->iphone 6->iphone 7 case -> samsungGalaxy。但是微观行为多种多样,比如我们搜索了iphone,看到了iphone7,点击进入商品详情页后又看了商品的描述和用户的评价,并将其加入购物车等等。同时,每种行为都有一定的停留时间。
因此,我们有如下的符号定义:
P={p1,p2,..,pN}代表N个不同的商品。
A={a1,a2,...,aM}代表M种不同的行为。
D={d1,d2,...,dK}表示将停留时间分为K档。
因此,用户的每一次行为可以表示为(pi,aj,dk),即用户在在商品pi上有过aj行为,并花费了dk档的时间。
我们的推荐问题就变为了,基于用户的行为序列(pi,aj,dk),来预测用户下一个可能感兴趣的物品。
2、数据分析
论文收集的信息包含以下四个方面:
Click Source:用户进入商品页的渠道,如主页、搜索页、购物车页、促销页等等。不同的渠道表明了用户不同的偏好,如用户从主页进入到商品页,用户也许只是想随便看看,但如果用户从搜索页进入到商品页,那么在一定程度上说明用户是有明确需求的。
渠道包含下面的五种,从上倒下分别是主页、类别页、促销页、购物车、搜索结果列表:
Browsing Modules:这里是说在商品页,用户浏览的主要模块,比如商品详情介绍、商品评论、规格。
模块这里分了三种,如下图,分别为商品评论、商品规格属性、一直浏览到最底部(即所有的都浏览了):
Cart and Order:加购和下单行为。这里特别提到的一点是,产品属性不同,代表的复购可能性不同,如用户刚买了一些小吃,那么他极有可能在短时间内再买一次,但是如果刚买了一个电视机,那么他基本不会在短时间内再买一次。
停留时间:停留时间这里划分了5档,如下图:
好了,在介绍了基础的数据之后,作者进行了一定的基础分析,并用excel图表进行了展示。
这里的转化率计算如下:
可以看到,从Click Source来看,通过促销页和购物车页进入商品页,随后完成下单转化的比例最高。从Browsing Modules来看,如果用户阅读了评论、规格活着滑倒了底部的话,其转化率也会高于只浏览商品详情(这里可以简单通过对比Click Source和Browsing Modules的转化率,Click Source的平均转化率相当于所有Browsing Modules + 只浏览商品详情的平均转化率),而从购物车页面直接下单,转化率最高。
再来看停留时间的分析:
上图表明,在一定的范围内,转化率随着停留时间增加而增加,当停留时间超过了一定的范围,再提升停留时间,转化率反而开始下降。
上图表明,用户通过搜索结果页进入到商品详情页后,停留时间更长,如果通过类别页进入商品页,停留时间较短。
上图表明,停留时间越长,用户阅读商品评论和规格的概率越大,但最终滑倒底部的概率还是相对偏低的。
上图展示了商品页入口和浏览模块之间的关系,如果用户从搜索列表页进入到商品页的话,他有更高的概率阅读商品的评论和规格。
通过上面的分析,我们发现了两个主要的结论:
1)微观行为是相互关联的
2)不同的微观行为,对于转化的影响是不同的。
接下来,我们就通过模型来建模具体的微观行为。
3、推荐模型
我们的模型如下图所示:
共分为5层,输入层,embedding层,RNN层,attention层,输出层。
输入层
输入层输入的是用户的行为序列,Su={x1,x2,...,xn},序列中每一项式商品ID、行为ID、停留时长ID的三元组,如xt=(pv,am,dk)。
Embedding 层
商品ID、行为ID、停留时长ID在Embedding层分别转换为对应的embedding,然后进行横向拼接。
RNN层
随后的RNN层,我们可以选择LSTM或者GRU,实际中LSTM和GRU效果差不多,但GRU相对于LSTM更加简单,因此选择了GRU。
attention层
attention对行为序列中的每一个时刻的RNN层的输出进行加权,计算公式如下:
输出层
模型的输出是attention层加权后的向量,采用的损失函数是交叉熵损失: