基于贝叶斯网络的系统故障建模与应用

贝叶斯定理简介

贝叶斯方法:所谓的贝叶斯方法源于解决一个“逆概”的问题。那什么是“逆概”呢?如“假设袋子里面有N个白球,M个黑球,你伸手进去摸一把,摸出黑球的概率是多大”,这是我们熟知的“正向概率”。而一个自然而然的问题是:如果我们事先并不知道袋子里面黑白球的比例,而是闭着眼睛摸出一个(或好几个)球,观察这些取出来的球的颜色之后,那么我们可以就此对袋子里面的黑白球的比例作出什么样的推测?这个问题,就是所谓的逆概问题。

贝叶斯解决这个问题的基本思想是:可以先假定一个概率(先验概率),根据不断发生的新事实,调整相似度,得到接近实际的概率(后验概率)。可以表述成:后验概率 = 相似度*先验概率。贝叶斯网络则是这种思想的应用。

具体的描述可以参考:贝叶斯定理   贝叶斯网络

本文讨论了在一个故障背景下,根据历史数据,使用贝叶斯网络建立系统故障模型的过程。

系统故障背景

针对过往系统故障数据,引起系统故障的原因有系统缺陷、人为操作两大类。对于系统缺陷,有80%的缺陷能够在QA阶段发现,20%的缺陷会遗留到生产环境。人为操作在90%的情况下是没问题,10%会发生操作失误。当系统有缺陷,若是操作失误,系统发生故障的概率为90%;操作不发生失误时,系统发生故障的概率为70%。当系统没有缺陷,若是发生操作失误,系统发生故障的概率为20%;若是没有操作失误,系统发生故障的概率为10%。其他引发故障的原因未知。

系统故障模型

根据背景,我们可以将引发故障的情况使用以下形式化的模型进行表达:

《基于贝叶斯网络的系统故障建模与应用》 故障模型网络
《基于贝叶斯网络的系统故障建模与应用》 概率描述

系统发生故障的概率 = 各种条件情况下,系统故障的概率之和。

代码实现

概率:

《基于贝叶斯网络的系统故障建模与应用》 概率

某条件及其发生的概率:

《基于贝叶斯网络的系统故障建模与应用》 条件和其发生的概率

一组条件下,事件发生的概率:

《基于贝叶斯网络的系统故障建模与应用》 一组条件下,导致结果发生的概率

所有条件下,结果发生的概率:

《基于贝叶斯网络的系统故障建模与应用》 所有条件下事件发生的概率之和

故障网络模型:

《基于贝叶斯网络的系统故障建模与应用》 故障网络模型

根据历史数据,统计的概率:

《基于贝叶斯网络的系统故障建模与应用》 历史数据得出的概率

运行模型,得出的系统故障概率(保留5位小数):0.23200

新的知识

随着新数据的更新,发现导致系统故障的原因还有一类:基础设施故障。基础设施发生故障的概率是0.001。当基础设施发生故障时,系统一定发生故障。重新建立系统故障模型如下:

《基于贝叶斯网络的系统故障建模与应用》 故障模型

概率描述:

《基于贝叶斯网络的系统故障建模与应用》 概率描述

代码实现:

更新概率数据:

《基于贝叶斯网络的系统故障建模与应用》 统计得出的概率

更新模型的定义:

《基于贝叶斯网络的系统故障建模与应用》 基础设施故障概率
《基于贝叶斯网络的系统故障建模与应用》 添加基础设施故障概率
《基于贝叶斯网络的系统故障建模与应用》 添加基础设施故障概率
《基于贝叶斯网络的系统故障建模与应用》 添加基础设施故障概率

运行模型,得出的系统故障概率(保留5位小数):0.23277

进一步应用

除了不断有新知识的加入,更新模型之外。根据已建立的模型,我们也可以进行一些分析。

情况一:通过增强测试手段或者代码走查评审,系统缺陷的检出提高到了85%。运行模型可以得出系统故障的概率为0.20230。降低了0.0297,即降低了12.8%。

情况二:在情况一下,由于配置管理或者运营人员变动,操作人员是新手,导致人为操作失误的概率提升为0.15。运行模型可以得出系统故障的概率为0.20804。提升了0.00574,即提高了2.84%。

这样,根据不同的情况,随着新数据的不断出现,来预测系统发生故障的概率。

禅定

贝叶斯方法,需要大量计算 ……  已算晕。本文存在多处错漏之处。

    原文作者:魏增艺
    原文地址: https://www.jianshu.com/p/20f2441e09c8
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞