基于蜻蜓优化算法的贝叶斯网络结构学习方法研究
【摘要】:贝叶斯网络可以有效地表示知识的不确实性,同时可以进行高效地概率推理,它被广泛应用于数据挖掘、目标检测、故障诊断、文本分类等领域。数据集被认为是从某一个特定的联合概率分布中生成而来,运用贝叶斯网络可以高效地表示联合概率分布。使用贝叶斯网络进行概率推理,首要任务就是从数据中学习出一个优秀的贝叶斯网络结构。优秀的贝叶斯网络结构可以更好地拟合数据,使得模型更加接近真实的联合概率分布。然而贝叶斯网络结构学习问题是NP难的问题,所以,寻找能高效地从数据中学出贝叶斯网络结构的算法一直是贝叶斯网络的热门研究方向。贝叶斯网络结构学习的经典算法有K2算法、BNPC算法、MWST算法、马尔科夫链蒙特卡洛方法等。近年来,研究人员成功地把群智能优化算法运用在贝叶斯网络结构学习之上并且取得了良好的效果。本文根据蜻蜓优化算法的特点,提出了一种算法IBDA,并且把其运用到贝叶斯网络结构学习当中。同时为了解决不完备数据下的贝叶斯网络结构学习问题,本文提出了一种算法EIBDA,并且把其运用到不完备数据的贝叶斯网络结构学习中。本文的工作有:提出了一种改进的二进制蜻蜓优化算法(Improved Binary Dragonfly Algorithm)并且运用它学习贝叶斯网络结构。(1)对蜻蜓优化算法惯性权重改变方式做出了改进,对蜻蜓优化算法被食物吸引的行为和远离敌人的行为做出了改进,并且提出了高效的二进制转换函数,使得算法在寻优过程中可以更好平衡探索和利用。(2)使用改进的蜻蜓优化算法进行贝叶斯网络结构学习。贝叶斯网络可以使用邻接矩阵来表示,每个贝叶斯网络对应一只蜻蜓个体。使用BIC准则作为评分函数。使用随机化算法随机生成初始种群,然后运用改进的蜻蜓优化算法作为搜索算法,在搜索的过程中,使用深度优先算法破除环路,增加种群的多样性,在搜索的过程中,使用K2算法作局部搜索,使得算法加快收敛。算法第一阶段的输出为贝叶斯网络拓扑结构G1。引入增边,减边,反转边算子,从G1开始继续寻优,利用三个算子,尝试得到评分更高的贝叶斯网络拓扑结构G2。(3)在经典的贝叶斯网络数据集Asia、Alarm、Child、Sachs数据集上做实验,和GS算法、BNPC算法、MCMC算法做对比,实验结果表明本文算法可以找到评分更高的贝叶斯网络拓扑结构。(4)为了解决在不完备数据集上的贝叶斯网络结构学习问题,借鉴了SEM算法的思想,结合了IBDA算法的强大的寻优功能,本文提出了一种可以在不完备数据集上进行贝叶斯网络结构学习的算法EIBDA。EIBDA通过EM子过程和IBDA模型搜索子过程相互迭代进行,通过EM子过程优化参数,然后使用联合树推理算法补全缺失记录形成完备数据集,使用IBDA算法在完备数据集上进行模型寻优,如果当前轮次寻找的结构比上一轮的结构BIC评分高,则替代之,否则输出当前找到的最优结构。在数据集Asia、Sachs上的仿真实验表明,EIBDA算法的精度比MWST-EM、SEM要高,学出来的网络的BIC评分更高。