推荐系统遇上深度学习(四十三)-考虑用户微观行为的电商推荐

在过去我们介绍的推荐方法中,特别是电商领域的推荐,其考虑的只是用户的**宏观交互行为(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层加权后的向量,采用的损失函数是交叉熵损失:

推荐阅读更多精彩内容