热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

贝叶斯网络结构学习总结

完备数据集下的贝叶斯网络结构学习:基于依赖统计分析的方法—— 通常利用统计或是信息论的方法分析变量之间的依赖关系,从而获得最优的网络结构对于基于依赖统计分析方法的研究可分为三种:基
完备数据集下的贝叶斯网络结构学习:
  • 基于依赖统计分析的方法——  通常利用统计或是信息论的方法分析变量之间的依赖关系,从而获得最优的网络结构
    • 对于基于依赖统计分析方法的研究可分为三种:
      • 基于分解的方法(V结构的存在)
        • Decomposition of search for v-structures in DAGs
        • Decomposition of structural learning about directed acylic graphs
        • Structural learning of chain graphs via decomposition 
      • 基于Markov blanket的方法
        • Using Markov blankets for causal structure learning
        • Learning Bayesian network strcture using Markov blanket decomposition
      • 基于结构空间限制的方法
        • Bayesian network learning algorithms using structural restrictions(将这些约束与pc算法相结合提出了一种改进算法,提高了结构学习效率)(约束由Campos指出包括1、一定存在一条无向边或是有向边 2、一定不存在一条无向边或有向边  3、部分节点的顺序)
    • 常用的算法:
      • SGS——利用节点间的条件独立性来确定网络结构的方法
      • PC——利用稀疏网络中节点不需要高阶独立性检验的特点,提出了一种削减策略:依次由0阶独立性检验开始到高阶独立性检验,对初始网络中节点之间的连接进行削减。此种策略有效地从稀疏模型中建立贝叶斯网络,解决了SGS算法随着网络中节点数的增长复杂度呈指数倍增长的问题。
      • TPDA——把结构学习过程分三个阶段进行:a)起草(drafting)网络结构,利用节点之间的互信息得到一个初始的网络结构;b)增厚(thickening)网络结构,在步骤a)网络结构的基础上计算网络中不存在连接节点间的条件互信息,对满足条件的两节点之间添加边;。)削减( thinning)网络结构,计算步骤b)网络结构中边的条件互信J急,删除不满足条件的边。
 
  • 基于评分搜索的方法
    • 评分函数(表示学习到的网络和真实网络的匹配程度)
      • BIC——由Schwarz在1978年提出的BIC准则。BIC评分函数是在样本满足独立同分布假设的前提下,用对数似然度来度量网络结构与观侧数据的拟合程度。由于没有对网络结构的复杂度进行约束,通过此评分函数搜索得出的网络结构较为复杂,准确度不高。
      • K2——由Cooper等提出了一种结合先验信息的K2评分函数。因为在进行贝叶斯网络结构学习之前,绝大多数情况下节点顺序是不清楚的,因此,这也是K2算法最大的弊端。
      • MDL——由Lam在1994年提出了以最小描述长度MDL作为衡量标准,通过搜索与评价来找出正确的网络结构,不需要知道节点顺序等先验知识。相对于BIC算法,该方法加入了算法复杂度的惩罚项,但是MDL评分函数在观测数据量较小时,惩罚量所占的得分比重较大导致数据与结构的欠拟合;当观测数据量较大时,惩罚量所占的比重较小,使得数据与结构过拟合。所以,在实际的计算过程中,MDL评分函数的计算精确度不高。
      • BDe——由Heckerman等人在1995年提出。是K2的改进算法,此方法假设贝叶斯网络参数的先验分布服从Dirichlet分布,在计算的过程中不需要事先获得节点顺序,扩大了评分函数的应用领域。
      • IS——由Bouchaala等人提出。利用用隐含估计的方法对贝叶斯网络参数进行估计,避免了要先确定节点变量分布的情况,减少了由节点变量分布带来的误差,提高了评分函数的精确度。
      • MIT——由Campos等人提出。基于条件独立性测试的评分函数MIT( mutual information tests),函数通过度量网络结构与观测数据之间的KL距离来评价网络结构的优劣,当两者距离最小时,网络结构与观测数据的相似性最大。此方法利用信息论的原理减少了计算复杂度。
      • 卡方度量
      • 信息熵度量
      • BD——贝叶斯狄利克雷评分
    • 搜索算法
      • K2——K2搜索算法由Cooper等人在1992年提出。K2搜索算法通过贪婪搜索选择最优的网络结构,在定义评分函数之后,从一个网络节点开始,根据已经确定的最大父节点数目和节点顺序,选择分值最高的节点作为该节点的父节点。
      • Ziegler等通过以节点为单位分解评分函数,从而改进了贪婪算法的搜索策略,提高了算法的精度。(Approximation algorithms for restricted Bayesian network structures)
      • Campos等然提出了基于蚁群优化算法的贝叶斯网络结构学习(Ant colony optimization for learning Bayesian networks)
      • 其他的搜索优化方法,包括贪婪算法,粒子群优化算法,遗传算法,人工蜂群算法等(An artificial bee colony algorithm for learning Bayesian networks\ A Bayesian network learning algorithm based on independence test and ant colony optimization\Bayesian network structure learning algorithm based on ant colony optimization search optimal node ordering)
      • 爬山算法——爬山法使用的搜索算子由3种,分别为加边、减边、转边;其中在加边和转边的使用时有一个前提就是不能有环;主要思想:爬山法从一个初始网络结构出发,通过三个搜索算子对当前网络结构进行修改,得到一系列候选网络结构,然后计算每个候选网络结构的评分,并选出评分最大的作为最优候选结构,如果最优候选结构的评分大于当前网络结构的评分,则以最优候选结构作为当前网络结构,继续搜索; 否则,就停止搜索,并返回当前网络结构。
 
 
  • 将上述两种方法相结合
    • MMHC——Tsamardinos等人提出的MMHC算法是比较经典的混合搜索算法之一,首先利用MMPC(max-min parents and chlidren)算法确定每个节点的父节点和子节点集,从而构建出网络结构框架;然后根据K2搜索策略对已经得到的网络结构的框架进行搜索评分,得出最优网络结构。
    • I-ACO-B——由Ji等人提出,首先通过节点间条件独立性测试缩减网络结构空间,然后利用蚁群算法对网络结构空间进行评分搜索,最终得出最优的网络结构
    • MIC——ZHANG等人在互信息的基础上提出了MIC( maximum information coeffioient)来判断节点间的相关性,有效地改善了在缩减网络结构空间时误删最优解的情况。
    • SK-SS——Masegosa 等人利用基于Markov Blanket 集合的方法来构建网络结构框架,缩减了网络结构空间,并通过适合于网络结构框架的评分函数SK-SS( skeleton-ased stochastic search method)来降低计算复杂度,取得了很好的效果。
    • Larjo 等人l鉴于大多数贝叶斯网络结构都是稀疏的情况,用L-1范数惩罚网络复杂度,并将正则项加入到评分函数中,在减小网络结构复杂度的同时提高了计算效率,并在生物领域取得了较好的应用。
    • 增量学习——提出了基于增量学习的贝叶斯网络结构学习方法,给出了贝叶斯网络结构增量学习的框架,通过改进BIC评分函数得出评价网络结构是否需要进行增量学习的评价准则,最后通过TPDA算法学习出当前状态下准确的贝叶斯网络结构。实验结果表明,增量学习的思想大大提高了算法的学习效率。(An incremental structure learning approach for bayesian network)
不完备数据下的贝叶斯网络结构学习:
  • 数据的丢失导致两方面的问题:
    • 评分函数不再具有可分解形式,不能进行局部搜索
    • 一些充分统计因子不存在,无法直接对网络结构打分
  • 具体流程:
    • 随机或按分布生成丢失数据,将不完备数据初始化
    • 对数据进行完善修正,并通过参数估计方法得出贝叶斯网络的参数估计值;
    • 对得到的贝叶斯网络观测数据进行结构学习得出G的k次方,并跳至步骤b,直至循环结束
  • 部分算法:
    • EM——该方法是由Friedman等人在1998年提出的,该方法是一种比较经典的不完备数据结构学习算法
    • MS-EM——该算法是在EM 算法完成数据修补后,利用爬山算法来寻找最优的网络结构(Learning belief networks in the presence of missing values and hidden variables)
    • GES-EM\MWST-EM——为了减少爬山算法的计算复杂度提出的算法(Learning Bayesian network equivalence classed from incomplete data)
    • BN-GS—— 针对不完备数据的结构学习算法容易陷入局部最优,提出了一种基于Gibbs sampling修复丢失数据的BN-GS( Bayesian network&Gibbs sampling)算法。BN-GS把Gibbs sampling和数据集修正与贝叶斯网络结构调整有机地结合在一起。一方面,由Gibbs sampling过程的收敛性保证了贝叶斯网络结构序列的收敛性;另一方面,每一次依据联合概率的分解独立地对样本进行抽样,能够显著提高抽样效率。但这种方法在保证精确度的同时,存在重复计算网络结构的问题,增加了学习复杂度。
  • 不足:
    • 基EM算法框架的结构学习算法由于网络参数的最大似然估计和数据采样的不准确性使得学习准确度较r氏。
传统的因果网络推断方法:
  • 基于估计马尔可夫等价类的贝叶斯网络结构学习算法
  • 基于估计马尔可夫等价类的贝叶斯网络结构学习算法只能用于因果结构无向图的环境,而无法准确完成模型的方向推断
  • 基于加性噪声模型或信息集合的因果方向推断算法
  • 基于加性噪声模型或信息几何的因果方向推断算法能够从数据节点集中构建有效的因果网络
 

推荐阅读
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 实现一个通讯录系统,可添加、删除、修改、查找、显示、清空、排序通讯录信息
    本文介绍了如何实现一个通讯录系统,该系统可以实现添加、删除、修改、查找、显示、清空、排序通讯录信息的功能。通过定义结构体LINK和PEOPLE来存储通讯录信息,使用相关函数来实现各项功能。详细介绍了每个功能的实现方法。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 开发笔记:Docker 上安装启动 MySQL
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Docker上安装启动MySQL相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
author-avatar
人鱼同体
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有