想象你刚买了一套新房,面对一摞“收纳动线设计方案”发愁:每个房间放什么、哪些房间之间要打通、门开在哪里……这些方案之间互相打架,而你又不可能把每一套都实际住一遍再决定。于是你请来两位评委:BIC先生和BDeu小姐。BIC先生务实果断,只看“这份方案能不能把你家的生活轨迹解释圆”以及“方案是否够简单”;BDeu小姐理论深厚,心里揣着一本“常见家庭生活常识”的先验账本,把所有可能的细节加权平均后再给分。两份方案在两位评委手里各过一遍,谁分高就选谁。这篇文章,就是带你认识这两位评委的评分逻辑:它们如何量化“解释得圆”?如何惩罚“过度设计”?在小样本的窘境下谁更靠谱?读完之后,你会理解因果发现中“基于分数方法”这一派的核心看家本领。
掌握BIC/BDeu评分,是进入因果发现和结构学习的门票。无论你做基因调控网络、工业故障溯源还是用户行为归因,学会用评分函数挑选网络结构,都能帮你从数据中拿到可解释、可验证的因果假设。
可视化演示
展示贝叶斯网络结构学习评分函数:BIC(似然-复杂度惩罚)曲线与最优模型选择、BDeu(贝叶斯先验+边际似然)与BIC对比、爬山搜索轨迹,通过交互理解拟合优度与稀疏性平衡。
本节配有交互动效(进入视口后自动加载,约 3KB)。
BIC评分:似然与复杂度惩罚平衡 对数似然:模型拟合数据程度,随参数增加趋平 复杂度惩罚:(k/2)ln(n)抑制过拟合 BIC = ln(L) - (k/2)·ln(n) BIC选择拟合好且结构简洁的模型
评分函数概述
你拿到了新房的钥匙,面对一大摞“收纳动线方案”。每份方案都是一张关系图:主卧指向衣帽间,表示“主卧的使用节奏会牵动衣帽间的设计”;厨房与餐厅之间画着双向箭头,表示“两者互相影响”。这些图在因果发现的世界里叫候选结构。问题来了:几十个房间能组合出的箭头数比银河系的星星还多,你不可能一份份试住。于是你请来两位评委——BIC先生和BDeu小姐,并定下一条比赛规则:用同一把标尺给所有方案打分,分高者胜。
这场比赛就是贝叶斯网络结构学习里的“评分+搜索”框架。评分函数就是那把标尺:输入一个候选结构 $G$ 和一份观测数据 $D$,输出一个分数。它同时要做两件事:第一,夸一夸“这套方案把数据解释得有多圆”;第二,罚一罚“这套方案搞得有多复杂”。结构越花哨,解释力再强也要先扣一笔。
几乎所有评分函数都长着同一个骨架——“解释力减去代价”。对数似然项代表解释力,惩罚项代表复杂度代价。BIC和BDeu的差别,就在于如何具体地算这两笔账。有了标尺,还得有人把方案搬上台:搜索算法会在结构空间里反复试探——加一条边、减一条边、翻转一条边,每次改动都交给评委打分。这场“评分+搜索”的双人舞,就是基于分数方法的全貌。
回到装修赛场:两位评委接过规则手册,BIC先生率先亮出了评分卡,BDeu小姐则在旁边翻开了她的先验账本。接下来的旅程,我们先弄清“解释力”这笔账是怎么算的,再看两位评委各自掏出了怎样的加分扣分细则。
- 候选结构 G一张有向无环图,节点是变量,箭头代表依赖关系,是评分函数的主要输入对象。
- 观测数据 DN 条样本构成的记录,每条样本给所有变量各记一个离散取值,是评分函数的另一份输入。
- 对数似然项衡量“给定结构 G 和参数 θ,数据 D 被解释得有多圆”,数值越大解释力越强,是加分项。
- 复杂度惩罚项随结构复杂度上升而增长的扣分项,专门压制参数过多导致的过拟合,BIC 的惩罚就是典型代表。
似然函数基础
评委要打分,总得先量化“这方案把生活记录解释得多圆”。BIC先生的尺子很简单:假设这套方案千真万确,那么你手里这一整年、密密麻麻的生活轨迹,被真实观测到的概率有多大?概率越大,说明方案和现实越合拍;概率越小,说明方案破绽百出。这个概率,在统计学家嘴里叫似然。
贝叶斯网络有一个讨喜的性质:它把整个家庭的联合行为拆成一组“条件概率”的乘积。每个房间的使用情况,只取决于关系图里指向它的那几位“父房间”。这样一来,一个动辄几十个变量的复杂联合分布,就化整为零成若干张局部小表。每张小表里的数字,就是条件概率参数。
把所有样本在所有小表上的概率乘起来,就是整个数据集的似然。但成千上万个小概率相乘,计算机精度受不了;取个对数,乘积变求和,计算就稳稳当当。下面这个式子,就是对数似然的分解形态,也是BIC先生评分卡上“解释力”一栏的标准算法。
BIC先生满意地收起了这杆尺子。但一直沉默的BDeu小姐提出了异议:“你只看了最幸运的那一组参数,万一换一组参数故事就讲不圆了呢?”这个质疑,引出了两位评委在方法论上的分水岭。
- 样本下标 i 与样本数 N从第1条生活记录到第N条,逐条累加解释力。
- 变量下标 j 与变量数 n每个房间、每项观测都是一个变量,内层循环把它们逐一遍历。
- 父节点组合 pa_j关系图里指向节点 j 的那些父节点,共同决定节点 j 的条件概率表取哪一行。
- 条件概率参数 θ_j节点 j 的局部条件概率表,描述“给定父节点组合后,各状态出现的概率”。
- 对数求和取对数把连乘化为连加,既保证数值稳定,也让优化问题更加好解。
BIC评分原理
BIC先生不为所动,继续填写他的评分卡。他在“解释力”一栏填上的是极大似然估计下的对数似然:先把候选结构里的所有参数拧到最能让数据出现的数值,再记下此时的解释力。紧接着,他在“复杂度”一栏里掏出一把游标卡尺,开始数这个结构里有多少个可以自由转动的“旋钮”。
旋钮,就是独立参数的个数 $d$。一个离散变量的条件概率表有多大,取决于它自己有多少种状态、以及父节点有多少种组合。把所有局部表的自由参数加起来,就得到 $d$。参数越多,模型的“可塑性”越强,也就越容易把数据里的噪声也一并记住——这正是过拟合的温床。
BIC先生的扣分公式随即亮出:惩罚项是 $\frac{d}{2} \ln N$。样本量 $N$ 越大,扣分越狠。他的逻辑是:数据都这么多了,你还把故事讲得这么绕,八成是在编。这个评分还有一个闪亮的性质——渐近一致性:当样本量趋于无穷时,BIC 一定能选回生成数据的真实结构。这让它在学术界赢得了一大批拥趸。
BIC先生打分的风格是快、准、狠,唯一的软肋在小样本。数据只有几十条时,$\ln N$ 还没起来,惩罚却已经按“可能存在的复杂度”扣下去。那些真实存在却比较弱的依赖关系,很容易被他一刀切掉。一旁的BDeu小姐终于开口:“让我用我的账本试试。”
- 变量状态数 r_i节点 i 有几个可能的离散取值。比如“客厅使用频率”有三档:低、中、高,则 $r_i = 3$。
- 父节点组合数 q_i父节点们的状态做笛卡尔积,共有多少种组合。父节点越多,组合数指数爆炸。
- 独立参数总数 d每个局部表有 $(r_i - 1)q_i$ 个自由参数,全网络求和就是总旋钮数。
- 极大似然对数似然项把参数拧到最能让数据出现的程度后,记录下的解释力,是评分卡的加分栏。
- 惩罚项参数越多、样本越大,扣分越重,专门用来对抗“把噪声也背下来”的过度设计。
BDeu评分原理
BDeu小姐的账本和BIC先生完全不同。她先在脑子里预演了一部“生活常识剧”:比如大多数人不会在厨房睡觉,客厅和阳台的使用高度联动。这些常识以“虚拟样本”的形式存在——相当于在真正拿到数据之前,她已经偷偷观察过 $\alpha$ 天的生活。这个 $\alpha$,就是等效样本量。
给定候选结构后,BDeu小姐不挑“最幸运的参数”,而是把参数空间里所有可能的取值都过一遍,按先验的权重做加权平均。这个“把所有参数可能性都算进去之后,结构解释数据的总能力”,就是边际似然。把参数当随机变量积分掉,剩下的是纯粹由结构决定的证据强度。
边际似然的完整公式在纸面上有些吓人,但它只讲了三件事:遍历每个节点、遍历每种父节点组合、遍历每个取值状态,把观测计数和先验计数在 Gamma 函数的串联下折算成一张总分。$\alpha$ 在这张总分里分量几何,全由这个唯一旋钮决定:调小了,她几乎只看数据;调大了,她几乎只信常识。
BDeu小姐把评分卡填完,抬头发现BIC先生也在看她。两人的分数在数据极大时出奇地一致,这让他们决定坐下来好好对一次答案。
- 节点遍历 i对每个变量分别计算它对总证据的贡献,最后全部乘在一起。
- 父节点组合遍历 j同一变量的不同父节点组合被视为不同“情景”,要分开核算。
- 状态遍历 k每种取值状态各有观测计数和先验计数,逐状态折算后连乘。
- 等效样本量分摊α 按状态数和父组合数均摊成 $\alpha_{ijk}$,父组合层面则汇集为 $\alpha_{ij}$。
- 观测计数 N_ijk数据里“节点 i 在父组合 j 下取状态 k”的真实次数,是数据账本的分量。
- Gamma 函数把“先验计数 + 观测计数”折算成连续意义上的阶乘比值,是贝叶斯边际似然的标准积木。
二评对比辨析
评审团内部复盘时,两位评委发现自己的评分卡其实同宗同源。BIC先生是“最优参数下的解释力减去复杂度罚分”,BDeu小姐是“先验加权平均后的总证据”。一个看似只信数据,一个看似满腹经纶,但在统计学家眼里,他们之间只差一个“渐近近似”的距离。
这个距离可以用一个重要的恒等式说清:当样本量足够大时,BDeu小姐精心计算的边际似然对数,可以被一条简洁的渐近线逼近——这条渐近线正是BIC先生的评分公式。换句话说,BIC不是天上掉下来的经验公式,它是对贝叶斯评分的拉普拉斯近似。
这个恒等式带来两个结论。第一,数据无穷时两位评委口味趋同,选结构的结果几乎一样。第二,数据有限时它们分道扬镳:BIC的惩罚随样本量增长,在小样本下容易“过度手紧”;BDeu的先验则像一层缓冲垫,把极端估计往中间拉一拉,弱依赖不容易被误杀。但BDeu也有代价——$\alpha$ 没选好,先验就会越俎代庖。
选择其实很朴素:样本海量、追求快速可复现,选BIC先生;样本稀缺、或者你对先验有把握,选BDeu小姐。两位评委不需要分出高下,他们只是在不同赛场上各有擅长。
- 边际似然对数BDeu小姐的总证据分,取对数之后才能和BIC先生直接对比。
- 最大对数似然BIC评分卡上的解释力主项,也是渐近展开的领头项。
- BIC 惩罚项渐近展开的次领头项,正是BIC的复杂度罚分。
- 渐近余项$O(1)$ 表示数据无穷大时误差至多是个常数,不影响结构之间的排序。
搜索策略配合
评委就位,还得有人把候选方案一摞摞搬上台。结构空间有多大?四个变量就有上百种DAG,十个变量就上亿种。搜索探险队由此登场:它从当前结构出发,每试探一个邻居结构,就请评委立刻打分,分数上涨就往前走,分数下跌就收脚。这个“上涨还是下跌”的判据,就是分数增量。
最经典的探险队是爬山算法:从空图或随机图出发,反复尝试加边、删边、转边,逼近一个局部最优就停下。它简单高效,却有个老毛病——容易困在眼前的小山包上,错过远处更高的山峰。为了对付局部最优,工程上常用三件套:塔布搜索(把最近试过的边拉进黑名单,禁止反复横跳)、随机重启(多找几座山同时爬,取最高者)、模拟退火(偶尔接受差解,翻过山谷看风景)。
无论探险队花招再多,指南针始终是评分函数。评分函数负责回答“往哪边走更好”,搜索策略负责回答“怎么走得更快更远”。两者一静一动,构成了基于分数方法的核心引擎。在实际库中,每次移动带来的分数增量通常可以增量式计算——只重新评估受影响的部分,而不必重新计算全图,这让几万次试探在几秒内就能完成。
装修比赛的现场已经热火朝天:评委打分,探险队搬图。但真正的项目上线,还需要解决一些更烟火气的问题——数据要不要离散化?α调到几?学出来的结构敢不敢直接进报告?
- 候选移动 G→G'一次加边、删边或转边操作,把当前结构变为邻居结构。
- 分数增量 Δ新结构分数减旧结构分数。增量正则接受,增量负则拒绝——这是爬山算法的全部决策逻辑。
- 局部结构变化的代价加减一条边会改变受影响节点的父组合数 $q_i$,进而改变参数总数 $d$ 和惩罚项。
工程实践要点
把评委请进真实项目组,第一件事是找工具。Python的pgmpy库把BIC先生和BDeu小姐封装成了两个评分类,和HillClimbSearch搜索器配合,几行代码就能跑一次完整结构学习。数据清洗、离散化完成之后,工程师也能让评委们高效加班干活。
第二件事是调参。BDeu的 $\alpha$ 是唯一旋钮,但它很敏感:数据几百条时,$\alpha=10$ 是常见的起点;$\alpha$ 一旦和样本量一个数量级,先验就开始压过数据。实践里最好的做法是跑一组敏感性分析——$\alpha$ 取1、2、5、10各来一遍,看学到的结构是否稳如磐石。
第三件事是验证。单次学到的结构里,总有一些边是数据噪声的产物。工程上常用 bootstrap 重采样:把原始数据有放回地抽取上百份,每份都重新学一个结构,统计每条边在多轮学习中出现的频率。出现频率高的边才敢写进报告。
从装修赛场一路走到生产环境,BIC先生和BDeu小姐的评分哲学始终没有变:解释力要足,设计别太绕。理解了这一条,你就能看懂市面上大多数结构学习工具为什么这样设计,也能在遇到新数据时,自己掂量该请哪位评委出场。
- 候选边 e一条待检验的有向边(比如 A→B),代表一个潜在的依赖假设。
- 重采样结构 Ĝ_b第 b 轮 bootstrap 从原始数据有放回抽样后,重新学到的网络结构。
- 指示函数括号里的条件成立记1,不成立记0,把“结构里有没有这条边”变成可加的数字。
- 稳定性平均B 轮平均给出边 e 的出现频率,工程上常以 0.8 为阈值区分“稳定边”和“噪声边”。
AI 应用场景
基因调控网络推断
阶段:结构学习(因果发现)
解决的问题:传统差异表达分析只能列出“哪些基因变了”,回答不了“谁调控谁”。用BIC/BDeu对基因表达数据评分,能从成千上万个基因中挑出最可能的调控关系网络,而不是靠人工查阅文献一条条拼。
具体案例:给定300个肿瘤样本的RNA-seq离散化表达量,用BDeu评分+爬山算法重建p53通路附近的调控子网络;配合bootstrap重采样计算Stab值,只保留稳定边,为后续湿实验验证提供候选靶点。
工业设备故障根因分析
阶段:故障模式识别与根因定位
解决的问题:大型产线几十个传感器同时告警,传统规则库难以覆盖未知组合。用BIC/BDeu从告警日志里学出“故障传播DAG”,把告警风暴收敛为一条指向根因的传播链。
具体案例:某风电场的SCADA告警序列,离散化后跑BIC评分结构学习,得到“齿轮箱温度异常→振动超限→停机保护”的传播链,运维人员按图索骥,把平均排障时间缩短40%。
电商用户行为路径分析
阶段:行为因果建模
解决的问题:传统漏斗分析只看单一路径,无法刻画多因素如何共同促成购买。用评分函数从点击流数据学出“浏览→加购→支付”的依赖结构,看清真实行为链路。
具体案例:某电商把用户行为离散成“浏览详情、加入购物车、领取优惠券、支付成功”等变量,用BDeu(α=5)在1万条样本上学结构,发现优惠券只在有“收藏”行为时才显著促进支付,据此调整营销策略。
Python 演示
import numpy as npimport pandas as pdfrom pgmpy.estimators import HillClimbSearch, BicScore, BDeuScore np.random.seed(42)N = 2000 A = np.random.binomial(1, 0.5, N)B = np.where(A == 1, np.random.binomial(1, 0.8, N), np.random.binomial(1, 0.3, N))C = np.where(A == 1, np.random.binomial(1, 0.2, N), np.random.binomial(1, 0.6, N))D = np.where(B == 1, np.random.binomial(1, 0.7, N), np.random.binomial(1, 0.4, N)) data = pd.DataFrame({'A': A, 'B': B, 'C': C, 'D': D})print('真实结构: A->B, A->C, B->D') hc = HillClimbSearch(data) dag_bic = hc.estimate(scoring_method=BicScore(data))print('BIC 学到的结构:', dag_bic.edges()) dag_bdeu = hc.estimate(scoring_method=BDeuScore(data, equivalent_sample_size=10))print('BDeu 学到的结构:', dag_bdeu.edges()) small = data.sample(50, random_state=1)hc_small = HillClimbSearch(small)dag_bic_s = hc_small.estimate(scoring_method=BicScore(small))dag_bdeu_s = hc_small.estimate(scoring_method=BDeuScore(small, equivalent_sample_size=10))print('小样本 BIC:', dag_bic_s.edges())print('小样本 BDeu:', dag_bdeu_s.edges())
from pgmpy.estimators import HillClimbSearch, BicScore, BDeuScore导入爬山搜索器和 BIC/BDeu 两位“评委”。data = pd.DataFrame({'A': A, 'B': B, 'C': C, 'D': D})把模拟变量组装成观测数据表,交给后续评分器使用。hc = HillClimbSearch(data)搭建搜索框架,相当于请好探险队待命。dag_bic = hc.estimate(scoring_method=BicScore(data))用 BIC 评分驱动爬山,学出一个 DAG。dag_bdeu = hc.estimate(scoring_method=BDeuScore(data, equivalent_sample_size=10))用 BDeu 评分,并把等效样本量 α 设为 10。small = data.sample(50, random_state=1)人为制造只有 50 条记录的小样本场景。dag_bic_s = hc_small.estimate(scoring_method=BicScore(small))小样本下 BIC 的表现。dag_bdeu_s = hc_small.estimate(scoring_method=BDeuScore(small, equivalent_sample_size=10))小样本下 BDeu 借助先验的表现。
常见误区
误区很多教程上说“BIC越小越好”,我就在代码里比较BIC的绝对值,每次都选数值最小的那个结构。
正解BIC有两种等价的写法:本文采用 $\log L - \frac{d}{2}\ln N$(越大越好),另一种常见写法是 $-2\log L + d\ln N$(越小越好)。两种形式只差一个负号和常数2,选出来的结构完全一致,但绝对值没有可比意义。实际使用时要先弄清你用的库到底返回哪种形式,不能拿A库的“正数”去比B库的“负数”。
为何常见:统计教材写法不统一,很多老教材习惯用“越小越好”的信息准则形式,初学者直接照搬就踩了坑。
误区α是BDeu里唯一的旋钮,我把它调得很大(比如10000),这样先验更“充分”,评分应该更可靠。
正解α本质是“虚拟样本数”,它叠加在真实数据上参与计数。当α远大于样本量N时,先验会淹没数据,学出来的结构几乎是对先验的复读,而不是对数据的总结。一般建议α取1~20之间,并做敏感性分析:把α设为1、2、5、10各跑一遍,看结构是否稳定。
为何常见:人们容易把“更强的先验”误解为“更强的模型”,忽略了先验与数据的比例关系才是关键。
误区既然BIC/BDeu是因果发现的重要工具,那分数最高的结构就一定是真实因果网络,箭头方向就是因果方向。
正解评分函数只衡量“拟合+稀疏”,它分不清统计等价的马尔可夫类。比如A→B和B→A在同一数据上可能拿到几乎一样的分数。要从观察数据判断因果方向,需要额外假设(如时序、干预、因果充分性),否则只能得到“依赖关系”而非“因果方向”。
为何常见:工具名里带着“因果”二字,让人误以为纯观察数据就能识别方向,忽视了因果发现的理论边界。
误区BIC有渐近一致性,那无论样本多少,用BIC都是最佳选择,BDeu只是花架子。
正解渐近一致性是N→∞时的性质。小样本下,惩罚项 $\frac{d}{2}\ln N$ 偏大,BIC容易过度稀疏,把真实存在的弱依赖也删掉。BDeu因为有先验平滑垫底,小样本下通常更稳。两者不是谁完全取代谁,而是不同数据条件下的互补选项。
为何常见:看到“一致估计器”这个光环就以为它对小样本也严格有效,忽略了渐近性质成立的前提条件。
面试题
Q1. 在“评分+搜索”框架中,评分函数的主要作用是什么?
- A.直接生成所有候选网络结构
- B.为每个候选结构打分排序← 正确答案
- C.替代贝叶斯网络的参数学习
- D.负责对原始数据进行特征降维
答案:B。评分函数不生成结构,它只负责给搜索算法递上来的候选结构打分排序。结构由搜索算法生成,参数学习是另一回事,降维更是无关操作。选 B。
Q2. BIC评分中惩罚项的设计初衷是什么?
- A.增加模型对训练数据的拟合能力
- B.惩罚参数过多导致的过拟合风险← 正确答案
- C.提高结构搜索遍历的盲目覆盖率
- D.降低评分函数的数值计算成本
答案:B。惩罚项随参数个数 d 增大而增大,目的是抑制过拟合——参数太多,模型容易记住噪声而非本质规律。它不负责拟合、搜索覆盖或计算加速。选 B。
Q3. 在BIC公式中,符号 d 代表什么?
- A.数据集D中样本的总数量大小
- B.网络中全部节点的总数量大小
- C.网络包含的独立参数总个数← 正确答案
- D.数据中离散属性的噪声方差
答案:C。d 是独立参数总数,可通过 $d=\sum(r_i-1)q_i$ 计算。样本量是 N,节点数是 n,噪声方差不是评分公式里的量。选 C。
Q4. BDeu评分中的等效样本量α主要作用是?
- A.设置先验分布的虚拟样本强度← 正确答案
- B.控制结构搜索的随机种子选择
- C.衡量观测数据的整体信息熵值
- D.决定条件概率表的空间维度
答案:A。α 以狄利克雷先验的虚拟计数形式出现,控制先验强度——α越大越信常识,α越小越信数据。搜索随机种子、信息熵、概率表维度都不是 α 的职责。选 A。
Q5. 与BIC相比,BDeu在小样本场景下的优势是?
- A.BDeu评分不需要任何先验参与
- B.BDeu可以借助先验进行平滑估计← 正确答案
- C.BDeu总是找到全局最优的结构
- D.BDeu直接输出真实的因果方向
答案:B。BDeu 在贝叶斯框架下用先验做平滑,小样本时极端计数会被“拉”回合理范围,因此更稳。它同样需要超参、不能保证全局最优、也不能直接识别因果方向。选 B。
Q6. BIC可以看作贝叶斯边际似然的对数在什么条件下的近似?
- A.当样本量N趋向于无穷大时← 正确答案
- B.当网络节点数量趋向无穷时
- C.当先验强度α逐渐趋近于零时
- D.当数据特征维度d趋近于零时
答案:A。BIC 来自对边际似然对数的拉普拉斯近似,误差项是 $O(1)$,前提正是样本量 $N\to\infty$。和节点数、α、维度没有这种渐近等价关系。选 A。
Q7. 边际似然与最大似然的最大区别是什么?
- A.边际似然把参数作为随机变量积分掉← 正确答案
- B.最大似然不需要任何观测数据参与
- C.边际似然结构学习速度总是更快
- D.最大似然天然包含复杂度惩罚
答案:A。边际似然把参数当作随机变量,通过积分消去参数,得到 $P(D|G)$;最大似然只取让似然最大的那组参数。最大似然离不开数据,也不含复杂度惩罚,速度更没有“总是更快”的说法。选 A。
Q8. 下列哪些操作能帮助爬山算法跳出局部最优?
- A.从多个随机初始结构开始搜索← 正确答案
- B.用塔布列表禁止近期重复移动← 正确答案
- C.在搜索中偶尔接受较差的结构← 正确答案
- D.任意删除数据集中的一半样本
答案:ABC。随机重启(多个起点)、塔布搜索(禁止反复横跳)、模拟退火(接受差解)都是跳出局部最优的经典策略。删掉一半样本只会损失信息,和跳不跳出全局最优无关。选 ABC。
Q9. 关于BIC与BDeu的共同点,正确的是?
- A.都可用于贝叶斯网络结构学习← 正确答案
- B.都以拟合优度作为重要组成← 正确答案
- C.都保证学习到真实因果方向
- D.都在拟合与复杂度间做取舍← 正确答案
答案:ABD。两者都是结构学习的评分函数,都以拟合优度为核心加分项,并在拟合与复杂度之间做权衡。但二者都不保证学到真实因果方向——马尔可夫等价类下的方向本来就是不可识别的。选 ABD。
Q10. 在pgmpy中使用BDeuScore做结构学习,合理做法有?
- A.小样本时设置适中的等效样本量← 正确答案
- B.用多组α对比结构的稳定性← 正确答案
- C.用专家经验指导先验的强度← 正确答案
- D.尽可能把α数值设置得越大越好
答案:ABC。小样本用适中 α、多组 α 做敏感性分析、用专家经验定先验强度都是合理操作。盲目调大 α 会让先验淹没数据,学出来的结构变成先验的复读而非数据的总结。选 ABC。