当前位置 博文首页 > bjehp:EGADS介绍(二)--时序模型和异常检测模型算法的核心思想
EDADS系统包含了众多的时序模型和异常检测模型,这些模型的处理会输入很多参数,若仅使用默认的参数,那么时序模型预测的准确率将无法提高,异常检测模型的误报率也无法降低,甚至针对某些时间序列这些模型将无法使用。
若想有效地使用EGADS系统,那么必须了解EGADS系统的核心算法思想,并据此调优模型参数,来提高异常检测的准确率、降低误报率。
笔者通过阅读EDADS系统的TimeSeries模型和AnomalyDetection模型的源码,整理了模型的处理流程和常用算法的核心思想。如本文有理解错误之处,欢迎大家随时拍砖指正。
时序模型接口主要包含的方法:train()
、predict()
,其类结构如下图所示。时序模型的主要处理流程:
时序模型的实现类都遵循以上的处理流程。
OlympicModel 是时序数据的季节性模型,该算法的核心思想:某个数据点的预测值是历史n个同期数据的平滑平均值。特别适用于预测有周期的,甚至是嵌套周期的曲线。这里举例说明下什么是嵌套周期,例如:某个数据集每周的波动曲线相似,并且周一至周五是一类波动曲线,周六和周日是一类波动曲线。面对嵌套周期的波动曲线,仅以固定间隔作为周期的预测算法的效果不太理想。
OlympicModel模型的数据结构:
data存储观察值,底层的数据结构是ArrayList
model存储期望值,底层的数据结构是ArrayList
OlympicModel模型训练的核心思想:
w*j*3
)中选择一个与真实值偏差最小的,作为该时间点的期望值。
AutoForecastModel
筛选出哪个模型更优)异常检测模型的接口主要包含的方法:tune()
、detect()
,其类结构如下图所示。异常检测模型的主要处理流程:
异常检测模型的实现类都遵循以上的处理流程。
ExtremeLowDensityModel是基于密度的异常检测模型,其算法思想类似于聚类算法。输入的数据序列为预测值与真实值的差值的绝对值,然后把数据序列按照从大到小排序,在使用聚类算法把数据序列划分为两类:异常点簇和正常点簇,其临界值为异常点簇的最小值。这里聚类算法使用的距离公式为:3*正常点集合的标准差
。
ExtremeLowDensityModel模型输入的数据结构:
n
, 底层的数据结构是ArrayList
n
, 底层的数据结构是ArrayList
ExtremeLowDensityModel模型自适应阈值算法的核心思想:
t
,计算出对应观察值和预测值的所有误差指标,误差指标有5个:mae(绝对误差)、smape、mape、mase、mapee.n
个误差值n
个误差值n
个误差值,使用基于密度分布的方式计算出灵敏度(核心算法)
标准差*3
作为簇间最大距离的阈值
簇间最大距离的阈值
初始化簇和其他簇分割开的临界点的值
,作为灵敏度并返回ExtremeLowDensityModel模型检测异常算法的核心思想:
t
对应的真实值与期望值的各项误差指标值(5个)假设预测值与真实值的误差值序列符合正态分布,那么可以使用KSigmaModel模型做异常检测,其阈值计算规则为:均值 + 3*标准差
。若某时刻t
的数据点超过该阈值,则认为该时刻对应的数据点异常。
KSigmaModel模型输入的数据结构:
n
, 底层的数据结构是ArrayList
n
, 底层的数据结构是ArrayList
KSigmaModel模型调教阈值算法的核心思想:
t
,计算出对应观察值和预测值的所有误差指标,误差指标有5个:mae(绝对误差)、smape、mape、mase、mapee.n
个误差值均值 + 3*标准差
KSigmaModel模型检测异常的核心思想:
t
对应的真实值与期望值的各项误差指标值(5个)本文介绍了EGADS的TimeSeries模型和AnomalyDetection模型的处理流程和常用算法的核心思想。其中TimeSeries模型主要包含:训练和预测方法,AnomalyDetection模型主要包含:计算阈值参数和检测异常的方法。
关于TimeSeries模型介绍了可以预测嵌套周期的OlympicModel的核心思想,关于AnomalyDetection模型介绍了基于聚类思想计算出阈值的ExtremeLowDensityModel和基于正态分布数据的3Sigma法则计算出阈值的KSigmaModel的核心思想。