AIOps:如何利用机器学习来实现流量预测

1,063 阅读5分钟

orz 笔者最近真的太忙了,今儿终于有空来写写水文了,哇哈哈哈哈~

什么是AIOps?

这个是前几年的新新词,就如字面意思一般,通过AI的手段实现Ops

背景

虽然,现在计算机飞速发展,并且拥有良好的可用性;但是在大型集群中依然存在大量软硬件告警横飞的情况。
因此,使用机器学习和数据挖掘的手段对系统自动化进行异常检测至关重要。

传统监控

  • 很容易达到一定高度,但,上限受阻

通过指标、专家规则、权重等方式进行监控;这么做的好处,就是简单,并且能在较短的时间内取得一定的成果。
但是,其中的专家规则则是影响好坏的重要因素,并且经验的积累在很大程度上决定了专家规则的高度。
当你面临不同的场景的时候,甚至需要不断的去配置不同的专家规则和权重来适配 。
最严峻的是:当你场景越多,影响因素越多的情况下,往往难以维护,且效果一般。

机器学习-监控

  • 下限很低,同样,上限也很高

比如,通过一段时间序列的数据,就可以建模,来实现预测和检验,而不必强依赖专家经验和规则,更加的客观和数据化;

AIOps 异常点检测方式

针对异常点检测,一共分为2类:
一、基于统计进行异常检测
二、基于预测进行异常检测(本篇水文的重点)

这里我们主要讲述,如何通过机器学习来实现预测

基于时序数据,我们会通过以下方法进行建模预测,并根据预测出来的时序曲线和实际值,进行残差处理,最终通过残差来判断该点是否为异常时序点

一般在实际的生产环境中,都会存在着复杂的场景和多个影响的因子、甚至是不可控的因素等问题;
所以,一般我们需要根据不同的业务场景,建立对应的模型,来进行预测和检验;而不能奢望通过一种数据模型,来适配所有的业务场景。

在建模之前,必须要对原始的时序数据进行预处理。因为,不平稳的数据建立的模型,完全没有任何使用价值;
所以,在建模之前,我们必须要保障数据是平稳的。

在实际的场景中,往往数据都是带有噪点的,不是平滑的数据。所以,我们还要针对数据进行白噪声处理;

数据处理

  • 平滑处理

实际的环境中,经常会出现各种各样的白噪声。如果不加以处理,那么他们将会很大程度上影响我们的预测。
由于他们本身并不具备真正的数据意义。所以,一定要通过平滑处理,来将他们过滤掉,保障数据集的可靠性

一般平滑处理有以下几种方式。其中最常规、简单的就是移动平均。
但是,移动平均有一个比较明显的弊端,就是存在数据滞后性。


如下图所示,蓝色为原始数据,橘色为移动平均。能够很明显看到橘色的总是滞后于原始数据


尤其,在下降的过程中,会导致一定的误报产生,总认为在跌量。

所以,我们也可以通过其他的方式来进行平滑处理。
其中就包括线性回归,加权平均等等

加权平均:
加权平均的权重一般遵循权重逐渐增加的原则,保障数据的可靠性,尽可能的弱化历史数据的强影响力

  • 平稳处理

相较于平滑处理,平稳处理,就显得苍白无力。因为,没啥好纠结和选择的。
不平稳? 差分!
还不平稳? 再差分!

什么是一阶差分呢?

一阶差分就是离散函数中连续相邻两项之差。当自变量从x变到x+1时,函数y=y(x)的改变量∆yx=y(x+1)-y(x),(x=0,1,2,......)称为函数 y(x)在点x的一阶差分,记为∆yx=yx+1-yx,(x=0,1,2,......)。

现在,我们通过一阶差分来实现数据的平稳性。

经过平稳性检测之后,发现依然不平稳,则会再此基础上继续进行一阶差分。
大多数情况下,一阶差分就能实现平稳

好了
经过复杂的平滑和平稳处理之后,这样得到的数据,我们就可以光明正大的拿来使用了

但是

可别太高兴哦,毕竟,这才是整个过程中的课前准备而已
下面,我们将进入建模预测阶段

模型预测

在很大程度上,数据决定了预测方法
这里,我们利用时间序列数据样例来进行处理。包括:量化交易、网络流量、每月的降水量等等
每一个时间序列又分为三个部分:趋势、季节性和残差。

那么,网络流量又该怎么来处理呢?
预知后事如何,请听下回分解