什么是贝叶斯网络?
- 贝叶斯网络是一系列变量的联合概率分布的图形表示(概率图模型)。
- 把某个研究系统中涉及到的随机变量,根据是否条件独立绘制在一个有向图中,就形成了贝叶斯网络。
- 一般包含俩个部分,一个贝叶斯网络结构图,这个是一个有向无环图(DAG),其中图中的每一个节点代表相应的变量,节点之间的连接关系代表贝叶斯网络的条件独立语义。另一部分,就是节点和节点之间的条件概率表(CPT),也就是一系列的概率值。如果一个贝叶斯网络提供了足够的条件概率值,足以计算任何给定的联合概率,我们就称它是可以计算的,既可以推理的。
什么是概率图模型?
-
概率图模型是用图来表示变量概率依赖关系的理论,结合概率论与图论的知识,利用图来表示与模型有关的变量的联合概率分布。由图灵奖获得者Pearl开发出来。
-
如果用一个词来形容概率图模型(Probabilistic Graphical Model)的话,那就是“优雅”。对于一个实际问题,我们希望能够挖掘隐含在数据中的知识。概率图模型构建了这样一幅图,用观测结点表示观测到的数据,用隐含结点表示潜在的知识,用边来描述知识与数据的相互关系,最后基于这样的关系图获得一个概率分布,非常“优雅”地解决了问题。
-
概率图中的节点分为隐含节点和观测节点,边分为有向边和无向边。从概率论的角度,节点对应于随机变量,边对应于随机变量的依赖或相关关系,其中有向边表示单向的依赖,无向边表示相互依赖关系。
-
概率图模型分为贝叶斯网络(Bayesian Network)和马尔可夫网络(Markov Network)两大类。贝叶斯网络可以用一个有向图结构表示,马尔可夫网络可以表 示成一个无向图的网络结构。更详细地说,概率图模型包括了朴素贝叶斯模型、最大熵模型、隐马尔可夫模型、条件随机场、主题模型等,在机器学习的诸多场景中都有着广泛的应用。
贝叶斯定理相关公式
-
先验概率P(A):在不考虑任何情况下,A事件发生的概率
- 事件发生前的预判概率。可以是基于历史数据的统计,可以由背景常识得出,也可以是人的主观观点给出。一般都是单独事件概率,如P(A),P(B)。
-
后验概率P(A|B):
- 事件发生后求的反向条件概率;或者说,基于先验概率求得的反向条件概率。概率形式与条件概率相同。一般形式为P(A|B),表示在B事件发生之后,对A事件发生的概率的重新评估
-
联合概率 P(AB)、P(A,B)或者P(A∩B)
- 事件A和事件B同时发生的概率
-
条件概率P(A|B):
- 一个事件发生后另一个事件发生的概率。事件A在另外一个事件B已经发生的条件下的发生概率叫做条件概率,一般的形式为P(A|B),表示在B条件下A发生的概率。
P ( A ∣ B ) = P ( A B ) P ( B ) P(A|B)=\frac{P(AB)}{P(B)} P(A∣B)=P(B)P(AB)
- 一个事件发生后另一个事件发生的概率。事件A在另外一个事件B已经发生的条件下的发生概率叫做条件概率,一般的形式为P(A|B),表示在B条件下A发生的概率。
-
全概率:如果A和A’构成样本空间的一个划分,那么事件B的概率为:A和A’的概率分别乘以B对这两个事件的概率之和。 P ( B ) = P ( A ) P ( B ∣ A ) + P ( A ′ ) P ( B ∣ A ′ ) P(B)=P(A)P(B|A)+P(A')P(B|A') P(B)=P(A)P(B∣A)+P(A′)P(B∣A′) 设事件{Aj}是样本空间Ω的一个划分,且P(Ai)>0, 那么对亍任意事件B,全概率公式为: P ( B ) = ∑ j = 1 n P ( A j ) P ( B ∣ A j ) P(B)=\sum^n_{j=1} P(A_j)P(B|A_j) P(B)=j=1∑nP(Aj)P(B∣Aj)
贝叶斯定理公式
基于条件概率的贝叶斯定律数学公式:
P
(
A
j
∣
B
)
=
P
(
A
j
B
)
P
(
B
)
P(A_j|B)=\frac{P(A_jB)}{P(B)}
P(Aj∣B)=P(B)P(AjB)
P
(
B
)
=
∑
i
=
1
n
P
(
A
i
)
P
(
B
∣
A
i
)
P(B)=\sum^n_{i=1}P(A_i)P(B|A_i)
P(B)=i=1∑nP(Ai)P(B∣Ai)
P
(
A
j
∣
B
)
=
P
(
A
j
)
P
(
B
∣
A
j
)
P
(
B
)
=
P
(
A
j
)
P
(
B
∣
A
j
)
∑
i
=
1
n
P
(
B
∣
A
i
)
P
(
A
i
)
P(A_j|B)=\frac{P(A_j)P(B|A_j)}{P(B)}=\frac{P(A_j)P(B|A_j)}{\sum^n_{i=1}P(B|A_i)P(A_i)}
P(Aj∣B)=P(B)P(Aj)P(B∣Aj)=∑i=1nP(B∣Ai)P(Ai)P(Aj)P(B∣Aj)
朴素贝叶斯算法
朴素贝叶斯法对条件概率分布做了条件独立性的假设,由于这是一个较强的假设,朴素贝叶斯也由此得名!这一假设使得朴素贝叶斯法变得简单,但有时会牺牲一定的分类准确率。(特征之间都是相互独立的)
- 对应给定的样本X的特征向量x1,x2,…,xm;该样本X的类别y的概率可以由贝叶斯公式得到: P ( y ∣ x 1 , x 2 , . . . , x m ) = P ( y ) P ( X 1 , X 2 , . . . x m ∣ y ) P ( x 1 , x 2 , . . . , x m ) P(y|x_1,x_2,...,x_m)=\frac{P(y)P(X_1,X_2,...x_m|y)}{P(x_1,x_2,...,x_m)} P(y∣x1,x2,...,xm)=P(x1,x2,...,xm)P(y)P(X1,X2,...xm∣y)
朴素贝叶斯算法推导
-
特征属性之间是独立的,所以得到:
P ( x i ∣ y , x 1 , . . . , x i − 1 , x i + 1 , . . . , x m ) = P ( x i ∣ y ) P(x_i|y,x_1,...,x_{i-1},x_{i+1},...,x_m)=P(x_i|y) P(xi∣y,x1,...,xi−1,xi+1,...,xm)=P(xi∣y) -
公式优化得到:
P ( y ∣ x 1 , x 2 , . . . , x m ) = P ( y ) P ( x 1 , x 2 , . . . , x m ∣ y ) P ( x 1 , x 2 , . . . , x m ) = P ( y ) ∏ i = 1 m P ( x i ∣ y ) p ( x 1 , x 2 , . . . , x m ) P(y|x_1,x_2,...,x_m)=\frac{P(y)P(x_1,x_2,...,x_m|y)}{P(x_1,x_2,...,x_m)}=\frac{P(y)\prod^m_{i=1}P(x_i|y)}{p(x_1,x_2,...,x_m)} P(y∣x1,x2,...,xm)=P(x1,x2,...,xm)P(y)P(x1,x2,...,xm∣y)=p(x1,x2,...,xm)P(y)∏i=1mP(xi∣y) -
在给定样本的情况下, P ( x 1 , x 2 , . . . , x m ) P(x_1,x_2,...,x_m) P(x1,x2,...,xm)是常数,所以得到:
P ( y ∣ x 1 , x 2 , . . . , x m ) ∝ P ( y ) ∏ i = 1 m P ( x i ∣ y ) P(y|x_1,x_2,...,x_m)∝P(y)\prod_{i=1}^mP(x_i|y) P(y∣x1,x2,...,xm)∝P(y)i=1∏mP(xi∣y) -
从而:
y ^ = arg max y P ( y ) ∏ i = 1 m P ( x i ∣ y ) \hat{y}=\argmax_yP(y)\prod^m_{i=1}P(x_i|y) y^=yargmaxP(y)i=1∏mP(xi∣y)
朴素贝叶斯算法流程
- 朴素贝叶斯算法流程/定义如下:
- 设 x = x 1 , x 2 , . . . , x m x={x_1,x_2,...,x_m} x=x1,x2,...,xm为待分类样本,其中xi为x的一个特征属性
- 类别集合为 C = y 1 , y 2 , . . . , y n C={y_1,y_2,...,y_n} C=y1,y2,...,yn
- 分别计算 P ( y 1 ∣ x ) , P ( y 2 ∣ x ) , . . . . , P ( y n ∣ x ) P(y_1|x),P(y_2|x),....,P(y_n|x) P(y1∣x),P(y2∣x),....,P(yn∣x)的值(贝叶斯公式)
- 如果
P
(
y
k
∣
x
)
=
m
a
x
P
(
y
1
∣
x
)
,
P
(
y
2
∣
x
)
,
.
.
.
.
,
P
(
y
n
∣
x
)
P(y_k|x)=max{P(y_1|x),P(y_2|x),....,P(y_n|x)}
P(yk∣x)=maxP(y1∣x),P(y2∣x),....,P(yn∣x),那么认为x为
y
k
y_k
yk类型
P ( y ∣ x 1 , x 2 , . . . , x m ) = P ( y ) P ( x 1 , x 2 , . . . , x m ∣ y ) P ( x 1 , x 2 , . . . , x m ) P(y|x_1,x_2,...,x_m)=\frac{P(y)P(x_1,x_2,...,x_m|y)}{P(x_1,x_2,...,x_m)} P(y∣x1,x2,...,xm)=P(x1,x2,...,xm)P(y)P(x1,x2,...,xm∣y) P ( y ∣ x 1 , x 2 , . . . , x m ) ∝ P ( y ) ∏ i = 1 m P ( x i ∣ y ) P(y|x_1,x_2,...,x_m)∝P(y)\prod_{i=1}^mP(x_i|y) P(y∣x1,x2,...,xm)∝P(y)i=1∏mP(xi∣y)
朴素贝叶斯优点 or 缺点
- 优点:
- 算法逻辑简单,易于实现(算法思路很简单,只要使用贝叶斯公式转化即可!)
- 分类过程中时空开销小(假设特征相互独立,只会涉及到二维存储)
- 缺点:
- 理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。
- 朴素贝叶斯模型(Naive Bayesian Model)的朴素(Naive)的含义是"很简单很天真"地假设样本特征彼此独立. 这个假设现实中基本上不存在, 但特征相关性很小的实际情况还是很多的, 所以这个模型仍然能够工作得很好。
高斯朴素贝叶斯
- Gaussian Naive Bayes是指当特征属性为连续值时,而且分布服从高斯分布,那么在计算P(x|y)的时候可以直接使用高斯分布的概率公式:
g ( x , η , σ ) = 1 2 π σ e − ( x − η ) 2 2 σ 2 g(x,\eta,\sigma)=\frac{1}{\sqrt{2\pi\sigma}}e^{-\frac{(x-\eta)^2}{2\sigma^2}} g(x,η,σ)=2πσ1e−2σ2(x−η)2 P ( x i ∣ y k ) = g ( x i , η i , y k , σ i , y k ) P(x_i|y_k)=g(x_i,\eta_{i,y_k},\sigma_{i,y_k}) P(xi∣yk)=g(xi,ηi,yk,σi,yk) - 因此只需要计算出各个类别中此特征项划分的各个均值和标准差
伯努利朴素贝叶斯
- Bernoulli Naive Bayes是指当特征属性为连续值时,而且分布服从伯努利分布,那么在计算P(x|y)的时候可以直接使用伯努利分布的概率公式:
P ( x k ∣ y ) = P ( 1 ∣ y ) x k + ( 1 − P ( 1 ∣ y ) ) ( 1 − x k ) P(x_k|y)=P(1|y)x_k+(1-P(1|y))(1-x_k) P(xk∣y)=P(1∣y)xk+(1−P(1∣y))(1−xk) - 伯努利分布是一种离散分布,只有两种可能的结果。1表示成功,出现的概率为p;0表示失败,出现的概率为q=1-p;其中均值为E(x)=p,方差为Var(X)=p(1-p)
多项式朴素贝叶斯
Multinomial Naive Bayes是指当特征属性服从多项分布(特征是离散的形式的时候),直接计算类别数目的占比作为先验概率和条件概率。
P
(
y
k
)
=
N
y
k
+
α
N
+
k
∗
α
P(y_k)=\frac{N_{y_k}+\alpha}{N+k*\alpha}
P(yk)=N+k∗αNyk+α
P
(
x
i
∣
y
k
)
=
N
y
k
,
x
i
+
α
N
y
k
+
n
i
∗
α
P(x_i|y_k)=\frac{N_{y_k,x_i}+\alpha}{N_{y_k}+n_i*\alpha}
P(xi∣yk)=Nyk+ni∗αNyk,xi+α
N是总样本个数,k是总的类别个数,
N
y
k
N_{yk}
Nyk是类别为yk的样本个数,α为平滑值。
N
y
k
N_{yk}
Nyk是类别为yk的样本个数,
n
i
n_i
ni为特征属性
x
i
x_i
xi的不同取值数目,
N
y
k
,
x
i
N_{y_k,x_i}
Nyk,xi为类别yk中第i维特征的值为
x
i
x_i
xi的样本个数,α为平滑值。
当α=1时,称为Laplace平滑,当0<α<1时,称为Lidstone平滑,α=0时不做平滑;平滑的主要作用是可以克服条件概率为0的问题。
贝叶斯网络
- 当多个特征属性之间存在着某种相关关系的时候,使用朴素贝叶斯算法就没法解决这类问题,那么贝叶斯网络就是解决这类应用场景的一个非常好的算法。
- 一般而言,贝叶斯网络的有向无环图中的节点表示随机变量,可以是可观察到的变量,或隐变量,未知参数等等。连接两个节点之间的箭头代表两个随机变量之间的因果关系(也就是这两个随机变量之间非条件独立),如果两个节点间以一个单箭头连接在一起,表示其中一个节点是“因”,另外一个是“果”,从而两节点之间就会产生一个条件概率值。
- 贝叶斯网络的关键方法是图模型,构建一个图模型我们需要把具有因果联系的各个变量用箭头连在一起。贝叶斯网络的有向无环图中的节点表示随机变量。连接两个节点的箭头代表此两个随机变量是具有因果关系的。
- 贝叶斯网络是模拟人的认知思维推理模式的,用一组条件概率以及有向无环图对不确定性因果推理关系建模
简单的贝叶斯网络
公式:
P
(
a
,
b
,
c
)
=
P
(
c
∣
a
,
b
)
P
(
b
∣
a
)
P
(
a
)
P(a,b,c)=P(c|a,b)P(b|a)P(a)
P(a,b,c)=P(c∣a,b)P(b∣a)P(a)
全连接贝叶斯网络
全连接贝叶斯网络每一对节点之间都有边连接
P
(
x
1
,
x
2
,
.
.
.
,
x
n
)
=
P
(
x
n
∣
x
1
,
x
2
,
.
.
.
,
x
n
−
1
)
P
(
x
2
∣
x
1
)
P
(
x
1
)
P(x_1,x_2,...,x_n)=P(x_n|x_1,x_2,...,x_{n-1})P(x_2|x_1)P(x_1)
P(x1,x2,...,xn)=P(xn∣x1,x2,...,xn−1)P(x2∣x1)P(x1)
P
(
x
1
,
x
2
,
.
.
.
,
x
n
)
=
∏
i
=
2
n
P
(
x
i
∣
x
1
,
x
2
,
.
.
.
,
x
i
−
1
)
P
(
X
1
)
P(x_1,x_2,...,x_n)=\prod^n_{i=2}P(x_i|x_1,x_2,...,x_{{i-1}})P(X_1)
P(x1,x2,...,xn)=i=2∏nP(xi∣x1,x2,...,xi−1)P(X1)
“正常”贝叶斯网络
- x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3独立
- x 6 x_6 x6和 x 7 x_7 x7在给定条件下独立
- x 1 , x 2 , x 3 . . . x 7 x_1,x_2,x_3...x_7 x1,x2,x3...x7的联合分布为
P ( x 1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 ) = P ( x 1 ) P ( x 2 ) P ( x 3 ) P ( x 4 ∣ x 1 , x 2 , x 3 ) P ( x 5 ∣ x 1 , x 3 ) P ( x 6 ∣ x 4 ) P ( x 7 ∣ x 4 , x 5 ) P(x_1,x_2,x_3,x_4,x_5,x_6,x_7)=P(x_1)P(x_2)P(x_3)P(x_4|x1,x_2,x_3)P(x_5|x_1,x_3)P(x_6|x_4)P(x_7|x_4,x_5) P(x1,x2,x3,x4,x5,x6,x7)=P(x1)P(x2)P(x3)P(x4∣x1,x2,x3)P(x5∣x1,x3)P(x6∣x4)P(x7∣x4,x5)
贝叶斯网络判定条件
贝叶斯网络判定条件独立-01
- 在C给定的条件下,a和b被阻断(blocked)是独立的
- 条件独立:tail - to -tail
P ( a , b , c ) = P ( c ) P ( b ∣ c ) P ( a ∣ c ) ⇒ P ( a , b , c ) / P ( c ) = P ( b ∣ c ) P ( a ∣ c ) P(a,b,c)=P(c)P(b|c)P(a|c)\Rightarrow P(a,b,c)/P(c)=P(b|c)P(a|c) P(a,b,c)=P(c)P(b∣c)P(a∣c)⇒P(a,b,c)/P(c)=P(b∣c)P(a∣c)
∵ P ( a , b ∣ c ) = P ( a , b , c ) / P ( c ) \because P(a,b|c)=P(a,b,c)/P(c) ∵P(a,b∣c)=P(a,b,c)/P(c)
∴ P ( a , b ∣ c ) = P ( a ∣ c ) P ( b ∣ c ) \therefore P(a,b|c)=P(a|c)P(b|c) ∴P(a,b∣c)=P(a∣c)P(b∣c)
- 条件独立:tail - to -tail
贝叶斯网络判定条件独立-02
- 在C给定的条件下,a和b被阻断(blocked)是独立的
- 条件独立:head- to -tail
P ( a , b , c ) = P ( a ) P ( c ∣ a ) P ( b ∣ c ) P(a,b,c)=P(a)P(c|a)P(b|c) P(a,b,c)=P(a)P(c∣a)P(b∣c)
P ( a , b ∣ c ) = P ( a , b , c ) / P ( c ) = P ( a ) P ( c ∣ a ) P ( b ∣ c ) / P ( c ) = P ( a , c ) P ( b ∣ c ) / P ( c ) = P ( a ∣ c ) P ( b ∣ c ) \begin{aligned}P(a,b|c) & = P(a,b,c)/P(c)\\ &=P(a)P(c|a)P(b|c)/P(c)\\ &=P(a,c)P(b|c)/P(c)\\ &=P(a|c)P(b|c) \end{aligned} P(a,b∣c)=P(a,b,c)/P(c)=P(a)P(c∣a)P(b∣c)/P(c)=P(a,c)P(b∣c)/P(c)=P(a∣c)P(b∣c)
- 条件独立:head- to -tail
贝叶斯网络判定条件独立-03
- 在C未知的情况下,a和b被阻断(blocked),是独立的
- 条件独立:head - to - head
P ( s , b , c ) = P ( a ) P ( b ) P ( c ∣ a , b ) P(s,b,c)=P(a)P(b)P(c|a,b) P(s,b,c)=P(a)P(b)P(c∣a,b)
∑ c P ( a , b , c ) = ∑ c P ( a ) P ( b ) P ( c ∣ a , b ) ⇒ P ( a , b ) = P ( a ) P ( b ) \sum_cP(a,b,c)=\sum_cP(a)P(b)P(c|a,b)\Rightarrow P(a,b)=P(a)P(b) c∑P(a,b,c)=c∑P(a)P(b)P(c∣a,b)⇒P(a,b)=P(a)P(b)
- 条件独立:head - to - head