APP下载

基于XGBoost和LSTM的智能监控系统研究

2021-04-20赵春生梅松张双江郭超

电子技术与软件工程 2021年3期
关键词:趋势准确率监控

赵春生 梅松 张双江 郭超

(1.中华人民共和国南京海关 江苏省南京市 210001 2.南京大学 江苏省南京市 210093)

1 引言

海关由于机构特殊性,工作过程中拥有数量庞大的监控服务器,海量监控数据和数据之间的错综复杂的联系增加了海关运维人员的压力。运维人员需要自行设置报警阈值,而且持续监测资源使用情况,及时协调资源以确保系统正常运行。

目前大多数监控系统普遍采用设置固定阈值的方式检测异常,由于不同监控服务器之间的差异性与各个监测指标的相似性,使用上述方法误报和漏报会频繁出现。此外,对异常的趋势预测功能还不健全,系统问题和资源瓶颈问题时常发生,对监控数据的异常检测和趋势预测的研究分析效果十分不理想。

本文设计了一个基于XGBoost 和LSTM 的智能监控系统,使用孤立森林算法完成数据标注预处理工作,引入XGBoost 算法进行异常检测,采用LSTM 神经网络进行趋势预测,该系统不断迭代更新数据标签并重置模型,以此提高异常检测和趋势预测的准确率,以满足新时代新海关智能监控工作的需要。

2 相关技术

2.1 孤立森林算法概述

孤立森林(简称iForest)一种异常检测方法[1],是一种无监督学习算法,主要针对于连续程度高的结构化数据。该算法距离与密度无关,所以它无需负担距离和密度计算成本。在iForest 算法中,异常点被定义为"隔绝的孤立点”,指的是分布稀疏且跟样本中大多数据不一样的点。假设一个区域范围内只有上述分布稀疏的点,在统计学意义上可以认为这个区域范围内的数据是异常的。iForest算法时间的复杂度为线性,对空间的需求少量而且较为恒定,能够快速处理大数据集并具有解决高维数据的能力。

2.2 XGBoost算法概述

极端梯度提升(简称XGBoost)是一种集成学习且基于弱学习器的算法[2]。假设应用于分类问题上,分类器的分类精度大于半数的分类器就可认为是弱分类器。弱分类器定义为分类精度略好于随机预测,但是准确率不过分高。XGBoost 算法核心在于不断进行特征分裂添加树,用来拟合预测的残差。XGBoost 由很多分类回归树的集成组合,以期获得更强的泛化能力[3]。机器学习领域中的决策树主要为两类:一类是分类树;另一类是回归树。分类树和回归树的总称为CART,事实上分类与回归问题本质是一致的,都是根据样本特征和标签得到某种映射关系,只是结果类型不同。

2.3 LSTM神经网络概述

长短期记忆人工神经网络(简称LSTM)是对循环神经网络(简称RNN)的改进算法,由Hochreiter 等人在1997年提出,被用来解决长期依赖问题[4]。与RNN 相比,为了解决长期依赖问题,LSTM 加入了隐藏神经元结构,可以记忆长期的信息。LSTM 算法通过长期时间序列之间的关系,可以准确预测发展趋势。因此趋势预测的研究广泛使用LSTM,如预测降雨量、预测疾病、预测人体轨迹情况等。

3 异常检测和趋势预测

在海量的系统日志数据中,通常异常数据稀疏分布在数据中,难以对异常数据进行获取并捕获异常数据的特征,这直接导致数据标注不平衡。为了解决此问题,本文使用iForest 算法先对数据预处理,且进行标注作为数据基础。异常检测和趋势预测中,需要进行预处理数据标注对每个数据标定对应的标签,并通过迭代替换更新标签不断提高异常检测和趋势预测的效率。

3.1 XGBoost模型构建

XGBoost 被用于训练异常检测模型,历史数据对模型进行训练,而后用模型进行异常检测,从而大量提高工作人员设置大量参数的工作效率,提高异常检测的准确率,减少失误和遗漏。

XGBoost 算法模型包含大量参数,设置恰当的参数是决定数据异常检测准确率的关键。通过模型训练确定XGBoost 算法模型最适参数,降低异常检测的遗漏率。训练数据集选取某服务器2020年2月25日至2020年5月15日共150217 条和CPU 使用率与内存使用率的数据。使用iForest 进行数据标注预处理,将数据集进行划分10 份,3 份作为测试集,7 份作为训练集。训练中数据集不会改变,因此数据的一致性会得到保证。

在实验进行之前,必须设定初始参数,并在实验中对参数进行逐步调整。设定模型初始参数如表1 所示,设置booster 助推器选用gbtree 解决分类问题。verbosity 参数表示模型运行的信息数量。objective 参数阐述了是二元逻辑回归,数据划分为两种。max_depth 表示树的最大深度。subsample 是指子样本占全部样本的比例。evals 参数表示模型的效果,min_child_weight 参数是树中叶子的最小权重,min_child_weight、lambda、gamma 和eta 进行模型控制,防止过拟合。

3.1.1 设定最优迭代次数

模型训练过程中创建多少棵树的数量等于迭代次数,准确率低代表迭代次数不够,次数过多则会过拟合。根据经验设置模型第一次训练的迭代次数为10000 次,参数early_stopping_round 设置为1000,如果测试集的错误率在连续1000 次迭代中都没有降低,即可确定最优迭代次数。结果显示,算法模型从166 到1166 次迭代的测试集错误率都没有降低,因此确定算法模型最优迭代次数为166。

3.1.2 设定树的最大深度

树的最大深度max_depth 的取值尤为关键,如果深度太大会造成过拟合状态,如果深度太小而会分类不完全。实验时首先使用控制变量,通过比较不同的max_depth 的取值对模型准确率的影响,得出max_depth 最优取值。实验中选择本文研究比较关注的精确率、召回率和f1 值作为判断的依据。由经验可知max_depth 一般取值为[3,10],表2 展示不同max_depth 的实验结果,结果显示当max_depth 为7 时模型准确率最高。

3.1.3 设定步长

步长参数用于降低数据特征权重,预防过拟合。由经验可知eta 取值范围为[0.01,0.3]。使用控制变量法固定其他参数的取值(max_depth 设置为7),通过对比精确率、召回率和f1 值得出eta参数的最优取值。表3 表明,最优eta 参数值为0.20。

重复实验过程,并为最终确定最佳参数设定,所有参数表4,通过多次训练模型应用与其他数据集,发现模型效果相近,所以表4 中的参数作为异常检测模型采用的最优参数。

3.2 LSTM趋势预测

本文采用LSTM 神经网络算法对数据进行趋势预测,提供准确的趋势预测功能。LSTM 是一种对RNN 进行改进的算法,主要是为了解决长期依赖问题。趋势预测是使用某监控项指标最近一段时间的值,通过此刻的指标计算,进行预测,直到预测出未来时间点的值时停止。此外,还可以为不同的监控项建立不同的趋势预测模型,模型之间相互独立。通过预测监测数据的变化,工作人员可以预测服务器的未来资源发展方向,预先调整服务器资源,提高系统效率和用户使用体验。

为了应对服务器集群中不同异常检测和趋势预测,最终训练不同的模型群,特定模型适应与特定服务器数据,从而达到模型解耦。模型使用中,可以进行重置模型,并且数据重新进行数据标注,不断调整模型提高模型的质量。

4 实验

本文以异常检测的准确率来评估异常检测效果,区别于传统固定阈值报警,对本文研究的异常检测进行评估。以真实趋势走向评估预测结果。

4.1 异常检测评估

评估异常检测优劣的标准是准确率和漏报率。60 天内系统报警情况展示于表5。

表5 展示,60 天范围内,采用固定阈值报警产生了178 次报警,其中准确率为55.06%,遗漏69 次。而加农系统产生了162 次报警,其中准确率为84.57%,遗漏38 次。通过对比可以得出,智能监控系统减少了31 次漏报,减少了44.93%漏报,提升了29.51%的准确率。

系统正常运行时,选择了六个数据集进行检测,查看异常检测的精确率、召回率和f1 值。表6 是对6 个数据集的异常检测结果。

由表6 可知,智能监控系统对随机挑选的6 个数据集的异常检测结果的f1 值都可以达到0.85。综合表5 和表6 可见,智能监控系统可以准确地对实时监控数据进行异常检测,提高异常报警准确率,减少误报和漏报。

4.2 趋势预测评估

评估系统趋势预测的准确率。选择8 个数据集进行预测,计算每次数值的均方根误差,衡量准确性。表7 展示的是数据集的趋势预测值与真实值之间的均方根误差值。

表7 显示8 个数据集的趋势预测值与真实值之间的均方根误差值平均为12.12,该值较小。由此可见,本文所设计系统能较为准确的预测趋势。

对比上述实验结果可以证明,本文研究的智能监控系统可以提供准确的异常检测与趋势预测功能,提高异常检测和趋势预测的准确率。

5 小结

本文提出了一个基于XGBoost 和LSTM 的智能监控系统,具有监控项异常检测和对监控项指标进行趋势预测的功能。实验证明,此智能监控系统可以提高异常检测的准确率,减少误报和漏报,并可以提供较好的趋势预测功能。但是其中仍然存在一定的问题,主要包括四点:

(1)研究中我们主要对单个维度进行异常检测,单维度相较于多维度检测的结果更不具说服力,可采用多维度检测提高异常检测的准确率,例如同时采用内存使用率和CPU 使用率两个维度的数据进行异常检测;

(2)研究中的XGBoost 算法采用level-wise 生成决策树,同时分裂同一层的叶子,从而进行多线程优化,这样会带来很多不必要的开销,可以使用LightGBM 算法解决XGBoost 的开销问题;

(3)异常检测这一技术的表现效果与实际的运用场景有较大关系,有可能检测的 “异常”未必符合实际场景中的真正异常的定义,因此在特征选择时,要尽量过滤不相关的特征,增加类似于时间的维度特征以保证异常检测的准确率;

(4)数据取样的量级不足会产生同真实情况的偏差,对于数据不足的情况,可以采用数据扩增技术基于已有数据生成更多的有效数据,以解决数据取样过少的问题。

虽然提出的智能监控系统还存在亟待解决的问题,但是随着海关监控数据的日益剧增,智能监控系统采用异常检测和趋势预测的方式,对海关监控数据进行准确的异常报警以及风险预测仍具有重要的现实意义。

表1:XGBoost 算法初始参数值

表2:max_depth 参数实验

表3:eta 参数实验

表4:XGBoost 算法在该模型的最优参数值

表5:异常检测效果对比表

表6:异常检测结果表

表7:趋势预测效果表

猜你喜欢

趋势准确率监控
The Great Barrier Reef shows coral comeback
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
你被监控了吗?
Zabbix在ATS系统集中监控中的应用
高速公路车牌识别标识站准确率验证法
初秋唇妆趋势
SPINEXPO™2017春夏流行趋势
PDCA循环法在多重耐药菌感染监控中的应用
趋势