在2016杭州云栖大会的“开源大数据技术专场”上,梨视频大数据负责人杨智带来了《基于E-MapReduce梨视频推荐系统》的精彩分享。分享中,他重点介绍了梨视频中基于阿里云的数据处理系统和梨视频推荐系统,精彩不容错过。
以下内容根据演讲PPT及现场分享整理。
梨视频简介
梨视频是中国领先的资讯类短视频生产者,由资深媒体背景的专业团队和遍布全球的拍客网络共同创造,专注为年青一代提供适合移动端观看和分享的短视频产品。
梨视频是跨平台的、开放的新媒体公司,其视频业务覆盖多个领域,经过深度编辑的聚合内容和独家的原创报道,与创新技术和工具结合后,为移动互联网时代的视频生产和消费提供了新标准。
基于阿里云的数据处理系统
下面来介绍一下梨视频采用阿里云搭建的数据处理系统。对梨视频应用而言,数据的来源分为两方面:一方面是用户在终端的使用痕迹;另一方面是在应用上投放的内容,例如视频的标签、属性等。
日志收集
获取用户数据的最简单的办法是进行用户日志收集。首先在客户端进行日志压缩(节省流量),定时上传日志;日志上传后会推到日志收集服务中,这里梨视频采用阿里云的ECS搭建了一套Nginx日志收集服务器;之后利用阿里云提供的组件Logtail将日志推送到Log Store上;Log Store是一站式日志收集服务系统,通过配置、过滤将所需的日志推送到目标区域,它提供了两种消费途径:一是通过阿里云EMR中的Spark Streaming消费Log Store中的日志,进行实时分析、统计;二是将日志推送到阿里云OSS上永久备份,以供后期使用。
基础数据中心
日志收集之后,需要对数据进行处理。梨视频以EMR为中心,构建了大数据处理中心。产品上所有基础数据都会进入EMR,并依托EMR进行任务管理,数据存储;后台服务器产生的日志、业务上的数据都将定时推送到集群中进行分析;数据分析之后,有两个输出方向:统计结果等数据会存放到MySQL中,供业务系统查询使用;实时反馈的数据会存入Redis中,以供推荐引擎等实时使用。
数据层面,梨视频对数据进行了分层:最底层的数据是推送到集群上的日志以及推送到集群上的业务数据表等;基于数据表构建了一层基于场景的数据,例如用户观看了某个视频,该视频的详细信息都会存放在场景的数据表中;之后再进行一些宽表的统计,如某个视频的点击量,播放时长等信息。宽表又分为内容维度宽表和用户维度宽表,业务开发人员无需关心底层数据的存储和日志逻辑,只需要查看宽表即可获得想要的数据,实现了业务开发人员和底层数据的隔离。
上图是梨视频内的日志和数据处理数据流图。图中左上角是日志推送部分,浅蓝色部分代表不同类型的日志,如APP端、服务端等 ,将日志推动到Log Store中;之后通过两种方式消费日志:一是直接推送到OSS中;二是推送到EMR Spark Streaming中,用于统计、实时分析、搜索等。图中右上角是业务数据推送部分,各类业务表推送到集群中进行分析、存储等。
梨视频推荐系统
梨视频推荐系统主要由三部分组成:Online、Near Online、Offline。该推荐系统是基于阿里云提供的组件搭建而成,主要涉及了LogStore、EMR、Redis、RDS等。
下面来具体看一下每部分的工作方式。
Online:召回和排序
Online主要用于相应用户请求,其中主要包含两大功能:召回和排序。Online部分是采用两个模块实现的:底层是基础搜索模块,主要完成的是工作是构建索引,依据基础排序模型排序;上层是高级搜索模块,通过响应上层请求,获取用户画像数据,如用户ID,标签,根据请求,将画像数据转化为召回条件。高级搜索模块将召回条件下发到基础搜索模块,基础搜索模块会提供与这才召回条件相关的内容,返回给高级搜索模块。高级搜索模块获得召回结果后,对其进行排序,通常会根据语义模型排序、效果排序以及规则排序(保证多样性)。
Near Online:实时反馈系统
Near Online部分利用EMR中Spark Streaming实时消费日志搜集系统Log Store中的日志,分析的内容分为两个部分:一是用户24小时内兴趣分布的状况,24小时以前的数据通过离线的方式按天反馈到线上,用户24小时之内的内容通过实时的方式反馈,构建成用户兴趣分布图;二是用户24小时看过和不喜欢的内容会在三到五秒内反馈给模型,下一次推荐时不再出现该类内容。
Offline:用户兴趣画像
用户画像是推荐系统中的重中之重,推荐系统可以根据用户画像给用户推荐其可能感兴趣的内容。新闻趋势和其他领域略有不同,它是随着时间、事件不断变化的,如八月份的奥运会、目前的美国大选等。那么该如何把握新闻的趋势呢?一是根据自身发布的内容,在某一趋势到来时,发布的内容必然会偏向该趋势;二是整站的用户表现,多数用户会关注目前最火的新闻,两者相综合,既可以形成新闻趋势。另外一点是个人长期兴趣,比如长期关注娱乐、体育版块,通过分析用户长期在整站的行为,形成用户长期兴趣分布。新闻趋势和个人长期兴趣通过贝叶斯模型,整体再结合时间的分布构建出用户长期兴趣模型(即用户画像)。
在Offline部分,还需要对内容进行质量评估。之所以对内容进行评估,是因为在基础搜索模块需要对内容进行排序。目前,梨视频引进了基于人类记忆遗忘模型对质量进行评估,该模型遵循具有以下三个原则:
- 时效性强的内容,热度分衰减更快;
- 时效性弱的内容,热度分衰减慢;
- 最近发布的内容较历史稿件更有优势,更容易被用户发现。
计算机领域会有一些策略存在,进而会涉及到优化问题;而优化的前提是必须明确现状,明确现状则就需要对现状进行评估。这里主要介绍下单用户实时评估和多用户批量评估。单用户实时评估,梨视频是通过自研系统,只需要输入用户ID等信息,就可以在后台看到用户最近的行为、模型建模之后的情况以及系统对应推荐的内容,可以一目了然地看到推荐内容是否和用户相匹配。多用户批量评估所关注的是给所有用户推荐的内容是否存在偏差,例如想了解内容发布时是不是全部是社会相关信息,可以通过批量查看用户的分类、属性进行判断。
整个推荐系统由两个闭环组成:实时闭环;离线闭环。实时闭环是指用户的操作3到5秒内可以反馈到Spark Streaming中,之后再快速推到线上,使其能够快速影响到下一次推荐结果。离线闭环是指日志会推到OSS中,每天对日志进行建模后再推到线上,第二天再回到数据中形成闭环。离线闭环和实时闭环配合实时评估和实验评估实现推荐系统整体可控,研发人员可以有的放矢地优化推荐结果。
总结
最后简单进行一下总结,梨视频整体架构主要由数据处理系统和推荐系统构成:
- 数据处理系统方面,首先需要进行日志收集,在客户端压缩传输,基于阿里云组件搭建日志搜集系统;同时以EMR为中心构建数据处理中心;此外,对数据进行逻辑分层,基础数据全面支撑业务需求。
- 推荐系统方面,召回模块按照兴趣召回候选集合;排序模块可根据需求和目标进行调整和融合;通过用户行为实时反馈提升用户体验;根据新闻趋势和个人长期兴趣建立用户画像;此外,引进基于人类记忆遗忘模型建模内容基础质量打分体系;通过评估系统让整体推荐系统变得可控。