Marginalize

在David M.Blei 的Distance Dependent Chinese Restaurant Processes 中提到:DDCRP 的一个重要性质,也是和dependent DP 的一个区别,就是"In general ,dependent DPs exhibit marginal invariance while distance dependent CRPs do NOT " 。文章中对Marginal invariance 的定义是: "The traditional CRP is marginally invariant : marginalizing over a particular customer gives the same probability distribution as if that customer were not included in the model at all."那么疑问是:marginalize 是一种什么样的操作?

Marginalization distribution 直译是"边缘分布"这里来看一下其具体的含义:

(以下内容来自course中的Probabilistic Graphical Models 1: Representation 斯坦福大学)

这里所说的marginalize I 就是对I 的所有取值进行积分或者求和。下面是两道例题用来区分reduction和marginalization:

那么将这种理解放到原文中解释就是,对于传统的中餐馆过程,我们通过积分将某一个顾客变量积掉和模型中原先就没有这个顾客变量的效果(也就是其余顾客变量的联合分布)是一样的。而在距离依赖中餐馆过程中,就不存在这种性质。

转载于:https://www.cnblogs.com/simayuhe/p/5967588.html

### MATLAB 贝叶斯网络实现示例 以下是基于MATLAB的贝叶斯网络实现的一个简单示例代码。此代码展示了如何定义节点及其条件概率表(CPT),并执行基本的概率推断。 #### 定义贝叶斯网络 ```matlab % 创建一个简单的贝叶斯网络 nodes = {'Rain', 'Sprinkler', 'GrassWet'}; % 定义三个节点:下雨(Rain),洒水(Sprinkler),草地湿(GrassWet) % Rain 的先验概率 P(Rain) P_Rain = [0.2, 0.8]; % 假设下雨的概率为0.2,不下雨的概率为0.8 % Sprinkler 的条件概率 P(Sprinkler|Rain) P_Sprinkler_Given_Rain = [ 0.01, 0.99; % 如果下雨,则洒水器开启的概率为0.01 0.4, 0.6 % 如果不下雨,则洒水器开启的概率为0.4 ]; % GrassWet 的条件概率 P(GrassWet|Rain,Sprinkler) P_GrassWet_Given_Rain_Sprinkler = cat(3, [0.99, 0.01; 0.9, 0.1], % 当 (Rain=true && Sprinkler=true) 或者 (Rain=false && Sprinkler=true) [0.8, 0.2; 0.0, 1.0] % 当 (Rain=true && Sprinkler=false) 或者 (Rain=false && Sprinkler=false) ); % 显示 CPT 表格 disp('P(Rain):'); disp(P_Rain); disp('P(Sprinkler|Rain):'); disp(P_Sprinkler_Given_Rain); disp('P(GrassWet|Rain,Sprinkler):'); disp(P_GrassWet_Given_Rain_Sprinkler); ``` 上述代码片段创建了一个具有三个节点的小型贝叶斯网络,并为其分配了相应的条件概率表[^1]。 #### 执行推理 下面展示如何利用已知证据进行推理: ```matlab function prob = bayes_inference(evidence) % 初始化联合概率矩阵 joint_prob = zeros(2, 2, 2); % 对应于 Rain x Sprinkler x GrassWet % 计算联合概率分布 P(Rain, Sprinkler, GrassWet) for rain_idx = 1:2 for sprinkler_idx = 1:2 for grasswet_idx = 1:2 joint_prob(rain_idx, sprinkler_idx, grasswet_idx) = ... P_Rain(rain_idx) * ... P_Sprinkler_Given_Rain(sprinkler_idx, rain_idx) * ... P_GrassWet_Given_Rain_Sprinkler(grasswet_idx, sprinkler_idx, rain_idx); end end end % 应用证据更新联合概率 if ~isempty(evidence.Rain) joint_prob(~evidence.Rain, :, :) = 0; end if ~isempty(evidence.Sprinkler) joint_prob(:, ~evidence.Sprinkler, :) = 0; end if ~isempty(evidence.GrassWet) joint_prob(:, :, ~evidence.GrassWet) = 0; end % 归一化得到后验概率 total_prob = sum(joint_prob(:)); posterior_prob = joint_prob / total_prob; % 返回查询的结果 query_result = marginalize(posterior_prob, evidence.QueryNode); prob = query_result; end function result = marginalize(prob_dist, node_to_keep) dims_to_sum_out = setdiff([1, 2, 3], node_to_keep); result = squeeze(sum(prob_dist, dims_to_sum_out)); end % 使用推理函数的例子 evidence = struct('Rain', [], 'Sprinkler', [], 'GrassWet', true, 'QueryNode', 1); % 查询 P(Rain | GrassWet=true) prob = bayes_inference(evidence); disp(['P(Rain | GrassWet=true) = ', num2str(prob)]); ``` 以上代码实现了基于给定证据的贝叶斯推理过程,其中 `bayes_inference` 函数接受输入证据并返回所请求节点的后验概率[^2]。 --- ### 关键概念解释 - **贝叶斯网络** 是一种有向无环图模型,能够表达变量间的因果关系以及它们之间的条件独立性假设。 - 条件概率表(Conditional Probability Table, CPT)存储每个节点在其父节点不同取值下的条件概率分布。 - 推理是指在观察到某些变量的状态之后,计算其他未观测变量的后验概率分布[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值