背景

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

传统的推荐算法是依托于云上沉淀的埋点数据来。随着4G网络资费的下降,产生了越来越多的数据,如果将如此大量的数据都上传到运算,并且由云端来做中心化的存储/计算和处理,不仅会产生大量无必要的网络流量,而且还会给云端带来高昂的存储成本,实时性也无法保证。

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

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

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

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

马里奥

介绍

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

效果图:

初始版本流程图:

问题

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

分析

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

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

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

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

解法

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

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

解法流程图:

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

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

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

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

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

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

结果

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

原文链接
本文为云栖社区原创内容,未经允许不得转载。

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

  1. 魏副业而战:闲鱼无货源爆款热销产品推荐

    我是魏哥,与其在家躺平,不如魏副业而战! 每天分享一个闲鱼技巧.今天给大家推荐一些闲鱼爆款. 很多人做闲鱼过了新鲜期之后,觉得选品太难了,很羡慕那些月入过万每天爆单的人. 那为什么别人能每天轻松卖出几 ...

  2. 双十一|又快又稳!闲鱼实时事件规则计算驱动平台

    闲鱼双十一金鳞抽奖玩法 相信今年在11月7日-11月11日期间使用过闲鱼的用户,可能已经被如下图所示的幸运海星"砸"到过了.只要用户进入到指定的几个页面,或者在某些指定的页面有点击 ...

  3. 阿里闲鱼App服务端在ServiceMesh的探索和实践

    文章来源:咸鱼技术(XYtech_Alibaba) 作者:柬超 背景 在阿里服务端开发以Java为主的大背景下,其他异构语言业务如何调用现有Java服务,如何与集团中间件打通,就成为使用非Java语言 ...

  4. 闲鱼推荐,让智能计算从云走向端

    关键词:  智能推荐.特征工程.特征处理. 术语解释: 机器学习(Machine Learning):是关于在计算机上从数据中产生"模型"(model)的算法: 数据集(Data ...

  5. 闲鱼如何一招保证推荐流稳如泰山

    背景 近几年互联网的快速发展中,互联网业务发展越来越复杂,业务也被拆分得越来越细,阿里内部业务也发生着翻天覆地的变化,从最初的单体应用,到后面的分布式集群,再到最近几年大中台小前台的业务形态,作为后端 ...

  6. 阿里技术分享:闲鱼IM基于Flutter的移动端跨端改造实践

    本文由阿里闲鱼技术团队祈晴分享,本次有修订和改动,感谢作者的技术分享. 1.内容概述 本文总结了阿里闲鱼技术团队使用Flutter在对闲鱼IM进行移动端跨端改造过程中的技术实践等,文中对比了传统Nat ...

  7. 闲鱼如何在2个月内实现Android启动速度翻倍的?

    简介:满满干货 作者: 海潴,锦逸 随着闲鱼App端更多新功能.新技术的加入,应用冷启动速度越来越慢,这也意味着用户看到有效内容的时间被拉长,对用户体验有着很大的伤害.目前,在内部测试版本中,我们已经 ...

  8. 从0到千万DAU,这5年闲鱼架构如何演进?

    阿里妹导读:闲鱼品牌创立于14年阿里的某个茶水间,从0开始到现在千万DAU,5年时间里闲鱼见证了闲置物品从线下到线上交易的转移.而线上交易的繁荣,则需要业务架构做相应的调整.演进才能支撑业务的快速发展 ...

  9. QCon演讲|闲鱼从零到千万DAU的应用架构演进

    导读:业务架构要随着业务发展做相应的演进,继而支撑业务的快速发展.本文主要通过介绍闲鱼从零发展到千万级DAU应用的不同阶段的业务特点.核心问题以及针对性的架构演进,来阐述业务架构的演进思路与心得. 闲 ...

最新文章

  1. FPGA基础知识极简教程(3)从FIFO设计讲起之同步FIFO篇
  2. MySQL事务的的介绍及使用
  3. 化验室计算机系统验证风险评估,计算机化系统验证风险评估报告.doc
  4. MTK 驱动开发(39 )---待机流程
  5. Python中的枚举类型
  6. 【hbase】HBASE的安装与配置的步骤详解
  7. oracle 9i、10g、11g、12c官方文档
  8. android位置模拟源码,android 模拟定位app 源码
  9. 【JS】WPS宏编辑器
  10. 抓包工具神器,fiddler全解
  11. 根据读取数据库字段去linux下载文件到本地
  12. 高通WLAN框架学习(3)- -WLAN FTM 模式
  13. 一元三次方程求解C/C++
  14. 元宇宙大火的“天时、地利、人和”
  15. 基于微信小程序电影交流平台源码成品(微信小程序毕业设计)
  16. SCI论文并没有想像中的难写,发表SCI论文的小技巧。2012年和2013年SCI期刊论文和EI期刊论文
  17. 算法笔记(1)-常用推荐算法总结
  18. ASP.NET的三层架构(DAL,BLL,UI)
  19. 如何减少http请求的次数
  20. Enum 枚举小结 java **** 最爱那水货

热门文章

  1. linux openoffice centos,centos8 openoffice安装
  2. android xml通知栏权限配置,Android开发中 AndroidManifest.xml配置之service,receiver标签配置详解...
  3. linux docker查看容器状态,Docker容器状态命令行工具——Ctop
  4. oracle to char trim,to_char前面多出空格
  5. android 启动服务同时传递数据,Android Studio开发基础之起动Service,并通过从Activity向Service传递数据...
  6. unicode编码 php,PHP 的 UNICODE 编码和解码
  7. php socket keepalive,linux keepalive探测对应用层socket api的影响
  8. ue4中在物体上加ui_UE4 物体位置同步相关源码分析浅谈
  9. c语言中数据存储在文件中,急求如何将下列C语言程序数据存储到文件中?
  10. 数学歌单:数学虐我千百遍,让我至今没初恋