概率图结构学习的贝叶斯方法1——结构概率计算

本文介绍了概率图模型中的贝叶斯网络,特别是结构学习方法K2算法。通过一系列假设,如离散变量、独立数据生成、无缺失值和均匀分布的参数,详细阐述了如何从数据中估计贝叶斯网络结构的概率,并给出了概率计算的公式。最终,通过概率评估公式展示了如何计算给定结构相对于数据的概率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概率图结构学习的贝叶斯方法1——结构概率计算

机器学习中,概率图常用于描述变量之间的依赖关系,其中又分为有向图与无向图。常见的有向图模型有NB(朴素贝叶斯)、HMM、PLSA、LDA等,而这些模型通常需要在变量之间的依赖上加入各种结构性的假设或简化,如NB假设特征变量相互独立、HMM假设状态变量之间的依赖是链式的、PLSA与LDA假设变量之间的生成具有某种层次关系。贝叶斯网络则是一种从数据中学习出变量之间联系(结构)的模型,这篇日志介绍一种经典的贝叶斯网络结构学习方法,称为K2算法,主要参考这篇论文:

A Bayesian Method for the Induction of Probabilistic Networks from Data

考虑有如下数据:

case x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3
1presentabsentabsent
2presentpresentpresent
3absentabsentpresent
4presentpresentpresent
5absentabsentabsent
6absentpresentpresent
7presentpresentpresent
8absentabsentabsent
9presentpresentpresent
10absentabsentabsent

这里有三个变量 x 1 , x 2 , x 3 {x_1, x_2, x_3} x1,x2,x3,我们知道了这些变量的多次观测值,假如我们需要对某个变量进行预测,就需要首先确定变量之间的依赖关系,一种朴素的想法是:我们可以列出所有可能的依赖关系,即结构,对于给定的结构,我们可以根据数据评估该结构的概率,使用MLE的思想取最大概率的结构作为输出。

把某个结构记为 B S B_S BS,把该结构下所有依赖变量之间的条件概率记为 B P B_P BP,对每个变量 x i x_i xi,我们把它的父变量集合记为 π i \pi_i πi,如果不存在父变量,那么 P ( x i ) P(x_i) P(xi)是确定的。

为了表示数据的联合概率,这里引用了一个假设:

P ( X 1 , X 2 , ⋯   , X n ) = ∏ i = 1 n P ( X i ∣ π i ) P(X_1, X_2, \dotsb, X_n) = \prod_{i = 1}^n{P(X_i| \pi_i)} P(X1,X2,,Xn)=i=1nP(Xiπi)

这里 X i X_i Xi表示 x i x_i xi的实例, π i \pi_i πi表示 x i x_i xi父变量的实例。这个假设有点像HMM的马尔科夫性质,即一个变量的状态只与上一级父变量的状态有关,与祖先变量(父变量的父变量)无关。直观的理解是,如果祖先变量与当前变量有关,那么直接成为父变量就好了,这是奥卡姆剃刀原则。

对于给定的结构和数据,我们需要计算联合概率:

P ( B S i , D ) P(B_{S_i}, D) P(BSi,D)

形式化 P ( B S i , D ) P(B_{S_i}, D) P(BSi,D)

上式仅仅是一个最基础的概念,形式化计算还需要作出几个假设:

假设1. 数据中的随机变量(记为 Z Z Z)值是离散的。

这是个非常强的假设,由于有了假设1,每个变量的父变量实例都是离散的,且在父变量实例确定的条件下,变量可以用多项分布去描述,其参数由结构生成。基于这个出发点,可以把结构概率分解为:

P ( B S , D ) = ∫ B P P ( D ∣ B S , B P ) f ( B P ∣ B S ) P ( B S ) d B P P(B_S, D) = \int_{B_P}{P(D| B_S, B_P)f(B_P| B_S)P(B_S)}\text{d}{B_P} P(BS,D)=BPP(DBS,BP)f(BPBS)P(BS)dBP

假设2. 对于给定的贝叶斯模型,每个数据的生成是独立的。

这个假设比较直观,结构概率变为:

P ( B S , D ) = ∫ B P [ ∏ h = 1 m P ( C h ∣ B S , B P ) ] f ( B P ∣ B S ) P ( B S ) d B P P(B_S, D) = \int_{B_P}{ \bigg[ \prod_{h = 1}^m{P(C_h| B_S, B_P)} \bigg] f(B_P| B_S)P(B_S) }\text{d}{B_P} P(BS,D)=BP[h=1mP(ChBS,BP)]f(BPBS)P(BS)dBP

C h C_h Ch即数据中的一个实例。

假设3. 数据中没有缺失值。
假设4. 概率密度函数 f ( B P ∣ B S ) f(B_P| B_S) f(BPBS)服从均匀分布。

假设3主要是为了避免出现没有定义的条件概率,假设4是为了使结构->参数的分布计算更简单。

有了这4项假设,我们可以引入几个概念(符号):

x i x_i xi的父变集合量为 π i \pi_i πi π i \pi_i πi的取值共有 q i q_i qi种组合,第 j j j种记为 w i , j w_{i, j} wi,j
x i x_i xi变量取值有 r i r_i ri种,第 k k k种记为 v i , k v_{i, k} vi,k
N i , j , k N_{i, j, k} Ni,j,k为变量 x i x_i xi的取值为 v i , k v_{i, k} vi,k、父变量集合 π i \pi_i πi的取值为 w i , j w_{i, j} wi,j的样本计数
N i , j N_{i, j} Ni,j为变量 x i x_i xi的父变量集合 π i \pi_i πi的取值为 w i , j w_{i, j} wi,j的样本计数,即 N i , j = ∑ k = 1 r i N i , j , k N_{i, j} = \sum_{k = 1}^{r_i}{N_{i, j, k}} Ni,j=k=1riNi,j,k
d i , h d_{i, h} di,h为变量 x i x_i xi在第 h h h个实例的取值
w i w_i wi π i \pi_i πi的所有唯一值的集合
σ ( i , h ) \sigma(i, h) σ(i,h)表示 π i \pi_i πi在第 h h h个实例上的取值在 w i w_i wi中的索引值
θ i , j , k \theta_{i, j, k} θi,j,k表示条件概率 P ( x i = v i , k ∣ π i = w i , j , B P ) P(x_i = v_{i, k}| \pi_i = w_{i, j}, B_P) P(xi=vi,kπi=wi,j,BP)
f ( θ i , j , 1 , θ i , j , 2 , ⋯   , θ i , j , r i ) f(\theta_{i, j, 1}, \theta_{i, j, 2}, \dotsb, \theta_{i, j, r_i}) f(θi,j,1,θi,j,2,,θi,j,ri)表示 θ i , j , k \theta_{i, j, k} θi,j,k的概率密度函数

由于 P ( B S ) P(B_S) P(BS) P ( B S , D ) P(B_S, D) P(BS,D)的计算中为常数,因此可以移到积分符号外:

P ( B S , D ) = P ( B S ) ∫ B P P ( D ∣ B S , B P ) f ( B P ∣ B S ) d B P P(B_S, D) = P(B_S)\int_{B_P}{P(D| B_S, B_P)f(B_P| B_S)}\text{d}{B_P} P(BS,D)=P(BS)BPP(DBS,BP)f(BPBS)dBP

进一步有:

P ( B S , D ) = P ( B S ) ∫ B P [ ∏ h = 1 m P ( C h ∣ B S , B P ) ] f ( B P ∣ B S ) d B P = P ( B S ) ∫ B P [ ∏ h = 1 m ∏ i = 1 n P ( x i = d i , h ∣ π i = w i , σ ( i , h ) , B P ) ] f ( B P ∣ B S ) d B P \begin{aligned} P(B_S, D) =& P(B_S)\int_{B_P}{ \bigg[ \prod_{h = 1}^m{P(C_h| B_S, B_P)} \bigg] f(B_P| B_S) }\text{d}{B_P}\\ =& P(B_S)\int_{B_P}{ \bigg[ \prod_{h = 1}^m \prod_{i = 1}^n{ P(x_i = d_{i, h}| \pi_i = w_{i, \sigma(i, h)}, B_P) } \bigg] f(B_P| B_S) }\text{d}{B_P} \end{aligned} P(BS,D)==P(BS)BP[h=1mP(ChBS,BP)]f(BPBS)dBPP(BS)BP[h=1mi=1nP(xi=di,hπi=wi,σ(i,h),BP)]f(BPBS)dBP

按值进行重排得到:

P ( B S , D ) = P ( B S ) ∫ B P [ ∏ i = 1 n ∏ j = 1 q i ∏ k = 1 r i P ( x i = v i , k ∣ π i = w i , j , B P ) N i , j , k ] f ( B P ∣ B S ) d B P P(B_S, D) = P(B_S)\int_{B_P}{ \bigg[ \prod_{i = 1}^n \prod_{j = 1}^{q_i} \prod_{k = 1}^{r_i}{ P(x_i = v_{i, k}| \pi_i = w_{i, j}, B_P)^{N_{i, j, k}} } \bigg] f(B_P| B_S) }\text{d}{B_P} P(BS,D)=P(BS)BP[i=1nj=1qik=1riP(xi=vi,kπi=wi,j,BP)Ni,j,k]f(BPBS)dBP

由于:

f ( B P ∣ B S ) = ∏ i = 1 n ∏ j = 1 q i f ( θ i , j , 1 , θ i , j , 2 , ⋯   , θ i , j , r i ) f(B_P| B_S) = \prod_{i = 1}^n \prod_{j = 1}^{q_i}{ f(\theta_{i, j, 1}, \theta_{i, j, 2}, \dotsb, \theta_{i, j, r_i}) } f(BPBS)=i=1nj=1qif(θi,j,1,θi,j,2,,θi,j,ri)

我们得到:

P ( B S , D ) = P ( B S ) ∫ ⋯ θ i , j , k ∫ [ ∏ i = 1 n ∏ j = 1 q i ∏ k = 1 r i θ i , j , k N i , j , k ] [ ∏ i = 1 n ∏ j = 1 q i f ( θ i , j , 1 , θ i , j , 2 , ⋯   , θ i , j , r i ) ] d θ 1 , 1 , 1 , ⋯   , d θ i , j , k , ⋯   , d θ n , q n , r n \begin{aligned} P(B_S, D) =&\\ & P(B_S)\int \underset{\theta_{i, j, k}}{\dotsb} \int{ \bigg[ \prod_{i = 1}^n \prod_{j = 1}^{q_i} \prod_{k = 1}^{r_i}{ \theta_{i, j, k}^{N_{i, j, k}} } \bigg] \bigg[ \prod_{i = 1}^n \prod_{j = 1}^{q_i}{ f(\theta_{i, j, 1}, \theta_{i, j, 2}, \dotsb, \theta_{i, j, r_i}) } \bigg] }\\ & { \text{d}\theta_{1, 1, 1}, \dotsb, \text{d}\theta_{i, j, k}, \dotsb, \text{d}\theta_{n, q_n, r_n} } \end{aligned} P(BS,D)=P(BS)θi,j,k[i=1nj=1qik=1riθi,j,kNi,j,k][i=1nj=1qif(θi,j,1,θi,j,2,,θi,j,ri)]dθ1,1,1,,dθi,j,k,,dθn,qn,rn

改变积分与连乘的顺序可得:

P ( B S , D ) = P ( B S ) ∏ i = 1 n ∏ j = 1 q i ∫ ⋯ θ i , j , k ∫ [ ∏ k = 1 r i θ i , j , k N i , j , k ] f ( θ i , j , 1 , θ i , j , 2 , ⋯   , θ i , j , r i ) d θ i , j , 1 , d θ i , j , 2 , ⋯   , d θ i , j , r i \begin{aligned} P(B_S, D) =&\\ & P(B_S)\prod_{i = 1}^n \prod_{j = 1}^{q_i} \int \underset{\theta_{i, j, k}}{\dotsb} \int{ \bigg[ \prod_{k = 1}^{r_i} \theta_{i, j, k}^{N_{i, j, k}} \bigg] f(\theta_{i, j, 1}, \theta_{i, j, 2}, \dotsb, \theta_{i, j, r_i}) }\\ & { \text{d}\theta_{i, j, 1}, \text{d}\theta_{i, j, 2}, \dotsb, \text{d}\theta_{i, j, r_i} } \end{aligned} P(BS,D)=P(BS)i=1nj=1qiθi,j,k[k=1riθi,j,kNi,j,k]f(θi,j,1,θi,j,2,,θi,j,ri)dθi,j,1,dθi,j,2,,dθi,j,ri

根据假设4, P ( B P ∣ B S ) P(B_P| B_S) P(BPBS)服从均匀分布,即 f ( θ i , j , 1 , θ i , j , 2 , ⋯   , θ i , j , r i ) f(\theta_{i, j, 1}, \theta_{i, j, 2}, \dotsb, \theta_{i, j, r_i}) f(θi,j,1,θi,j,2,,θi,j,ri)为某一常数 C i , j C_{i, j} Ci,j,且有:

∫ ⋯ θ i , j , k ∫ C i , j d θ i , j , 1 , ⋯   , d θ i , j , r i = 1 \int \underset{\theta_{i, j, k}}{\dotsb} \int{C_{i, j}} \text{d}\theta_{i, j, 1}, \dotsb, \text{d}\theta_{i, j, r_i} = 1 θi,j,kCi,jdθi,j,1,,dθi,j,ri=1

可见这是一个特殊的Dirichlet分布(所有超参数 α r i = 1 \alpha_{r_i} = 1 αri=1),对Dirichlet函数积分,可得:

C i , j = ( r i − 1 ) ! C_{i, j} = (r_i - 1)! Ci,j=(ri1)!

所以有:

P ( B S , D ) = P ( B S ) ∏ i = 1 n ∏ j = 1 q i ∫ ⋯ θ i , j , k ∫ [ ∏ k = 1 r i θ i , j , k N i , j , k ] ( r i − 1 ) ! d θ i , j , 1 , d θ i , j , 2 , ⋯   , d θ i , j , r i = P ( B S ) ∏ i = 1 n ∏ j = 1 q i ( r i − 1 ) ! ∫ ⋯ θ i , j , k ∫ [ ∏ k = 1 r i θ i , j , k N i , j , k ] d θ i , j , 1 , d θ i , j , 2 , ⋯   , d θ i , j , r i \begin{aligned} P(B_S, D) &=& P(B_S)\prod_{i = 1}^n \prod_{j = 1}^{q_i} \int \underset{\theta_{i, j, k}}{\dotsb} \int{ \bigg[ \prod_{k = 1}^{r_i} \theta_{i, j, k}^{N_{i, j, k}} \bigg] (r_i - 1)! } { \text{d}\theta_{i, j, 1}, \text{d}\theta_{i, j, 2}, \dotsb, \text{d}\theta_{i, j, r_i} }\\ &=& P(B_S)\prod_{i = 1}^n \prod_{j = 1}^{q_i} (r_i - 1)! \int \underset{\theta_{i, j, k}}{\dotsb} \int{ \bigg[ \prod_{k = 1}^{r_i} \theta_{i, j, k}^{N_{i, j, k}} \bigg] } { \text{d}\theta_{i, j, 1}, \text{d}\theta_{i, j, 2}, \dotsb, \text{d}\theta_{i, j, r_i} } \end{aligned} P(BS,D)==P(BS)i=1nj=1qiθi,j,k[k=1riθi,j,kNi,j,k](ri1)!dθi,j,1,dθi,j,2,,dθi,j,riP(BS)i=1nj=1qi(ri1)!θi,j,k[k=1riθi,j,kNi,j,k]dθi,j,1,dθi,j,2,,dθi,j,ri

观察:

∫ ⋯ θ i , j , k ∫ [ ∏ k = 1 r i θ i , j , k N i , j , k ] d θ i , j , 1 , d θ i , j , 2 , ⋯   , d θ i , j , r i \int \underset{\theta_{i, j, k}}{\dotsb} \int{ \bigg[ \prod_{k = 1}^{r_i} \theta_{i, j, k}^{N_{i, j, k}} \bigg] } { \text{d}\theta_{i, j, 1}, \text{d}\theta_{i, j, 2}, \dotsb, \text{d}\theta_{i, j, r_i} } θi,j,k[k=1riθi,j,kNi,j,k]dθi,j,1,dθi,j,2,,dθi,j,ri

这也是一个Dirichlet积分,利用积分等于1的性质可以得到:

∫ ⋯ θ i , j , k ∫ [ ∏ k = 1 r i θ i , j , k N i , j , k ] d θ i , j , 1 , d θ i , j , 2 , ⋯   , d θ i , j , r i = ∏ k = 1 r i N i , j , k ! ( N i , j + r i − 1 ) ! \int \underset{\theta_{i, j, k}}{\dotsb} \int{ \bigg[ \prod_{k = 1}^{r_i} \theta_{i, j, k}^{N_{i, j, k}} \bigg] } { \text{d}\theta_{i, j, 1}, \text{d}\theta_{i, j, 2}, \dotsb, \text{d}\theta_{i, j, r_i} } = \frac{ \prod_{k = 1}^{r_i} N_{i, j, k}! }{ (N_{i, j} + r_i - 1)! } θi,j,k[k=1riθi,j,kNi,j,k]dθi,j,1,dθi,j,2,,dθi,j,ri=(Ni,j+ri1)!k=1riNi,j,k!

得到最终的概率评估公式:

P ( B S , D ) = P ( B S ) ∏ i = 1 n ∏ j = 1 q i ( r i − 1 ) ! ( N i , j + r i − 1 ) ! ∏ k = 1 r i N i , j , k ! P(B_S, D) = P(B_S) \prod_{i = 1}^n \prod_{j = 1}^{q_i}{ \frac{(r_i - 1)!}{(N_{i, j} + r_i - 1)!} \prod_{k = 1}^{r_i} N_{i, j, k}! } P(BS,D)=P(BS)i=1nj=1qi(Ni,j+ri1)!(ri1)!k=1riNi,j,k!

计算复杂度

待补充。

计算 P ( B S i ∣ D ) P(B_{S_i}| D) P(BSiD)

待补充。

理想状态下(计算力无限),我们只需要遍历所有的结构,总能找出概率最大的一个,实际上光是遍历的复杂度就已经是阶乘级的。文章提出了一种基于变量排序的简化计算方法,将在后续日志中介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值