目录

抖音推荐的背后原理大数据推荐

抖音推荐的背后原理——大数据+推荐

抖音推荐的背后原理——大数据+推荐

大数据作为当前热门的话题,在软件开发与人工智能领域的敲门砖,各大厂都需要接触过大数据应用项目的人才。本文以大数据处理为出发点,浅层地讲述抖音推荐的背后原理。

关键词:大数据、推荐系统、关系图谱、数据中台、联邦学习

什么是大数据?

大数据具备5V特性分别是:

(1) Volume :数据量大,包括采集、存储和计算的量都非常大。大数据的起始计量单位至少是P(1000个T)、E(100万个T)或Z(10亿个T)。

(2) Variety :种类和来源多样化。包括结构化、半结构化和非结构化数据,具体表现为网络日志、音频、视频、图片、地理位置信息等等,多类型的数据对数据的处理能力提出了更高的要求。

(3) Value :数据价值密度相对较低,或者说是浪里淘沙却又弥足珍贵。随着互联网以及物联网的广泛应用,信息感知无处不在,信息海量,但价值密度较低,如何结合业务逻辑并通过强大的机器算法来挖掘数据价值,是大数据时代最需要解决的问题。

(4) Velocity :数据增长速度快,处理速度也快,时效性要求高。比如搜索引擎要求几分钟前的新闻能够被用户查询到,个性化推荐算法尽可能要求实时完成推荐。这是大数据区别于传统数据挖掘的显著特征。

(5) Veracity :数据的准确性和可信赖度,即数据的质量。

简单的讲,大数据的目标是从 海量数据中进行采集、存储和分析 。现如今诸多应用涉及到大数据,例如医疗大数据、金融大数据、零售大数据、电商大数据、智慧城市等。

最直观的描述,今年疫情爆发,除了医疗发展外,更多的是数据资源的打通,政府部门数据、各大运营商数据都得以打通,避免数据孤岛问题,也体现了大数据的作用。

大数据的处理通常不能是简单的数据库存储和查询,更多的是基于分布式文件系统和分布式计算两方面,从而做到数据的实时性、动态地采集、海量数据存储、海量数据分析(实时计算,流处理)等方面。

奇妙的抖音推荐

我们以抖音为例,我们在刷抖音视频时,经常会有如下几个感受:

  • 感觉抖音的每个短视频都正戳兴趣点,自己是越刷越上头,完全停不下来;
  • 刷抖音是感受不到时间流逝的——“明明我才刷了一小会,怎么时间就过去一个小时啦?”
  • 自己好像中了抖音的“毒”——工作之余,闲暇时间,总是心痒难耐想要打开抖音刷一刷;

事实上这是抖音的推荐系统起到的作用。我们知道推荐任务中,主要获取的是两方面的数据,一个是视频特征,一个是用户特征。对于用户来讲,抖音会实时的记录用户对某个视频的 点击播放停留关注评论点赞转发 等行为,并根据这些特征离线或实时的进行计算。

https://i-blog.csdnimg.cn/blog_migrate/cef0662b49fe10750b6435419bbec6dd.png#pic_center

抖音之所以能够让用户“越刷越上头”还在于其对推荐的改进,如图所示:

https://i-blog.csdnimg.cn/blog_migrate/0d86731340a1a452224200b50235a48c.png#pic_center

(1)当一个新用户上传一个视频时,首先由设计好的系统对视频进行自动打标签,获取视频的显式特征信息;

(2)其次将该视频先随机推荐给1万个用户(又称流量池);

(3)这些被推荐的用户根据其对这个新上传的视频进行相关交互(点击、播放、停留、关注、评论、点赞、转发等),根据交互的数据,来判断当前的视频质量如何(尤其是该视频的完播率如何, 完播率意指整个视频完整的被观看的次数占比),根据数据分析结果,决定是否进一步扩大推荐的范围;

(4)更优秀的视频会被推荐到更大的流量池,以获得更多的用户浏览量。

因此这套机制可以避免资源倾斜问题,即便是一些新用户(或使用小号),在上传的视频中,如果质量好,都有机会获得更多的浏览量,该推荐机制避免了系统偏向大号大V的问题。

另外,抖音推荐还会涉及到对社交网络的挖掘。在基于内容给的推荐时,根据用户关注的主播,或已查看相关主播的多个视频时,可根据该主播的其他粉丝的兴趣来进行推荐,这一部分则可以涉及到 社交关系知识图谱 ,以此发现更多新的视频。这也就是说,当你在持续刷抖音时,总会发现一些新的感兴趣的视频。

大数据下的推荐技术生态圈

类似抖音,还有天猫淘宝这样的大数据背景下的推荐系统,对大数据的开发主要包括四个核心流程:

(1) 实时数据采集 :尤其是用户的行为数据,这些数据都是实时的产生;

(2) 海量数据存储 :分布式存储(分布式文件系统),不能简单使用单机来存储,面对庞大的不间断数据,必须实现设计分布式存储与文件系统;

(3) 海量数据挖掘 :能够离线、实时对数据进行计算,可使用机器学习、深度学习算法完成;

(4) 数据可视化 :前端渲染工具,实时动态显示数据的指标等;

通常更加关注的是前3个部分,因为钱3个部分主要涉及到底层系统的设计。特别说明的是,学习推荐系统不能只了解推荐算法,尤其是现如今深度学习的模型日益激增,只关注模型并不能真正解决应用场景潜在的问题,因此需要回归需求、以及对大数据处理的能力。

https://i-blog.csdnimg.cn/blog_migrate/f1ce4f3663a6a006ea9cd1ad402168aa.png#pic_center

大数据生态圈核心框架:
  • Sqoop:数据抽取工具:
  • Elasticsearch(ES):搜索引擎,索引工具
  • HDFS
  • YARN:分布式资源管理
  • MapReduce
  • Tez
  • storm
  • Spark常用 (离线,伪实时)
  • Flink常用,最新的框架 (淘宝天猫实时大屏),既可以离线运算,也可以实时运算
  • Hive 大公司常用
  • Impala
  • Druid
  • Kylin
  • 作业调度Azkaban/Oozie
  • 数据库HBase(列式nosql数据库)、Redis(内存数据库)、Kudu(列式nosql数据库)
  • 分布式协调(底层服务)Zookeeper
  • kafka(消息队列):数据采集后存储到消息队列中。对数据进行缓冲

总的来说:推荐系统离不开大数据底层系统,离不开具体应用场景下的算法设计,更离不开用户行为数据的支撑。

对于大数据底层系统,现如今各大厂常用的底层工具包括

(1)数据采集:Flume,FileBeat

(2)数据存储:HDFS、Redis、Kafka

(3)数据计算:MapReduce(离线数据计算),Yarn资源管理,Hive、Spark、Flink

(4)辅助工具:Zookeeper、Sqoop、Azkaban(任务调度)

https://i-blog.csdnimg.cn/blog_migrate/46e882d04b9595a1531552554c81244b.png#pic_center

对于算法,要结合实际的应用场景 ,例如对于抖音推荐,目标是为了使得推荐的视频能够更加符合用户的兴趣,因此其优化目标是 完播率 ;而对于一些广告服务的平台,例如爱奇艺视频附带的广告,其优化目标则是最大化广告的 点击率(CTR) ,从而获得更多的广告服务费;而对于淘宝天猫等电商,其优化目标则是兼顾用户是否查看某个商品的 点击率(CTR) ,以及是否会产生购买行为的 转化率(CVR) 。因此对于算法的设计,需要结合实际的优化目标。常用的推荐算法有:

(1)基于协同过滤的推荐,包括基于用户和基于内容两个部分;

(2)基于矩阵分解或因子分解机的推荐;

(3)基于逻辑回归、集成学习等机器学习方法;

(4)基于Embedding和相似度匹配的推荐;

(5)基于深度学习的推荐

现如今常部署在大数据底层系统上的算法以机器学习或简单的深度学习模型为主,因此大多数领域内,推荐系统不仅在乎准确率,更在乎其实时性,因此部署的模型参数不宜过多。

用户的交互数据通常是支撑大数据和推荐的关键,没有用户交互行为数据,无法谈得上推荐,因此如何构建并提取用户行为在学术界和工业界非常关心的问题,通常对用户的数据采集可以包括一些 显式交互数据 (包括点击、转发、购买等)和 隐式交互数据 (包括播放时长,停留时长、社交关系等)。可以通过客户端session对数据的实时获取并保存在数据库中。

推荐系统的未来趋势

现如今各大平台之间数据不流通的问题,是制约推荐系统的发展。例如一个用户间断性的在抖音和微视上看视频,使得两个平台的用户行为是间断性的,然而多个平台之间的数据通常由于商业竞争原因而无法公开,从而影响推荐的性能,使得对用户画像的构建不完善,因此突破此屏障的最新方法是基于数据中台和基于联邦学习的框架体系:

(1) 数据中台 :缓解数据孤岛,将多个平台的数据汇总在一起,并可实现数据复用与共享;但这通常需要多个公司之间满足一定的协议。在数据中台的基础上,实现大数据挖掘和推荐,可以进一步提高收益;

(2) 联邦学习 :联邦学习是近两年比较火的概念,其主要解决的就是各大企业之间不愿意公开数据,而使得模型无法充分学习到用户的行为特征的问题。如果利用联邦学习,各个公司的数据无须汇总到一个中心结点,而只需要一定的联邦算法,让模型分布式地进行学习,既可以充分利用各个平台的数据,又可以保证数据的隐私性和安全性。

参考资料:

【1】

【2】

【3】

【4】