这篇文章写一下有关贝叶斯网络的部分,这是机器学习后半部分的一个非常基础的内容。
主要内容
(1)复习本次将用到的知识:相对熵、互信息(信息增益)
(2)朴素贝叶斯
(3)贝叶斯网络的表述
a.条件概率表参数个数分析
b.马尔科夫模型
(4)D-separation
a.条件独立的三种类型
b.Markov Blanket
(5)网络的构建流程
混合(离散+连续)网络:线性高斯模型
(6)Chow-Liu算法:最大权生成树MSWT
复习:相对熵
(1)相对熵,又称互熵,交叉熵,鉴别信息,Kullback熵,Kullback-Leible散度等
(2)设p(x)、q(x)是X中取值的两个概率分布,则p对q的相对熵是:
(3)说明:
a.相对熵可以度量两个随机变量的“距离”
b.一般的,
D
(
p
∣
∣
q
)
≠
D
(
q
∣
∣
p
)
D(p||q)≠D(q||p)
D(p∣∣q)=D(q∣∣p)
c.
D
(
p
∣
∣
q
)
≥
0
,
D
(
q
∣
∣
p
)
≥
0
D(p||q)≥0,D(q||p)≥0
D(p∣∣q)≥0,D(q∣∣p)≥0
Jensen不等式
复习:互信息
(1)两个随机变量X、Y的互信息,定义为X,Y的联合分布和独立分布乘积的相对熵
(2)
I
(
X
,
Y
)
=
D
(
P
(
X
,
Y
)
∣
∣
P
(
X
)
P
(
Y
)
)
I(X,Y)=D(P(X,Y)||P(X)P(Y))
I(X,Y)=D(P(X,Y)∣∣P(X)P(Y))
复习:信息增益
(1)信息增益表示得知特征A的信息而使得类X的信息不确定性减少的程度
(2)定义:特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差,即:
a.
g
(
D
,
A
)
=
H
(
D
)
−
H
(
D
∣
A
)
g(D,A)=H(D)-H(D|A)
g(D,A)=H(D)−H(D∣A)
b.显然,这即为训练数据集D和特征A的互信息
概率
(1)条件概率:
(2)全概率公式:
(3)贝叶斯(Bayes)公式:
贝叶斯公式带来的思考:
P
(
A
∣
D
)
=
P
(
D
∣
A
)
P
(
A
)
P
(
D
)
P(A|D)=\frac{P(D|A)P(A)}{P(D)}
P(A∣D)=P(D)P(D∣A)P(A)
(1)给定某些样本D,在这些样本中计算某结论
A
1
、
A
2
.
.
.
A
n
A_1、A_2...A_n
A1、A2...An出现的概率,即
P
(
A
i
∣
D
)
P(A_i|D)
P(Ai∣D)
a.第一个公式:贝叶斯公式
b.第二个等式:样本给定,则对于任何
A
i
,
P
(
D
)
A_i,P(D)
Ai,P(D)都是常数,仅为归一化因子
c.第三个箭头:若这些结论
A
1
、
A
2
.
.
.
A
n
A_1、A_2...A_n
A1、A2...An的先验概率相等(或近似),则得到最后一个等式:即第二行的公式
贝叶斯公式的应用
8支步枪中有5支已校准过,3支未校准。一名射手用校准过的枪射击,中靶概率为0.8;用未校准过的枪射击,中靶概率为0.3;现从8支枪中随机取一支设计,结果中靶。求该枪是已校准过的概率
朴素贝叶斯的假设
(1)一个特征出现的概率,与其他特征(条件)独立(特征独立性)
其实是:对于给定分类的条件下, 特征独立
(2)每个特征同等重要(特征均衡性)
以文本分类为例
(1)样本:10000封邮件,每个邮件被标记为垃圾邮件或者非垃圾邮件
(2)分类目标:给定第10001封邮件,确定它是垃圾邮件还是非垃圾邮件
(3)方法:朴素贝叶斯
分析
(1)类别c:垃圾邮件
c
1
c_1
c1,非垃圾邮件
c
2
c_2
c2
(2)词汇表,两种建立方法:
a.使用现成的单词词典
b.将所有邮件中出现的单词都统计出来,得到词典
c.记单词数目为N
(3)将每个邮件m映射成纬度为N的向量x
若单词
w
i
w_i
wi在邮件m中出现过,则
x
i
=
1
x_i=1
xi=1,否则,
x
i
=
0
x_i=0
xi=0。即邮件的向量化:
m
→
(
x
1
,
x
2
,
.
.
.
x
N
)
m\to (x_1,x_2,...x_N)
m→(x1,x2,...xN)
(4)贝叶斯公式:
P
(
c
∣
x
)
=
P
(
x
∣
c
)
∗
P
(
c
)
/
P
(
x
)
P(c|x)=P(x|c)*P(c)/P(x)
P(c∣x)=P(x∣c)∗P(c)/P(x)
a.
P
(
c
1
∣
x
)
=
P
(
x
∣
c
1
)
∗
P
(
c
1
)
/
P
(
x
)
P(c_1|x)=P(x|c_1)*P(c_1)/P(x)
P(c1∣x)=P(x∣c1)∗P(c1)/P(x)
b.
P
(
c
2
∣
x
)
=
P
(
x
∣
c
2
)
∗
P
(
c
2
)
/
P
(
x
)
P(c_2|x)=P(x|c_2)*P(c_2)/P(x)
P(c2∣x)=P(x∣c2)∗P(c2)/P(x)
注意这里x是向量
分解
(1)
P
(
c
∣
x
)
=
P
(
x
∣
c
)
∗
P
(
c
)
/
P
(
x
)
P(c|x)=P(x|c)*P(c)/P(x)
P(c∣x)=P(x∣c)∗P(c)/P(x)
(2)
P
(
x
∣
c
)
=
P
(
x
1
,
x
2
.
.
.
x
N
∣
c
)
=
P
(
x
1
∣
c
)
∗
P
(
x
2
∣
c
)
.
.
.
P
(
x
N
∣
c
)
P(x|c)=P(x_1,x_2...x_N|c)=P(x_1|c)*P(x_2|c)...P(x_N|c)
P(x∣c)=P(x1,x2...xN∣c)=P(x1∣c)∗P(x2∣c)...P(xN∣c)
特征条件独立假设
(3)
P
(
x
)
=
P
(
x
1
,
x
2
,
.
.
.
,
x
N
)
=
P
(
x
1
)
∗
P
(
x
2
)
.
.
.
P
(
x
N
)
P(x)=P(x_1,x_2,...,x_N)=P(x_1)*P(x_2)...P(x_N)
P(x)=P(x1,x2,...,xN)=P(x1)∗P(x2)...P(xN)
特征独立假设
(4)带入公式:
P
(
c
∣
x
)
=
P
(
x
∣
c
)
∗
P
(
c
)
/
P
(
x
)
P(c|x)=P(x|c)*P(c)/P(x)
P(c∣x)=P(x∣c)∗P(c)/P(x)
(5)等式右侧各项的含义:
a.
P
(
x
i
∣
c
j
)
:
在
c
j
(
此
题
目
,
c
j
要
么
为
垃
圾
邮
件
1
,
要
么
为
非
垃
圾
邮
件
2
)
的
前
提
下
,
第
i
个
单
词
x
i
出
现
的
概
率
P(x_i|c_j):在c_j(此题目,c_j要么为垃圾邮件1,要么为非垃圾邮件2)的前提下,第i个单词x_i出现的概率
P(xi∣cj):在cj(此题目,cj要么为垃圾邮件1,要么为非垃圾邮件2)的前提下,第i个单词xi出现的概率
b.
P
(
x
i
)
:
P(x_i):
P(xi):在所有样本中,单词
x
i
x_i
xi出现的概率
c.
P
(
c
j
)
:
P(c_j):
P(cj):在所有样本中,邮件类别
c
j
c_j
cj出现的概率
拉普拉斯平滑
(1)
p
(
x
1
∣
c
1
)
p(x_1|c_1)
p(x1∣c1)是指的:在垃圾邮件
c
1
c_1
c1这个类别中,单词x1出现的概率
x
1
x_1
x1是待考察的邮件中的某个单词
(2)定义符号
n
1
:
n_1:
n1:在所有垃圾邮件中单词
x
1
x_1
x1出现的次数,如果
x
1
x_1
x1没有出现过,则
n
1
=
0
n_1=0
n1=0
n:属于
c
1
c_1
c1类的所有文档的出现过的单词总数目
(3)得到公式:
(4)拉普拉斯平滑:
其中,N是所有单词的数目,修正分母是为了保证概率和为1
(5)同理,以同样的平滑方案处理
p
(
x
1
)
p(x_1)
p(x1)
对朴素贝叶斯的思考
(1)拉普拉斯平滑能够避免0/0带来的算法异常
(2)要比较的是P(c1|x)和P(c2|x)的相对大小,而根据公式
P
(
c
∣
x
)
=
P
(
x
∣
c
)
∗
P
(
c
)
/
P
(
x
)
P(c|x)=P(x|c)*P(c)/P(x)
P(c∣x)=P(x∣c)∗P(c)/P(x),二者的分母都是除以P(x),实践时可以不计算该系数
(3)编程的限制:小数乘积下溢怎么办?
(4)问题:一个词在样本中出现多次,和一个词在样本中出现一次,形成的次向量相同
a.由0/1改成记数
(5)如何判断两个文档的距离
夹角余弦
(6)如何判定该分类器的正确率
交叉验证
贝叶斯网络
(1)把某个研究系统中涉及的随机变量,根据是否条件独立绘制在一个有向图中,就形成了贝叶斯网络
(2)贝叶斯网络(Bayesian Network),又称有向无环图模型(directed acyclic graphical model,DAG),是一种概率图模型,根据概率图的拓扑结构,考察一组随机变量{
X
1
,
X
2
.
.
.
X
n
X_1,X_2...X_n
X1,X2...Xn}及其n组条件概率分布的性质
(3)一般而言,贝叶斯网络的有向无环图中的节点表示随机变量,他们可以是可观察到的变量,或隐变量、未知参数等。连接两个节点的箭头代表此两个随机变量具有因果关系(或非条件独立)。若两个节点间以一个单箭头连接在一起,表示其中一个结点是“因”,另一个是“果”,两节点就会产生一个条件概率值
(4)每个结点在给定其直接前驱时,条件独立于其非后继
一个简单的贝叶斯网络
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)
全连接贝叶斯网络
每一对结点之间都有边连接
一个“正常”的贝叶斯网络
(1)有些边缺失
(2)直观上:a.x1和x2独立 b.x6和x7在x4给定的条件下独立
(3)x1,x2,…,x7的联合分布:
贝叶斯网络的形式化定义
(1)BN(G,
Θ
\Theta
Θ)
a.G:有向无环图
b.G的结点:随机变量
c.G的边:结点间的有向依赖
d.
Θ
\Theta
Θ:所有条件概率分布的参数集合
e.结点X的条件概率:P(X|parent(X))
P
(
S
,
C
,
B
,
X
,
D
)
=
P
(
S
)
P
(
C
∣
S
)
P
(
B
∣
S
)
P
(
X
∣
C
,
S
)
P
(
D
∣
C
,
B
)
P(S,C,B,X,D)=P(S)P(C|S)P(B|S)P(X|C,S)P(D|C,B)
P(S,C,B,X,D)=P(S)P(C∣S)P(B∣S)P(X∣C,S)P(D∣C,B)
(2)思考:需要多少参数才能确定上述网络呢?
a.每个结点所需参数的个数:结点的parent数目是M,结点和parent的可取值数目都是K:
K
M
∗
(
K
−
1
)
K^{M*}(K-1)
KM∗(K−1)
b.为什么?
c.考察结点的parent对该结点形成了多少种情况(条件分布)
特殊的贝叶斯网络
(1)结点形成一条链式网络,称作马尔科夫模型
A
i
+
1
只
与
A
i
有
关
,
与
A
1
,
.
.
.
,
A
i
−
1
无
关
A_{i+1}只与A_i有关,与A_1,...,A_{i-1}无关
Ai+1只与Ai有关,与A1,...,Ai−1无关
通过贝叶斯网络判定条件独立-1
(1)根据图模型,得:
P
(
a
,
b
,
c
)
=
P
(
c
)
∗
P
(
a
∣
c
)
∗
P
(
b
∣
c
)
P(a,b,c)=P(c)*P(a|c)*P(b|c)
P(a,b,c)=P(c)∗P(a∣c)∗P(b∣c)
(2)从而:
P
(
a
,
b
,
c
)
/
P
(
c
)
=
P
(
a
∣
c
)
∗
P
(
b
∣
c
)
P(a,b,c)/P(c)=P(a|c)*P(b|c)
P(a,b,c)/P(c)=P(a∣c)∗P(b∣c)
(3)而,
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,b,c)/P(c)
(4)得:
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)
(5)即:在c给定的条件下,a,b被阻断(blocked)是独立的
通过贝叶斯网络判定条件独立-2
(1)
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)
即:在c给定的条件下,a,b被阻断(blocked),是独立的
通过贝叶斯网络判定条件独立-3
在c未知的条件下,a,b被阻断(blocked),是独立的:head-to-head
HMM
(1)隐马尔科夫模型(HMM,Hidden Markov Model)可用于标注问题,在语音识别、NLP、生物信息、模式识别等领域被实践证明是有效的算法
(2)HMM是关于时序的概率模型,描述由一个隐藏的马尔科夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程
(3)隐马尔科夫模型随机生成的状态的序列,称为状态序列;每个状态生成一个观测,由此产生的观测随机序列,称为观测序列
a.序列的每个位置可看做是一个时刻
b.空间序列也可以使用该模型:如分析DNA
Markov Blanket
(1)一个结点的Markov Blanket是一个集合,在这个集合中的结点都在给定的条件下,该结点条件独立于其他所有结点
(2)即:一个结点的Markov Blanket 是它的parents,children以及spouses(孩子的其他parent)
贝叶斯网络的构建
(1)依次计算每个变量的D-separation的局部测试结果,综合每个结点得到贝叶斯网络
(2)算法过程:
a.选择变量的一个合理顺序:
X
1
,
X
2
,
.
.
.
,
X
n
X_1,X_2,...,X_n
X1,X2,...,Xn
b.对于i=1到n
在网络中添加
X
i
X_i
Xi结点
在
X
1
,
X
2
,
.
.
.
,
X
i
−
1
X_1,X_2,...,X_{i-1}
X1,X2,...,Xi−1中选择
X
i
X_i
Xi的父母,使得:
(3)这种构造方法,显然保证了全局的语义要求:
好吧,暂且到这里吧,迷迷糊糊懵懵懂懂