查看原文
其他

干货 | 携程机票是如何准确预测未来一段时间话务量的?

侯淑芳 携程技术中心 2019-05-02

作者简介

 

侯淑芳,2016年加入携程机票大数据团队,负责数据分析和挖掘项目,目前主要负责航变预测和话务预测及排班优化。


一、背景


客服中心是携程和用户之间重要的沟通渠道。出于对呼叫中心成本控制以及为用户提供更满意的服务这两方面的均衡考量,我们期望能够预测出呼叫中心未来一段时间的呼入量,以此来预先准确地进行客服人员的排班,在保证话务接通率的基础上缩减人力成本。


而在实际生产应用时,不同行业的话务中心都会受到不同行业相关外生因素干扰。比如营销策略、经济周期、自然时令季节以及天气等等。因此,除了关心话务呼入量的自然分布特征外,还需要结合自身行业属性,充分考虑可能影响话务异常趋势的外生因素,把这些外生因素融入到模型中去,尽可能提升模型预估的准确率。


二、技术方案实施


1、底层数据清洗和流转流程规范


携程呼叫中心由于成立时间比较久,数据保存和传输方式比较传统,都是人工通过EXCEL和邮件手工记录和传输数据。这种现存的数据传输和保存方式不利于话务预测系统的自动化流程。因为,我们第一个需要解决的便是数据的自动化存储和传输。


针对此,我们为预订部的客服工作人员开发了网站,方便其上传历史过往每天的实际话务量,通过MYSQL落库,然后通过数据抽取流程把MYSQL的数据同步到HIVE数据库中,自动化的输入模型中。


2、识别数据波动的趋势和规律


对数据波动的趋势和规律进行分析探索是数据挖掘的第一步工作。我们的业务场景是本周四要提前预测出下一周每天半小时粒度的携程客服中心呼入话量。


因此,我们需要观察携程客服中心历史话务数据的分布规律(包括年话务量分布、月话务量分布、日话务量分布、小时粒度分布以及半小时粒度分布),其中的日粒度和半小时粒度的分布规律如下图所示:


日话务量走势

半小时粒度话务走势


我们知道数据依附于商业活动的属性,每个行业都有其特定业务属性和商业周期。就携程这种具有代表性的旅游行业来说,其生产活动有着很强的季节性和周期性,很大程度上会受到旅游淡旺季、出行天气状况以及经济景气等等各种因素的影响。根据上图的数据,我们可以看出携程话务总体来说呈现出来以下几点特征:


  • 时间序列特征明显


我们可以看到整个数据的走势呈现出很明显的时间特性。


  • 周期特征多样化


通过数据我们可以看到,携程的话务呈现出明显的年周期波动、月周期波动、工作日与双休日这种周周期的波动以及一天之内小时级别的周期性波动。


  • 逐年递减的发展趋势 


这种人工接听话务逐年递减的趋势很大程度上要归功于携程APP技术功能的完善。由于携程历年来都很重视技术的研发和用户的操作体验,其PC端和APP的功能设计愈来愈智能化,能极大程度的满足用户的自动化操作需求,因此减少了大量的人工来电咨询量。


  • 节假日波动


节假日的话务量明显要低于正常工作日以及正常双休日的话量。由于携程机票主要提供空中交通的出行服务,其出行热度会直接受制于受到旅游淡旺季的影响,而其咨询期一般都集中在用户的出行前(也就是节假日前),在节假日中,用户都已经处在目的地享受假期,因为呼入话量会急剧下降。


  • 异常值波动


同于受制于携程机票的业务属性,用户能否顺利出行很大程度上掣肘于天气状况,如果发生了极端不适合飞行的天气状况,势必会出现航班延误甚至取消,而此时就会出现携程客户中心的话务暴增点,如果不能提前预估到这种爆点的话量,合理安排客户人员,那在这种时点就会严重影响到用户的体验。


3、特征工程准备


我们知道业内有句俗话“特征工程做不好,调参调到老”,由此可知,特征工程很大程度上决定了一个项目的成败。在预测一个对象时(Y),我们不仅要关注这个Y内部的运行规律,更要注重跟这个Y相关外生因素X的影响。


在上面的篇幅中,我们已经研究的Y的运行规律,接下来我们需要考虑的是X,而X因素的构建很是依赖于业务经验,针对携程机票的商业属性,我们知道机票订单是影响来电量的一个很重要的因素。同时,在上面的篇幅中,我们也提到过极端天气状况是导致话量暴增的直接因素。另外,旅游淡旺季以及节假日这些时间特性也是直接导致话务呈现周期趋势的主要原因。因此,在已有的航变预测系统基础上,我们构建了话务预测V1.0系统:



4、V1.0预测系统模型原理


基于工程部署上面简单、高效、快捷的需求,结合对模型预测准确率的考量,在V1.0系统的实现中,我们融合了外生变量、傅里叶项和ARM模型,也即广义上的ARIMAX模型:



5、V1.0预测系统存在的问题


尽管V1.0系统能够满足日常的预测准确率需求,但是我们发现在节假日和重大天气的预测准确率远没有达到我们预想的准确率。而我们发现这个问题很大程度上要掣肘于模型的表现形式,由于傅里叶项和ARMA的周期只能抽取固定周期的频率,针对农历节假日这种变动周期的频率却没有办法进行精准的刻画,同时我们添加进去的外变量,比如航变和订单因子的影响,在ARIMAX模型中主要都是通过线性关系来影响Y(也就是我们的话务量),其训练出来的模型在这些外生变量上面的系数都比较小,最后导致该种模型不能很好地拟合出这些X和Y之间的关系。


6、V2.0预测系统的开发


为解决V1.0系统暴露出来的问题,我们又开发了V2.0的预测系统,想通过结合时间序列模型在周期性建模上面的优势以及树模型回归刻画变量之间非线性关系的特长,来提升整个系统的预测精度。


出于此,我们首先对原始的话务数据进行了BOX-COX变化,然后对变化后的数据进行三阶指数平滑建模(tbats模型),接着tbats的残差做ARIMA建模:


 

最后用XGBOOST回归树结合我们的X对arima模型的残差进行修正,最终用修正过后的残差来修正tbats模型的结果。



本项目从传统的时间序列模型开始尝试,逐步修正不同模型在项目应用中产生的问题,我们回测了不同模型在2018-03-05到2018-07-10这段期间的预测准确率,各模型最终的表现如下:


预测模型

平均预测准确率

STL

73.9%

ARIMAX+Fourier

78.9%

TBATS

79.6%

XGBOOST

82.7%

XGB+TBATS

89.5%

 

三、小结


本项目主要是针对携程呼叫中心的人力排班问题,提前一周进行话务预测。本项目中的方法同样适用于其他行业呼叫中心来电预测。


我们最终发现树模型回归优于传统的时间序列方法,但是能否充分发挥树模型的预测功效,很大程度上取决于特征工程的好坏。


尤其是在时间序列数据的预测上,传统的时间序列模型已然不能解决各行业所遭遇的业务因素对时间序列趋势的干扰,为了把业务因素纳入到预测系统中,我们必须充分构建能够很好的刻画出业务干扰因素的特征,如果你开始考虑树模型回归,请千万记住要把时间规律和趋势提取出来并作为特征放入你树模型中。


【推荐阅读】




    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存