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

基于广度优先搜索的贝叶斯网络结构精确建模方法与流程

2021-10-30 01:37:00 来源:中国专利 TAG:广度 建模 精确 优先 机器


1.本发明属于机器学习技术领域,涉及一种基于广度优先搜索的贝叶斯网络结构精确建模方法。


背景技术:

2.贝叶斯网络起源于人工智能领域的研究,近年来,已成为国内外智能数据处理的研究热点之一,被广泛应用于专家系统、决策支持、模式识别、机器学习和数据挖掘等领域。贝叶斯网络能够系统地描述随机变量之间的关系并可用于概率推理。概率推理依赖于联合概率分布,随着变量个数的增加,联合概率分布的复杂度呈指数级增长,因此当变量众多时无法直接计算联合概率分布。贝叶斯网络通过分解计算联合概率分布,降低了知识获取的难度和概率推理的复杂度,使得概率论可以应用于不确定复杂系统的建模和复杂系统变量间相互关系的分析问题中。
3.贝叶斯网络学习是其推理和应用的基础与前提,网络学习又分为结构学习和参数学习,其中结构学习确定整个网络的结构,定性地表达变量间的因果依赖关系;而参数学习则对这些关系进行量化。相较于参数学习,网络结构的学习对准确性的要求更高。因为多余的有向弧既增加了需要学习的概率参数,也错误地描述了因果关系;而“正确”有向弧的缺乏所带来的误差无法由概率参数的无限准确来弥补,并且难以准确地描述应有的因果关系。
4.贝叶斯网络结构学习算法众多,根据不同的准则有多种分类方式,三种典型的准则为:搜索空间、搜索方法以及搜索策略。依据搜索空间,贝叶斯网络结构学习算法可以分为:基于网络空间的搜索算法和基于节点序空间的搜索算法,其中,网络结构可依据搜索得到的节点序利用特定方法确定。相较基于网络空间的搜索算法而言,基于节点序空间的搜索算法在性能上存在如下优势: (1)搜索空间更小,对于一个具有n个变量的数据集而言,存在种可能的网络结构,而相应的节点序个数则为2
o(nlogn)
个;(2)搜索效率更高,在节点序空间中搜索的每一步无需构建网络结构和进行条件独立性测试;(3)搜索过程中的每一步对当前假设进行的全局性修改程度更大。因此,基于节点序空间研究贝叶斯网络的结构学习更有意义。节点序空间中,基于动态规划的精确学习算法是普遍公认的有效算法,但传统的基于深度优先搜索的算法效率有待提高,因此研究如何提高节点序空间中贝叶斯网络精确学习建模方法具有重要的意义和显著的价值。
5.基于动态规划的贝叶斯网络结构精确学习算法有两个重要的概念,分别为节点序图和父节点图,如图2所示。节点序图蕴含了网络结构中的所有可能节点序列,而父节点图则包含了特定节点的所有候选父节点集合。对于具有4个节点的贝叶斯网络的节点序图而言,按从左至右的顺序,以x1为叶节点时在深度优先搜索原则下的部分搜索策略如图3所示,搜索顺序为:
图中,实线表示算法的前向搜索,虚线代表回溯操作。对于以节点x2,x3,x4为叶节点时的搜索顺序与此类似。对于节点x1的父节点图而言,按从左至右的顺序,在深度优先搜索原则下的搜索策略如图4所示,搜索顺序为:图中,实线表示算法的前向搜索,虚线代表回溯操作。节点x2,x3,x4的父节点图搜索顺序与此类似。基于深度优先搜索策略的动态规划精确学习能够在全局寻找到最优的网络结构,然而,由于算法在迭代过程中总是需要执行回溯操作,因此算法的搜索效率较低。


技术实现要素:

6.本发明的目的在于提供一种基于广度优先搜索的贝叶斯网络结构精确建模方法,以解决传统动态规划算法效率低下的问题。
7.为实现上述目的,本发明采用的技术方案为:
8.一种基于广度优先搜索的贝叶斯网络结构精确建模方法,其特征在于:包括以下步骤:
9.步骤1,构建节点集合与其标号所对应的哈希表,将节点集合以二进制编码的形式表示,在评分查找过程中,以十进制标号代替节点集合;
10.步骤2,计算网络各节点的全家族评分并以哈希表形式存储;
11.步骤3,对于网络各节点,在其父节点图中,依据广度优先搜索策略,获取最优父节点集合以及评分并以哈希表形式进行存储;
12.步骤4,在节点序图中,依据广度优先搜索策略,获取各节点组合的最优网络结构评分和最优叶节点并以哈希表形式进行存储;
13.步骤5,从全节点组合开始,提取最优叶节点和对应叶节点的最优父节点集合组成网络结构的一部分,更新当前节点集,并重复上述过程,直至节点集合为空。
14.步骤(1)中,将节点集合以二进制编码的形式表示,对于n个节点的集合,设置一个位数为n的二进制数组b,对于某个集合u,若x
i
∈u,则b的第i位置1,否则置0,随后通过哈希函数将其转换为十进制标号。在评分查找过程中,以该十进制标号代替节点集合。
15.步骤(2)中,网络各节点的全家族评分为:
[0016][0017]
其中,x表示某一网络节点,v表示网络全节点集合,ps表示节点x的父节点集合,score表示给定父节点集合条件下节点x的家族评分;
[0018]
步骤(2)包括以下步骤:
[0019]
(2a)构造遍历第1个到第n个贝叶斯网络节点的循环;
[0020]
(2b)以除当前节点外的剩余节点构造候选父节点集合candi_par={1:n}\i;
[0021]
(2c)依据哈希表构建candi_par的所有子集subsets,其中,∪subsets=candi_par;
[0022]
(2d)构造遍历第1个到第2
n
‑1个子集集合的循环;
[0023]
(2e)以当前子集作为父节点集合,以当前节点作为子节点集合,计算家族评分score(i|subsets{j}),并以哈希表的形式存储,其中i是当前节点的下标,j是当前子集的下标。
[0024]
步骤(3)中,最优父节点集合及其评分为:
[0025][0026][0027]
其中,pa(x)表示节点x的最优父节点集合,因此pa(x)是ps的子集;
[0028]
步骤(3)包括以下步骤:
[0029]
(3a)针对网络中的某一节点,构造遍历从其第2
n
‑1个到第1个候选父节点集合的逆循环;
[0030]
(3b)将当前候选父节点集合序号由十进制转换为二进制数组并赋值给bit_array;
[0031]
(3c)查找二进制数组bit_array中哪些位置为1,并将结果赋值给数组i_ba;
[0032]
(3d)对二进制数组bit_array求和并将结果赋值给变量n_sub_candi;
[0033]
(3e)构造全0数组parents,置父节点图中每个节点所对应的最优父节点集合评分bss为负无穷;
[0034]
(3f)构造遍历0到2^n_sub_candi

1序号的循环;
[0035]
(3g)将当前序号由十进制转换为二进制数组并赋值给sub_bit_array;
[0036]
(3i)将二进制数组parents转换为十进制并赋值给变量dec_pa;
[0037]
(3j)以当前节点和dec_pa为索引,在步骤(2e)所构造的哈希表中查找对应的评分,若评分大于当前最优父节点集合评分,则更新当前最优父节点集合评分和最优父节点集合,循环迭代直至满足终止条件。
[0038]
步骤(4)中,各节点组合的最优网络结构评分和最优叶节点为:
[0039][0040][0041]
其中,s表示全节点集合v中所有节点的各种组合,组合中的节点个数由0 到n依次增加;
[0042]
步骤(4)包括以下步骤:
[0043]
(4a)构造遍历0到2^n

1序号的循环;
[0044]
(4b)将当前序号由十进制转换为二进制数组,并赋值给bit_array;
[0045]
(4c)查找二进制数组bit_array中哪些位置为1,并将结果赋值给数组i_ba;
[0046]
(4d)若i_ba为空,则与该集合所对应的最优网络结构评分和最优叶节点被置为0;
[0047]
(4e)否则,置当前最优网络结构评分为负无穷,并构造遍历i_ba集合中节点的循环;
[0048]
(4f)计算i_ba中除当前节点外其余节点所构成的最优网络结构评分,并存储在p_
score中;
[0049]
(4g)在候选父节点集中寻找最优父节点集合,计算其所对应的家族评分并存储于bestscore中;
[0050]
(4h)集合i_ba所对应的最优网络结构的评分score等于p_score bestscore;
[0051]
(4i)若score大于当前集合所对应的最优网络结构评分,则更新该集合所对应的最优网络结构评分和最优叶节点,其中最优网络结构评分更新为score,最优叶节点更新为该次循环中i_ba的当前节点;
[0052]
(4j)将最优叶节点和最优网络结构评分按序号存储在最优叶节点缓存 leaf_cache和最优网络结构评分缓存p_cache中。
[0053]
步骤(5)包括以下步骤:
[0054]
(5a)初始化网络结构为空,初始化节点集合nodes为长度为n的全1集合;
[0055]
(5b)构造遍历n到1的逆循环;
[0056]
(5c)在哈希表中读取数组nodes所对应的编号;
[0057]
(5d)依据该编号从最优叶节点缓存leaf_cache中提取当前最优叶节点temp;
[0058]
(5e)将temp放置于节点序中的当前序号位;
[0059]
(5f)将节点集合nodes中temp所对应的位置置为0;
[0060]
(5g)以temp为叶节点,在哈希表中读取nodes所对应的编号;
[0061]
(5h)根据该编号读取temp所对应的最优父节点集合在哈希表中的编号 ps_indx;
[0062]
(5i)将十进制数字ps_indx

1转换为二进制数组ps_bins;
[0063]
(5j)查找二进制数组ps_bins中哪些位置为1并赋值给数组raw;
[0064]
(5k)在网络结构中,依次添加从raw中各元素到节点temp的有向边;
[0065]
(5l)循坏迭代直至满足终止条件,其余循环步骤以此类推。
[0066]
与现有技术相比,本发明具有的优点和效果如下:
[0067]
本发明所公开的基于广度优先搜索策略的贝叶斯网络结构精确建模方法,通过构建节点集合与其标号所对应的哈希表提高了家族评分的查询效率,采用广度优先搜索策略代替深度优先搜索策略避免了搜索过程中的回溯操作,克服了现有技术中基于深度优先搜索的算法效率低下的问题,其在保证结果准确性,即能够搜索得到最优网络结构的同时极大地提升了搜索效率。
附图说明:
[0068]
图1是本发明方法的程序流程图;
[0069]
图2是四节点贝叶斯网络的节点序图和父节点图;
[0070]
图3是四节点贝叶斯网络节点序图的深度优先搜索策略图;
[0071]
图4是四节点贝叶斯网络父节点图的深度优先搜索策略图;
[0072]
图5是四节点贝叶斯网络节点序图的广度优先搜索策略图;
[0073]
图6是四节点贝叶斯网络父节点图的广度优先搜索策略图。
具体实施方式:
[0074]
下面结合具体实施方式对本发明进行详细的说明。这些实施例是用于说明本发明
而不限于本发明的范围。实施例中采用的实施条件可以根据具体实验环境做进一步调整,未注明的实施条件通常为常规实验中的条件。
[0075]
本发明为一种基于广度优先搜索的贝叶斯网络结构精确建模方法,在保证结果准确性的同时极大地提升了搜索效率。对于四个节点的贝叶斯网络节点序图和父节点图而言,按从左至右的顺序,以x1为叶节点时在广度优先搜索原则下的搜索策略分别如图5和图6所示,节点序图搜索顺序为:父节点图搜索顺序为: []

[x2]

[x3]

[x4]

[x2,x3]

[x2,x4]

[x3,x4]

[x2,x3,x4],图中,实线表示算法的前向搜索。以x2,x3,x4为叶节点时节点序图和x2,x3,x4父节点图的搜索顺序与此类似。
[0076]
实施例:
[0077]
本发明实施例提供一种基于广度优先搜索的贝叶斯网络结构精确建模方法,以下以4节点贝叶斯网络为例进行详细说明。
[0078]
步骤1:构建节点集合与其标号所对应的哈希表
[0079]
当子节点为1时,剩余节点所构成的集合为[2,3,4],此时,二进制编码001 所对应的十进制编号为1
·
1 0
·
2 0
·
4 1=2,其所对应的子节点集合为[2];同理,二进制编码011所对应的十进制编号为1
·
1 1
·
2 0
·
4 1=4,其所对应的子节点集合为[2,3];其它二进制编码和所对应的十进制编号与子节点集合以此类推。
[0080]
当子节点为2时,剩余节点所构成的集合为[1,3,4],此时,二进制编码001 所对应的十进制编号为1
·
1 0
·
2 0
·
4 1=2,其所对应的子节点集合为[1];同理,二进制编码011所对应的十进制编号为1
·
1 1
·
2 0
·
4 1=4,其所对应的子节点集合为[1,3];其它二进制编码和所对应的十进制编号与子节点集合以此类推。
[0081]
当子节点为3时,剩余节点所构成的集合为[1,2,4],此时,二进制编码001 所对应的十进制编号为1
·
1 0
·
2 0
·
4 1=2,其所对应的子节点集合为[1];同理,二进制编码011所对应的十进制编号为1
·
1 1
·
2 0
·
4 1=4,其所对应的子节点集合为[1,2];其它二进制编码和所对应的十进制编号与子节点集合以此类推。
[0082]
当子节点为4时,剩余节点所构成的集合为[1,2,3],此时,二进制编码001 所对应的十进制编号为1
·
1 0
·
2 0
·
4 1=2,其所对应的子节点集合为[1];同理,二进制编码011所对应的十进制编号为1
·
1 1
·
2 0
·
4 1=4,其所对应的子节点集合为[1,2];其它二进制编码和所对应的十进制编号与子节点集合以此类推。
[0083]
表1四节点网络父节点集合的哈希表
[0084][0085]
步骤2:
[0086]
步骤2中,网络各节点的全家族评分为:
[0087][0088]
其中,x表示某一网络节点,v表示网络全节点集合,ps表示节点x的父节点集合,score表示给定父节点集合条件下节点x的家族评分。
[0089]
步骤2包括以下步骤:
[0090]
计算网络各节点的全家族评分并以哈希表形式存储
[0091]
构造遍历1到4的循环;
[0092]
设当前节点为1,则剩余节点所构造的父节点集合为[2,3,4];
[0093]
集合[2,3,4]的所有子集包括:[],[2],[3],[2,3],[4],[2,4],[3,4]. [2,3,4],其所对应的十进制编号由1到8变化;
[0094]
构造遍历1到8个子集集合的循环;
[0095]
以[]为父节点集合时,家族评分score(1|[])=

3.4702e 03,存储于数组 ls(1,1)中,ls表示家族评分集合;以[2]为父节点集合时,家族评分 score(1|[2])=

2.9964e 03,存储于ls(1,2)中;以[3]为父节点集合时,家族评分score(1|[3])=

2.5166e 03,存储于ls(1,3)中;以[2,3]为父节点集合时,家族评分score(1|[2,3])=

2.2135e 03,存储于ls(1,4)中;以[4]为父节点集合时,家族评分score(1|[4])=

3.3756e 03,存储于ls(1,5)中;以[2,4] 为父节点集合时,家族评分score(1|[2,4])=

2.5300e 03,存储于ls(1,6)中;以[3,4]为父节点集合时,家族评分score(1|[3,4])=

2.3734e 03,存储于 ls(1,7)中;以[2,3,4]为父节点集合时,家族评分score(1|[2,3,4])=

2.2230 e 03,存储于ls(1,8)中;
[0096]
其它节点的家族评分计算以此类推。
[0097]
步骤3:
[0098]
步骤3中,最优父节点集合及其评分为:
[0099][0100][0101]
其中,pa(x)表示节点x的最优父节点集合,因此pa(x)是ps的子集;
[0102]
步骤3包括以下步骤:
[0103]
对于网络各节点,在其父节点图中,依据广度优先搜索策略,获取最优父节点集合以及评分并以哈希表形式进行存储
[0104]
设当前子节点为1,构造遍历从其第8个到第1个候选父节点集合的逆循环;
[0105]
设当前是第8个候选父节点集合,其标号为8

1=7,将其转换为二进制数组为[1,1,1];
[0106]
二进制数组中,[1,2,3]位为1,即i_ba=[1,2,3];
[0107]
二进制数组求和结果为3,即n_sub_candi=3;
[0108]
parents

[0,

,0],bss
←‑
∞;
[0109]
构造遍历0到7序号的循环;
[0110]
设当前序号为0,将其转换为二进制数组[0,0,0];
[0111]
parents=[0,0,0],dec_pa=1;
[0112]
以当前节点1和dec_pa为索引,在步骤2第(5)步所构造的哈希表中查找对应的评分为score(1|[])=

3.4702e 03,由于该评分大于bss,因此更新当前最优父节点集合评分为

3.4702e 03,最优父节点集合为[],循坏迭代直至满足终止条件,其余循环步骤以此类推。
[0113]
步骤4:
[0114]
步骤4中,各节点组合的最优网络结构评分和最优叶节点为:
[0115][0116][0117]
其中,s表示全节点集合v中所有节点的各种组合,组合中的节点个数由0 到n依次增加;
[0118]
步骤4包括以下步骤:
[0119]
在节点序图中,依据广度优先搜索策略,获取各节点组合的最优网络结构评分和最优叶节点并以哈希表形式进行存储
[0120]
构造遍历0到15序号的循环;
[0121]
设当前序号为0,转为二进制数组[0,0,0,0],并赋值给bit_array;
[0122]
由于二进制数组bit_array全为0,因此i_ba=[];
[0123]
因为i_ba为空,因此与该序号所代表的集合所对应的最优网络结构评分和最优叶节点被置为0;
[0124]
将最优叶节点和最优网络结构评分按序号存储在最优叶节点缓存leaf_cache 和最优网络结构评分缓存p_cache中;
[0125]
设当前序号为3,转为二进制数组[1,1,0,0],并赋值给bit_array;
[0126]
bit_array中第1、2位为1,因此i_ba=[1,2];
[0127]
当前最优网络结构评分被置为负无穷,同时构造遍历[1,2]集合中节点的循环;
[0128]
设当前遍历的节点为1,除去节点1,其余节点即节点2所构成的最优网络结构评分为

3.0391e 03,将该评分存储在变量p_score中;
[0129]
在节点1的候选父节点集合中选出最优父节点并计算家族评分为
ꢀ‑
2.9094e 03,存储在变量bestscore中;
[0130]
集合[1,2]所对应的最优网络结构的评分score等于p_score bestscore=
ꢀ‑
5.9891e 03;
[0131]
由于score大于当前集合所对应的最优网络结构评分,因此更新该集合所对应的最优网络结构评分和最优叶节点,其中最优网络结构评分更新为
ꢀ‑
5.9891e 03,最优叶节点更新为该次循环中i_ba的当前节点,即节点1,循坏迭代直至满足终止条件,其余循环步骤以此类推;
[0132]
将最优叶节点和最优网络结构评分按序号存储在最优叶节点缓存leaf_cache 和最优网络结构评分缓存p_cache中,循坏迭代直至满足终止条件,其余循环步骤以此类推。
[0133]
步骤5:从全节点组合开始,提取最优叶节点和对应叶节点的最优父节点集合组成网络结构的一部分,更新当前节点集,并重复上述过程,直至节点集合为空
[0134]
初始化网络结构为空,初始化节点集合nodes为长度为n的全1集合;
[0135]
构造遍历4到1的逆循环;
[0136]
在哈希表中读取数组[1,

,1]所对应的编号为16;
[0137]
依据该编号从最优叶节点缓存leaf_cache中提取当前最优叶节点为4;
[0138]
将节点4放置于节点序中的当前序号为,即第4位;
[0139]
将节点集合nodes中节点4所对应的位置置为0,即nodes=[1,

,0];
[0140]
以4为叶节点,在哈希表中读取nodes所对应的编号为8;
[0141]
根据该编号读取节点4所对应的最优父节点集合在哈希表中的编号为7;
[0142]
将7

1转换为二进制数组为[0,1,1];
[0143]
查找二进制数组[0,1,1]中[2,3]位为1,因此将[2,3]赋值给数组raw;
[0144]
在网络结构中,添加从节点[2,3]到节点4的边;
[0145]
循坏迭代直至满足终止条件,其余循环步骤以此类推。
[0146]
以上对本发明实施例所提供的基于广度优先搜索的贝叶斯网络结构精确建模方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
再多了解一些

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

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

相关文献

  • 日榜
  • 周榜
  • 月榜