掘金 人工智能 9小时前
概率图模型:机器学习的结构化概率之道
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

概率图模型是一种强大的工具,它利用图形化的方式来表示变量之间的概率关系,帮助我们理解和建模复杂世界中的不确定性。文章详细介绍了两种主要的概率图模型:贝叶斯网络和马尔可夫网。贝叶斯网络是有向无环图模型,侧重于表示变量间的因果关系,而马尔可夫网是无向图模型,用于表示变量间的相关关系。文章还通过Python示例展示了如何使用pgmpy库构建和应用这两种模型,并比较了它们在不同应用场景中的优势。概率图模型在医疗诊断、图像处理、社交网络分析等领域都有广泛应用。

💡 概率图模型通过图形来表示变量间的概率关系,核心思想是利用图的结构简化复杂的概率计算,使得变量间的相互作用更直观。

➡️ 贝叶斯网络是一种有向无环图模型,通过有向边表示变量间的因果关系。节点代表随机变量,有向边表示一个变量对另一个变量的直接影响。贝叶斯网络基于贝叶斯定理,允许通过已知概率分布计算未知概率分布。文章提供了使用pgmpy库构建和推理贝叶斯网络的Python示例。

🤝 马尔可夫网是一种无向图模型,变量间的关系通过无向边表示,表示变量间的相互依赖关系而非因果关系。马尔可夫网的核心原理是马尔可夫性,即一个变量的值只依赖于与其直接相连的变量。文章提供了使用pgmpy库构建和推理马尔可夫网的Python示例。

🆚 贝叶斯网络和马尔可夫网在图类型、依赖关系和应用场景上有所不同。贝叶斯网络擅长捕捉因果关系,常用于医疗诊断、风险评估等;马尔可夫网精于表达相关约束,常用于图像处理、社交网络分析等。实际应用中,有时会将两者结合使用,构建更复杂的模型。

当复杂世界的不确定性遇上图的结构化表达,概率图模型应运而生。

它可以帮助我们理解和建模变量之间的复杂关系

想象一下,你正在尝试预测明天的天气,你需要考虑温度、湿度、气压等多种因素,这些因素之间存在着复杂的相互作用。

概率图模型就像是一张“关系网”,能够清晰地表示这些因素之间的依赖关系,并帮助我们进行推理和预测。

1. 定义

概率图模型是一种通过图形化的方式来表示变量之间概率关系的模型。

它将变量表示为图中的节点,而变量之间的关系则通过边来表示。

这种模型的核心思想是利用图的结构来简化复杂的概率计算,使得我们可以更直观地理解和分析变量之间的相互作用。

概率图模型是概率论与图论的完美结合。

它主要分为两类:有向无环图(DAG)模型,也就是贝叶斯网络;以及无向图模型,也就是马尔可夫网

接下来,我们来详细了解一下这两种模型。

2. 贝叶斯网络:有向无环图模型

贝叶斯网络是一种有向无环图模型,它通过有向边来表示变量之间的因果关系。

贝叶斯网络中,每个节点代表一个随机变量,而有向边则表示一个变量对另一个变量的直接影响。

例如,我们可以通过贝叶斯网络来表示“下雨”和“地面潮湿”之间的关系,“下雨”会导致“地面潮湿”,这种因果关系在图中通过一条有向边来表示。

贝叶斯网络的原理基于贝叶斯定理,它允许我们通过已知的概率分布来计算未知的概率分布。

具体来说,给定一个贝叶斯网络,我们可以通过联合概率分布来计算任意变量的概率,同时也可以利用条件概率来进行推理。

例如,如果我们知道“下雨”的概率,以及“下雨”导致“地面潮湿”的条件概率,那么我们就可以计算出“地面潮湿”的概率。

Python中,我们可以使用pgmpy库来构建和使用贝叶斯网络。

虽然scikit-learn库本身不直接支持贝叶斯网络,但pgmpy是一个很好的补充。

以下是一个简单的示例,展示如何构建一个贝叶斯网络并进行推理:

from pgmpy.models import DiscreteBayesianNetworkfrom pgmpy.factors.discrete import TabularCPDfrom pgmpy.inference import VariableElimination# 构建贝叶斯网络model = DiscreteBayesianNetwork([("下雨", "地面潮湿"), ("洒水装置", "地面潮湿")])# 定义条件概率分布cpd_rain = TabularCPD(variable="下雨", variable_card=2, values=[[0.2], [0.8]])cpd_sprinkler = TabularCPD(variable="洒水装置", variable_card=2, values=[[0.1], [0.9]])cpd_wetground = TabularCPD(    variable="地面潮湿",    variable_card=2,    values=[[0.9, 0.2, 0.1, 0.01], [0.1, 0.8, 0.9, 0.99]],    evidence=["下雨", "洒水装置"],    evidence_card=[2, 2],)# 添加条件概率分布到模型model.add_cpds(cpd_rain, cpd_sprinkler, cpd_wetground)# 检查模型是否有效assert model.check_model()# 进行推理inference = VariableElimination(model)result = inference.query(variables=["地面潮湿"], evidence={"下雨": 1, "洒水装置": 0})print(result)## 运行结果:'''+------------+-----------------+| 地面潮湿    |   phi(地面潮湿) |+============+=================+| 地面潮湿(0) |      0.1000    |+------------+----------------+| 地面潮湿(1) |      0.9000    |+------------+----------------+'''

在这个例子中,我们定义了一个简单的贝叶斯网络,包含三个变量:“下雨”、”洒水装置”和”地面湿”。

我们通过条件概率分布来描述这些变量之间的关系,并使用VariableElimination类来进行推理。

通过指定证据(例如“下雨”为1,“洒水装置”为0),我们可以计算出“地面湿”为真的概率。

3. 马尔可夫网:无向图模型

贝叶斯网络不同,马尔可夫网是一种无向图模型。

马尔可夫网中,变量之间的关系通过无向边来表示,这些边表示变量之间的相互依赖关系,但不表示因果关系。

马尔可夫网核心原理是马尔可夫性,即一个变量的值只依赖于与它直接相连的变量,而与图中的其他变量无关。

马尔可夫网通常用于表示变量之间的软约束关系,例如在图像分割中,相邻像素的颜色通常相似,这种相似性可以通过马尔可夫网来建模。

Python中,我们同样可以使用pgmpy库来构建马尔可夫网。

以下是一个简单的示例,展示如何构建一个马尔可夫网并进行推理:

from pgmpy.models import MarkovNetworkfrom pgmpy.factors.discrete import DiscreteFactorfrom pgmpy.inference import BeliefPropagation# 构建马尔可夫网model = MarkovNetwork()# 添加边model.add_edges_from([("A", "B"), ("B", "C"), ("C", "A")])# 定义因子factor_ab = DiscreteFactor(    variables=["A", "B"], cardinality=[2, 2], values=[[1, 10], [10, 1]])factor_bc = DiscreteFactor(    variables=["B", "C"], cardinality=[2, 2], values=[[10, 1], [1, 10]])factor_ca = DiscreteFactor(    variables=["C", "A"], cardinality=[2, 2], values=[[10, 1], [1, 10]])# 添加因子到模型model.add_factors(factor_ab, factor_bc, factor_ca)# 检查模型是否有效assert model.check_model()# 进行推理inference = BeliefPropagation(model)result = inference.query(variables=["A"], evidence={"B": 1, "C": 0})print(result)## 运行结果:'''+------+----------+| A    |   phi(A) |+======+==========+| A(0) |   0.9901 |+------+----------+| A(1) |   0.0099 |+------+----------+'''

在这个例子中,我们定义了一个简单的马尔可夫网,包含三个变量:“A”、“B”和“C”。

我们通过因子来描述这些变量之间的关系,并使用 BeliefPropagation 类来进行推理。

通过指定证据(例如“B”为1,“C”为0),我们可以计算出“A”为真的概率。

4. 两者比较

贝叶斯网络马尔可夫网虽然都是概率图模型,但它们在表示和推理上有很大的不同。

它们的主要区别在于:

特性贝叶斯网络马尔可夫网络
图类型有向无环图无向图
依赖关系因果方向性对称相关关系
参数化条件概率表(CPT)势函数(Potentials)
归一化自动归一化需要计算配分函数Z
典型应用诊断系统、基因分析图像分割、社交网络分析

从应用场景来看,贝叶斯网络常用于:

而马尔可夫网常用于:

总得来说,概率图模型是处理不确定性的瑞士军刀。

贝叶斯网络擅长捕捉因果关系,马尔可夫网络则精于表达相关约束。

实际应用中常将二者结合(如链图模型),让图结构成为我们理解复杂概率关系的导航图。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

概率图模型 贝叶斯网络 马尔可夫网 pgmpy
相关文章