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