贝叶斯分类器(上)
一. 条件概率与贝叶斯定理
1. 条件概率定义
P(A∣B)P(A|B)P(A∣B) 表示在事件 BBB 已经发生的条件下,事件 AAA 发生的概率。
2. 贝叶斯公式
贝叶斯定理的核心作用是"翻转"条件概率,让我们能够通过已知结果去反推原因。
P(A∣B)=P(AB)P(B)=P(B∣A)P(A)P(B)P(A|B) = \frac{P(AB)}{P(B)} = \frac{P(B|A)P(A)}{P(B)}P(A∣B)=P(B)P(AB)=P(B)P(B∣A)P(A)
3.全概率公式
假设我们要计算事件 BBB 发生的概率,即 P(B)P(B)P(B)。
如果有一个事件集合 A1,A2,...,AnA_1, A_2, \dots, A_nA1,A2,...,An,它们构成了样本空间的一个划分(意思是:这些事件互相之间绝不重合,且它们加起来包含了所有可能的情况,即必有一个发生)。
那么,事件 BBB 的全概率公式为:
P(B)=∑i=1nP(B∣Ai)P(Ai)P(B) = \sum_{i=1}^{n} P(B|A_i)P(A_i)P(B)=i=1∑nP(B∣Ai)P(Ai)
展开写就是:
P(B)=P(B∣A1)P(A1)+P(B∣A2)P(A2)+⋯+P(B∣An)P(An)P(B) = P(B|A_1)P(A_1) + P(B|A_2)P(A_2) + \dots + P(B|A_n)P(A_n)P(B)=P(B∣A1)P(A1)+P(B∣A2)P(A2)+⋯+P(B∣An)P(An)
公式里的每个部分的含义:
- P(B)P(B)P(B):你最终想求的目标概率。
- P(Ai)P(A_i)P(Ai) :走第 iii 条"路径"(或出现第 iii 种原因)的先验概率。
- P(B∣Ai)P(B|A_i)P(B∣Ai) :在走了第 iii 条路径的情况下,事件 BBB 发生的条件概率。
4. 四种概率
P(类别∣特征)=P(特征∣类别)×P(类别)P(特征)P(\text{类别} | \text{特征}) = \frac{P(\text{特征} | \text{类别}) \times P(\text{类别})}{P(\text{特征})}P(类别∣特征)=P(特征)P(特征∣类别)×P(类别)
(1).先验概率
- 对应公式: 分子里的 P(类别)P(\text{类别})P(类别)
- 它是什么: 在你还没有看到任何证据之前,凭借历史数据或常识,对某个"类别"或"假设"的基础认知。
- 大白话: 比如 P(张三是坏人)=0.1%P(\text{张三是坏人}) = 0.1\%P(张三是坏人)=0.1%。这就是先验概率,跟现场有没有鞋印毫无关系,它仅仅代表张三平时的犯罪率。
(2).证据/边缘概率
- 对应公式: 分母里的 P(特征)P(\text{特征})P(特征)
- 它是什么: 你当下实实在在观察到的那个现象(特征),在整个客观世界中出现的总概率。
- 大白话: 比如 P(现场出现42码红鞋印)P(\text{现场出现42码红鞋印})P(现场出现42码红鞋印)。它代表不管是谁干的,这个红鞋印在这座城市里出现的客观频率。
(3).似然概率
- 对应公式: 分子里的 P(特征∣类别)P(\text{特征} | \text{类别})P(特征∣类别)
- 它是什么: 假设某个类别是真的,那么导致出现当前这个特征的概率。
- 大白话: 比如 P(留42码红鞋印∣张三是坏人)P(\text{留42码红鞋印} | \text{张三是坏人})P(留42码红鞋印∣张三是坏人)。如果张三真的是凶手,他刚好穿这双鞋留下这个印子的概率。
(4). 后验概率
- 对应公式: 等号左边的 P(类别∣特征)P(\text{类别} | \text{特征})P(类别∣特征)
- 它是什么: 看完证据之后,反推类别成立的最终概率。
- 大白话: 既然已经看到了红鞋印,张三是凶手的嫌疑有多大?
在朴素贝叶斯算法中,模型拿着历史数据拼命数数,得出了已知的先验概率和似然概率(这些叫模型的参数);然后当新数据到来时,利用这两个已知量相乘,算出来最终的后验概率,从而完成分类。
二. 导入:手写数字识别
为了理解贝叶斯分类器是如何工作的,我们假设有以下场景:
- 数据集: 共有100条手写数字记录。其中第 0-9 条是数字0的笔迹,10-19条是数字1的笔迹......依此类推,90-99条是数字9的笔迹。
- 任务: 小红写了一个未知数字 XXX(这里 XXX 代表图像的像素特征),我们需要判断这个数字到底是几(设类别为 YYY)。
工作原理:
我们需要分别计算这个特征 XXX 属于 0~9 每个数字的概率:
P(Y=0∣X)=?,P(Y=1∣X)=?,⋯ ,P(Y=9∣X)=?P(Y = 0|X) = ?, P(Y = 1|X) = ?, \cdots, P(Y = 9|X) = ?P(Y=0∣X)=?,P(Y=1∣X)=?,⋯,P(Y=9∣X)=?
分类决策: 比较算出这 10 个概率值,哪个概率最高,我们就预测小红写的数字是几。
三. 数学推导
我们将上述直观过程用严谨的数学符号表达。设数字的类别为 CkC_kCk(例如 C0C_0C0 表示数字 0,C1C_1C1 表示数字 1 等)。我们需要计算的终极目标是后验概率:P(Y=Ck∣X=x)P(Y = C_k|X = x)P(Y=Ck∣X=x)。
第1步:应用贝叶斯定理
将目标公式套用贝叶斯定理展开:
P(Y=Ck∣X=x)=P(X=x∣Y=Ck)P(Y=Ck)P(X=x)P(Y = C_k|X = x) = \frac{P(X = x|Y = C_k)P(Y = C_k)}{P(X = x)}P(Y=Ck∣X=x)=P(X=x)P(X=x∣Y=Ck)P(Y=Ck)
利用全概率公式将分母展开:
P(Y=Ck∣X=x)=P(X=x∣Y=Ck)P(Y=Ck)∑kP(X=x∣Y=Ck)P(Y=Ck)P(Y = C_k|X = x) = \frac{P(X = x|Y = C_k)P(Y = C_k)}{\sum_k P(X = x|Y = C_k)P(Y = C_k)}P(Y=Ck∣X=x)=∑kP(X=x∣Y=Ck)P(Y=Ck)P(X=x∣Y=Ck)P(Y=Ck)
第 2 步:特征向量展开
现实中,特征 XXX 往往不是单一的变量,而是一个包含多个维度的特征向量。例如一张图片的各个像素点。
我们将 X=xX = xX=x 展开为 nnn 维向量:(x1,x2,⋯ ,xn)(x_1, x_2, \cdots, x_n)(x1,x2,⋯,xn)。
即:(X1=x1,X2=x2,⋯ ,Xn=xn)(X_1=x_1, X_2=x_2, \cdots, X_n=x_n)(X1=x1,X2=x2,⋯,Xn=xn)。
此时,分子中的联合条件概率 P(X=x∣Y=Ck)P(X = x|Y = C_k)P(X=x∣Y=Ck) 会变得极其复杂:
P(X1=x1,X2=x2,⋯ ,Xn=xn∣Y=Ck)P(X_1=x_1, X_2=x_2, \cdots, X_n=x_n | Y=C_k)P(X1=x1,X2=x2,⋯,Xn=xn∣Y=Ck)
(注:如果不做任何简化,计算如此高维的联合概率在计算量上是灾难性的,且需要海量的数据样本支撑。)
第 3 步:引入朴素假设(条件独立性假设)
为了解决上述计算灾难,朴素贝叶斯引入了一个非常强(也是其被称为"朴素/天真"的原因)的假设:假设所有特征之间相互独立。
- 基础独立性: 如果 a,ba, ba,b 相互独立,则 P(a,b)=P(a)P(b)P(a, b) = P(a)P(b)P(a,b)=P(a)P(b)
- 条件独立性: 在给定类别 ccc 的条件下,如果 a,ba, ba,b 相互独立,则:P(a,b∣c)=P(a∣c)P(b∣c)P(a, b | c) = P(a | c)P(b | c)P(a,b∣c)=P(a∣c)P(b∣c)
基于这个假设,我们可以将复杂的联合条件概率直接拆解为各个单一特征条件概率的连乘(∏\prod∏):
P(X=x∣Y=Ck)=∏jP(X(j)=x(j)∣Y=Ck)P(X = x|Y = C_k) = \prod_j P(X^{(j)} = x^{(j)}|Y = C_k)P(X=x∣Y=Ck)=j∏P(X(j)=x(j)∣Y=Ck)
四. 分类决策函数
将第3步的连乘结果代回第1步的公式中,我们得到了最终的==后验概率公式==:
P(Y=Ck∣X=x)=P(Y=Ck)∏jP(X(j)=x(j)∣Y=Ck)∑kP(Y=Ck)∏jP(X(j)=x(j)∣Y=Ck)P(Y = C_k|X = x) = \frac{P(Y = C_k) \prod_j P(X^{(j)} = x^{(j)}|Y = C_k)}{\sum_k P(Y = C_k) \prod_j P(X^{(j)} = x^{(j)}|Y = C_k)}P(Y=Ck∣X=x)=∑kP(Y=Ck)∏jP(X(j)=x(j)∣Y=Ck)P(Y=Ck)∏jP(X(j)=x(j)∣Y=Ck)
最大后验概率决策(MAP):
在实际进行分类判断时,我们的目标是寻找一个类别 CkC_kCk,使得上述后验概率最大。
仔细观察公式会发现,对于所有的类别 CkC_kCk 来说,分母 ∑k(⋯ )\sum_k (\cdots)∑k(⋯) 的值都是完全相同的常数(因为它对所有类别求了和)。
既然分母一样,我们只需比较分子 的大小即可得出结论。因此,分类决策函数 f(x)f(x)f(x) 最终化简为:
f(x)=argmaxCkP(Y=Ck∣X=x)f(x) = \arg\max_{C_k} P(Y = C_k|X = x)f(x)=argCkmaxP(Y=Ck∣X=x)
f(x)=argmaxCk(P(Y=Ck)∏jP(X(j)=x(j)∣Y=Ck))f(x) = \arg\max_{C_k} \left( P(Y = C_k) \prod_j P(X^{(j)} = x^{(j)}|Y = C_k) \right)f(x)=argCkmax(P(Y=Ck)j∏P(X(j)=x(j)∣Y=Ck))
(注:这就是朴素贝叶斯分类器在代码实现时真正计算的公式,它完全抛弃了分母,极大简化了运算。)
五. 模型的参数估计(极大似然估计)
在上一步的最终决策函数中,我们需要知道两个关键数据:先验概率 P(Y=Ck)P(Y = C_k)P(Y=Ck) 和条件概率 P(X(j)=x(j)∣Y=Ck)P(X^{(j)} = x^{(j)} | Y = C_k)P(X(j)=x(j)∣Y=Ck)。
这两个概率在训练阶段是如何从数据中计算出来的呢?答案是极大似然估计,通俗来说就是"数数算频率"。
公式中的 I(⋅)I(\cdot)I(⋅) 称为指示函数: 括号里的条件如果成立,结果就是 1;如果不成立,结果就是 0。放在 ∑\sum∑ 后面,它的作用就是统计满足条件的样本个数。
NNN 代表训练集样本总数。
1. 先验概率的极大似然估计
计算某个类别 CkC_kCk 出现的概率:
P(Y=Ck)=∑i=1NI(yi=Ck)N,k=1,2,...,KP(Y = C_k) = \frac{\sum_{i=1}^N I(y_i = C_k)}{N}, \quad k = 1, 2, ..., KP(Y=Ck)=N∑i=1NI(yi=Ck),k=1,2,...,K
- 大白话解释: 在总共 NNN 个训练样本中,把标签等于类别 CkC_kCk 的样本数量数出来,然后除以总数 NNN。
- 例子:100 封邮件里有 20 封垃圾邮件,那么 P(垃圾邮件)=20/100P(\text{垃圾邮件}) = 20/100P(垃圾邮件)=20/100。
2. 条件概率的极大似然估计
计算在已知类别为 CkC_kCk 的前提下,第 jjj 个特征的值刚好等于 ajla_{jl}ajl 的概率:
P(X(j)=ajl∣Y=Ck)=∑i=1NI(xi(j)=ajl,yi=Ck)∑i=1NI(yi=Ck)P(X^{(j)} = a_{jl} | Y = C_k) = \frac{\sum_{i=1}^N I(x_i^{(j)} = a_{jl}, y_i = C_k)}{\sum_{i=1}^N I(y_i = C_k)}P(X(j)=ajl∣Y=Ck)=∑i=1NI(yi=Ck)∑i=1NI(xi(j)=ajl,yi=Ck)
(其中 j=1,2,...,nj = 1, 2, ..., nj=1,2,...,n 表示第几个特征;l=1,2,...,Sjl = 1, 2, ..., S_jl=1,2,...,Sj 表示该特征的各种可能取值;k=1,2,...,Kk = 1, 2, ..., Kk=1,2,...,K 表示类别)
- 大白话解释:
- 分母: 先把所有类别为 CkC_kCk 的样本挑出来,数数一共有多少个。
- 分子: 在刚才挑出来的这堆 CkC_kCk 样本里,再去数数有多少个样本的第 jjj 个特征刚好等于指定的值 ajla_{jl}ajl。
- 除法: 两者相除,就得到了条件概率。
- 例子:在刚才找出的 20 封垃圾邮件(分母)里,去数有多少封包含了"免费"这个词(分子假设为 5)。那么 P(包含"免费"∣垃圾邮件)=5/20P(\text{包含"免费"} | \text{垃圾邮件}) = 5/20P(包含"免费"∣垃圾邮件)=5/20。
贝叶斯分类器(下)
贝叶斯分类器是基于贝叶斯定理和概率统计框架的一类分类算法的总称。它的核心思想是:在已知相关概率的情况下,通过计算样本属于各个类别的"后验概率",并结合误判损失,来选择最优的类别标记。
一. 贝叶斯决策论
贝叶斯决策论是概率框架下实施决策的基本方法。
1. 误判损失与条件风险
错误的分类会带来损失。 例如,把癌症病人误诊为健康(可能致命)和把健康人误诊为得癌症(心理恐慌+检查费用),这两种错误带来的损失是完全不同的。
假设有 NNN 种可能的类别标记,即 c1,c2,...,cNc_1, c_2, \dots, c_Nc1,c2,...,cN。
- 误判损失 λij\lambda_{ij}λij :表示将一个真实类别为 cjc_jcj 的样本误分类为 cic_ici 所产生的损失。
- 条件风险 R(ci∣x)R(c_i | x)R(ci∣x) :定义为样本 xxx 被分类为 cic_ici 时的期望损失:R(ci∣x)=∑j=1NλijP(cj∣x)R(c_i | x) = \sum_{j=1}^{N} \lambda_{ij} P(c_j | x)R(ci∣x)=j=1∑NλijP(cj∣x)
寻找最优分类器: 我们的目标是寻找一个分类器 h(x)h(x)h(x),使得总体期望条件风险最小化。
2. 最小化分类错误率 (0-1 损失)
如果我们不考虑不同错误类型带来的损失差异,即目标仅仅是最小化分类错误率 ,那么误判损失 λij\lambda_{ij}λij 可以简化为 0-1损失:
λij={0,if i=j1,otherwise\lambda_{ij} = \begin{cases} 0, & \text{if } i = j \\ 1, & \text{otherwise} \end{cases}λij={0,1,if i=jotherwise
此时,条件风险化简为:
R(ci∣x)=1−P(ci∣x)R(c_i | x) = 1 - P(c_i | x)R(ci∣x)=1−P(ci∣x)
结论:要使风险 R(ci∣x)R(c_i | x)R(ci∣x) 最小,就必须使后验概率 P(ci∣x)P(c_i | x)P(ci∣x) 最大。即,样本属于哪个类别的概率大,就把它分给哪一类。
二. 贝叶斯定理与核心概率
基于贝叶斯定理,我们可以将难以直接求得的后验概率转化为求先验概率和条件概率(似然):
P(ci∣x)=P(x∣ci)P(ci)P(x)P(c_i | x) = \frac{P(x | c_i) P(c_i)}{P(x)}P(ci∣x)=P(x)P(x∣ci)P(ci)
核心概率名词解析:
- P(ci)P(c_i)P(ci) (先验概率 Prior): 在没有任何证据(看到样本 xxx)之前,类别 cic_ici 出现的概率。通常通过训练集中各类样本的比例来估计(大数定理)。
- P(x∣ci)P(x | c_i)P(x∣ci) (类条件概率/似然 Likelihood): 在已知类别为 cic_ici 的前提下,样本 xxx(这些特征)出现的概率。
- P(x)P(x)P(x) (证据 Evidence): 样本 xxx 在整个数据空间中出现的概率。对于所有类别来说,这是一个与类别无关的常数项(在比大小时通常可以忽略作为分母的它)。
- P(ci∣x)P(c_i | x)P(ci∣x) (后验概率 Posterior): 在观察到证据(样本 xxx 的特征)之后,该样本属于类别 cic_ici 的最终概率。这是我们要计算的最终目标。
三. 极大似然估计(MLE)
问题: 先验概率 P(ci)P(c_i)P(ci) 很好算(直接数样本比例即可),但类条件概率 P(x∣ci)P(x | c_i)P(x∣ci) 极难直接从有限的数据集中统计出来,尤其是当特征维度很高或特征连续时。
解决方案:极大似然估计。
先假定类条件概率具有某种确定的概率分布形式(例如正态分布),然后再基于训练样本对该分布的参数进行估计。
1. 似然函数与对数似然
似然函数 L(θ)L(\theta)L(θ) 就是在假定某组参数 θ\thetaθ 的前提下,计算出能刚好让手头上所有真实样本同时发生的总概率(即各个样本单体概率的连乘积)。
令 DcD_cDc 表示训练集中类别为 ccc 的样本集合。假设这些样本是独立采样的,则参数 θc\theta_cθc 对于数据集 DcD_cDc 的**似然函数**为:
L(θc)=∏x∈DcP(x∣θc)L(\theta_c) = \prod_{x \in D_c} P(x | \theta_c)L(θc)=x∈Dc∏P(x∣θc)
为了防止连乘导致数值下溢,并方便求导,通常对其取对数,得到**对数似然函数**:
LL(θc)=logL(θc)LL(\theta_c) = \log L(\theta_c)LL(θc)=logL(θc)
LL(θc)=log(∏x∈DcP(x∣θc))LL(\theta_c) = \log \left( \prod_{x \in D_c} P(x | \theta_c) \right)LL(θc)=log(x∈Dc∏P(x∣θc))
LL(θc)=∑x∈DclogP(x∣θc)LL(\theta_c) = \sum_{x \in D_c} \log P(x | \theta_c)LL(θc)=x∈Dc∑logP(x∣θc)
根据对数的基本运算法则:乘积的对数等于对数的和 ,即 log(A×B×⋯ )=log(A)+log(B)+⋯\log(A \times B \times \cdots) = \log(A) + \log(B) + \cdotslog(A×B×⋯)=log(A)+log(B)+⋯。
2. 求解过程
- 写出似然函数
- 取对数并整理
- 求偏导数,并令其等于 0 ,解出的参数 θc\theta_cθc 即为极大似然估计值(寻找能使当前观测数据出现概率最大的那个参数)。
四. 朴素贝叶斯分类器
为了避开联合概率 P(x∣c)P(x | c)P(x∣c) 难以计算的痛点,朴素贝叶斯引入了一个极强(甚至有些不切实际)的假设。
1. 核心:属性条件独立性假设
假设所有特征属性之间是相互独立的,每个属性独立地对分类结果发生影响。
基于这个假设,类条件概率可以被拆解为各个属性条件概率的连乘积:
P(x∣ci)=P(x1,x2,...,xd∣ci)=∏j=1dP(xj∣ci)P(x | c_i) = P(x_1, x_2, \dots, x_d | c_i) = \prod_{j=1}^{d} P(x_j | c_i)P(x∣ci)=P(x1,x2,...,xd∣ci)=j=1∏dP(xj∣ci)
因此,朴素贝叶斯的最终判别公式变为:
c∗=argmaxciP(ci)∏j=1dP(xj∣ci)c^* = \arg\max_{c_i} P(c_i) \prod_{j=1}^{d} P(x_j | c_i)c∗=argcimaxP(ci)j=1∏dP(xj∣ci)
2. 连续与离散属性的处理
- 离散属性: 直接用频率估计概率。P(xi∣c)=∣Dc,xi∣∣Dc∣P(x_i | c) = \frac{|D_{c, x_i}|}{|D_c|}P(xi∣c)=∣Dc∣∣Dc,xi∣
- 连续属性: 假设其服从高斯分布 N(μc,i,σc,i2)N(\mu_{c,i}, \sigma_{c,i}^2)N(μc,i,σc,i2),利用极大似然估计求出均值和方差,代入概率密度函数求解。
3. 拉普拉斯修正
致命漏洞: 如果某个特征值在训练集的某一类中从未出现过,那么它计算出的概率为 0。由于是连乘计算,只要有一项为 0,整个后验概率就直接变成 0,这会彻底抹杀其他属性携带的重要信息。
修正方法: 在计算先验概率和条件概率的分子分母上,强行加上一个平滑项。
令 NNN 表示可能的类别总数,NiN_iNi 表示第 iii 个属性可能的取值总数。
修正后的先验概率:
P(c)=∣Dc∣+1∣D∣+NP(c) = \frac{|D_c| + 1}{|D| + N}P(c)=∣D∣+N∣Dc∣+1
修正后的条件概率:
P(xi∣c)=∣Dc,xi∣+1∣Dc∣+NiP(x_i | c) = \frac{|D_{c, x_i}| + 1}{|D_c| + N_i}P(xi∣c)=∣Dc∣+Ni∣Dc,xi∣+1
参数:
- ∣D∣|D|∣D∣ :总样本数。(比如你一共观察了 100 个西瓜)
- ∣Dc∣|D_c|∣Dc∣ :属于类别 ccc 的样本数。(比如其中有 60 个是"好瓜")
- ∣Dc,xi∣|D_{c, x_i}|∣Dc,xi∣ :在类别 ccc 中,特征为 xix_ixi 的样本数。(比如在这 60 个好瓜里,敲击声为"清脆"的西瓜有 0 个)
- NNN :分类类别的总数。(比如西瓜只有好、坏两类,所以 N=2N = 2N=2)
- NiN_iNi :第 iii 个特征所有可能取值的总数。(比如敲击声分为:沉闷、浊响、清脆 3 种,所以 Ni=3N_i = 3Ni=3)
拉普拉斯修正的意义: 避免了因训练集样本不充分而导致概率估值为零的问题。当训练集极大时,加1的影响微乎其微,估值会渐趋向于真实的实际概率值。
五. 半朴素贝叶斯分类器
朴素贝叶斯的"完全独立"假设太理想化了,现实中特征往往是有关联的(比如身高和体重)。半朴素贝叶斯适度释放了这种独立性,允许属性之间存在一定程度的依赖。
1. 独依赖估计(ODE)
假设每个属性在类别之外,最多只依赖一个其他属性。公式变为:
P(x∣c)=∏i=1dP(xi∣c,pai)P(x | c) = \prod_{i=1}^{d} P(x_i | c, pa_i)P(x∣c)=i=1∏dP(xi∣c,pai)
(其中 paipa_ipai 是属性 xix_ixi 依赖的父属性)
2. 常见策略
- SPODE (Super-Parent ODE) 超父模型: 假设所有的属性都共同依赖于同一个"超父"属性 xjx_jxj。
- TAN (Tree Augmented Naive Bayes) 生成树模型:
- 计算任意两个特征属性之间的条件互信息(衡量两者关联度的权重)。
- 以属性为结点,互信息为边权,构建一个完全图。
- 使用最大权生成树算法,找到最强依赖关系的树形结构。
六. 贝叶斯网络
贝叶斯网络进一步彻底释放了独立性限制,允许一个变量依赖多个其他变量,使用有向无环图 (DAG) 来刻画属性之间的复杂依赖关系。
1. 典型的依赖结构
- 同父结构 (Tail-to-Tail): > (想象 x1→x2x_1 \rightarrow x_2x1→x2 和 x1→x3x_1 \rightarrow x_3x1→x3)
- 特性: 给定父节点 x1x_1x1 的取值,则 x2x_2x2 和 x3x_3x3 条件独立。
- 顺序结构 (Head-to-Tail): > (想象 y←x→zy \leftarrow x \rightarrow zy←x→z 或 y→x→zy \rightarrow x \rightarrow zy→x→z)
- 特性: 给定中间节点 xxx 的取值,则 yyy 和 zzz 条件独立。
- V型结构 (Head-to-Head): > (想象 x1→x3←x2x_1 \rightarrow x_3 \leftarrow x_2x1→x3←x2)
- 特性:反直觉! 如果子节点 x3x_3x3 的取值完全未知 ,则 x1x_1x1 和 x2x_2x2 是相互独立 的(边际独立);但如果给定 了子节点 x3x_3x3 的值,则 x1x_1x1 和 x2x_2x2 必不独立。
2. 条件独立性的判断 (有向分离与道德图)
要判断贝叶斯网络中任意两个变量是否独立,可以使用"有向分离" (D-separation) 法:
- 找到所有的 V 型结构,将其父节点用无向边相连(这个过程叫道德化)。
- 将图中所有的有向边都改为无向边,得到道德图 (Moral Graph)。
- 如果从道德图中去除给定条件的变量集合后,想要判断的两个变量分属不同的连通分支(即没有路径相连),则证明它们是条件独立的。
3. 贝叶斯网络的学习
- 若网络结构已知: 与朴素贝叶斯类似,通过在训练样本上"计数"即可估计出概率参数(构建条件概率表 CPT)。
- 若网络结构未知 (结构学习): 这是一个 NP-Hard 问题。通常引入评分函数 (Score Function),例如 AIC 或 BIC(结合对数似然与网络复杂度惩罚项),然后通过启发式算法(如贪心搜索)来寻找得分最优的网络结构。