(国网甘肃省电力公司信息通信公司甘肃兰州730050)
摘要:本文根据电力系统访问日志记录,构建用于挖掘的数据集。在Spark环境下,使用并行化的Apriori算法,对可能产生问题的相关设备组构建频繁项集,形成系统故障自动诊断报告。本文以国网甘肃电力公司系统1400w条日志记录作为数据集,采用该方法进行了检验。结果表明该方法能够有效发现相关问题设备组。同时,该算法在80G内存,10个虚拟节点的集群上以10秒的速度完成了频繁项集挖掘,与专家判断对比,准确率达到99%,实现了预期效果。
关键词:电力日志;Spark;Apriori;关联规则挖掘
引言
电网日志的故障诊断是在电网调度指挥中心对电网进行的系统故障诊断[1]。故障的检测通常采用机器学习的计算机抓取与专家判断两种方法[2]。如何能够从众多的信息日志中准确找到与错误日志相关的信息日志,而不是依赖于专家判断成为了一个难题。数据挖掘会根据客观的历史数据进行预测,减少人为主观判断的影响,因而成为解决该问题的首选方法[4]。本文将以电网信息日志入手,在分布式环境中进行数据挖掘的尝试,并会在真实的数据集上进行验证。
关联规则挖掘需要从交易数据中发现买了X的用户,还会买Y的规则,多用于推荐系统[3]。关联规则挖掘方法主要分为两步:生成频繁项集和生成关联规则。由于Apriori算法扩展性较好,且易于实施,因此本文采用并行化的Apriori算法,以达到系统实时性的要求。
1数据集准备
在本论文实验中,以国网甘肃省电力公司的2018年9月的日志为例,共获取约1400w条信息日志,279条错误日志。信息日志主要由以下六部分组成:信息发生时间,设备编号及IP,请求页面,请求IP,请求设备环境,响应结果。而错误日志主要由错误编号ID,错误时间,错误设备编号、设备连接状况和设备状态改变情况这五部分组成。其中,错误设备编号与信息日志中的设备编号一致。
数据集的准备主要是将日志信息转化为关联规则挖掘中的输入,即事务与项集。根据信息日志,以时间序列为基准,将同一小时时间内所发生的信息,记录为一组事务。即在同一小时内发生的信息被认为是一次事务,而其中的设备编号就相当于项集。对于日志关联规则的挖掘就转变为对于错误发生项,挖掘与该项有关的频繁项集。
2并行Apriori算法
集群中共有11个虚拟节点,其中一个为Master节点,十个为Worker节点。Master中运行Driver,集群启动时,Driver向Master申请运行资源,每个Worker有一个Executer,监控自己节点的内存与CPU状态,定时向Master汇报,由Executer进程真正执行Count操作。
在进行Apriori算法之前,首先需要介绍关联规则中需要用到的两个重要指标,支持度(support)、置信度(confidence)[12]。
支持度指全部事务,项集中(X,Y)同时出现的概率,如式(1)所示,该指标通过设置最小阀值(minsup),来剔除那些出现频率较低的无意义规则。
(1)
置信度指在先验条件X已经发生的情况下,后验项Y发生的概率。即在含有X的事务中,同时含有Y的概率,其计算如式(2)所示。这里要通过设置最小阀值(mincon)来进一步筛选不符合要求的规则。
(2)
该算法中,设置minsup=40%,mincon=38%。并行化的Apriori算法主要是在扫描文本统计项集出现次数时,利用Spark将要统计的信息日志分成多块,然后使用countByKey()函数根据设备编号进行数量统计。每次扫描完成后,根据minsup与mincon两个阀值,去除掉不满足条件的项集,然后将结果写回到信息日志中。不断重复该过程,直到得到的频繁项集为空集,返回i-1的项集结果。
循环结束后,会得到多个频繁项集。此时,根据所需要查找的错误日志中的设备编号,在频繁项集中找到包含该设备编号的项集,则该项集中其他的所有设备编号即所需要的可能与该设备共同产生错误的设备组。至此,算法结束。算法实现逻辑如下所示:
Input:信息日志事务集D、minsup、mincon
Output:最大频繁i-1项集
Method:
1.Scantheentiredataandseti=1.
2.pideD(i)into10parts.
3.Calculatesupport(i)andconfidence(i).
4.Removekincandidatefrequentiitemswhichsupport(ik)<minsuporconfidence(ik)<minconandgetthenewfrequentiitemsD(i)
5.IfD(i)isnull,returnD(i-1)
6.Elsei=i+1,continueStep2.
3结果分析
本文以第二章中准备的数据为例,在由第三章搭建的Spark环境中进行了测试,共运行10s。其中,279条错误日志,使用本算法共找到相关的设备编号4293条。专家判断共花费2天时间,由专家判断与错误设备相关的条目有4321条,其中与本算法相匹配的结果有4281条,遗漏数目为40条,覆盖率为99.07%,错误率不到1%。
以错误日志为例,共发现频繁项集23个。由此频繁项集共得到相关设备数237条,而由专家判断得到240条,使用本算法仅遗漏3条数据。
结果表明,使用并行化的Apriori算法,基本可以替代由原本专家判断形成的错误设备组诊断报告。自动化流程处理的加入,大大缩短了报告形成所需时间,节省了大量的人力资源。同时,由于采用Spark集群采用了并行算法,系统的时效性也得到了保障。
参考文献
[1]VerykiosVS,ElmagarmidAK,BertinoE,etal.AssociationRuleHiding[J].IEEETransactionsonKnowledge&DataEngineering,2004,16(4):434-447.
[2]WuX,KumarV,QuinlanJR,etal.Top10algorithmsindatamining[J].Knowledge&InformationSystems,2008,14(1):1-37.
[3]LiaoZ,SunY.DATAMININGTECHNOLOGYANDITSAPPLICATIONONPOWERSYSTEM[J].AutomationofElectricPowerSystems,2001.