都2023了!我不允许你还不了解AIGC!立即报名 了解详情
写点什么

雅虎个性化推荐引擎的工程实践

  • 2014-06-18
  • 本文字数:1764 字

    阅读完需:约 6 分钟

最近 C3 沙龙在雅虎北京全球研发中心举行,雅虎中国首席架构师曾宏威分享了雅虎个性化推荐引擎的工程实践,具体包括整个推荐引擎的系统是如何搭建起来的,搭建过程中遇到了什么问题,是怎么解决的。下面是分享内容的总结:

雅虎个性化推荐引擎运用案例

个性化推荐引擎已经在雅虎的首页、新闻、体育、财经等很多频道,以及雅虎的 Email、用户订阅的邮件内容等方面使用。个性化推荐引擎推荐的内容有雅虎编辑原创的内容,也有雅虎购买版权的内容,还有从 Web 上抓取的内容,包括新闻、图片、博客、轻博客等形式。现在已经在欧洲等地方做全球化的推广,并且统计发现个性化推荐引擎对于用户粘性的提升已经超过了 100%。

推荐引擎的系统架构

雅虎个性化推荐引擎的系统架构如图 1 所示。整个系统的工作原理:系统通过对内容进行分析,提取内容的关键特征,并形成文档索引。值得注意的是,当用户授权使用社交网络的账号登陆雅虎平台时,还可以对用户的社交网络行为进行分析,通过会对用户的兴趣进行标记,并形成用户画像。文档索引建立起来了之后,当用户访问雅虎时,就会知道用户的兴趣,并在文档索引中根据用户兴趣找到相关的内容,并根据个性化引擎的排名进行展示。

【图 1】雅虎个性化推荐引擎的系统架构

数据收集:数据采集以前都是从 Server 端去做,现在越来越多地从前端去采集,越来越多的网页都是动态网页,很多用户行为都是在前端发生的,如果从后端去采集的话只能记录到用户的点击,但是如果使用 JAVA Script 在客户端进行记录的话,可以采集到更多的用户数据,比如用户停留鼠标停留了多长时间,就可以有更多的数据,数据可以更丰富。Beacon 的服务器是所有的雅虎服务器公用的,需要使用时,需要把它放到自己的 Hadoop 和 Storm 上。雅虎的 Data Highway,主要是完成从 data Server 上采集数据,并进行分发,存在于多个数据中心,还有一些数据从 Twitter、Facebook 上获取。

【图 2】雅虎个性化推荐引擎的数据收集

新模型 /算法的评估上线:当有了一个新的算法,需要使用一个新的模型时,雅虎会先对模型进行训练,训练好了之后再进行一些线下的评估,最后如果线下效果不错就会逐步做正式的线上测试。

首先,需要新的训练模型的新的样本,雅虎会把小于 5% 的流量用于模型训练,取 2500 万左右的用户,72 小时内,在 Hadoop 上进行训练,为了模型训练时判断模型对用户粘性的影响,有一些常规的指标进行判断。

模型训练好了之后,就需要进行一些线下的评估。具体有一些评估的指标,包括准确率、精确率、ROC 等。线下评估的好处是不需要在线上进行测试,可以节省很多成本。

如果线下效果不错,就要正式做线上的测试。在 100% 的流量中,会分配 20% 的流量来做各种各样的测试,因此,访问雅虎的 80% 的用户看到的是正式的结果,20% 的用户看到的其实是测试的结果。全球基本上会有超过 200 项的实验在进行,每周会发布 10-30 个线上测试,并在 1-2 周内观测模型的效果,有时候需要测不同的参数,每个实验会有 4-5 个测试,用来评价的指标大概有 3-4 个(点击率、评估时间等),都是跟用户粘性相关的。内部会有一个 DashBoard 展示相应的评价指标。如果线上测试通过了,就会放到正式的环境中,这时大概会有 80% 的用户看到的是新的模型 / 算法产生的内容。

为了实现模型的快速优化更新,还需要有一个高度集成的流程,包括很多自动化测试、回归测试等等,有一些测试完全自动化的难度也会非常大的,有些性能测试还需要手工去跑。

对于一些重大的算法的调整,会有一个灰度阶段发布,从 5% 的流量,到 20% 的流量,再到 50% 的流量(可选),在比较自信的情况下,也可以直接到 100%。这样可以在出现问题时,快速回滚到上一个版本。

关于用户粘性的判断:判断用户粘性有 6-7 个相关的指标,比如点击量、停留时间等等,这些指标还分为短期指标和长期指标。短期指标可以在算法上线后十几分钟就可以看到效果,但是短期指标不能替代长期指标,比如我一个算法推荐出来的都是美女图,短期指标可能会比较高,但是不一定是长期的用户粘性指标就会高。需要通过长短指标结合的方式来保障每一个实验的效果。


感谢郭蕾对本文的审校,唐蓉对本文的策划。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-06-18 09:535869

评论

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

你看脸吗?

shengjk1

随笔杂谈

你可能不知道的iPython使用技巧

王坤祥

Python

我们未曾见过的世界,大到无法想象

王坤祥

ios 极客 apple 苹果 软件推荐

神经网络激活函数为什么要使用非线性函数?

王坤祥

神经网络 激活函数

告诉你如何同时拿到腾讯两个部门的offer?

我是程序员小贱

别让非理性思维毁了你的人生

看山

随笔杂谈 非理性 认知偏差 自控术

熬得住,人生路

shengjk1

随笔杂谈

手抖了

shengjk1

随笔杂谈

数据平台、大数据平台、数据中台……你确定能分得清吗?

华为云开发者联盟

大数据 数据中台 开发者 数据湖 数据

憋再@官方了,头像加国旗,10行代码给你安排!

王坤祥

Python python升级

简谈Python3中的闭包

王坤祥

Python Python基础

SpringBoot系列(四):SpringBoot特性_外部化配置(properties文件配置)

xcbeyond

Java 微服务 springboot

我国开启“逆袭战”,区块链的盛夏来了?

CECBC

云计算 区块链技术

流媒体云时代的声与色,融云铺就的桥与路

脑极体

浅析Python中的列表和元组

王坤祥

Python python升级

架构优化与业务迭代,你会怎么选?

架构精进之路

软件开发

如何理解Python中的可迭代对象、迭代器和生成器

王坤祥

Python python升级

浅谈技术管理者的角色认知与自我管理

大黄蜂

团队管理 管理 自我管理 技术管理

流量明星翻车的“直播卖房”,为什么众盟做成了?

脑极体

害怕

shengjk1

随笔杂谈

每个大火的“线上狼人杀”平台,都离不开这个新功能

ZEGO即构

游戏 RTC 社交

网站域名备案怎么做?有哪些快速备案的方法?

姜奋斗

网站 备案 网站搭建 域名解析 网站平台

一文搞懂Flink rocksdb中的数据恢复

shengjk1

大数据 flink源码

美丑平等

shengjk1

随笔杂谈

大厂需要你的简历有这些内容!

我是程序员小贱

简述Python中变量作用域的规则

王坤祥

Python python升级 Python基础

Kafka和RocketMQ底层存储之那些你不知道的事

yes

kafka RocketMQ 零拷贝 Mmap

非科班面试阿里,拼多多,银行都问了些啥?

我是程序员小贱

重点发布!河北行动计划发布!聚焦7大重点任务发展大数据产业

CECBC

区块链技术 落地应用 政策

如何做好技术选型

xcbeyond

Java 架构 最佳实践 技术选型

简谈Python3关键字nonlocal使用场景

王坤祥

Python Python基础

  • 需要帮助,请添加网站小助手,进入 InfoQ 技术交流群
雅虎个性化推荐引擎的工程实践_大数据_唐蓉_InfoQ精选文章