系统优化与进阶之道:大规模复杂场景下的技术创新实录
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

技术选型

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

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

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

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

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

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

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

前期准备

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

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

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

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

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

中期实现

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

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

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

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

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

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

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

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

后期运维及注意事项

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