18-19 年出现了很多建模用户行为序列的文章,代表论文有 DIN、DIEN、DSEN和BST(Behavior Sequence Transformer),其中 DIN、DIEN、BST 旨在建模用户行为序列,DSEN 则进一步深入到会话(Session)层次。本博文旨在对序列建模中遇到的 Sequence 和 Session 做分析介绍。
1. Sequence 和 Session 区别
结论: Session 和 Sequence 本质上都是由 user behaviors 组成, Session 只是根据一定时间规则对 sequence 进行划分的结果(一个 sequence 由 k 个 session 组成 )。
2. 划分 Session 原因
将 Sequence 进一步细化到 Session 原因: 同一 Session 内部用户行为高度相关(同构),不同 Session 间用户行为差异比较大(异构)。
如下图,将用户的点击行为按照时间排序,判断每两个行为之间的时间间隔,前后的时间间隔大于 30min(DSEN论文所取时间,可修改),就进行切分。可以看到,第一个session中,用户查看的都是跟裤子相关的物品,第二个session中,查看的是戒指相关的物品,第三个则是上衣相关。从中可以观察到用户的行为在每一个session中行为是高度相近的(同构),在不同session间行为是差别较大的(异构)。
这说明用户在同一个 session 下对购买商品有一个明确的、单独的需求,但是一旦开启一个新的 session ,用户的兴趣将会发生很大的变化。正是基于该观察,阿里提出 Deep Session Interest Network(DSIN)尝试更细致建模用户历史行为中的 Session 信息。
3. 如何划分会话(Session)
将用户的历史点击行为序列 S 进行切分:首先将用户的点击行为按照时间排序,判断每两个行为之间的时间间隔,如果前后的时间间隔大于 30min,就进行切分。切分后,我们可以将用户的行为序列 S 转换成会话序列 Q。第 k 个会话 Q k = [ b 1 , b 2 , … , b i , … , b T ] Q_k = [b_1, b_2, \dots, b_i, \dots, b_T] Qk=[b1,b2,…,bi,…,bT] , 其中,T 是会话的长度, b i b_i bi 是会话中第 i 个行为。
分解的方式可以视实际情况,DSEN 论文中作者是按间隔时间 30 分钟来分解的。