闲鱼如何利用端计算提升推荐场景的ctr

2019 年 12 月 17 日

闲鱼如何利用端计算提升推荐场景的ctr


背景


闲鱼作为电商场景的 APP ,最丰富的部分就是作为商品宝贝浏览承载的 feeds ,比如首页下面的宝贝信息流,搜索结果页以及详情页下面的猜你喜欢,这些 feeds 场景都少不了推荐算法在背后的支撑。


我们观察到随着手机计算能力的提升,某些计算可以在端上直接计算,再统一上报到后端,这样相比云计算有很多明显的优势:


  • 更加实时性:我们可以在端上完成原始特征的处理和实时打分,从原始特征的抽取到计算结果的上报完成,可以在1s左右完成。

  • 计算资源的节约:大量数据如果都汇集到云端上计算,可能会造成计算资源的不足,我们可以将计算量分散到各个端上,可以降低计算资源开销。

  • 多维度数据采集:一些类似于细粒度的行为数据、采集频率过高的数据或者涉及用户隐私的数据等,可以在端上直接消费掉而不需要上传。


马里奥


▐ 介绍


马里奥是闲鱼首页的一个创新形式的业务,其业务逻辑是:用户在闲鱼首页 feeds 部分点击来一个宝贝卡片,那么同时就会请求云端,根据后端算法拉取回来算法召回的 query 词和对应的推荐宝贝信息,以四个方块的形式展示在一个张卡片中,这样来给用户点击之后,跳到二级承接页面来给用户推荐更相关的宝贝,来达到提升首页 feeds 部分点击率和成交的效果。


▐ 效果图



▐ 初始版本流程图



▐ 问题


初始上线之后,我们统计马里奥卡片一跳和二跳的 ctr ,发现并比不上普通的宝贝,那么问题出在了哪里呢?


▐ 思路分析


闲鱼上每天都会诞生数以亿计的商品点击,这里有个很自然的问题:用户对他的这次商品点击满意吗?考虑两个简单的例子:


  1. 用户点击商品后,在详情页面上停留时间很短,那么我们可以认为这可能是次误点击。

  2. 用户点击商品后,他在这个详情页面上有很多的行为,比如他可能查看了产品参数、商品的颜色尺码、或者又点击了该商品的全部评价,最后还通过和卖家进行了聊天,那么我们就认为这可能是次真实意愿的点击,或者说他对这次点击满意度分很高。


那么很自然的,我们推测,只有在满意度较高的情况下,我们去做关联推荐才是有意义和有价值的,否则如果用户误点击的情况,我们也去推荐,只会适得其反,对此我们进行了解法的尝试。


▐ 解法


在这个场景下,需要在用户点击进入宝贝详情,然后离开详情页的时候,就需要给出用户对该宝贝的意向,只有满足某个阈值的情况,才应该出现马里奥卡片。这种场景下,如果使用传统的云端算法,把数据都收集好,再计算出结果,再返回到端上,这时候很可能插入卡片的时机早就过去了,没法抓到用户这个关键点。因为用户在浏览详情页的过程中,所有的点击和曝光都是在端上实时产生的,很可能在最后一刻退出页面之前,用户都在一直产生有价值的动作,这时候不断的往云端回传数据再计算,显然是不可行的方案。


当用户在闲鱼 Feeds 页点击推荐商品(如上面左图的汽车玩具商品)后,进行触发并展现马里奥(如上面左图虚线红框所示),引导用户进行搜索并进行更多商品点击和下单。不同于 Feeds 里一般的推荐项,马里奥的每一次触发其实是存在触发成本的。一个显然的成本是马里奥的触发会挤占后续商品的展现。如果用户每一次详情页点击后都触发马里奥,那么就会有大量的马里奥被展现,并挤占相应的 Feeds 坑位。当马里奥点击率相比 Feeds 过低的时候,将影响整体 Feeds 的展现效率及用户体验。


▐ 解法流程图



因而在推荐流和搜索结果流中,触发型展现一个显而易见的成本是,当前触发的内容展现会压缩后续推荐的内容展现。从更高效的流量分发角度来看,对这类展现的控制是有必要性的。


不同于此前纯云端的触发展现,云端此前更多做内容侧的控制,基于用户与内容的匹配程度去决策是否展现以及展现什么。而端侧用户更加实时、更加详细、更加细粒度的行为,更偏好与刻画用户交互习惯以及对当前触发模块的需求。


为此,我们提出了智能展现模型,通过用户在端侧的细粒度交互行为建模用户对触发模块的实时偏好,将原始的触发展现模块解耦为两部分:


  1. CTR(端):端侧做展现控制:基于用户当下细粒度交互行为及交互习惯决定是否请求(展现)相关模块

  2. CTR(云):云侧做内容控制:决定展现的相关内容


所以我们最终采用端计算和云计算结合的方案,所有依赖数据都实时在端上产生,而且计算处理数据的过程也在端上,借助于集团提供的端计算容器,我们可以很方便的把模型部署到端上并运行它得到我们用户点击之后对点击宝贝的满意度的数值。


效果


新的马里奥方案,对整个链路和现有体系是最小侵入,也让整体更加简洁。闲鱼马里奥项目上,马里奥服务端请求量减少了-28.0%,点击率提升+31.1%,成交率增长了 10%。


本文转载自淘系技术公众号。


原文链接:https://mp.weixin.qq.com/s/A75pI3q7FhULJ60T_HJCew


2019 年 12 月 17 日 18:09106

评论

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

程序员的美丽假期(并不)

Philips

敏捷开发 快速开发

第四周学习心得

熊桂平

极客大学架构师训练营

mongodb 源码实现、调优、最佳实践系列-百万级高并发mongodb集群性能数十倍提升优化实践(下篇)

杨亚洲(专注mongodb及高性能中间件)

MySQL nosql mongodb 架构 分布式 分布式数据库mongodb

mongodb内核源码实现、性能调优、最佳运维实践系列-百万级高并发mongodb集群性能数十倍提升优化实践(上篇)

杨亚洲(专注mongodb及高性能中间件)

MySQL 数据库 nosql mongodb 分布式数据库mongodb

Go发起HTTP2.0请求流程分析(中篇)——数据帧&流控制

新世界杂货铺

golang 后端 HTTP2.0

成为一名合格的技术类产品经理

小清新同学

产品经理

想要高效搭建企业信息平台?教你轻松选择开发框架!

Marilyn

敏捷开发 快速开发

SpringBoot有多重要?面试用SpringBoot把面试官唬住了要30k都行!

Java架构之路

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

你听过CatBoost吗?本文教你如何使用CatBoost进行快速梯度提升

计算机与AI

Python 学习 优化

Linux下diff的操作详解

良知犹存

Linux

jvm笔记

pCat

Java JVM

直播预告 | 云时代的数据库客户端——CloudQuery最佳实践

CloudQuery社区

数据库 sql 安全 工具软件

灯下黑中的自己

非著名程序员

个人成长 管理 管理者

台湾地区为什么会丢包高?

德胜网络-阳

详细分析定制企业应用的价格

Learun

敏捷开发 快速开发 软件架构

面试大厂被面试官用MyBatis怼到“哑口无言”?这份MyBatis源码笔记助你吊打面试官!

Java架构之路

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

从理论到工具:带你全面了解自动化测试框架

开源 DevOps 工具 自动化测试

出炉!华为18A自爆SpringCloud微服务分布式笔记

996小迁

Java 编程 架构 面试 SpringCloud

深入理解 JVM 垃圾回收算法 - 复制算法

Java架构师迁哥

日常工作问题集锦

hasWhere

成为 Apache 贡献者,So easy!

海豚调度

Apache 贡献

让黑产无处遁形 京东智联云推出风险识别服务

京东智联云开发者

人工智能 学习 风险识别

阿里P8大牛呕心沥血总结整理的《Java面经手册》,通过实践的方式向你深度讲解Java核心知识点

Java架构之路

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

华为鲲鹏专家解读:90%代码如何移植到鲲鹏平台

华为云开发者社区

软件 鲲鹏

java安全编码指南之:Thread API调用规则

程序那些事

Java并发 多线程 java安全编码 java安全编码指南 java编码规范

LeetCode题解:98. 验证二叉搜索树,递归,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

Github惊现高星神作,两份算法宝典让你横扫大厂算法面试题

云流

编程 程序员 算法 计算机

Week 4 命题作业及总结

阿泰

华为云数据安全中心正式公测,8大核心数据安全能力守护你的数据

华为云开发者社区

华为 安全 数据

几行代码轻松实现跨系统传递 traceId,再也不用担心对不上日志了!

程序员小航

Java 日志 链路追踪 工作笔记 traceId

数字货币交易所开发方案,撮合系统搭建app源码

WX13823153201

闲鱼如何利用端计算提升推荐场景的ctr-InfoQ