GMTC深圳站本周日开幕,14大专题全部上线,完整日程>> 了解详情
写点什么

阿里提出联合预估算法 JUMP:点击率和停留时长预测效果最优

  • 2018 年 6 月 05 日
  • 本文字数:1453 字

    阅读完需:约 5 分钟

停留时长预估

对于停留时间的预估,我们借鉴了“生存分析”(Survival Analysis) 的思想,通过时间发生的时间去近似用户在一个内容上停留的时间;从概念上来说,停留时长被认为是“离开当前内容”这个事件的发生时间。如果我们记用户的停留时长的样本为 O,假设存在一个函数,将 O 映射到一个简单的分布 f 上:

这里 f 可能是一个高斯分布,伽马分布等。可以证明的是:

其中 F 表示累计概率分布(CDF),T 是对 O 的在线近似。那么有了上述公式后,我们就可以使用最大似然估计去预估样本的停留时间。我们分析了 RecSys15 数据及上的停留时间,原始分布如左下图,然而我们对停留时间取 log 后,得到了右下图。我们很高兴的发现在取 log 之后,停留时间是符合正态分布的。

于是我们取 g 为 log 函数,f 为正态分布函数,最终我们能得到似然函数:

学习建模

我们记一个用户的会话为一个行为序列:\(s_k=\{(i_j,\log \tau _j,\delta _j)\},j=1,2,\cdots ,k\)。其中 i 表示第 j 个点击的商品,\(\tau _j\) 表示停留时间,而\(\delta _j\) 是一个 bool 类型,表示是否是会话的最后一个商品(或者停留时间过长)。我们假设样本是从一个分布 P(S) 中采样出来,那么可以将分布分解为 2 项的积。

其中前一项表示点击率的似然,后一项表示停留时间的似然;\(s_{k-1}\) 表示会话中第 k 次点击前的行为。为了从会话的行为中抽取更多的有效信息,我们提出了一种三层 RNN 模型去编码。

Attention Layer: 我们设计注意力机制主要目的是去除会话中的噪音,保留真正有效的信息。表示 fast-slow 层的输出,a 对应 attention 的权重,对应的计算方法如下面公式:

Fast-Slow Layer: fast-slow 层提出了一种新奇的 RNN 网络。当我们处理第 j 个输入\((i_j,\log \tau _j,\delta _j)\) 的时候,会进入一个 F-S 处理单元,其中包括一个慢元子和一个快元子序列,慢元子会记忆更多长期的记忆,而快元子会更多的获取当前的信息。F-S 处理单元如下图所示:

Embedding Layer: 网络的最底层是一个 embedding 层,该层将一个二元组\((i_j,\log \tau _j)\) 映射到一个向量上,我们使用 batch-normalizing 对输入进行标准化:

实验

为了验证算法的性能,我们将 JUMP 算法对比了主流的基于会话的预估算法,验证在点击率预估和停留时长预估上的效果。对比的算法包括 GRU、IGRU、NARM、DTGRU,RMTP、ATRP、NSR,使用的数据集是 RecSys15、CIKM16 和 REDDIT。

点击率预估的结果如下表所示,我们可以看到在全部数据集上,JUMP 算法都能超越其他算法,取得最好的 Recall、MRR 和 NDCG 指标。

同时我们观察了 embedding 维度对 recall 指标的影响,结果如下图。我们可以到看随着 embedding 维度的提升,recall 指标都能得到一定的上升,但是基本都在 100 维左右达到最高;其次,我们仍然可以发现,JUMP 算法取得的效果是优于其他算法的,蓝色曲线总是在其他曲线之上。

除了点击率外,我们观察了在时间预估这个任务上的效果,结果如下表所示。对比 ATRP、RMTP 和 NSR 算法,JUMP 能明显提升预估的准度。

总结

本文提出了一种新奇的算法 JUMP,同时预估一个会话中的点击率和停留时间。主要有 3 点重要贡献:

  1. 使用生存分析的方法来建模用户的停留时间,建立在可靠的数据理论基础上;
  2. 提出了一种三层的 RNN 结构,基于注意力机制能提升模型的鲁棒性,降低噪音的影响;
  3. 使用了一种全新设计的 fast-slow 结构,加强对短会话的学习能力。大量实验验证了算法的有效性,在多个公开数据集上的结果,对比其他的算法都有大幅提升。

论文全文链接:

http://www.cs.zju.edu.cn/people/qianhui/pub/Zhou18.pdf

2018 年 6 月 05 日 17:548359

评论

发布
暂无评论
发现更多内容

ipfs分布式存储技术的优势在哪里?ipfs即将取代http是真的吗?

区块链 分布式存储 IPFS ipfs到底能否取代http?

仅靠七个步骤,4面通过拿offer,终“跳进”字节跳动

Java 程序员 架构 面试 计算机

链路性能测试中参数多样性方法分享

FunTester

性能测试 测试框架 全链路测试 FunTester 链路测试

不愧是华为内部的“操作系统学习笔记”,一篇说细节,一篇讲哲学

Java~~~

Java 架构 面试 操作系统 网络

微信朋友圈高性能复杂度分析

缘分呐

微信朋友圈 高性能架构

模块七作业

king

银行对公业务数字化迎来新机遇

Geek_987812

GitHub标星翻倍!阿里大牛呕心沥血终成39w字Java面试笔记

Java~~~

Java 架构 面试 微服务 多线程

头一次见,阿里大牛把计算机网络协议讲得这么有趣,已火爆Github

Java~~~

Java 架构 面试 网络协议 计算机

ipfs矿机工作原理是什么?ipfs矿机怎么买?

ipfs矿机怎么买 ipfs矿机工作原理是什么

量化策略交易平台开发,马丁策略交易系统源码搭建

13530558032

单链路性能测试实践

FunTester

性能测试 接口测试 测试框架 压力测试 全链路测试

不愧是阿里内部“SpringCloudAlibaba学习笔记”从头到尾,都是精华

Java 架构 面试 微服务

膜拜!清华大佬手撸多线程并发源码笔记Github上线3天星标35k+

Java~~~

Java 架构 面试 JVM 多线程

【LeetCode】二叉搜索树的最近公共祖先Java题解

HQ数字卡

算法 LeetCode 9月日更

Socket接口固定QPS性能测试实践

FunTester

socket 性能测试 接口测试 测试框架 FunTester

ipfs挖矿市场即将爆发 ipfs挖矿原理是什么?ipfs挖矿值得投资吗?

IPFS挖矿值得投资吗 ipfs挖矿原理是什么

微信业务架构分析

黑鹰

微信业务架构

大牛分享,献出这份年薪68W的蚂蚁金服Java高级开发封神宝典!

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

Linux内核时钟机制及调度算法

hanaper

LeetCode刷题35-简单-搜索插入位置

ベ布小禅

9月日更

fil大涨:fil币价格行情怎样?投资fil靠谱吗?Fil多长时间能回本?

区块链 FIL币价格今日行情 fil挖矿靠谱吗 fil挖矿多久能回本? 投资filecoin

CPU 功能

Changing Lin

9月日更

微信朋友圈架构设计

小智

架构实战营

蘑菇街Java大牛纯手打肛出的一份多线程文档,请别丢进收藏夹吃灰

程序员知识圈

Java 程序员 架构 面试 编程语言

北鲲云超算平台能够为药物研发提供哪些层面的解决方案?

北鲲云

逆袭!裸辞26天,历经4面,60w“跳”进鹅厂(附面试流程和真题)

Java~~~

Java 架构 面试 微服务 JVM

MySQL最全整理(面试题+笔记+导图),面试大厂不再被MySql难倒!

程序员知识圈

Java 程序员 架构 面试 编程语言

牛批!阿里P8大牛写了一份Spring Boot2教程,已整理成文档。

程序员知识圈

Java 程序员 架构 面试 编程语言

美团面试:说说MySQL存储引擎原理,幸好我准备过!

Java MySQL 程序员 面试 计算机

网络攻防学习笔记 Day126

穿过生命散发芬芳

主机安全 9月日更

2021星空论坛:破局创新,论道数字化转型

2021星空论坛:破局创新,论道数字化转型

阿里提出联合预估算法JUMP:点击率和停留时长预测效果最优-InfoQ