【技术实现步骤摘要】
一种基于密度加权集成规则的日志异常检测方法
[0001]本专利技术属于日志异常检测领域,具体涉及一种基于密度加权集成规则的日志异常检测方法。
技术介绍
[0002]现代系统正在大规模发展,要么是横向扩展,成为建立在数千台商用机器上的复杂系统(比如Spark);要么是纵向扩展,成为具有数以千计的处理器的超级计算机(比如Blue Gene/L)。这些系统正成为IT行业的核心部分,故障的出现及其对于系统性能和运营成本的影响已经成为研究领域里非常重要的问题。复杂的软件和系统不仅包含更多的BUG,而且难以理解和分析。另外,随着时间流逝,这些系统的质量也在老化。这些问题会导致软件崩溃或系统停机。
[0003]日志可用于获取软件信息以检测和定位异常。传统的系统管理员检查系统生成的日志数据,以深入了解系统的行为。然而,由于系统的规模和复杂性的提升,每天都有大量的日志产生。如果问题发生,那么对于操作员来说,通过手动检查大量日志消息来查找系统问题非常耗时。因此,需要一些自动化工具用于日志异常检测的需求在逐渐增强。
[0004]在日志数据中,正常日志记录系统或软件的正常状态,异常日志记录系统或软件的异常状态,而描述正常状态的日志数量远大于描述系统异常状态的日志数量,因此不平衡的数据分布是日志数据的一个特征。当今标准机器学习算法都是基于平衡数据的理论,它们在不平衡样本上通常表现得很差。基于传统机器学习算法的分类器通常忽略少数类,因为这些分类算法倾向于最大化整体分类的准确率。因此,它们的准确率对于分类不平衡问题来说不够好。通过 ...
【技术保护点】
【技术特征摘要】
1.一种基于密度加权集成规则的日志异常检测方法,其特征在于,包括以下步骤:步骤1:引入多条软件日志,将每条软件日志根据分隔符分割解析得到软件单词数据集,将多个软件单词数据集进行求并集处理,进一步通过单词去重复处理得到单词集合,统计单词集合中每个单词在每条日志出现的频次,进一步构建软件日志单词频次向量;步骤2:根据单词频次向量,使用基于改进的复杂分布数据谱聚类的多粒度主曲线方法提取确定初始中心点和初始类数,对单词频次向量进行聚类并获得精确的簇,同时得到每个簇的中心点,根据每个簇的中心点的状态标记簇中的所有样本,根据中心点的状态确定所有样本的状态,得到正常簇、异常簇,并统计异常簇的数量,再统计异常簇的样本数量,计算得到新的正常簇的样本数量,对正常簇抽样得到新的正常簇,通过新的正常簇的样本数量,计算得到新的异常簇的样本数量,对异常簇抽样得到新的异常簇,得到正常日志集和异常日志集,通过正常日志集和异常日志集构建平衡日志集;步骤3:基分类器将平衡日志集作为训练集进行优化训练,用训练后的基分类器构建多基分类器,用多基分类器对待分类的样本进行分类,多基分类器的每个基分类器会产生分类概率向量;步骤4:根据多基分类器的每个基分类器产生的分类概率向量,通过五个集成规则MaxNW,MinNW,MajNW,ProdNW和SumNW,分别得到五个集成规则产生的分类结果,遍历五个分类结果,如果有相同的分类结果,则分类结果的频次加一,得到分类结果的频次,从中选择频次最大的分类结果作为最终的分类结果,如果有多个频次最多的分类结果,则从中随机选择一个分类结果作为最终的分类结果。2.根据权利要求1所述的基于密度加权集成规则的日志异常检测方法,其特征在于:步骤1所述每条软件日志为:Log
i
i∈[1,M]其中,Log
i
为第i条软件日志,M为软件日志的数量;步骤1所述软件单词数据集为:其中,Data
i
为第i条软件日志的软件单词数据集,Word
i,j
为第i条软件日志的软件单词数据集中第j个软件单词,N
i
为第i条软件日志的软件单词数据集中软件单词的数量,j∈[1,N
i
];步骤1所述多个软件单词数据集进行求并集处理为:{Data1,Data2,...,Data
M
};步骤1所述通过单词去重复处理得到单词集合为:WordSet={Word1,Word2,...,Word
L
}其中,Word
k
为单词集合中第k个单词,L为单词集合中单词的数量,k=[1,L];步骤1所述统计单词集合中每个单词在每条日志出现的频次为:Freq
k
={F
k,1
,F
k,2
,...,F
k,M
}其中,Freq
k
为单词集合中第k个单词在各软件单词数据集种出现的频次,Freq
k,i
为单词集合中第k个单词在第i条软件日志的软件单词数据集中出现的频次即次数,L为单词集合中单词的数量,k∈[1,L];
步骤1所述构建软件单词频次向量为:Vector
i
={F
1,i
,F
2,i
,...,F
L,i
}i∈[1,M]其中,Vector
i
为第i条软件日志的单词频次向量,M为软件日志的数量。3.根据权利要求1所述的基于密度加权集成规则的日志异常检测方法,其特征在于:步骤2所述初始中心点和类分别为:CenterPoint0Classes={Class1,Class2,...,Class
ClaNum
}其中,CenterPoint0为初始中心点,Class
classnum
为第clanum个类,clanum∈[1,ClaNum];步骤2所述精确的簇为:Clusters={Cluster1,Cluster2,...,Cluster
CluNum
}其中,Cluster
clunum
为第clunum个簇,clunum∈[1,CluNum];步骤2所述每个簇的中心点为:CenterPoints={CenterPoint0,CenterPoint1,...,CenterPoint
CluNum
}其中,CenterPoint
clunum
为第clunum个簇的中心点,特别地,CenterPoint
o
为初始中心点;步骤2所述每个簇的中心点状态为:CenterPointStates={CPState1,CPState2,...,CPState
CluNum
}其中,CPState
clunum
为第clunum个簇的中心点的状态,CPState
clunum
∈[0,CluNum
‑
1],CPState
clunum
=0表示第clunum个簇的中心点为正常,CPState
clunum
≠0表示第clunum个簇的中心点为异常,正常状态只有1种,异常状态有ClusterNum
‑
1种;步骤2所述簇中的样本为:其中,Cluster
clunum
为第clunum个簇,Sample
clunum,samnum
为第clunum个簇的第samnum个样本,SamNum
clunum
为第clunum个簇的样本数量,samnum=[1,SamNum
clunum
];步骤2所述根据中心点的状态确定所有样本的状态为:其中,SamStates
clunum
为第clunum个簇的样本状态集,SamState
clunum,samnum
为第clunum个簇的第samnum个样本状态,与CPState
clunum
类似,两者之间存在这样的关系:if CPState
clunum
=0如果第clunum个簇的中心点状态为正常,那么第clunum个簇中的所有样本状态全为正常,第clunum个簇为正常簇;if CPState
clunum
=x(x∈[1,ClusterNum
‑
1])如果第clunum个簇的中心点状态为异常,那么第clunum个簇中的所有样本状态全为异
常,第clunum个簇为异常簇;步骤2所述正常簇为:NorClusters0={NorCluster
0,1
}其中,NorClusters0表示正常簇集,NorCluster
0,1
为正常簇集的第1个正常簇,正常簇的数量只有1;步骤2所述异常簇为:其中,AbnorClusters0表示异常簇集,为异常簇集的第n
abnor
个异常簇,n
abnor
∈[1,N
abnor
],N
abnor
为异常簇数量;步骤2所述异常簇的样本数量为:其中,为第n
abnor
个异常簇的样本数量;步骤2所述新的正常簇的样本数量为:步骤2所述新的异常簇的样本数量为:从每一个正常簇里抽出N
nor
个样本,得到新的正常簇:NorClusters1={NorCluster
1,1
}其中,NorClusters1为经过1轮抽样的正常簇集,NorCluster
1,1
为经过1轮抽样的正常簇集的第1个正常簇,此过程重复N次;从每一个异常簇里提取N
abnor
个样本,得到新的异常簇:其中,AbnorClusters1为经过1轮抽样的异常簇集,为经过1轮抽样的异常簇集的第n
abnor
个异常簇,n
abnor
∈[1,N
abnor
],N
abnor
为经过1轮抽样的异常簇数量,此过程重复N次;步骤2所述正常日志样本集为:NorSet={NorClusters1,NorClusters2,...,NorClusters
N
}其中,NorClusters
n
为经过n次抽样后的正常簇集,n∈[1,N];步骤2所述异常日志样本集为:AbnorSet={AbnorClusters1,AbnorClusters2,...,AbnorClusters
N
}其中,AbnorClusters
n
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。