基于用户画像的实时异步化视频推荐系统

前言
这个月做的事情还是蛮多的。上线了一个百台规模的ES集群,还设计开发了一套实时推荐系统。 标题有点长,其实是为了突出该推荐系统的三个亮点,一个是实时,一个是基于用户画像去做的,一个是异步化。

实时主要体现在三个层面:
1.用户画像中的的短期兴趣模型实时构建。

也就是你看完一个视频,这个视频几秒内就影响了你的短期兴趣模型,并且反应到你下次的推荐中。

2.候选集实时变更。
在我设计的推荐系统中,候选集的概念是不同类型的待推荐给用户的视频库,一个用户并不能看到某个候选集的全部,而是能够看到经过匹配算法处理完后的候选集的一部分。 候选集的更新周期直接影响用户能够看到的视频的实时性。候选集可以有很多,通过不同的候选集解决不同的推荐场景问题。比如结合最新候选集和最近N小时最热候选集,我们可以做到类似今日头条的推荐效果。新内容候选集的产生基本就是实时的,而最近N小时热门视频候选集则可能是分钟级别就可以得到更新。还有比如协同就可以做视频的相关推荐,而热门候选集则可以从大家都关心的内容里进一步筛出用户喜欢的内容。

3.推荐效果指标的实时呈现。
上线后你看到的一些比较关键的指标例如点击转化率,都可以在分钟级别得到更新。推荐系统有个比较特殊的地方,就是好不好不是某个人说了算,而是通过一些指标来衡量的。比如点击转化率。

用户画像和视频画像
用户画像则体现在兴趣模型上。通过构建用户的长期兴趣模型和短期兴趣模型可以很好的满足用户兴趣爱好以及在用户会话期间的需求。做推荐的方式可以很多,比如协同,比如各种小trick,而基于用户画像和视频画像,起步难度会较大,但是从长远角度可以促进团队对用户和视频的了解,并且能够支撑推荐以外的业务。

异步化
推荐的计算由用户刷新行为触发,然后将用户信息异步发送到Kafka,接着Spark Streaming程序会消费并且将候选集和用户进行匹配计算,计算结果会发送到Redis 的用户私有队列。接口服务只负责取推荐数据和发送用户刷新动作。新用户或者很久没有过来的用户,它的私有队列可能已经过期,这个时候异步会产生问题。前端接口一旦发现这个问题,有两种解决方案:

  1. 会发送一个特殊的消息(后端接的是Storm集群), 接着hold住,等待异步计算结果
  2. 自己获取用户兴趣标签,会按一定的规则分别找协同,然后到ES检索,填充私有队列,并迅速给出结果。(我们采用的方案)

除了新用户,这种情况总体是少数。大部分计算都会被异步计算cover住。

流式技术对推荐系统的影响
我之前写了很多文章鼓吹流式技术,最露骨的比如 数据天生就是流式的。 当然主要和我这一两年部门的工作主体是构建
流式流水线(Pipline),解决实时日志计费等相关问题。流式计算对推荐系统的影响很大,可以完全实现

在推荐系统中,除了接口服务外,其他所有计算相关的,包括但不限于:

  1. 新内容预处理,如标签化,存储到多个存储器
  2. 用户画像构建 如短期兴趣模型
  3. 新热数据候选集
  4. 短期协同
  5. 推荐效果评估指标如点击转化率

这些流程都是采用Spark Streaming来完成。对于长期协同(一天以上的数据),用户长期兴趣模型等,则是采用Spark 批处理。因为采用了StreamingPro这个项目,可以做到所有计算流程配置化,你看到的就是一堆的描述文件,这些描述文件构成了整个推荐系统的核心计算流程。

这里还值得提的三点是:

  1. 推荐效果评估,我们采用Spark Streaming + ElasticSearch的方案。也就是Spark Streaming 对上报的曝光点击数据进行预处理后存储到ES,然后ES提供查询接口供BI报表使用。这样避免预先计算指标导致很多指标实现没有考虑到而不断变更流式计算程序。
  2. 复用现有的大数据基础设施。整个推荐系统只有对外提供API的服务是需要单独部署的,其他所有计算都使用Spark跑在Hadoop集群上。
  3. 所有计算周期和计算资源都是可以方便调整的,甚至可以动态调整(Spark Dynamic Resource Allocatioin)。这点非常重要,我完全可以放弃一定的实时性来节省资源或者在闲暇时让出更多资源给离线任务。当然这些都益于Spark 的支持。

推荐系统的体系结构
整个推荐系统的结构如图:

看起来还是挺简单的。分布式流计算主要负责了五块:

  1. 点击曝光等上报数据处理
  2. 新视频标签化
  3. 短期兴趣模型计算
  4. 用户推荐
  5. 候选集计算,如最新,最热(任意时间段)

存储采用的有:

  1. Codis (用户推荐列表)
  2. HBase (用户画像和视频画像)
  3. Parquet(HDFS) (归档数据)
  4. ElasticSearch (HBase的副本)

下面这张图则是对流式计算那块的一个细化:

用户上报采用的技术方案:

  1. Nginx
  2. Flume (收集Nginx日志)
  3. Kafka (接收Flume的上报)

对于第三方内容(全网),我们自己开发了一个采集系统。

个性化推荐示

所有候选集都是实时更新的。

这里我们说下参数配置服务器的概念。

假设我有三个算法A,B,C ,他们分别由三个流式程序完成,各个程序是互相独立的,最后都会算出各自的结果集。因为不同候选集和算法算出的内容数据量和频度都会有差异,假设A算出的结果集过大,B算出的结果集很小,但是质量很好,这个时候他们在发送到用户推荐队列的时候,需要将自己的情况提交给参数配置服务器,并且由参数服务器决定最后能够发送到队列的量。参数服务器也可以控制对应频度。比如A算法距离上次推荐结果才10s就有新的要推荐了,参数服务器可以拒绝他的内容写入到用户推荐队列。

上面是一种多算法流程的控制。其实还有一种,就是我希望A,B的结果让一个新的算法K来决定混合的规则,因为所有算法都是StreamingPro中的一个可配置模块,这个时候A,B,K 会被放到一个Spark Streaming应用中。K可以周期性调用A,B进行计算,并且混合结果,最后通过参数服配置服务器的授权写入到用户推荐队列。

一些感悟
我14,15年做的一次推荐系统,那个时候还没有流式计算的理念,而且也不能复用一些已有的技术体系,导致系统过于复杂,产品化也会比较困难。而且推荐的效果也只能隔日看到,导致效果改良的周期非常长。当时整个开发周期超过了一个多月。然而现在基于StreamingPro,两三人没人么天只能投入两三小时,仅仅用了两个礼拜就开发出来了。后续就是对用户画像和视频画像的进一步深入探索,核心是构建出标签体系,然后将这些标签打到用户和视频身上。我们组合了LDA,贝叶斯等多种算法,获得不少有益的经验。

时间: 2024-08-05 15:45:40

基于用户画像的实时异步化视频推荐系统的相关文章

专注年轻一代,基于E-MapReduce梨视频推荐系统

在2016杭州云栖大会的"开源大数据技术专场"上,梨视频大数据负责人杨智带来了<基于E-MapReduce梨视频推荐系统>的精彩分享.分享中,他重点介绍了梨视频中基于阿里云的数据处理系统和梨视频推荐系统,精彩不容错过. 以下内容根据演讲PPT及现场分享整理. 梨视频简介 梨视频是中国领先的资讯类短视频生产者,由资深媒体背景的专业团队和遍布全球的拍客网络共同创造,专注为年青一代提供适合移动端观看和分享的短视频产品. 梨视频是跨平台的.开放的新媒体公司,其视频业务覆盖多个领域,

在腾讯的第二堂产品课,细分用户画像+揭秘科技巨头们的公司名字由来:Googol原来代表10的100次方

<昆仑>里,梁萧问阿拉伯数学家,为什么要研究数学. 数学家回答:为了改变大河的流向,建造不朽的房屋. 腾讯推出的每一个产品,都是为了改变一条大河的流向. QQ是一条大河,微信是一条大河,百度是一条大河,百度贴吧也是一条大河--大河所过,形成自己的生态,巩固自己的水土. 大河之间,小河水也欢快地流淌. 看新闻.看菜谱.听音乐.看视频.订机票.买螃蟹.聊八卦.找掐架--互联网上江河纵横,6亿网民各得其所,形成了互联网的滚滚流量. 互联网创业,就是挖条自己的沟,抢夺别的江河的流量,形成自己的河流与生

大数据在京东用户画像技术曝光

为什么要做用户画像? 一方面是海量信息的汇集,京东是一家大型全品类综合电商,海量商品和消费者产生了从网站前端浏览.搜索.评价.交易到网站后端支付.收货.客服等多维度全覆盖的数据体系,另一方面日益复杂的业务场景和逻辑使得信息的处理挖掘日益重要:也就是说,京东已经形成一个储量丰富.品位上乘且增量巨大的数据金矿,但是在相当长一段时间,很多业务童鞋经常面对宝山空回的局面,比如我们的数据"疯析狮"和"攻城狮"被业务童鞋反复追问,为什么我的促销活动做了这么久,力度也挺大,就是没

基于 阿里云 RDS PostgreSQL 打造实时用户画像推荐系统

标签 PostgreSQL , 实时推荐系统 , 用户画像 , 标签 , TAG , 比特位 背景 用户画像在市场营销的应用重建中非常常见,已经不是什么新鲜的东西,比较流行的解决方案是给用户贴标签,根据标签的组合,圈出需要的用户. 通常画像系统会用到宽表,以及分布式的系统. 宽表的作用是存储标签,例如每列代表一个标签. 但实际上这种设计不一定是最优或唯一的设计,本文将以PostgreSQL数据库为基础,给大家讲解一下更加另类的设计思路,并且看看效率如何. 业务场景模拟 假设有一个2B的实时用户推

如何实现基于内容和用户画像的个性化推荐

基于内容和用户画像的个性化推荐,有两个实体:内容和用户.需要有一个联系这两者的东西,即为标签.内容转换为标签即为内容特征化,用户则称为用户特征化. 因此,对于此种推荐,主要分为以下几个关键部分: 标签库 内容特征化 用户特征化 隐语义推荐 综合上面讲述的各个部分即可实现一个基于内容和用户画像的个性化推荐系统.如下图所示: 标签库 标签是联系用户与物品.内容以及物品.内容之间的纽带,也是反应用户兴趣的重要数据源.标签库的最终用途在于对用户进行行为.属性标记.是将其他实体转换为计算机可以理解的语言关

基于HTML5技术,爱奇艺率先推出视频行业首个Web App化视频观看站点

用户无需安装任何应用程序,登录m.iqiyi.com,即可在手机网页端享受高清流畅的客户端式观影体验."就像90年代互联网的发展一样,移动端也需要从App为王逐渐向网页和App彼此平衡,特别是在当前版权内容仍处于相对分散阶段的中国视频行业,提升视频网页在移动设备上的用户体验,将成为视频移动领域下一个技术焦点."爱奇艺副总裁杨向华表示. 与用户下载安装到本地的爱奇艺影视客户端相比,爱奇艺移动端网页(m.iqiyi.com)在界面设计和内容展现上都采用了更适合手机浏览器观看的UI设计,同时

基于大数据技术的手机用户画像与征信研究

内容提要:手机用户画像是电信运营商实现"数据驱动业务与运营"的重要举措.首先,介绍了手机用户画像过程中对个人隐私保护的方法,然后分析手机用户画像的数据来源与大数据实现技术,最后,通过数据样本实例分析手机用户画像在个人征信中的应用. 引言 随着计算机网络技术的不断发展,"数据即资源"的大数据时代已经来临.用户画像是电信运营商为了避免管道化风险,实现"数据驱动业务与运营"的重要举措.用户画像与应用大数据技术对客户分类密切相关,是单个客户的众多属性标签

视频-基于UDP的h264实时裸流播放

问题描述 基于UDP的h264实时裸流播放 本人想用<最简单的基于FFmpeg的解码器-纯净版>该项目中的解码器直接解码socket到的h264裸流,请问可以吗???该项目是解码本地文件视频的一个简单的播放器,可解码h264裸流.我想把socket到的裸流直接喂给里面的解码器. 解决方案 http://blog.csdn.net/wxl1986622/article/details/37835935

梨视频:基于阿里云E-MapReduce搭建视频推荐系统的实践

   (来源:C资讯)     专注新闻资讯的梨视频近来表现亮眼.   梨视频由前澎湃新闻掌门人邱兵创立.   在上线之前,它就获得了黎瑞刚华人文化近1亿美元投资,旗下<微辣>栏目总播放量已经超过4亿,并在上线1个月后获得"年度视频新媒体"大奖.   这样一款脱胎于传统媒体的创业型短视频软件,在视频领域异军突起,不仅让内人士在感叹梨视频内容生产力之强大的同时,也诧异于是谁在为梨视频的庞大用户体量提供技术支撑.保证视频流畅?   今天就和大家分享梨视频如何基于阿里云快速搭建一