基于PCA余量空间的异常诊断方法及装置
技术领域
本发明实施例涉及信息技术,尤其涉及一种基于PCA余量空间的异常诊断方法及装置。
背景技术
随着计算需求的增长,需要规模更大、更加复杂的分布式计算系统。但更复杂的分布式计算系统更容易产生故障。另外,由于故障往往因系统的异常行为所导致,因此,对系统运行过程中异常的检测与诊断,是进行故障检测与诊断的基础。
利用机器学习方法,例如基于分布式计算系统中各个状态量与日志的异常检测与诊断,可以有效排除故障。其中,主成分分析(Principle Component Analysis,简称:PCA)异常检测算法与决策树模型相结合的方法,是一种有效的异常检测诊断方法。具体地,PCA异常检测算法的依据是余量的大小,例如,B收到的数据与A发出的数据不相符;在检测到异常之后,通过决策树模型来对异常检测的结果进行学习,以诊断异常产生的原因。
而决策树模型在学习PCA异常检测的结果时,将PCA异常检测的结果拆分为多种情况,例如,当A发出的数据量远大于0.5,B收到的数据量远小于0.5时为异常;当A发出的数据远小于0.5,B收到的数据远大于0.5时为异常,等等,这使得原本相同的故障被拆分成了不同的故障,从而不利于故障的诊断。
发明内容
本发明实施例提供一种基于PCA余量空间的异常诊断方法及装置,以实现对异常的有效诊断。
第一方面,本发明实施例提供一种基于主成分分析PCA余量空间的异常诊断方法,应用于包含M个状态量的系统中,所述M个状态量在同一时刻的取值构成一状态向量,所述M为大于1的正整数,所述系统正常工作状态下的N个状态向量构成原始空间,所述N为大于所述M的正整数,所述方法包括:
在检测到所述系统异常时,获取K个第一基向量,其中,所述K个第一基向量为通过对K个第二基向量进行稀疏化处理得到,所述第二基向量用于表示对所述原始空间进行PCA降维得到的余量空间,所述K为所述余量空间的维数,所述K小于或等于所述N,每个所述第一基向量中的元素个数为所述M;
根据所述系统异常时对应的状态向量在所述K个第一基向量中的投影,诊断所述系统异常产生的原因。
在第一方面的第一种可能的实现方式中,所述获取K个第一基向量,包括:
采用消元方法或优化方法,处理所述K个第二基向量,得到所述K个第一基向量。
根据第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述第二基向量为列向量,所述K个第二基向量组成一M*K的矩阵,所述采用消元方法,处理所述K个第二基向量,得到所述K个第一基向量,包括:
对每一所述第二基向量,得到该第二基向量中各元素的平方和,并确定平方和最大的第二基向量作为消元的主元;
更换所述矩阵中第一列与所述主元的位置,将所述主元调整到所述矩阵的第一列;
以所述主元的第一行元素为列向量长度,其他元素为零为目标,对所述矩阵进行Householder变换;
在所述矩阵中,自上至下,将除去所述矩阵的第一行及所述主元的剩余部分作为新的矩阵,所述新的矩阵中每一列向量作为新的第二基向量,执行所述对每一所述第二基向量,得到该第二基向量中各元素的平方和,并确定平方和最大的第二基向量作为消元的主元,直至所述新的矩阵中仅包含一行向量,得到行阶梯矩阵;
在所述行阶梯矩阵中,各行向量之间做加权加和/或减操作,得到化简后的行阶梯形矩阵;
与所述矩阵中各所述第二基向量位置对应,还原所述化简后的行阶梯形矩阵中各列的位置,并对还原后的矩阵中各行进行归一化处理,得到所述K个第一基向量。
根据第一方面、第一方面的第一种至第二种可能的实现方式中任意一种,在第一方面的第三种可能的实现方式中,所述检测到所述系统异常,包括:
若所述系统对应的状态向量在所述余量空间的投影大于或等于预设阈值,则确定所述系统出现异常;
若所述系统对应的状态向量在所述余量空间的投影小于所述预设阈值,则确定所述系统正常。
根据第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,若所述系统对应的状态向量在所述余量空间的投影小于所述预设阈值,则确定所述系统正常之后,所述方法还包括:
将确定所述系统正常对应的所述状态向量通过PCA降维,更新所述余量空间,并根据更新后的余量空间获取第一基向量。
第二方面,本发明实施例提供一种基于主成分分析PCA余量空间的异常诊断装置,应用于包含M个状态量的系统中,所述M个状态量在同一时刻的取值构成一状态向量,所述M为大于1的正整数,所述系统正常工作状态下的N个状态向量构成原始空间,所述N为大于所述M的正整数,所述装置包括:
检测模块,用于检测所述系统是否产生异常;
获取模块,用于在所述检测模块检测到所述系统异常时,获取K个第一基向量,其中,所述K个第一基向量为通过对K个第二基向量进行稀疏化处理得到,所述第二基向量用于表示对所述原始空间进行PCA降维得到的余量空间,所述K为所述余量空间的维数,所述K小于或等于所述N,每个所述第一基向量中的元素个数为所述M;
诊断模块,用于根据所述系统异常时对应的状态向量在所述获取模块所获取的所述K个第一基向量中的投影,诊断所述系统异常产生的原因。
在第二方面的第一种可能的实现方式中,所述获取模块具体用于:
采用消元方法或优化方法,处理所述K个第二基向量,得到所述K个第一基向量。
根据第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述第二基向量为列向量,所述K个第二基向量组成一M*K的矩阵,所述获取模块采用消元方法,处理所述K个第二基向量,得到所述K个第一基向量,具体为:
对每一所述第二基向量,得到该第二基向量中各元素的平方和,并确定平方和最大的第二基向量作为消元的主元;
更换所述矩阵中第一列与所述主元的位置,将所述主元调整到所述矩阵的第一列;
以所述主元的第一行元素为列向量长度,其他元素为零为目标,对所述矩阵进行Householder变换;
在所述矩阵中,自上至下,将除去所述矩阵的第一行及所述主元的剩余部分作为新的矩阵,所述新的矩阵中每一列向量作为新的第二基向量,执行所述对每一所述第二基向量,得到该第二基向量中各元素的平方和,并确定平方和最大的第二基向量作为消元的主元,直至所述新的矩阵中仅包含一行向量,得到行阶梯矩阵;
在所述行阶梯矩阵中,各行向量之间做加权加和/或减操作,得到化简后的行阶梯形矩阵;
与所述矩阵中各所述第二基向量位置对应,还原所述化简后的行阶梯形矩阵中各列的位置,并对还原后的矩阵中各行进行归一化处理,得到所述K个第一基向量。
根据第二方面、第二方面的第一种至第二种可能的实现方式中任意一种,在第二方面的第三种可能的实现方式中,所述检测模块具体用于:
若所述系统对应的状态向量在所述余量空间的投影大于或等于预设阈值,则确定所述系统出现异常;
若所述系统对应的状态向量在所述余量空间的投影小于所述预设阈值,则确定所述系统正常。
根据第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,若所述检测模块检测到所述系统对应的状态向量在所述余量空间的投影小于所述预设阈值,并确定所述系统正常之后,所述获取模块还用于:
将确定所述系统正常对应的所述状态向量通过PCA降维,更新所述余量空间,并根据更新后的余量空间获取第一基向量。
本发明实施例基于PCA余量空间的异常诊断方法及装置,由于第一基向量具有稀疏的特点,故系统异常的排查人员可以根据异常对应的状态向量在K个第一基向量中的投影,快速、有效地诊断异常产生的原因。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为发明基于PCA余量空间的异常诊断方法实施例一的流程图;
图2为本发明基于PCA余量空间的异常诊断方法中所采用的消元方法的流程图;
图3为采用图2所示消元方法进行消元的示例图;
图4为本发明基于PCA余量空间的异常诊断方法实施例二的流程图;
图5为本发明基于PCA余量空间的异常诊断方法实施例三的流程图;
图6为本发明基于PCA余量空间的异常诊断装置实施例一的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例的基于PCA余量空间的异常诊断方法应用于包含M个状态量的系统中,例如上述分布式计算系统,M为大于1的正整数。系统工作情况下,M个状态量在同一时刻的取值构成一状态向量,本发明以状态向量为列向量进行说明,但并不以此为限。正常工作状态下的N个状态向量构成原始空间,N为大于M的正整数。通常情况下,N要远大于M,这样才能捕捉M维状态向量所具有的特征。
由于,PCA可以发现数据点在数据空间中集中于一部分子空间中,在此命名为“主空间”,PCA降维则是只保留主空间,来替代原始的整个数据空间;无法被主空间所覆盖的数据点的分量值被称为余量(英文:Residual),整个空间除去“主空间“外的部分称为余量空间。因此,对上述原始空间进行PCA降维得到的余量空间,此时,该余量空间通过第二基向量表示,该余量空间的维数为K,即第二列向量的个数为K个,K小于或等于N。
图1为发明基于PCA余量空间的异常诊断方法实施例一的流程图。本发明实施例提供一种基于PCA余量空间的异常诊断方法,该方法可以由基于PCA余量空间的异常诊断装置执行,该装置可以独立设置,也可以集成在例如笔记本电脑、台式电脑或掌上电脑(Personal Digital Assistant,简称:PDA)等设备中。如图1所示,该方法包括:
S101、在检测到系统异常时,获取K个第一基向量。
其中,所述K个第一基向量为通过对K个第二基向量进行稀疏化处理得到,每个第一基向量中的元素个数为M。
系统正常工作情况下,某一时刻的状态向量在余量空间中的投影是非常小的,而当这个投影很大时,则说明系统出现异常。
具体地,可以通过多种方法检测异常,例如PCA异常检测方法,其中,PCA异常检测方法中所采用的余量空间可以由第一基向量表示,也可以由第二基向量表示,本发明不对其进行限制。
其中,稀疏是指在一个向量中,只有少部分位置上数值不为零。
现有技术中采用PCA降维得到的余量空间是判断系统是否异常。但表示余量空间的各个基向量(即本发明中的第二基向量)非常复杂,余量空间的特征不明显,从而无法在检测到异常之后给异常诊断带来实际帮助。
而本发明实施例基于稀疏这一概念,对上述第二基向量进行稀疏化处理,得到表示余量空间的第一基向量,该些第一基向量体现了系统正常运行时各个状态量需要遵循的基本的线性关系。第一基向量具有稀疏的特点,从而更清晰的描述余量空间的特征,方便系统异常的排查人员理解,使得异常诊断更为容易。
对于如何通过用于表示余量空间的第二基向量来获取第一基向量可以有多种实现方式,例如,采用消元方法或优化方法。其中,优化方法为找到一个线性变化,使得变化之后的向量稀疏,限制条件为线性变化不病态。优化所找到的线性变化之后的得到的向量组(矩阵)即为第一基向量。对于通过消元方法获取第一基向量在后续具体实现方式中详细描述。
S102、根据该系统异常时对应的状态向量在K个第一基向量中的投影,诊断系统异常产生的原因。
根据异常在余量空间稀疏的基向量(即第一基向量)上的投影,确定该异常违背了哪些线性关系,投影越大,即违背程度越严重的线性关系,与异常的关联程度越强。
在本发明实施例中,由于第一基向量具有稀疏的特点,故系统异常的排查人员可以根据异常对应的状态向量在K个第一基向量中的投影,快速、有效地诊断异常产生的原因。
在上述基础上,第二基向量采用列向量形式,K个第二基向量组成一M*K的矩阵,采用消元方法,处理上述K个第二基向量,得到K个第一基向量。
图2为本发明基于PCA余量空间的异常诊断方法中所采用的消元方法的流程图。图3为采用图2所示消元方法进行消元的示例图。其中,以K=4,M=3为例进行说明。
同时参考图2和图3。具体地,消元方法可以包括:
S201、确定主元。
具体地,对每一第二基向量,得到该第二基向量中各元素的平方和,并确定平方和最大的第二基向量作为消元的主元。该步骤的目的是为了使最终得到的K个第一基向量不病态。
S202、更换位置。
更换矩阵中第一列与主元的位置,将主元调整到矩阵的第一列。
S203、Householder变换。
以主元的第一行元素为列向量长度,其他元素为零为目标,对矩阵进行Householder变换。该步骤之后,可使主元稀疏。
其中,如图3所示,虚线框31中的矩阵表示余量空间的第二基向量的一示例;虚线框32中的矩阵表示虚线框31中的矩阵在S203之后的结果。
S204、判断是否结束消元。
在矩阵中,自上至下,将除去矩阵的第一行及主元的剩余部分作为新的矩阵,该新的矩阵中每一列向量作为新的第二基向量,返回执行S201,直至新的矩阵中仅包含一行向量,得到行阶梯矩阵,如图3中虚线框33中的矩阵,然后执行S205。
S205、获取行最简型对角矩阵。
在S204得到的行阶梯矩阵中,各行向量之间做加权加和/或减操作,得到化简后的行阶梯形矩阵(英文:reduced row echelon form),如图3中虚线框34中的矩阵。
其中,上述化简后的行阶梯形矩阵在中文文献中又称为行最简型对角矩阵;在国际上,化简后的行阶梯形矩阵也称作行规范形矩阵(英文:row canonical form)。
S206、归一化。
与矩阵中各第二基向量位置对应,还原化简后的行阶梯形矩阵中各列的位置,并对还原后的矩阵中各行进行归一化处理,得到K个第一基向量,如;图3中虚线框35中的矩阵的各列向量,这里K取值为4。
下面采用几个具体的实现方式,对图1所示方法实施例的技术方案进行详细说明。
一种实现方式中,在异常发生之后,对系统异常发生时与之前所产生的日志与状态数据进行离线分析,完成异常诊断工作。
图4为本发明基于PCA余量空间的异常诊断方法实施例二的流程图。如图4所示,该方法可以包括:
S401、建立PCA异常检测模型。
具体地,对系统在发生故障较长时间之前的正常工作状态进行学习。使用PCA对各个工作状态,包括状态量与日志的产出进行降维,得到主空间以外的余量空间,其中,状态量例如为中央处理器(Central Processing Unit,简称:CPU)负载和内存负载等。
正常情况下系统的状态向量在余量空间中的投影,即余量,是非常小的。这意味着,任取余量空间中的任意向量a,正常工作系统的状态向量b在这个向量a上的投影都是非常小的。状态向量b可分为两个分量:b1和b2,b1在主空间中,b2在余量空间中,其中b1由于与余量空间完全垂直,因此在任意余量空间中的向量a上的投影都为零。状态向量b在余量空间的分量b2很小,因此在余量空间任意向量a上的投影都很小。这意味着,正常情况下,状态向量b在余量空间任意向量a的投影,即各个状态量按照该向量各个维度数值大小的线性组合的和接近于零,这可以看做是一条正常情况下系统各状态量所遵循的一个线性关系。
表示余量空间的各个基向量代表基本的线性关系,而余量空间的任意其他向量,即任意线性关系,都可以由该基本的线性关系组合得到。
S402、检测系统异常。
具体地,故障发生之时,时间段的取值范围例如可以介于1分钟到1小时之间,分析这一时间段内系统状态在余量空间上的投影。
可选地,S402可以包括:若系统对应的状态向量在余量空间的投影大于或等于预设阈值,则确定系统出现异常;若系统对应的状态向量在余量空间的投影小于预设阈值,则确定系统正常。其中,预设阈值可根据实际需求设定,本发明不对其进行限制。
S403、余量空间稀疏化。
具体地,对余量空间的各个第二基向量进行稀疏化处理,得到一组第一基向量。首先,这一组第一基向量由第二基向量线性组合得到,因此不会超出余量空间,并且这组第一基向量仍是线性无关的,从而保证第一基向量没有冗余,也没有遗漏,是第二基向量的一组等价替换。
S404、系统异常诊断。
具体地,分析系统异常时对应的状态向量在各个第一基向量上的投影。投影越大,说明系统此时被判定为异常与该第一基向量所表示的状态量之间的组合关系被打破,有越紧密的联系。由于第一基向量具有稀疏的特点,因此,与系统异常相关联的被打破的状态量之间的线性关系是非常简洁的。
S405、故障诊断。
另需说明的是,由于第一基向量是可以完整描述整个余量空间的,因此,每一个过大的余量都必然在某一些第一基向量上有过大的投影,从而可以诊断其原因。
该实现方式中,用于表示余量空间的K个第一基向量是固定不变的,因此,只需一次稀疏化处理获得K个第一基向量并保存即可,再检测到系统异常时直接获取该K个第一基向量诊断异常。
另一种实现方式中,在系统运行过程中,对系统实时产生的日志与状态数据进行在线分析,不断改进调整异常检测模型,在检测到系统异常发生时,进行异常诊断,辅助异常的及时排查与应对。该实现方式与上一实现方式的区别在于:本实现方式中,K个第一基向量是实时更新的。
现有技术中,异常诊断需要有充足的异常点来建立诊断模型,因此对训练数据有较高的要求;另外,当新类型的异常出现时,由于异常诊断模型需要充分的新类型的异常作为训练数据才能准确识别出新类型的异常,因此存在一定时间的窗口期,无法协助系统异常排查人员进行异常诊断。
而在本实现方式中,不需要对诊断模型进行单独的训练,在检测到异常时,再对检测模型进行稀疏化处理以进行异常诊断,计算开销较小;其次,本发明在遇到新型异常时,不存在现有技术中异常诊断所需要的从检测到异常到诊断异常中间的空窗期,对新型异常的出现更敏感。
图5为本发明基于PCA余量空间的异常诊断方法实施例三的流程图。如图5所示,该方法可以包括:
S501、建立PCA异常检测模型。
该步骤同S401,此处不再赘述。
S502、检测系统是否异常。
该步骤中,采用S501建立的PCA异常检测模型检测系统实时产生的状态向量。若系统对应的状态向量在余量空间的投影大于或等于预设阈值,则确定系统异常;若系统对应的状态向量在余量空间的投影小于预设阈值,则确定系统正常。在确定系统正常之后,将确定系统正常对应的状态向量通过PCA降维,更新余量空间。
当前系统并非异常时,可以将当前状态向量通过在线PCA训练,执行S501,更新余量空间,即上述PCA异常检测模型,从而使得余量空间可以更好的适应当前系统的运行状态,异常检测更加准确。
当前系统异常时,执行S503。
S503-S505同S403-S405,此处不再赘述。
S506、启动应急预案。
通过对日志及系统状态量的在线分析,可以发掘此时记录中的异常,从而对可能即将到来的故障进行预报,提示启动应急预案,减小故障损失,同时如果可以精确定位异常的类型,则可以启动更为精确的预案,可以对故障有更好的应对。
图6为本发明基于PCA余量空间的异常诊断装置实施例一的结构示意图。本发明实施例提供一种基于PCA余量空间的异常诊断装置,应用于包含M个状态量的系统中,M个状态量在同一时刻的取值构成一状态向量,M为大于1的正整数,系统正常工作状态下的N个状态向量构成原始空间,N为大于M的正整数。该装置可以独立设置,也可以集成在例如笔记本电脑、台式电脑或PDA等设备中。如图6所示,该装置包括检测模块61、获取模块62和诊断模块63。
其中,检测模块61用于检测所述系统是否产生异常;获取模块62用于在检测模块61检测到所述系统异常时,获取K个第一基向量,其中,所述K个第一基向量为通过对K个第二基向量进行稀疏化处理得到,所述第二基向量用于表示对所述原始空间进行PCA降维得到的余量空间,所述K为所述余量空间的维数,所述K小于或等于所述N,每个所述第一基向量中的元素个数为所述M;诊断模块63用于根据所述系统异常时对应的状态向量在获取模块62所获取的所述K个第一基向量中的投影,诊断所述系统异常产生的原因。
本实施例的装置,可以用于执行图1或图4或图5所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
在上述实施例中,获取模块62可具体用于:采用消元方法或优化方法,处理所述K个第二基向量,得到所述K个第一基向量。
可选地,所述第二基向量为列向量,所述K个第二基向量组成一M*K的矩阵,获取模块62采用消元方法,处理所述K个第二基向量,得到所述K个第一基向量,具体为:对每一所述第二基向量,得到该第二基向量中各元素的平方和,并确定平方和最大的第二基向量作为消元的主元;更换所述矩阵中第一列与所述主元的位置,将所述主元调整到所述矩阵的第一列;以所述主元的第一行元素为列向量长度,其他元素为零为目标,对所述矩阵进行Householder变换;在所述矩阵中,自上至下,将除去所述矩阵的第一行及所述主元的剩余部分作为新的矩阵,所述新的矩阵中每一列向量作为新的第二基向量,执行所述对每一所述第二基向量,得到该第二基向量中各元素的平方和,并确定平方和最大的第二基向量作为消元的主元,直至所述新的矩阵中仅包含一行向量,得到行阶梯矩阵;在所述行阶梯矩阵中,各行向量之间做加权加和/或减操作,得到化简后的行阶梯形矩阵;与所述矩阵中各所述第二基向量位置对应,还原所述化简后的行阶梯形矩阵中各列的位置,并对还原后的矩阵中各行进行归一化处理,得到所述K个第一基向量。
进一步地,检测模块61可具体用于:若所述系统对应的状态向量在所述余量空间的投影大于或等于预设阈值,则确定所述系统出现异常;若所述系统对应的状态向量在所述余量空间的投影小于所述预设阈值,则确定所述系统正常。
其中,若检测模块61检测到所述系统对应的状态向量在所述余量空间的投影小于所述预设阈值,并确定所述系统正常之后,获取模块62还可以用于:将确定所述系统正常对应的所述状态向量通过PCA降维,更新所述余量空间,并根据更新后的余量空间获取第一基向量。
本发明实施例基于PCA余量空间的异常诊断方法及装置,由于第一基向量具有稀疏的特点,故系统异常的排查人员可以根据异常对应的状态向量在K个第一基向量中的投影,快速、有效地诊断异常产生的原因。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。