APP下载

基于贝叶斯网络医学检验仪器故障诊断模型构建方法的研究

2021-07-13张喜红王玉香

曲靖师范学院学报 2021年3期
关键词:工具包贝叶斯因果关系

张喜红,王玉香

(亳州职业技术学院 智能工程系,安徽 亳州 236800)

0 引 言

医学检验仪器是运用计算机、传感器、机械自动化、材料学等多种技术,实现医学检验实验自动化的一类设备,大多具有技术先进、结构复杂、自动化水平较高的共同特征.近年来,随着电子技术制造工艺微型化、大规模集成化的发展,医学检验仪器的集成化程度越来越高,国内外生产制造商为了实现供应、维修的全程垄断,大多在出售仪器后不会为客户提供详实的原理图及维修技术资料[1].上述原因导致医院设备科维修工程师只能做一些简单的日常维护工作,设备一旦发生故障,只能等厂家售后工程师来处理.然而,由于厂家售后工程师紧缺,且远水不解近渴的实际情况,致使维修效率极其低下.针对医学检验仪器研制一套故障诊断系统,协助医院设备科维修工程师进故障诊断,提升维修效率,已成为急待解决的问题[2].

贝叶斯网络是一种概率推理算法,能够在数据缺失和不完备的情况下,实现因果关系的推理及不确定关系的精准表达.基于贝叶斯网络构建的故障诊断系统,对结构复杂的设备产生的多态性、不确定性故障而言,具有较好鲁棒性[3].目前,基于贝叶斯网络构建故障诊断系统的方法主要有两种,一种是基于信息融合与贝叶斯网络相结合,另一种是基于故障树与贝叶斯网络相结合[4].基于信息融合的贝叶斯网络故障诊断系统,是以设备运行过程中采集到的正、异常状态指标为训练样本数据,通过贝叶斯网络推理算法训练建模的一种方法,其适合应用于内置了大量传感器,可实时监控采集工作状态数据的设备,如汽车、飞机的动力系统.基于故障树的贝叶斯网络故障诊断系统,是在深层次剖析设备组成部件连接关系的基础上,采用逻辑门符号构建故障因果关系图,再转化为贝叶斯网络结构的一种方法,具有因果关系直观明了的优点,但要求分析人员对设备的组成结构及工作原理相当熟悉.

鉴于医疗设备大多类似于黑箱系统,结构复杂,技术资料保密,难于通过深层次剖析设备组成结构,构建故障树模型.同时,又无法像汽车、飞机动力系统一样,事先内置了大量传感器,在不增加硬件的情况下,易于采集到设备正、异常状态的指标数据.鉴于上述原因,为了克服剖析内部结构和采集工作状态数据的困难,本文提出了一种基于维修日志与贝叶斯网络相结合,构建故障诊断系统的方法.下面以优利特500B尿液分析仪为例,详细介绍运用Pgmpy工具包构建网络结构,及基于维修日志进行网络参数学习的具体过程.

1 贝叶斯网络故障诊断理论

贝叶斯网络是一种用条件概率表与有向无环图相结合定性、定量表示事物或事件节点变量间因果关系的概率图模型.由节点和带箭头线条组成的有向无环图用于定性表示,条件概率表用于描述变量间关联程度的定量描述,与箭头线条起点相连节点为因,与终端节点相连的节点是果,二者间的因果关联程度由条件概率表描述.在有向无环图中把没有任何箭头线条导入的节点称之为父节点,有箭头线条导入的节点称之为子节点,既有导入又有导出的子节点称为中间节点.假设某一事件或事物在描述的过程中包含变量集U={X1,X2,…,Xn},则基于贝叶斯网络理论对其进行建模,主要包括两方面的内容:其一是依据因果联系确立X1,X2,…,Xn节点变量间的连接指向关系,构建有向无环图;其二是获得能够计算如式(1)所示联合概率的各节点的条件概率表,式(1)中Yi为Xi的父节点集合,若Xi节点没有任何父节点,其条件概率可用其先验概率表示.

运用贝叶斯网络模型寻求或解释事物事件发生的原因,或预测事件发生的可能性大小,进而解决实际问题的过程称之为贝叶斯推理.贝叶斯推理可归纳为3种类型:其一是沿有向边,顺箭头方向的推理,即因果推理;其二是逆箭头方向的求因推理,即逆向推理;其三是各节点的交叉因果推理[5-6].对于故障诊断系统而言,便是基于故障现象寻找故障发生位置的逆向推理,即通过式(2)观察到的故障现象证据,计算各原因节点的后验概率,进而实现故障位置的快速定位,式(2)中Z为故障原因节点的集合,e为观察到的故障现象节点集合.

2 故障诊断模型的构建

2.1 网络结构的构建

构建网络结构即绘制有向无环图,是贝叶斯网络建模的首要任务.其主要内容是完成各节点变量因果关系的定性表达,其合理与否将对模型后期的推理性能,可解释性起到决定性的作用.基于故障树的贝叶斯网络建模是设备故障诊断系统建模的常用方法之一,其具体的做法是:首先从原理上剖析各部件间的因果关系,并用逻辑门符号构建故障因果关系图,得到因果关系图后,再用有向边取代关系图中对应的逻辑门符号,将其转化为贝叶斯网络结构.此种方法,要求设计者对设备的结构及原理相当熟悉[7].

鉴于医疗设备技术原理资料不公开的情况,难于使用故障树分解的方法构建模型结构.为了克服剖析复杂内部结构的难题,本文提出了一种基于维修日志数据构建网络结构的方法.以优利特500B尿液分析仪为例,具体的步骤如下:

(1)整理、提炼故障征兆集标准术语词汇集.首先依据厂家说明书中提供的常见故障案例文本,分别对故障现象字段与对应的解决方法字段文本,进行标准术语的部件名词和取值状态术语提取,并对部件名词与取值状态进行标识编码.以优利特500B尿液分析仪为例,共整理出20个故障征兆集高频词汇,各节点的含义及取值状态如表1所示.

(2)维修日志数据的规范化整理.由于原始维修数据的描述存在部件别名、状态近义词表达等不规范的描述,且为非数字代码标识形式,需对其进规范化整理.具体的做法是:通过人工审阅的方法,对每一条原始维修日志记录,以表1所示的20个节点名称,作为一条日志记录的20个特征项,若此节点名称在此条日志记录中没有出现,就赋值0,表示正常;若出现,就赋值为同含义的状态取值.最终得到如图2所示格式的训练数据697条.

表1 节点含义及状态取值表

(3)对步骤2得到的20项特征数据集,进行关联关系分析,分别计算各特征项组合的支持度与置信度,找出置信度等于1时的组合项,即找出当某项特征发生时,另一项必然发生的组合情况.以此初步确立20个节点名称间的因果关系,并绘制初步的贝叶斯网络有向无环图.接着在行业专家的指导下,修正明显无因果关系的有向边连接,如A8(暂停键状态)按下时与A9(红外检测模块)失灵时,都会引起B2(试纸拨杆状态)放入试纸不移动的情况.虽然A8对A9的置信度为1,但两者间确无因果关系,需手工剔除有向边连接.最终确立的网络结构如图1所示.

图1 贝叶斯网络结构图

2.2 网络参数的学习与实现

网络结构仅能表达节点变量间的依赖关系,无法表述相互间的作用程度,若想定量表示节点间的依赖程度,还需为各节点变量添加条件概率表,即指定网络参数[8].条件概率表的获得,可通过专家经验估计给出或通过数据学习获得.通过专家经验指定网络参数的确立的模型,其性能对专家的经验依赖较强.对于网络结构已确定,数据具备的情况,采用数据学习获得的条件概率表参数更为准确.

鉴于本项目已具有经规范整理的维修日志数据,因此,采用数据学习法来获得网络参数.基于数据进行参数估计的常见算法有极大似然估计与贝叶斯参数估计两种,极大似然估计适合于样本数量均匀分布,且数量充足的情况,否则易出现过拟合.贝叶斯参数估计算法是一种通过观察数据修正先验看法的参数学习方法,在观察数据的数量不足与分布不均的情况下,也能得到相对较好的模型[9].鉴于本项目维修日志数据仅有图2所示的697条,属小样本量.因此,选用贝叶斯参数估计算法来进行参数估计.

图2 参数训练数据片断

为了方便模型后期部署到Flask Web框架下运行,参数的学习采用Python语言开发的Pgmpy工具包来实现.具体的流程是:

(1)加载参数估计训练数据集;代码如下:

#加载pandas数据处理工具包

import pandas as pd

#读取维修日志训练数据

train=pd.read_csv( './JYtrain2.csv',encoding='utf-8')

(2)使用Pgmpy工具包的BayesianModel()方法创建模型的有向无环图,创建的有向无环图如图1所示.代码如下:

#加载贝叶斯模型结构创建工具包

from pgmpy.models import BayesianModel

#创建模型结构

model=BayesianModel([('A1','B1'),('A2','B1'),('A3','B1'),('A4','B1'),('A8','B2'),('A9','B2'),('A10','B2'),('A5','B2'),('A11','B2'),('A6','B3'),('A12','B3'),('A7','B3'),('A13','B3'),('B1','C'),('B3','C'),('A5','C'),('B2','C'),('A14','C'),('A15','C'),('A16','C')])

(3)使用Pgmpy工具包的model.fit()方法进行参数学习.具体代码如下,其中train为训练数据,estimator参数指定为贝叶斯参数估计.代码为:

#导入贝叶斯参数学习方法

from pgmpy.estimators import Bayesian-Estimator

#利用维修日志数据进行参数学习

model.fit(train,estimator=BayesianEstimator,prior_type=''BDeu'')

(4)使用Pgmpy工具包的model.get_cpds()查看模型概率表.代码如下:

#查看并打印显示各节点的条件概率表

for cpd in model.get_cpds():

print(cpd)

3 模型的推理测试

故障诊断系统的意义就在于当故障发生时,能向维修人员提供最佳的排错流程,协助维修人员在较短的时间内找出故障点的位置.贝叶斯网络故障诊断模型可通过求解观察证据条件下各节点后验概率的排序来实现[10].在Pgmpy工具包中可通过VariableElimination模块中的query()方法,求解证据条件下各节点的后验概率.

下面以优利特500B尿液分析仪出现“放入试纸后拨杆不能移动”的故障为例进行推理说明,由图1、表1可知,此时已知的证据条件为B2=1(对应放入试纸后拨杆不能移动),B2的父节点集为:A5、A8、A9、A10,A11,因此,故障推理就是在B2=1的条件下,求解A5、A8、A9、A10,A11节点的最大概率组合.具休实现代码如下:

#导入推理工具包

from pgmpy.inference import Variable-Elimination

model_infer=VariableElimination(model)

#求解evidence证据条件下,variables的概率

q=model_infer.query(variables=['A5','A8','A9','A10','A11'],evidence={'B2': 1})

#打印概率表

print(q)

推理结果如图3所示,对照表1可知,当此类故障发生时,应首先排查组合概率排名第一的组合,即组合概率为0.4370的组合项,此项组合中显示由A9=1引起,A9对应于红外检测模块,即应先检查红外检测模块是否工作正常.若正常,再排查组合排名第二的组合,即组合概率为0.3502组合项,同理可知,此时将故障原因定位到A8,对应于由暂停键按下所引起.若仍未解决,按组合项概率排名次序依次排查.按上述方法进行多种证据条件下的推理实验,除上述推理实验外,其它推理实验结果,经维修工程师验证,均与实际相符,且具有较好的解释性.

图3 “放入试纸后拨杆不能移动”推理结果

4 结论及展望

本文针对医学检验仪器的故障诊断领域,以优利特500B尿液分析仪为例,基于维修日志数据和贝叶斯网络,提出了一种构建故障诊断系统的方法,在全面分析历史维修数据及厂家说明书的基础上,提炼故障征兆集标准术语词汇集,并分析它们之间的关联关系、因果关系,最终确立以故障征兆集词汇集为节点变量的贝叶斯网络有向无环图模型,并使用Python语言开发的Pgmpy贝叶斯网络工具包,完成了从历史维修日志数据中学习条件概率参数,及推理应用验证的全过程,经实际推理测试实验结果证实,所构建的故障诊断模型推理结果可靠,能用于指导实际,为医学检验仪器的故障诊断系统构建提供参考案例.但采用人工方式整理训练数据耗时耗力,后期的研究中拟运用人工智能领域自然语言处理的相关技术,改进历史维修数据的整理方式,使其更加方便实施.

猜你喜欢

工具包贝叶斯因果关系
玩忽职守型渎职罪中严重不负责任与重大损害后果的因果关系
基于贝叶斯定理的证据推理研究
基于贝叶斯解释回应被告人讲述的故事
浅谈侵权法中的因果关系
谷歌云与Digital Asset合作推出区块链工具包
做完形填空题,需考虑的逻辑关系
租赁房地产的多主体贝叶斯博弈研究
租赁房地产的多主体贝叶斯博弈研究
运用MATLAB软件求解高中数学中的线性和非线性规划问题
基于互信息的贝叶斯网络结构学习