面向飞行器遥测数据的关联规则挖掘方法研究
2021-06-02
(中国运载火箭技术研究院,北京 100076)
0 引言
近年来数据挖掘技术得到了迅速的发展,如相似模式搜索,模式聚类,事件检测,规则提取等技术和方法已经成功应用于金融、医疗、生物等领域[1]。随着近年来飞行任务的不断增加,大量飞行器的飞行试验积累了海量遥测数据。飞行器遥测数据是地面运管系统判断其运行状态的唯一依据[2],是遥测地面分析系统的最要组成部分[3]。充分利遥测数据进行对比分析,有助于故障分析和掌握飞行器的飞行特征,并不断改进设计以提高飞行器产品的质量[4],对于提高飞行器在轨运行的安全性和可靠性具有重要的意义[5]。而我国在航天领域的大数据挖掘还处于理论研究、探索阶段。
本文针对飞行器电源系统遥测数据的关联规则挖掘算法进行了对比分析,并以基于时间时序的飞行器电源系统遥测参数中,某几个参数之间的关联规则为例,进行试验对比和数据验证,为未来飞行器遥测参数关联规则挖掘提供参考。
1 飞行器遥测数据特点
飞行器在地面试验、发射、在轨飞行等阶段均会产生大量的数据,数据量大是飞行器遥测数据的显著特点。同时由于飞行器本身是个复杂的系统,遥测数据又包含电力、温度、压力、速度等各个方面,因此数据种类多也是飞行器遥测数据的明显特点。在繁多的数据中,数据类型不仅限于数字、文本,图像、视频、音频等数据的频繁使用,也使数据类型的多样性特征凸显出来。
2 关联规则挖掘算法
2.1 基于FP-Growth算法的关联规则挖掘
FP-Growth(Frequent Pattern Growth)算法是一种不产生候选模式,而采用频繁模式增长的方法挖掘频繁模式的算法[6]。它是一种扩展的前缀树(即FP树)结构,存储了关于频繁模式数量的重要信息.树中只包含长度为1的频繁项作为节点,并且那些频度高的节点更靠近树的根节点,因此,频度高的项比那些频度低的项有更多的机会共享同一个节点[7]。基于这一特性,可以计算出各频繁项间的关联规则。
基于FP-Growth算法的关联规则挖掘分为构建FP树,利用FP树挖掘频繁项集,关联规则挖掘3个步骤。以飞行器供电系统中电压与系统指令的遥测数据为例,电压值的变化与发出的指令密切相关,假设由电压A,B,C和指令D,E构成示例数据集,如表1所示。其中第一条数据{A,B}表示电压A与B在时刻1时发生变化,而第四条数据{A,B,C,E}表示电压A,B,C在时刻4时发生变化,同时指令E发出。
表1 示例数据集
1)构建FP树:
扫描示例数据集(表1)中全部数据,计算出频繁项集F1。设定最小支持度为2,如果任何一个频繁项的频繁度小于等于最小支持度,则将该频繁项从频繁项集中删除。在频繁项集F1中,频繁项“E”的频繁度为2,则从频繁项集F1中删除频繁项“E”。然后将频繁项集F1按照频繁度降序排序,得出表2所示结果。
表2 频繁项集F1
将示例数据集中全部数据按照频繁项集F1中的记录重新排序,如表3所示。
表3 排序后的数据
建立FP树根节点“root”,从根节点出发,第一条数据{B,A}各频繁项“B”和“A”按照顺序依次加入FP树中,并记录各节点频数Count为1;当第二条数据{B,C,D}加入FP树时,首个频繁项“B”已经在FP树中存在,则只需将“B”节点的频数Count加1,然后再将频繁项“C”作为节点“B”的一个新子节点加入FP树中从而得到一个新的分支。如此往复,将表3中每条数据依次加入到FP树中,得到图1所示的FP树。
图1 FP树构建步骤
2)利用FP树挖掘频繁项集:
在得到FP树之后,可以进行频繁项集的挖掘。以图1中构建完成的FP树为例,首先选择一分支末端节点“D”,由“D”向根节点倒推,找出所有包含节点“D”的路径,并找出每个包含“D”的分支:{B,C,D: 2},{A,C,D: 1},其中“2”和“1”分别表示分支{B,C,D}和{A,C,D}分别出现2次和1次。分支的“Count”值,由分支后缀节点“D”出现的次数决定。
除去节点“D”,我们得到前缀路径{B,C: 2},{A,C: 1},根据前缀路径,创建一棵条件FP树。然后获取前缀路径的每个节点的前缀路径,并建立条件FP树,直到条件FP树中只包含一个元素时返回(如图2所示)。最后,得到节点“D”的频繁项集为{{D},{C,D}}。
图2 频繁项集挖掘流程
3)关联规则挖掘:
通过FP-Growth算法得到数据的频繁项集后,针对频繁项集中的各个频繁项构建可能的关联规则。例如,对“D”的频繁项集中的频繁项{C,D}而言,可能的关联规则为{C}->{D},{D}->{C}。
在得到这些可能的关联规则后,按如下公式计算置信度:
置信度(A->B)=(同时包含A和B的频繁项数量)/(包含A的频繁项数量),
在示例中:
置信度({C}->{D})=(包含{C,D}的数量:3)/(包含{C}的数量:4)=0.75,
置信度({D}->{C})=(包含{C,D}的数量:3)/(包含{D}的数量:3)=1。
在计算得到所有关联规则的置信度后,保留大于置信度最小阈值的关联规则,就可以得到各频繁项之间的关联规则。在例子中,由于{D}->{C}的置信度为1,可以知道指令D发出一定会引起电压C的变化,而{C}->{D}的置信度为0.75,可以得出电压C的变化有75%的可能是由指令D引起的。
2.2 基于状态转换提取的关联规则算法
对于连续的参数和离散的指令之间的关联规则挖掘,连续参数的状态转换与指令触发时段之间的联系对关联规则的挖掘有至关重要的影响。基于状态转换提取的关联规则算法,则以此为基础,在连续参数的曲线中,提取参数状态转换位置,再与指令触发的影响时域进行比对,从而得出参数与指令间关联规则的一种算法。
基于状态转换提取的的关联规则算法分为数据预处理,提取数据跳变位置,构建状态矩阵和关联性分析4个步骤。
1)数据预处理:
对于试验数据,首先采取预处理措施,除去数据中的非数值和异常跳变数据,以避免异常数据对算法分析的影响。
(1)非数值处理,即将数据中的非数值(NaN)替换成该帧后一帧或前一帧的数据值。
(2)异常跳变数据处理,是在非数值处理后,针对数据中的异常数据进行的异常过滤处理。首先,计算数据标准差,并以±1.5倍标准差为预估异常范围去筛选异常数据,并得到异常数据集S1。然后,计算数据的二阶差分,并以二阶差分最大幅度的1/3和10倍标准差作为标准,对异常数据集S1进行二次筛选。最后,对异常数据集S1中的每一条数据进行逐一确认,如果数据前后两帧数据均为疑似跳变点,且该数据跳变幅度在前后数据帧跳变幅度的2倍以上,则该数据点可以确认为异常数据,并将该数据替换成后一帧或前一帧的数据值。
2)提取状态转换位置:
在数据预处理后,取一次差分前段少量数据,滤除大于6倍标准差的数值后,再取其标准差的n倍作为最小阈值标准,大于最小阈值的位置,很有可能是状态跳转位置。假设疑似状态跳转位置前后的均值和标准差分别是μ1,μ2,σ1,σ2,若其满足下式则当前位置为状态转换位置,并将这个状态转换位置加入到状态转换位置集S2中。
|μ1-μ2|>n*σ1or|μ1-μ2|>n*σ2
其中:n是置信度水平(默认为3),得到的状态转换位置如图3所示,虚线框内即为数据状态转换位置。
图3 状态转换位置示意图
3)构建状态转换矩阵:
在得到状态转换位置集S2后,对于参数的每一帧数据,按时序分别用0和1标注该数据是否发生状态转换,即将集合S2中的每一个状态转换位置的数据标记为1。基于考虑参数在指令发出后变化的延迟性,将状态转换位置前后m帧的数据范围作为状态转换影响域(转换影响域的范围会影响参数关联性的计算,m值太小可能会导致关键关联丢失,m值太大则会造成过多冗余,这里m值默认为3),同时状态标记为1,其他数据标记为0。这样可以得到如图4所示的参数状态转换矩阵A。
图4 参数状态转换矩阵
4)关联性计算:
在得到参数状态转换矩阵A之后,按照提取矩阵A中的各列数据组成n个一维数组,如图5所示,并将各个数组分别相乘,得到的值便是两个参数间的关联度Cij,其中i,j分别代表两个不同的参数,即C12表示参数1和参数2之间的关联度大小。然后,由计算得到的关联度集合{C}组成参数间的关联度表,图5中三角区域为集合{C}的值,其他部分由0填充。
在关联度表的基础上,设置最小关联度MA(minimum association),筛选关联度表中关联度大于MA(默认为2)的值,这些值所在的行列表示的参数,可以视为关联参数对,每一个关联参数对即为两条参数相关联的关联规则。如图5中参数1与参数n可以组成关联参数对,则得到一条参数1与参数n相关联的关联规则。
图5 参数关联度计算
3 试验结果与分析
为分析FP-Growth算法和基于状态转换提取的关联规则挖掘算法在遥测参数间关联规则挖掘的表现和可行性,基于Windows7操作系统,Python3.8和Tensorflow1.15.0等搭建运行环境,运用对比法设计试验[8],通过对比两种算法的准确率和冗余率,给出一个更佳的关联规则挖掘方法。
3.1 试验步骤
本次试验以某次飞行器地面试验的供电系统遥测数据中的一段为试验数据,利用系统发出的指令与某电路电流和电压等三十余万条数据按时序构成试验数据集。其中系统指令为离散型数据,电流、电压等参数随时间呈连续变化。试验中验证数据为人工梳理出的参数与系统指令之间已知的关联表,如表4所示。
表4 支路电流I、电压与U指令关联表(部分)
试验数据通过分别执行FP-Growth算法和基于状态转换提取的关联规则挖掘算法,对连续变化的参数与离散的系统指令之间的关联规则进行挖掘,得到参数与指令之间的关联规则表。再将试验结果与验证数据进行对比,计算出挖掘结果的准确率和冗余率。
3.2 试验结果分析
试验通过对15个不同参数与5个指令之间已知的31条关联规则进行挖掘,FP-Growth算法和基于状态转换提取的关联规则挖掘算法分别挖掘到55条和37条规则,两算法的准确率和冗余率,如表5所示。
根据试验结果可见,基于状态转换提取的关联规则挖掘结果明显好于FP-Growth算法。产生这种结果的主要原因一方面与飞行器供电系统遥测数据的实际特征有关,在无指令触发情况下,参数值变化较小,几乎无波动。如图6中参数随时间变化结果,在指令触发(图中虚线处)前后,参数值几乎无变化,曲线近似为直线。而指令的触发只是改变参数的稳定域,所以参数呈“断崖”式变化。
表5 挖掘结果准确率、冗余率
图6 参数值跳变前后对比图
另一方面,某些指令触发次数少,也是导致FP-Growth算法结果准确率低的又一原因,如开机指令(CM1017)和断电指令(CM1056),这两个指令在整个试验中只能触发一次,虽然在FP-Growth算法中也设定了指令的作用域,但是这样的触发频率依然很可能被筛选出去,所以无法被挖掘出来。
而基于状态转换提取的关联规则挖掘,则可以很好地利用数据的特点,准确地找到数据跳变的位置即状态发生转换的时刻,再去将这些时刻进行关联计算,从而得出更好的关联结果。如图7所示,对于同一参数UM7的挖掘,FP-Growth算法的挖掘结果为CM1001和CM1013两条指令。而基于状态转换提取的关联规则挖掘算法在CM1001和CM1013基础上,准确地挖掘出开机指令和断电指令(即图中CM1017和CM1056两条指令)共四条指令。
图7 参数UM7随时间变化与指令触发时刻示意图
在冗余方面,由于基于状态转换提取的关联规则挖掘算法在算法设计初期考虑到状态转换存在延迟性,所以可以更好地处理数据发生状态转换后到状态转换完成之间数据过渡的不稳定期。而FP-Growth算法则是基于频繁模式,只要数据出现次数高于最小阈值,便可以认为是有效频繁项,所以无法很好地处理过渡期的非稳定数据。如图8所示,在挖掘参数UM1与指令之间的关联时,基于状态转换提取的关联规则算法(图a)很好地挖掘出3条正确关联的指令。而FP-Growth算法(图b)的挖掘结果比正确结果多了两条,主要因为FP-Growth算法将参数值0也作为一种频繁项进入算法计算,得到了第一条关联规则(图b中CM1017),还有在第一次指令发出后,参数UM1发生一次跳变(即图b中CM1001)后有一段时间的过渡期,过渡期的存在导致了FP-Growth算法的第二条冗余关联(即图b中CM1003)。
图8 冗余对比
4 结束语
本文对飞行器遥测数据的关联规则挖掘算法进行研究,通过试验对比FP-Growth算法和基于状态转换提取的关联规则挖掘算法在某次试验数据中的关联规则挖掘的表现可以看出,基于状态转换提取的关联规则挖掘在数据状态变化的挖掘和在离散数据量很少时的关联规则挖掘表现更好于FP-Growth算法。这些研究结论可以为未来飞行器遥测数据间的关联规则挖掘以及基于关联规则的飞行器数据异常检测等方面提供参考。