![基于机器学习的流量波动趋势预测实践](https://static001.infoq.cn/resource/image/61/b3/61b4a8ade492a5f8a6621c21e84cc0b3.jpg)
1 概述
本实践基于电商网站“苏宁易购”的业务访问流量进行深入的数据挖掘。在此基础上,建立机器学习或统计算法模型,进行离线分析,选取最优模型,对流量波动趋势进行实时预测,实现智能化的异常流量预警。
1.1 流量预测的价值
流量预测是流控的重要环节,也是流控迈向智能化的关键一步。对苏宁易购而言,业务系统流量趋势的预测、异常流量的及时预警极为重要,它能够及时提醒用户验证是否有 CC 攻击、黄牛刷单、爬虫等危害企业网络正常经营活动的行为。
1.2 流量预测的几大难点
对于流量波动趋势预测、异常流量检测,存在以下难点:
需要检测的流量系统种类繁多流量特征各不相同。苏宁易购业务系统众多,每一个系统每分钟产生的流量大小、流量趋势不同,每一分钟的访问业务系统个数不同。
流量受业务系统经营活动影响较大。活动力度大、活动频繁,则流量大且稳定;活动力度大、活动稀疏,则流量波动大。面向易购的销售系统,则流量大且稳定;面向内部用户系统,则流量小且波动大。
不同用户对流量异常的关注点不同,流量预测难以满足所有场景需求。促销、CC 攻击、黄牛刷单、爬虫等,都有可能带来流量的暴增异常。不同人员的关注点不同:运维人员关注流量的暴增是否带来了系统压力;用户则关注流量的异常是否存在某种刷单,是否会带来经济损失;安全人员则关心是否存在某种攻击及信息泄露。要做到一种检测,多方满足,实则难度很大。
流量预测需要较高的实时性、有效性。及时感知异常流量,方能及时的进行有效的流控。易购业务总流量 TPS 大,大促期间流量暴增。需要一种实时高效的计算框架,进行流量的实时计算、在线训练,及时发出异常预警,流量的预测检测才有实际意义。
2 应用系统流量趋势特征分析
2.1 横向流量的按天规律性波动
流量受到不同时间段的用户行为影响较大。不同时间段的流量阈值、峰值不同。白天 08-18 点用户多、流量大,夜间 00-08 流量下降。
![](https://static001.infoq.cn/resource/image/23/8d/23d7e80f5332fe880ccc87846558f58d.jpg)
2.2 横向阶段性流量规律分析
夜间流量小,波动大,如下图所示夜间 00-06 点流量图(按分钟统计):
![](https://static001.infoq.cn/resource/image/06/4d/066bf079a79de4e5854a448fe934cf4d.jpg)
白天流量大,波动小。如下图所示白天 11-18 点流量图(按分钟统计):
![](https://static001.infoq.cn/resource/image/73/b6/732f41f0c18bfcc2317074a9a560e4b6.jpg)
2.3 纵向按分钟周特征分析
取某系统每天同时刻流量数据,取一周数据(按分钟统计):
![](https://static001.infoq.cn/resource/image/b9/73/b92092086f0dceeb36365b60550aa873.jpg)
由上图可知,同系统按天同时刻流量,一周时间内,波动很大,无明显时间规律,因此不利于进行未知流量预测。
2.4 纵向按分钟月特征分析
取某系统每天同时刻流量数据,取一个月数据(按分钟统计):
![](https://static001.infoq.cn/resource/image/b8/01/b8201c5ce65648a4115f974e7db08401.jpg)
由上图可知,同系统按天同时刻流量,一个月时间内,波动很大,无明显时间规律,因此不利于进行未知流量预测。
3 异常流量预测算法
对于业务域名系统流量的研究,本质是基于时间序列的研究。我们分别使用 ARMA(自回归滑动平均模型)/LSTM(长短期记忆网络)/MAD(绝对中位差)+Mean(均值)进行了深入探索。
3.1 ARMA 模型
算法简介
自回归滑动平均模型(Autoregressive moving average model),是自回归模型(简称 AR 模型)与移动平均模型(简称 MA 模型)的组合模型。
将预测指标随时间排列而形成的数据序列看作是一个随机序列,这组随机变量所具有的依存关系体现着原始数据在时间上的延续性。一方面,影响因素的影响,另一方面,又有自身变动规律,假定影响因素为 x1,x2,…,xk,由回归分析:
![](https://static001.infoq.cn/resource/image/ce/16/ce0b1f2ee83aae441677c4f8a9e53e16.png)
其中 Y 是预测对象的观测值,Z 为误差。作为预测对象受到自身变化的影响,其规律可由下式体现:
![](https://static001.infoq.cn/resource/image/ee/95/ee8b665fe1831128bbef7514cf609295.png)
误差项在不同时期具有依存关系,由下式表示:
![](https://static001.infoq.cn/resource/image/13/4e/137c8dca454bfd8144b52a11b0cb6d4e.png)
由此,获得 ARMA 模型表达式:
![](https://static001.infoq.cn/resource/image/c1/44/c1e4097c03b85948788eb352e7f5c344.png)
拟合误差方程
![](https://static001.infoq.cn/resource/image/14/88/14adf58fc7b81fad4ded23bdc616c888.png)
其中 t 时刻的准确率 ratio,真实值 Yt,预测值 Ypt。
特征工程
取某业务系统域名某一天 08-10 点的按分钟统计的流量总量时序数据进行训练,流量趋势如下:(时序数据的统计时间间隔可以为天/小时/分钟/秒等,按分钟统计及预测是最符合系统流量预测场景需求的,以下研究都是基于按分钟统计的时序数据)
![](https://static001.infoq.cn/resource/image/29/d1/296ebb8a3169c396b16bf617cee98bd1.jpg)
平稳性判断及处理,对序列进行一阶差分处理,序列处于平稳状态,处理后的流量趋势图如下(判断/处理平稳性方法略):
![](https://static001.infoq.cn/resource/image/57/98/571a383b419c0c0c0a3699ca9b9fc998.jpg)
效果查看
按分钟预测,不同时间长度后的预测拟合效果如下:
![](https://static001.infoq.cn/resource/image/c1/46/c16a06a9886417e40c9df307edef6446.jpg)
优缺点分析
优点:
存在成熟的预测接口,可直接预测多步时间间隔数据
距离当前时间越近,准确率越高
缺点:
距离当前时间越久,准确性越差
波动较大的序列经过二阶差分后仍然不平稳,序列平稳性处理有误差,导致模型预测出现误差
模型训练耗时长,不适合大规模批量实时预测
不同系统的流量趋势不同,存在众多域名系统,难以训练某一个模型可以全部满足所有的流量系统
3.2 LSTM 模型
算法简介
长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络。它是 RNN 的优化模型,可以解决 RNN 模型的梯度消失与不可记忆长时间依赖问题,是目前解决序列问题最常用的方式。
![](https://static001.infoq.cn/resource/image/00/29/001003e6b8ba75ff56e9592cecd74f29.png)
拟合误差方程
![](https://static001.infoq.cn/resource/image/ca/87/ca03b22cf09e8cdf2967b6b71ac11e87.png)
其中 t 时刻的准确率 ratio,真实值 Yt,预测值 Ypt。
特征工程
同 ARMA 模型一致,选取某业务域名系统某一天 08-10 点的按分钟统计的流量总量时序数据进行训练,并切割训练集、测试集,流量序列趋势不再赘述,特征工程处理步骤如下:
![](https://static001.infoq.cn/resource/image/d7/2a/d77e6ffd00c79114d49ecf41c5dd372a.png)
差分处理:基于平稳性的考虑,进行一阶差分处理
监督式转换:使用 pandas shift 操作,进行 1 位位移,X 为序列的一阶差分结果(a 中的结果),Y 为一阶差分后的 shift(1),如下所示
![](https://static001.infoq.cn/resource/image/7b/97/7b58e6591c6923c18014e9f9f13fdb97.jpg)
数据集切割:略
标准化转换:MinMaxScaler 将数据处理至[-1,1 区间]
效果查看
将数据集转换成有监督学习后,测试集数据的预测结果表现如下:
![](https://static001.infoq.cn/resource/image/79/e4/799cf933172b2f0447a980a4c8e10fe4.jpg)
一次训练,多步叠加预测结果:(注:LSTM 无多步预测接口,可讲新预测数据添加到原始数据序列最后,又作为原始数据进行预测,如此反复循环,得到多步预测结果)
![](https://static001.infoq.cn/resource/image/13/29/13efc19504f676ae159e9ae2242e4e29.jpg)
优缺点分析
优点:
距离当前时间越近,准确率越高
缺点:
距离当前时间越久,准确性越差
无多步预测接口。需以新预测数据为新的时序数据,不断叠代方可预测完成
模型训练耗时长,不适合大规模批量实时预测
不同系统的流量趋势不同,存在众多域名系统,难以训练某一个模型可以全部满足所有的流量系统
MAD 估计值模型
算法简介
采用统计学习方法对流量进行预测,计算 MAD(绝对中位差)估计值,算法原理如下:
![](https://static001.infoq.cn/resource/image/eb/91/eb9149a8f10d4adbe4cc9715ad598291.png)
k 为比例因子常量(可视为流量预测的波动系数),值取决于分布类型,流量预测具体值为离散型随机变量。流量序列繁多,统一按正态分布数据计算,对于正态分布,k 值为:
![](https://static001.infoq.cn/resource/image/88/10/88191457ff5b3b2622aa5afb9b861e10.png)
也就是标准正态分布 Z=X/σ的分位函数的倒数(也称为逆累积分布函数)。数值 3/4 是为了包含标准正态累积分布函数的 50%(从 1/4 到 3/4 的范围值)。
预测值 = 历史七天预测时间点数值集合σ + 当前时刻流量值
误差方程
![](https://static001.infoq.cn/resource/image/ca/87/ca03b22cf09e8cdf2967b6b71ac11e87.png)
其中 t 时刻的准确率 ratio,真实值 Yt,预测值 Ypt。
特征工程
![](https://static001.infoq.cn/resource/image/93/3a/93a683a530aa78288eabbc84e6c47c3a.png)
效果查看
预测 2min 的数据拟合情况:
![](https://static001.infoq.cn/resource/image/e0/c3/e0a514310f480ad86cc7cef773a6adc3.jpg)
预测 4min 的数据拟合情况:
![](https://static001.infoq.cn/resource/image/36/3d/36dd0657afda8745e8d21352a836983d.jpg)
预测 8min 的数据拟合情:
![](https://static001.infoq.cn/resource/image/34/30/347d183ef90baaf73de7d6c031d14330.jpg)
以上三幅图分别为预测 2min/4min/8min 以后的拟合曲线,通过开始时间、峰值等时间点可以看出,时间步长越长,拟合效果越差。
优缺点分析
优点:
特征工程简单
支持实时快速计算,可进行所有流量序列的实时预测
缺点:
预测步长距离当前时间越久,准确性越差。因为后 2min 的预测强依赖当前总量,步长越长,当前总量的关联性越弱
4 分析总结
本篇主要介绍了流量预测的横向分析,因为横向数据与当前时间点的流量关联最为密切。纵向数据时间跨度大,具有一定的规律性,但是实时关联性不高。比如大促期间流量较平时会成倍增长。因此纵向数据波动性大,不确定因素众多,不利于进行流量预测。
易购的众多业务系统流量存在两大普遍特征:1.白天流量趋势稳定,数据量大;夜间流量趋势波动大,数量量小;2.以天为单位,业务系统呈现规律性波动。
算法最终选择了统计模型,原因为特征工程简单、时效性强、拟合准确率高。ARMA、LSTM 均不能满足时效性要求。不论是选择机器学习算法、深度学习神经网络,或者统计模型,在多步长预测问题上,预测效果均会变差。
本例中未使用 RMSE、MAE、MSE 等方差类统计指标进行模型评估,原因为不同的业务系统,流量趋势、总量不一致,计算出的均方误差等结果差别大,难以确定统一的阈值评判预测结果的好坏。本篇采用了自定义的误差结果计算方法:
![](https://static001.infoq.cn/resource/image/ca/87/ca03b22cf09e8cdf2967b6b71ac11e87.png)
对单用户的预测结果进行误差判别,实践中可以取得良好效果。
5 展望
正如开篇所讲流量预测的几大难点之一,不同用户对流量波动的关注点不同,流量预测难以满足所有场景需求。促销、CC 攻击、黄牛刷单、爬虫、用户轨迹异常等,都有可能带来流量的暴增异常。针对异常行为做机器学习分类判断、建立统计学模型等,借助与 flink、spark 等大数据分析框架,实现快速异常定位,是流量预测的下一阶段——异常检测的重要研究方向。
作者介绍:
脱利锋,苏宁科技集团云计算研发中心算法工程师,毕业于江西理工大学信息安全专业,目前致力于苏宁 AI 方向的 web 安全防护工作,主要研究方向为异常流量的预测、检测、识别。
评论 2 条评论