一种改进的模糊聚类日志异常检测方法
2022-08-15何书前孙学朝蒋文娟余绪杭
何书前,孙学朝,蒋文娟,余绪杭
(1.海南师范大学 信息网络与数据中心,海南 海口 571158;2.海南师范大学 信息科学技术学院,海南 海口 571158)
异常检测在大规模分布式信息系统运行管理中有着重要的作用。通常是通过系统的运行日志信息来进行异常检测,但专业人员人工或半人工方式检查日志的传统运维已经不再适用于现代的大规模应用系统的运行管理。因此,基于大规模日志数据的自动化异常检测方法被学术界和工业界广泛关注,成为了重要的研究热点领域。异常检测的日志数据分析过程分为日志收集、日志解析、特征提取和异常检测四个部分。其中,根据所采用的数据类型和机器学习方法,异常检测方法分为有监督和无监督两种。有监督类型需要有标注的训练数据集,包括逻辑回归、决策树、支持向量机(Support Vector Machine,SVM)和深度神经网络等;而无监督类型的数据集不需要数据标签,主要方法包括聚类、主成分分析(Principal Component Analysis,PCA)和不变量挖掘等。有监督学习方法需要大量的人工标注数据以获得带有统计特征的海量训练样本,才能精确地预测日志异常的判断结果。日志数据本身数据量巨大、内容繁多复杂,人工标注工作又需要专业的运维人员手工完成,然而在实际的异常检测应用中,很难具备这样的条件,故缺乏充足的标注日志数据。此外,异常情况自身具有其独特的不可预知性与关联性,也导致一些异常情况的数据很难收集。鉴于以上的情况,无监督的异常检测方法具有其天然的优势:首先,其不需要人工标注数据;其次,日志数据自带学习的分布特性功能,样本空间中潜在的异常情况可通过统计分布特性自适应判决;最后,无监督检测方法简单高效,可用于实时应用场景。本文研究一种基于无监督学习的日志数据异常检测方法。
1 现有相关工作
基于机器学习的异常检测是从系统日志数据中学习正常运行的关键特征向量,围绕这些特征向量构建机器学习模型,进行无监督聚类检测出离群点,即异常,通过比对这些关键特征向量来判别异常。
有监督方法:D.Jeon 等针对恶意IP 地址检测问题,收集检查数据包流量数据以及待保护IT 系统的日志数据,通过逻辑回归多阶段分类得到90%以上的检测识别率。Q.H.Vu 等针对网络安全事件日志的网络安全事件检测,提出了基于决策树学习的网络安全异常检测方法。D.Saraswat 等从电网系统中收集事件日志数据,提出了基于规则的分类器,采用支持向量机与改进的最近邻方法有效地预测故障事件。
无监督方法:O.Alghushairy 等围绕信用卡交易中的欺诈监测与网络入侵监测应用,分析了各种全局与局部离群因子算法(Local Outlier Factor,LOF)的优劣,并提出了改进的快速数据局部LOF 异常监测算法。文献[5]针对云系统的日志记录数据,提出在线演进的异常检测框架,结合单类支持向量机(One⁃Class SVM)在线更新,实现了高精度的高维数据异常检测。文献[6]基于优化的孤立森林(Isolation Forest)算法,通过监测和分析容器的多维资源指标,提出了一种在线容器异常检测系统。文献[7]分析了各类控制台日志的高维数据,通过PCA 方法将数据映射到低维特征空间,利用异常点与整体数据样本之间的距离来检测异常点,该方法准确性高。文献[8]提出了一种用于异常检测的非结构化日志分析技术,使用日志解析器将日志数据结构化,并根据日志参数关系进行分组,通过提取分组中的不变量(Invariants Mining)来自动检测日志的异常。文献[9]利用日志聚类的方法,采用层次聚类算法对Hadoop 应用和微软的在线服务系统的潜在故障问题进行有效识别,大大减少了日志检测的数量。文献[10]将系统日志建模为自然语言序列数据,使用长短期记忆(Long Short⁃Term Memory,LSTM)深度神经网络模型学习日志模式,但训练模型形成的日志模式偏离检测异常。文献[11]则采用自编码深度神经网络,通过学习超级计算机节点的正常行为来识别异常情况,异常检测的准确率介于88%和96%之间。文献[12]对现有的日志数据异常检测方法进行了比较,提供了对6 种基于日志的最新异常检测方法的详细审查和评估,其中包括3 种有监督的方法和3 种无监督的方法,并且还发布了一个开放源代码工具包供研究参考。文献[13⁃14]基于安全日志数据和LSTM模型,提出了一个安全分析的异常检测框架。综上所述,现有研究采用了经典的无监督机器学习方法解决日志数据集的异常检测问题,取得比较好的效果。但基于日志数据集的异常检测问题仍然有较大的改进空间。本文针对日志数据集的异常检测,采用模糊聚类的方法,相对于现有的无监督学习方法,该方法进一步提高了检测性能。同时,在日志数据的异常检测中,正常与异常数据量偏差较大,存在不平衡数据集,对聚类结果影响较大。围绕不平衡数据集的问题,本文从聚类评价指标入手,引入不平衡补偿因子,通过新的聚类评价指标扩大两个不平衡聚群之间的中心距离,从而解决了不平衡问题。
2 基于日志数据的异常检测
基于日志数据的异常检测流程如图1 所示,主要由4 个部分组成:原始系统数据采集、日志数据预处理与解析、特征提取与向量化和基于模型异常检测。
图1 日志数据异常检测流程
1)原始系统日志数据采集是收集各类系统,如分布 式 系 统HDFS、Spark,操 作 系 统Windows、安 卓 和MAC,服务器应用Apache、OpenSSH 等的日志,该类日志包括系统状态和运行信息,每个日志包含时间戳、指示和操作等不同格式的文本信息,通常通过Kafka 等数据流传输抽取工具汇聚到集中的数据库中。原始日志数据属于非结构化数据,为了便于使用复杂机器学习的方法挖掘有价值的信息以用于异常检测,通常需要对日志进行结构化。
2)日志数据预处理与解析即完成日志数据结构化的工作,如文本信息的数值化、归一化和模板化处理。
3)特征提取和向量化是指通过固定间隔窗口、滑动窗口或会话窗口将结构化日志数据切分为特征序列,再执行特征提取对数据序列进行向量化(如事件计数向量),所有特征向量可形成特征矩阵。
4)基于模型异常检测是将特征矩阵输送给机器学习模型进行学习与训练,生成较高泛化能力的异常检测模型,最后利用所构建的模型识别新导入的日志序列是否存在异常。
本文的工作主要是针对特征向量数据集,提出合适的机器学习模型,进行异常检测并提高异常检测的性能。
3 面向不均衡数据集的改进模糊聚类方法
3.1 模糊聚类方法相关模型
模糊C 均值聚类(Fuzzy C⁃means Clustering,FCM)模型是将个采样数据={,,…,x,…,x}分为个聚类,并搜索每组的聚类中心,使得非相似性指标的价值函数达到最小。FCM 聚类的目标函数为:
目标函数对u和c求偏导取极值可得:
3.2 改进模糊聚类方法
模糊聚类在很多应用中取得了明显效果,但数据分布的不平衡性将对模糊聚类的性能产生负面影响。两个相邻的数据群集分布不平衡,而模糊聚类因其目标函数的局限性,在聚类过程中趋于均衡两个类之间的容量,存在均匀效应,这样就导致了一部分数据点将错误地划分为少数据样本的类别,较大地影响了不均衡数据集的分类性能。为解决不均衡数据集模糊聚类中存在的均匀效应问题,提高聚类性能,本文引入新的模糊聚类有效性指标,通过进一步放大聚类中心距离,从而影响模糊聚类目标函数,从而提高聚类的性能。通常异常检测为2 个聚类中心,即=2;其中,为正常类,占了大比例数据;为异常类,占了小部分数据。因此,式(2)分开表述为:
为便于后面的推导,隶属度简化为:
代入式(4)、式(5)可得:
针对不平衡数据集的应用场景,假设当 ||不断增加时,少样本类 ||可固定为常数,则属于正常类的数据将对异常类产生更大的影响。将 ||不断增加的假设操作代入式(7)、式(8)可得:
本文利用聚类性能指标(Clustering Validity Index,CVI)来优化不平衡问题。从类内与类间的尺度评价,分为类内评价指标(紧凑度准则)和类间评价指标(分离度准则)。紧凑度准则:
分离度准则是指两个聚类中心的距离能够准确描述类间分离度,表示为:
为了准确评估类内的聚合度和类间的分离度,将类内紧凑度和类间分离度融合,得到聚类评估指标:
根据式(10),评估指标Sep 包含了不平衡补偿因子,通过不平衡补偿因子将类间距离拉开,可以解决不平衡数据聚类问题,其聚类目标是找到最小的值即最优的聚类结果。
3.3 算法步骤
本文基于模糊聚类和聚类评价指标,针对日志数据集中的不平衡问题,提出了一种改进的模糊聚类日志异常检测方法。算法由三大步骤组成:首先,模糊聚类算法用于训练数据集的聚类计算,以获得数据集的统计分布特性和模糊属性,即不同类型的数据点分配不同的隶属权值;其次,采用模糊聚类评价准则评估最优的聚类参数,并解决不平衡数据问题带来的奇异点不平衡分配问题;最后,生成预测模型。具体步骤如下:
步骤1:选择0~1 期间的随机数初始化隶属度u,使其满足式(6)中的约束条件;
步骤2:用式(7)、式(8)计算,。
步骤3:用式(1)计算目标函数,如果该值小于某个确定的阈值,或相对上次目标函数的改变量小于某个阈值,则算法中止;
步骤4:用式(3)计算新的u,返回步骤2;
步骤5:由式(13)选出最优的所对应的聚类模型。
4 实验结果分析
为评估本文方法的性能,采用公开的数据集HDFS(https://github.com/logpai/loghub),该数据集是从EC2 平台实际生产平台中收集,由原始领域专家手动标记。随机选择50%的数据作为训练数据集,剩下的50%作为测试数据集,在训练数据集上训练模型,并将模型应用于测试数据集;再与其他的无监督学习LOF、One⁃Class SVM、Isolation Forest、PCA、Invariants Mining和层次聚类等算法进行比较。
通常系统日志数据的异常检测是将输出日志片段属于异常的标签或系统异常信息的概率作为评测标准,具体评测指标包括准确率(Precision)、召回率(Recall)和综合评价指标F1 值(F⁃measure)。其中,准确率用于评估异常检测的正确性,召回率用于评估异常检测的全面性,F1 值是通过加权调和平均结合了准确率和召回率,用于评估异常检测的整体性能。不同方法在HDFS数据集上的性能比较如表1 所示。
表1 不同方法在HDFS 数据集上的性能比较
表1 中,各类算法在HDFS 数据集上的表现显示出良好的准确性,精度都在83%~100%之间,但部分算法召回率和F1 性能指标不稳定,如LOF、One⁃Class SVM、PCA和 层 次 聚 类。其 中,LOF和One⁃Class SVM因正常判定为异常的比例太高,误报率较高,造成了整体性能不佳;而PCA和层次聚类的结果中精确度接近1,基本没有将异常错误判定为正常的情况,有一定数量的正常数据被误判为异常结果,在实际应用中可以接受,并在实际系统中有应用。另外,Isolation Forest和Invariants Mining算法整体性能较稳定,基本上准确率和召回率指标都比较接近,但均在95%以下,达不到最佳。模糊C 均值聚类(FCM)因引入模糊隶属度对不同簇群分配不同的权值,较好地过滤了噪声,整体性能都优于其他方法,性能均在96%以上,特别是召回率为100%,但还是存在较少的异常点被判定为正常,这是因数据集的不平衡问题导致的。
本文方法引入了不平衡补偿因子,对不同分布的异常点分配了不同权值的隶属度,将两个簇集距离进一步拉开,从而进一步提高了聚类的效果,性能整体提高了1%,各项指标均优于其他算法。
5 结 论
针对目前分布式应用系统的自动化运维中日志数据异常检测需求,本文提出了一种模糊C 均值聚类(FCM)的无监督学习的异常检测算法,在HDFS 数据集上与其他无监督学习方法进行了比较。结果表明,无论是准确率还是召回率和F1 指标,均优于其他的异常检测算法。针对大规模的日志数据中存在正常事件和异常事件严重不平衡的问题,从而影响了机器学习的分类效果问题,本文引入了不平衡补偿因子用于平衡数据的不平衡性,提高类内聚合度和类间分离度。在模糊C 均值聚类的基础上,本文方法的性能指标提升了1%,精确度、召回率和F1 值分别达到了97%,1和98.6%。