写点什么

日均亿次广告投放的FreeWheel如何实践机器学习?

2018 年 12 月 29 日

日均亿次广告投放的FreeWheel如何实践机器学习?

AI 前线导读:FreeWheel 创建于 2007 年,总部位于美国硅谷,作为一家提供互联网视频广告投放、监测、预测、增值等解决方案的 IT 公司,其已为 CBS、Warner Brothers、Turner、Discovery 等公司提供服务,日均广告投放已超过上亿次,并且这个数字仍在快速增长。


随着业务的迅猛扩增,机器学习技术也成了 FreeWheel 技术团队的选择。尤其在预测网站视频的流量上,机器学习可以大幅提升预测的精准度。对于视频网站来说,更加精准的视频流量预测可以更好地帮助客户进行库存计划、广告售卖、风险控制等,从而增加收益,达到双赢。


更多优质内容请关注微信公众号“AI 前线”(ID:ai-front)


为了揭开与这项技术相关的探索和实践,InfoQ 采访到了 FreeWheel 北京研发中心的一支技术团队,从而为更多读者讲述利用机器学习预测视频网站流量背后的故事。图一为他们的系统示意图。


图一 系统示意图


图一 系统示意图


项目背景


机器学习现在已经在广告行业有了十分广泛的应用,特别是被用在预测视频网站流量上。在采访的开始,FreeWheel 的研发人员叶博睿为我们简单阐述了这一技术解决方案的痛点。


FreeWheel 的客户大多拥有大量高品质的内容,诸如:直播体育赛事、美剧、电影等。由于这些内容大多是在固定时段播出,其流量会呈现出一定的周期性,但多方面因素的存在导致这种周期性并非严格。


比如,美剧《摩登家庭》在每年的九月底更新一季,那么在这个时期的视频流量就会上涨,不过并非每年九月份的观看量都一模一样。通常,非机器学习的传统流量预测方法会有以下三个痛点:


(1)基于采样的预测方法难以捕捉周期性信息,从而预测精度会低;


(2)不同的客户拥有很多不同的视频,这个量级多达百万,而每个视频的周期却不尽相同,如果对每个不同的视频人工处理无疑是非常困难的;


(3)数据不具有严格的周期性,使得传统统计模型 ARMA、ARIMA 难以得到满意的结果。


此外,研发人员表示,对于很多客户来说,他们的季节性赛事流量难以用算法预测,只能自己手工调整,这给运营带来了很多压力。如果手工预测的结果不好,还会影响广告的售卖等。


为了解决以上问题,FreeWheel 采用了机器学习的方法去自动判别一个视频的流量是否有周期性,并且从历史数据中提取周期特征进行流量预测。


团队是从 2017 年开始这一项目的。在此之前,团队进行过很多其他非机器学习的尝试,比如使用采样方法来预测,效果并不理想。在深入理解和分析了客户的业务场景和数据特点后,团队提出了用机器学习来解决的想法。


2017 年上半年,团队经过反复实验,确定了视频流量季节性判定算法和流量预测算法。在上线之后改进了算法效果评估准则、新增视频分类算法;下半年,团队优化了预测逻辑,客户也从最初的 2 个增长到 11 个。


2018 年,团队开始尝试基于深度学习的一系列方法,其中包括基于卷积神经网络(Convolutional Neural Networks)的季节性判定算法和基于循环神经网络(Recurrent Neural Networks)的序列到序列(sequence-to-sequence)模型的流量预测算法。据介绍,这些工作还在持续的进行当中。


发展至今,这一项目已取得了不错的成果。我们了解到,目前,FreeWheel 主要客户 60% 的流量预测都已迁移到了该解决方案且运行稳定,并得到了客户的积极反馈。有些客户还专门发来邮件致谢,例如 Channel 4 就曾说:“We can see dips in forecast results when we expect to see dips. Thank you for your hard work!”


下面展示他们部分线上预测结果图:



其中,绿色线为客户的实际流量,蓝色线为机器学习算法预测出的流量,红色线为采样预测的流量。可以看到机器学习算法的预测结果和实际流量贴合地非常好。


利用机器学习,团队已经解决了前文中提到的痛点,新的算法已经可以准确捕捉季节性信息,适配不同的客户,并且极大地降低各方面的运营成本等。


技术选型


在技术实现上,流量预测存在很多具体的技术难点。而机器学习可以很好地解决这些难点:


(1)判定一个序列是否存在周期性。网站视频流量的一个非常大的特点就是噪音很大且不是平稳时间序列,用传统统计的方法来抽取出周期性会非常困难。使用机器学习的方法,可以合理提取网站视频流量的特征,比较视频流量模型每年的相似程度,从而判定视频流量是否存在周期性。


(2)通过周期性特征和趋势特征合理预测流量。机器学习的方法可以通过提取上一个周期的流量和最近的流量作为特征进行训练,从而预测未来几天的流量信息。


(3)对不同的客户使用不同的模型预测流量。因为不同客户之间的流量规模和分布差距比较大,使用传统方法会非常困难。而机器学习的方法可以为每个客户分别训练一个模型,速度快且没有人工成本。


(4)建立数据长度容忍度更高的模型。对于周期性不强或者数据长度不够但仍然有趋势特征的视频流量序列,可以使用神经网络这种对周期性和数据长度没有那么敏感的模型。


(5)预测结果的可解释性。业务所用的算法,能够通过数据判断出哪些历史日期对于今天的流量预测更有意义,从而在客户对预测结果有疑问时,从算法层面给予更合理、更精准的解释。


具体的技术实现可分为这样三个阶段:


1. 前期准备


首先需要了解业务逻辑和客户需求,判断是不是机器学习可解的问题。这个问题的业务特点是通过用户的历史流量去预测未来流量,这种基于数据的预测问题正是机器学习非常擅长的。


其次是了解客户的数据特点。体育赛事视频、美剧、电影的视频观看量数据每天更新,可以看作是一个基于天的时间序列预测问题。这个时间序列的特点在于:


(1)不同客户的不同视频,观看量规模不同;


(2)视频观看量时间序列呈现周期性变化,但不是严格的周期性。


此外,还需要了解用户的需求。用户的流量数据每天都会更新,研发需要每天吸收新的数据,做更准确的预测。最后,根据用户的数据特点和需求,选取合适的数据预处理方案和机器学习算法。


2. 中期实现


由于客户的视频量十分巨大,一个客户可以有百万甚至千万级别的视频,因此机器学习算法训练的压力十分大。


对于线性回归来说,拟合数据往往需要数小时乃至数天的时间。如果需要每天吸收来自客户的新的数据并且及时作出更新的预测,这个开销无疑是无法接受的。于是,在预处理阶段,他们的研发团队将类似的视频的流量合在一起做训练和预测,最后通过加权的方法分配流量。


根据不同客户的特点,他们使用了很多不同的分类方法。比如将《摩登家庭》十个季度、NBA 体育赛事视频分别聚类在一起等。研发人员说,这样的做法还有一个好处:有的时候单一的视频流量并没有呈现周期性变化,但是累加在一起就有周期性变化了。比如将《摩登家庭》十个季度的观看量加在一起,就会呈现出一个十年的按一年为周期的规律性变化的时间序列,对于流量预测有很大的好处。


然而,如果基于过去几年的流量进行预测,直接将几千维的特征输入回归算法中训练,速度会非常慢,也无法达到客户的要求。并且,这几千维特征也会让机器学习算法难以找到关键性信息从而作出有效的预测。这时候就要求研发人员正确地对数据进行降维,并且保留周期性信息。


FreeWheel 的研发人员选择抽取以往每年、每月、每周在需要预测的这天的流量信息,成功将特征维度降低到一百维以下。这样就可以在保证准确度的情况下快速进行训练和分类。在线上,可以仅用一个小时左右的时间完成对一个客户所有视频数据的训练。


对于新来的没有历史流量的视频,如何预测呢?研发人员告诉我们,在预处理中,会把相似的视频分类到同一个视频组中,再分配一个默认的权值去分担在视频组中预测的流量。


另外,一些没有任何周期性特点的短视频又该如何处理?在 FreeWheel 的视频分类算法中,有一种按视频长度分类的方法。短视频虽然没有周期性特点,但是有用户喜欢看某类的短视频,如果将这些流量相加,就会呈现一定周期性了。


通过对不同视频的分类,再应用上合适的机器学习模型,对视频流量精准度的预测自然而然地有了大幅度提升,当然这还不是完整的流程。


3.后期运维及注意事项


后期运维主要在于接收新客户,对客户的数据特点进行评估看能否与预测系统适配,有些客户会对他们特别关注的视频有一些需求,算法也会相应地进行一些微调。


技术方案特点


据了解,国内外很多大型的视频网站都会有自己的视频流量预测解决方案,在这样的情况下,FreeWheel 的解决方案有哪些特点和优势呢?


研发人员表示,通常的做法主要分两种:


第一种是自己实现算法在自己的视频流量上做预测。这么做的公司对自己的业务非常了解,会对于自己的情况做很多特殊的调整,需要大量的时间精力去维护。但是,他们的算法如果直接搬移到别的应用场景往往就不奏效了,或者效果不理想。


另外一种是提供一种通用的机器学习接口给需要的客户。数据清理、模型调参都需要客户自己去完成。这种方法其实并没有本质上解决问题,而是仍然把流量预测中需要专业人员处理的负担交给了客户。并且,由于业务关系,他们无法取得客户的数据内容,也无法积累机器学习经验。


因此,FreeWheel 的方式的优势主要有两个:


(1)普适性强。因为 FreeWheel 的预测服务供多家客户使用,而每个客户的流量规模和需求又不尽相同,所以同一套算法流程能够在多家客户中求同存异,从技术上讲具有普适性。在很多时候,他们的算法从一个客户迁移到另外一个客户上时往往只是改一个配置的事情,并不会要求客户去承担处理数据和调整模型的压力。


(2)数据种类丰富。FreeWheel 的客户多来自新闻、体育、电视节目等行业,这也使得其系统囊括了多种多样的数据,包括视频文本、视频流量、视频属性等。这些数据是很多其他公司所没有的,而数据充足这一点对于公司的机器学习技术积累来说是一项重大利好。


为了提升视频流量预测的精度,FreeWheel 在已有的技术优势和特点上,还进行了改善与提升。主要基于以下三个方面:


(1)视频聚类算法。当客户提供了人工的视频分类列表,团队需要在此基础上使用预测算法,以达到很高的准确性。预测算法的精度很大程度上取决于视频聚类算法的有效性。


目前,FreeWheel 使用最多的视频聚类算法是基于文本信息进行聚类。研发团队有一些内部的评价指标,比方用某种分类算法,有多少视频集合被成功地检测出周期性,以及最终的预测效果。由于不同的客户的视频情况不尽相同,单一的使用基于文本分类的方法是行不通的。对于每个客户,FreeWheel 会尝试很多不同的视频聚类算法,例如按时长聚类、按视频的属性聚类等,再使用内部的评价指标选取一个最好的聚类算法。


(2)周期性检测算法。周期性检测算法用来检测一个视频组的流量序列是否呈现周期性的变化。如果有,则用机器学习的方法进行预测;如果没有,则用传统的采样方法进行预测。


据介绍,这也是视频流量预测项目中十分重要的一环。如果将没有周期性或者周期性不明显的序列判定为周期性,会极大地影响预测算法的准确性;反之,如果将有周期性的序列判定为没有周期性,则会导致丢失用机器学习方法预测的机会。


对此,FreeWheel 通过不断调整周期性检测算法的阈值和数据压缩方法,人工查看其对于周期性 / 非周期性曲线的判定结果,找到最佳的参数,从而提高整体算法的准确性。


(3)预测算法。影响预测算法准确性的因素主要是预测算法的参数选择和特征抽取方法。目前,FreeWheel 提取的特征为每年的某一天、每月的某一天、每周的某一天。比如,需要预测 2018 年 11 月 18 日(周日)的流量,则会提取上周日,上上周日,…… 和 10 月 18 日,9 月 18 日,…… 2017 年 11 月 18 日,2016 年 11 月 18 日等的流量作为特征进行学习。然后,通过调整学习用到的参数获得最好的预测效果。


未来规划


在采访的最后,我们与这个团队交流了一些未来的规划与想法。


研发人员谢年韬告诉我们,团队目前使用的周期性检测算法仍然是基于传统机器学习的算法,而传统机器学习算法对于周期性检测不够灵活,且存在准确度方面的瓶颈。所以,他们正在尝试使用卷积神经网络(CNN)的方法来有效地压缩数据长度,并且从曲线相似度的视角进行判定。


其次,目前使用的预测算法基于已有数据的周期是年,需要客户有三年及以上的历史数据。也就是说,目前使用的算法对于数据长度是非常敏感的。对此,他们已经开始尝试使用循环神经网络(RNN)去训练数据,该方法对数据的长度没有要求,也不需要流量的周期必须以年为单位。


在基于深度学习的序列到序列(sequence-to-sequence)模型中,FreeWheel 的编码器(encoder)可以对人工设置的任意时间序列长度的流量数据进行编码操作,通过解码器(decoder)得到一个固定长度的流量预测序列,有更强的适应性和拟合能力。


对于未来,FreeWheel 也有一些期许:


(1)从现有的业务层面来看,运用更成熟的技术,通过使用对数据长度不那么敏感的算法,提升对于历史数据没有三年之久的情况的预测;


(2)在周期性检测环节和视频聚类环节上,使用效果更好的算法,达到更好的预测效果;


(3)在业务发展的层面来看,让项目的整个流程上更加灵活。因为不同客户的视频属性差别很大,他们不应该局限于在客户级别做预测,而是考虑不同维度特征的提取和融合。


受访团队简介


FreeWheel 本次受访团队主要负责包括网站视频流量预测(Seasonality)、视频广告事件概率预测(xTR)、流量异常检测(Anomaly Detection)、视频广告投放风险预测(FFDR)、竞价策略优化(Bidding Strategy Optimization)等业务。团队成员全都来自国内外的优秀学府并有着丰富的机器学习相关的经验。


2018 年 12 月 29 日 08:007096
用户头像
陈思 InfoQ编辑

发布了 561 篇内容, 共 191.8 次阅读, 收获喜欢 1107 次。

关注

评论 1 条评论

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

“PlusToken”跨国网络传销案告破,涉案400亿元!

CECBC区块链专委会

重学JavaScript01:就从面向对象说起吧

张理查rootv

这是我迄今为止读过的最有价值的技术书,却一行代码都没有

双儿么么哒

今天你内卷了吗?

池建强

个人成长 内卷化

架构师训练营第九周作业

张明森

刘华:事实证明,假敏捷都比瀑布优秀

刘华Kenneth

DevOps 敏捷 软件开发

Docker 网络

北漂码农有话说

Docker

Python 多进程之间共享变量

AlwaysBeta

Python 进程

复杂事件处理简介

星际行者

分布式 流计算 CEP 复杂事件处理

金融行业区块链技术应用有了“安全符”

CECBC区块链专委会

Dockerfile你值得拥有

北漂码农有话说

Docker

无意中参加了infoQ的一期活动,获得了所有奖项,哈哈哈。。。

诸葛小猿

InfoQ 奖品

基于 opentracing + Jaeger 实现全链路追踪 ----理论部分

是老郭啊

golang 全链路监控 OpenTracing Jaeger

微碳系:我心中的宇宙

Geek_116789

敏捷教练和Scrum Master - 敏捷转型中的两个重要角色的对比

Bob Jiang

Scrum 敏捷教练 ScrumMaster

nginx配置文件

张明森

谈谈敏捷中的那些模式

Bob Jiang

敏捷 敏捷开发 敏捷教练

LeetCode题解:70. 爬楼梯,递归+哈希表,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

第九章作业

武鹏

什么是算法的大O表示法

码农神说

算法 时间复杂度 Java算法 大O

搭乘政策红利“快车” 欧科云链助力区块链人才培养

CECBC区块链专委会

F5G+X:给5G一个伙伴,给千行百业一个拥抱

脑极体

RRedis系列(八):缓存到底该如何做到高可用?

z小赵

redis 分布式系统 高并发系统设计

稳定匹配:幸福不靠等,脱单要主动

KAMI

生活 算法 方法论

你该知道的Docker-compose

北漂码农有话说

LeetCode题解:70. 爬楼梯,DP遍历数组,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

ARTS Week10

时之虫

ARTS 打卡计划

JVM详解之:类的加载链接和初始化

程序那些事

Java JVM GC 加载

Scrum Master是否需要懂技术

Bob Jiang

敏捷 敏捷开发 敏捷教练 ScrumMaster

极客时间 - 架构师培训 - 9 期作业

Damon

速览国内主要银行区块链技术应用现状

CECBC区块链专委会

应用落地 区块链+金融 信任 部署与维护

日均亿次广告投放的FreeWheel如何实践机器学习?-InfoQ