一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种贝叶斯网络推理方法及系统

2022-04-30 17:09:08 来源:中国专利 TAG:
1.本发明涉及数据贝叶斯网络
技术领域
:,更具体地说,特别涉及一种贝叶斯网络推理方法及系统。
背景技术
::2.贝叶斯网络(bayesiannetworks)也被称为信念网络(belifnetworks)或者因果网络(causalnetworks),是描述数据变量之间依赖关系的一种图形模式,是一种用来进行推理的模型。贝叶斯网络为人们提供了一种方便的框架结构来表示因果关系,这使得不确定性推理变得在逻辑上更为清晰、可理解性强。3.近些年来,贝叶斯网络在人工智能领域受到了广泛关注,得到了深入研究,取得了大量的成果,在医疗、电力、工业等领域均展现了巨大的应用价值。譬如,在互联网应用中利用贝叶斯网络实现垃圾邮件的识别,在医学研究中构建贝叶斯网络进行患者患病概率的推理等。贝叶斯网络技术包含贝叶斯网络结构学习、贝叶斯网络参数学习和贝叶斯网络推理几个方面的技术,其中,贝叶斯网络结构学习是指从指定数据集中学习得到贝叶斯网络结构模型,即各个节点之间的依赖关系;只有得到贝叶斯网络结构模型后才能进行参数学习,贝叶斯网络参数学习的结果是条件概率表;贝叶斯网络推理是利用条件概率表及部分观测变量计算得出目标变量的边际分布或条件分布。4.当前贝叶斯网络的相关技术多是工具箱或软件包的形式,虽然提供了丰富且强大的功能,但上手难度大,对新用户不友好,需要阅读大量资料和文献并进行反复试验才能掌握其使用方法;其次,贝叶斯网络相关算法众多,缺乏理论基础的用户往往会陷入到算法的泥潭中无法自拔,即使找到了目标算法仍需要在使用时了解其参数设置方能进行计算。贝叶斯网络的计算还需要与数据集结合使用,而数据集格式与目标算法的匹配,以及对数据集中数据的操作都大大增加了用户的使用负担。因此,在贝叶斯网络的应用中,如何令用户快速掌握工具使用方法,减轻用户制作数据集的负担是一个亟待解决的问题。技术实现要素:5.本发明的目的在于提供一种贝叶斯网络推理方法及系统,以克服现有技术所存在的缺陷。6.为了达到上述目的,本发明采用的技术方案如下:7.一种贝叶斯网络推理方法,包括以下步骤,8.s1、在关系数据库的内核中增加系统表,所述系统表用于管理贝叶斯网络模型的元数据;9.s2、构造用于创建贝叶斯网络模型的ddl语句,执行所述ddl语句用于在关系数据库中增加一新模式及所述新模式下的数据集表、节点表、有向边表和条件概率表,数据集表用于存储数据,节点表和有向边表用于存储贝叶斯网络模型,条件概率表用于存储贝叶斯参数学习模块结果;10.s3、构造用于查询贝叶斯网络模型的dml语句,定义模型数据存储结构,在关系数据库中声明指向模型数据存储结构的全局指针,在所述dml语句为独立查询时,申请元组存储结构并将结果以元组链表的形式返回,在所述dml语句为其他语句的子语句时,初始化指向模型数据存储结构的全局指针并将查询结果放在全局指针中;11.s4、根据步骤s3中的全局指针指向的模型数据结构为基础构建贝叶斯网络推理引擎,并将所述叶斯网络推理引擎合并到关系数据库的内核之中,所述贝叶斯网络推理引擎包括贝叶斯网络结构学习模块、贝叶斯网络参数学习模块和贝叶斯网络推理模块;12.s5、构造用于调用贝叶斯网络结构学习模块算法执行的语句,所述语句通过读取模型数据查询语句返回值,调用贝叶斯网络结构学习算法从指定数据集中学习得到贝叶斯网络结构模型,即各个节点之间的依赖关系;13.s6、构造用于调用贝叶斯网络参数学习模块算法执行的语句,从步骤s5得到贝叶斯网络结构模型后进行参数学习,计算结果是条件概率表;14.s7、构造用于调用贝叶斯网络推理模块算法执行的语句,所述语句读取模型的条件概率表、解析推理表达式、调用推理算法计算得到后验概率并返回。15.进一步地,所述步骤s2中的ddl语句的实现过程包括以下步骤:16.词法、语法分析:在关键词列表中加入新关键字,将新关键字注册到语法分析文件中,在编写ddl语句的语法结构时创建用于捕获语句信息的句柄数据结构,并将语法结构中的信息赋值到句柄数据结构中;17.语义分析:检测输入内容中贝叶斯网络模型的模型名称是否与数据库中模式名称冲突,若存在命名冲突则中断执行返回冲突信息;并检测输入内容中的文件路径是否合法,若文件路径非法则中断执行返回非法信息;18.语句执行:先读取贝叶斯网络模型的模型名称,以所述模型名称创建一个新模式,并在该新模式下创建数据集表、节点表、有向边表和条件概率表;若文件路径不为空值,则读取数据并将数据存储对应的数据集表、节点表、有向边表和条件概率表中,并在步骤s1所述系统表中更新模型信息。19.进一步地,所述步骤s3中的dml语句的实现过程包括以下步骤:20.定义模型数据存储结构,在所述关系数据库中声明指向模型数据存储结构的全局指针;21.词法、语法分析:在关键词列表中加入新关键字,将新关键字注册到语法分析文件中,在编写语句的语法结构时创建用于捕获语句信息的句柄数据结构,并将语法结构中的信息赋值到句柄数据结构中;22.语义分析:检测输入内容中的模型名称是否与数据库中模式名称冲突,若存在命名冲突则中断执行返回冲突信息;并检测条件是否合法,若不合法则中断执行返回非法信息;判断语句是否为子语句,若为子语句则修改句柄数据结构中子语句标志符为true;23.查询执行:若子语句标志符为false,申请元组存储结构tupletableslot,并将查询结果以元组链表的形式返回;若子语句标志符为true,则初始化指向模型数据存储结构的全局指针,并将查询结果存放在全局指针中。24.进一步地,所述模型数据存储结构包括:25.指向节点链表的头指针,节点信息包含贝叶斯结构模型中节点的名称、类型;26.指向有向边链表的头指针,有向边信息包含贝叶斯结构模型中有向边的节点名称;27.指向数据集变量链表的头指针,变量包含数据集变量的名称、离散变量/连续变量;28.一维数组,按行依次存储数据,读取数据时依据公式m*n q,其中,m表示节点总数,n表示读取数据所处行数,q表示节点位于数据集变量链表中的位置;29.链表的头指针,链表中每一项都是单个节点的条件概率表,采用二维变长的数据表示。30.进一步地,所述步骤s4中贝叶斯网络结构学习模块的输入为一维数组和指向数据集变量链表的头指针,贝叶斯网络结构学习模块的输出为贝叶斯网络结构模型的指向节点链表的头指针和指向有向边链表的头指针;所述贝叶斯网络参数学习模块的输入为贝叶斯网络结构模型的指向节点链表的头指针和指向有向边链表的头指针,以及一维数组,贝叶斯网络参数学习模块的输出为条件概率表;所述贝叶斯网络推理模块的输入为证据链表、求解变量以及条件概率表,贝叶斯网络推理模块的输出为求解变量的后验概率。31.进一步地,所述步骤s5中贝叶斯网络结构学习模块算法执行的语句过程为:32.词法、语法分析:在关键词列表中加入新关键字,将新关键字注册到语法分析文件中,在编写语句的语法结构时创建用于捕获语句信息的句柄数据结构,并将语法结构中的信息赋值到句柄数据结构中,所述句柄数据结构包括指向步骤s2中句柄数据结构的指针;33.语义分析:检测算法名称、算法参数是否合法,模型名称是否存在,若检测异常则终止执行返回异常信息;并将查询树拆分为两棵查询树,第一棵树为模型数据查询语句查询树,修改句柄数据结构中子语句标志符为true,第二棵树为算法调用查询树,将两棵树组成链表返回;34.模型数据查询树执行:数据写入全局指针指向的模型数据结构中;35.算法调用查询树执行:读取全局指针中的模型数据,调用模型学习算法,写入模型参数后进行计算,若存储模型名称不为空,则调用元组插入函数将计算结果进行存储,更新步骤s1所述系统表中模型元数据;36.清空指向模型数据结构的全局指针。37.进一步地,所述步骤s7中贝叶斯网络推理模块算法执行的语句过程为:38.词法、语法分析:在关键词列表中加入新关键字,将新关键字注册到语法分析文件中,在编写语句的语法结构时创建用于捕获语句信息的句柄数据结构,并将语法结构中的信息赋值到句柄数据结构中,构造描述贝叶斯网络推理问题的推理表达式,p(a|bi),其中a表示求解的节点名称,bi是证据集合,其中每一项的格式为bi=n,n表示bi节点的观察值,解析后bi以链表的方式进行存储,句柄数据结构中存放链表的头指针,a以字符串形式放入句柄数据结构中;39.语义分析:将句柄数据结构中所有节点名称与条件概率表的列名进行对比,若存在条件概率表中不存在的节点名称则中断执行返回异常;并将查询树拆分为两棵查询树,其中第一棵树为条件概率表查询树,基于模型名称进行构造,查询该模型内的条件概率表;第二棵树为推理算法查询树,两棵树以链表形式返回;40.执行条件概率表查询树,将查询结果写入链表的头指针之中;41.执行推理算法查询树,将计算结果以元组形式返回客户端;42.清空指向模型数据结构的全局指针。43.本发明还提供一种根据上述的贝叶斯网络推理方法的系统,包括:44.添加模块,用于在关系数据库的内核中增加系统表,所述系统表用于管理贝叶斯网络模型的元数据;45.第一构造模块,构造用于创建贝叶斯网络模型的ddl语句,执行所述ddl语句用于在关系数据库中增加一新模式及所述新模式下的数据集表、节点表、有向边表和条件概率表,数据集表用于存储数据,节点表和有向边表用于存储贝叶斯网络模型,条件概率表用于存储贝叶斯参数学习模块结果;46.第二构造模块,构造用于查询贝叶斯网络模型的dml语句,定义模型数据存储结构,在关系数据库中声明指向模型数据存储结构的全局指针,在所述dml语句为独立查询时,申请元组存储结构并将结果以元组链表的形式返回,在所述dml语句为其他语句的子语句时,初始化指向模型数据存储结构的全局指针并将查询结果放在全局指针中;47.构建模块,用于根据全局指针指向的模型数据结构为基础构建贝叶斯网络推理引擎,并将所述叶斯网络推理引擎合并到关系数据库的内核之中,所述贝叶斯网络推理引擎包括贝叶斯网络结构学习模块、贝叶斯网络参数学习模块和贝叶斯网络推理模块;48.第三构造模块,构造用于调用贝叶斯网络结构学习模块算法执行的语句,所述语句通过读取模型数据查询语句返回值,调用贝叶斯网络结构学习算法从指定数据集中学习得到贝叶斯网络结构模型;49.第四构造模块,构造用于调用贝叶斯网络参数学习模块算法执行的语句,从步骤s5得到贝叶斯网络结构模型后进行参数学习,计算结果是条件概率表;50.第五构造模块,构造用于调用贝叶斯网络推理模块算法执行的语句,所述语句读取模型的条件概率表、解析推理表达式、调用推理算法计算得到后验概率并返回。51.与现有技术相比,本发明的优点在于:本发明通过扩展sql语法的方式在关系数据库中实现了贝叶斯网络推理,大大降低了用户上手难度;借助关系数据库的数据管理功能减轻了用户管理数据集的负担。附图说明52.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。53.图1是本发明贝叶斯网络推理方法的流程图。54.图2是本发明中模型创建语句的流程图。55.图3是本发明贝叶斯网络推理系统的原理图。具体实施方式56.下面结合附图对本发明的优选实施例进行详细阐述,以使本发明的优点和特征能更易于被本领域技术人员理解,从而对本发明的保护范围做出更为清楚明确的界定。57.参阅图1所示,本实施例公开了一种贝叶斯网络推理方法,包括以下步骤:58.步骤s1、在关系数据库的内核中增加系统表,所述系统表用于管理贝叶斯网络模型的元数据。59.s2、构造用于创建贝叶斯网络模型的ddl语句,执行所述ddl语句用于在关系数据库中增加一新模式及所述新模式下的数据集表、节点表、有向边表和条件概率表,数据集表用于存储数据,节点表和有向边表用于存储贝叶斯网络模型,条件概率表用于存储贝叶斯参数学习模块结果。60.其中,ddl语句的语法结构如下:61.createbayes_model[模型名称][source[文件路径]][0062]语法结构含义为:创建名称为[模型名称]的新模式及该模式下的数据集表、节点表、有向边表和条件概率表,并存储到[文件路径]中。[0063]其中,ddl语句的实现包含词法、语法分析、语义分析、查询重写、语句执行等步骤,该语句涉及步骤及实现逻辑如下:[0064]词法、语法分析:在系统关键词列表中加入新关键字,将新关键字注册到语法分析文件中,编写语句的语法结构同时创建用于捕获语句信息的句柄数据结构,并将语法结构中的信息赋值到句柄数据结构之中。[0065]语义分析:检测输入内容中的模型名称是否与数据库中现有模式名称冲突,若存在命名冲突则中断执行返回冲突信息;检测输入内容中的文件路径是否合法,若文件路径非法则中断执行返回非法信息;[0066]查询重写:当进行查询时改写查询语句,搜寻其他数据源,以在保证相同结果的情况下提高执行效率;[0067]语句执行:如图2所示,首先读取模型名称,以该名称创建一个新模式,并在该新模式下创建表示数据集、节点、有向边和条件概率的四张表,即数据集表、节点表、有向边表和条件概率表;若文件路径不为空值,则读取数据,并将数据存储对应的表中;最后在步骤s1所述系统表中更新模型信息。[0068]s3、构造用于查询贝叶斯网络模型的dml语句,定义模型数据存储结构,在关系数据库中声明指向模型数据存储结构的全局指针,在所述dml语句为独立查询时,申请元组存储结构并将结果以元组链表的形式返回,在所述dml语句为其他语句的子语句时,初始化指向模型数据存储结构的全局指针并将查询结果放在全局指针中。[0069]具体的,dml语句的语法结构如下:[0070]findin[模型名称][where[表名/条件表达式][0071]语法结构含义为:在条件为[表名/条件表达式]下,查询名称为[模型名称]的表,若为false则返回元组链表形式的查询结果,若为true则初始化指向模型数据存储结构的全局指针,并将查询结果存放与全局指针中。[0072]其中,dml语句的实现包含词法、语法分析、语义分析、查询重写、查询优化、查询执行等步骤,该语句涉及步骤及实现逻辑如下:[0073]定义模型数据存储结构,并在postgres中声明指向模型数据存储结构的全局指针;[0074]词法、语法分析:与s2步骤中词法、语法分析的内容一致。[0075]语义分析:检测输入内容中的模型名称是否与数据库中现有模式名称冲突,若存在命名冲突则中断执行返回冲突信息;检测条件是否合法,若不合法则中断执行返回非法信息;判断语句是否为子语句,若为子语句则修改句柄数据结构中子语句标志符为true;[0076]查询重写:当进行查询时改写查询语句,搜寻其他数据源,以在保证相同结果的情况下提高执行效率;[0077]查询优化:进行逻辑优化包括子查询优化,条件化简,等价谓词重写;进行物理优化包括主要采用动态规划和遗传算法;[0078]查询执行:若子语句标志符为false,申请元组存储结构tupletableslot,并将查询结果以元组链表的形式返回;若子语句标志符为true,则初始化指向模型数据存储结构的全局指针,并将查询结果存放在全局指针中。[0079]其中,模型数据存储结构包含以下内容:[0080]node:指向节点链表的头指针,节点信息包含贝叶斯结构模型中节点的名称、类型,当模型数据结构中不存在结构模型数据时,为空指针。[0081]edge:指向有向边链表的头指针,有向边信息包含贝叶斯结构模型中有向边的节点名称,模型数据结构中不存在结构模型数据时,为空指针。[0082]variable:指向数据集变量链表的头指针,变量包含数据集变量的名称、离散变量/连续变量。[0083]dataset:double类型的一维数组,按行依次存储数据,读取数据时依据公式m*n q,其中m表示节点总数,n表示读取数据所处行数,q表示节点位于variable链表中的位置。[0084]con_pro:链表的头指针,链表中每一项都是单个节点的条件概率表,采用二维变长的数据表示。[0085]s4、根据步骤s3中的全局指针指向的模型数据结构为基础构建贝叶斯网络推理引擎,并将所述叶斯网络推理引擎合并到关系数据库的内核之中,所述贝叶斯网络推理引擎包括贝叶斯网络结构学习模块、贝叶斯网络参数学习模块和贝叶斯网络推理模块。[0086]其中,所述贝叶斯网络推理引擎包括贝叶斯网络结构学习模块、贝叶斯网络参数学习模块和贝叶斯网络推理模块。[0087]贝叶斯网络结构学习模块:输入为数据集dataset及变量variable,输出为贝叶斯网络结构模型node和edge;[0088]贝叶斯网络参数学习模块:输入为结构模型node和edge以及数据集dataset,输出为条件概率表con_pro;[0089]贝叶斯网络推理模块:输入为证据链表、求解变量以及条件概率表con_pro,输出为求解变量的后验概率。[0090]s5、构造用于调用贝叶斯网络结构学习模块算法执行的语句,所述语句通过读取模型数据查询语句返回值,调用贝叶斯网络结构学习算法从指定数据集中学习得到贝叶斯网络结构模型,即各个节点之间的依赖关系。该语句的语法结构如下:[0091]structure[算法名称][[参数名称1=参数值,…]]findin[模型名称][0092][where[表名/条件表达式]]into[模型名称][0093]语法结构含义为:检测算法名称、算法参数是否合法,模型名称是否存在,若检测异常则终止执行返回异常信息,若检测正常则返回查询树拆分的模型数据查询树与算法调用查询树组成的链表。[0094]该语句执行过程融合了ddl语句和dml语句的执行,具体流程如下:[0095]词法、语法分析:与s2步骤所述逻辑一致,特别之处在于该语句的句柄数据结构中包含指向s2句柄数据结构的指针。[0096]语义分析:检测算法名称、算法参数是否合法,模型名称是否存在,若检测异常则终止执行返回异常信息;将查询树拆分为两棵查询树,第一棵树为模型数据查询语句查询树,修改句柄数据结构中子语句标志符为true,第二棵树为算法调用查询树,将两棵树组成链表返回。[0097]模型数据查询树执行,数据写入全局指针指向的模型数据结构之中。[0098]算法调用查询树执行:读取全局指针中的模型数据,调用模型学习算法,写入模型参数后进行计算,若存储模型名称不为空,则调用元组插入函数将计算结果进行存储,更新s1所述系统表中模型元数据。[0099]清空指向模型数据结构的全局指针。[0100]s6、构造用于调用贝叶斯网络参数学习模块算法执行的语句,从步骤s5得到贝叶斯网络结构模型后进行参数学习,计算结果是条件概率表。语法结构如下:[0101]parameter[算法名称][[参数名称1=参数值,…]]findin[模型名称][0102][where[表名/条件表达式]]into[模型名称][0103]语法结构含义为:检测算法名称、算法参数是否合法,模型名称是否存在,若检测异常则终止执行返回异常信息,若检测正常则返回参数列表。[0104]步骤s7、构造用于调用贝叶斯网络推理模块算法执行的语句,所述语句读取模型的条件概率表、解析推理表达式、调用推理算法计算得到后验概率并返回,该语句的语法结构如下:[0105]inferencep(a|bi)from[模型名称][0106]语法结构含义为:将句柄数据结构中所有节点名称与条件概率表的列名进行对比,若存在条件概率表中不存在的节点名称则中断执行返回异常;否则将查询树拆分为两棵查询树,其一为基于模型名称进行构造的条件概率表查询树,其二为推理算法查询树。执行条件概率表查询树,将查询结果写入con_pro之中,执行推理算法查询树,将计算结果以元组形式返回客户端。[0107]贝叶斯网络推理模块算法执行的语句过程为:[0108]词法、语法分析:除s2所述逻辑外,构造描述贝叶斯网络推理问题的推理表达式,p(a|bi),其中a表示求解的节点名称,bi是证据集合,其中每一项的格式为bi=n,n表示bi节点的观察值,解析后bi以链表的方式进行存储,句柄数据结构中存放链表的头指针,a以字符串形式放入句柄数据结构中。[0109]语义分析:将句柄数据结构中所有节点名称与条件概率表的列名进行对比,若存在条件概率表中不存在的节点名称则中断执行返回异常;将查询树拆分为两棵查询树,其中第一棵树为条件概率表查询树,基于模型名称进行构造,查询该模型内的条件概率表;第二棵树为推理算法查询树,两棵树以链表形式返回。[0110]执行条件概率表查询树,将查询结果写入con_pro之中。[0111]执行推理算法查询树,将计算结果以元组形式返回客户端。[0112]清空指向模型数据结构的全局指针。[0113]本发明通过扩展sql语法的方式在关系数据库中实现了贝叶斯网络推理,大大降低了用户上手难度;借助关系数据库的数据管理功能减轻了用户管理数据集的负担。[0114]参阅图3所示,本发明还提供一种根据上述的贝叶斯网络推理方法的系统,包括:添加模块1,用于在关系数据库的内核中增加系统表,所述系统表用于管理贝叶斯网络模型的元数据;第一构造模块2,构造用于创建贝叶斯网络模型的ddl语句,执行所述ddl语句用于在关系数据库中增加一新模式及所述新模式下的数据集表、节点表、有向边表和条件概率表,数据集表用于存储数据,节点表和有向边表用于存储贝叶斯网络模型,条件概率表用于存储贝叶斯参数学习模块结果;第二构造模块3,构造用于查询贝叶斯网络模型的dml语句,定义模型数据存储结构,在关系数据库中声明指向模型数据存储结构的全局指针,在所述dml语句为独立查询时,申请元组存储结构并将结果以元组链表的形式返回,在所述dml语句为其他语句的子语句时,初始化指向模型数据存储结构的全局指针并将查询结果放在全局指针中;构建模块4,用于根据全局指针指向的模型数据结构为基础构建贝叶斯网络推理引擎,并将所述叶斯网络推理引擎合并到关系数据库的内核之中,所述贝叶斯网络推理引擎包括贝叶斯网络结构学习模块、贝叶斯网络参数学习模块和贝叶斯网络推理模块;第三构造模块5,构造用于调用贝叶斯网络结构学习模块算法执行的语句,所述语句通过读取模型数据查询语句返回值,调用贝叶斯网络结构学习算法从指定数据集中学习得到贝叶斯网络结构模型;第四构造模块6,构造用于调用贝叶斯网络参数学习模块算法执行的语句,从步骤s5得到贝叶斯网络结构模型后进行参数学习,计算结果是条件概率表;第五构造模块7,构造用于调用贝叶斯网络推理模块算法执行的语句,所述语句读取模型的条件概率表、解析推理表达式、调用推理算法计算得到后验概率并返回。[0115]虽然结合附图描述了本发明的实施方式,但是专利所有者可以在所附权利要求的范围之内做出各种变形或修改,只要不超过本发明的权利要求所描述的保护范围,都应当在本发明的保护范围之内。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献