要了解朴素贝叶斯学习算法,我们先从贝叶斯决策论说起。
贝叶斯决策论
贝叶斯决策论是一种在概率框架下实施决策的基本方法,通过概率计算来训练学习模型,其基本思想非常简单。
具体来说,假设有N种可能的类别标记,即
Y={c1,c2,c3,…,cN}
Y
=
{
c
1
,
c
2
,
c
3
,
…
,
c
N
}
,
λij
λ
i
j
是一个将真实标记为
cj
c
j
的样本误标记为
ci
c
i
所产生的损失,基于后验概率
P(ci|x⃗ )
P
(
c
i
|
x
→
)
可获得将样本
x⃗
x
→
分类为
ci
c
i
所产生的期望损失,即在样本
x⃗
x
→
上产生的“风险条件”:
我们的任务是,找到一个判断准则 h:X→Y h : X → Y 以最小化总体风险。
贝叶斯判断准则:为最小化总体风险,只需要在每个样本上选择那个能使条件风险 R(c|x⃗ ) R ( c | x → ) 最小的标记类别,即
若目标是最小化分类错误率,则误判损失
λij
λ
i
j
可写为:
此时,条件风险为 R(c|x⃗ )=1−P(c|x⃗ ) R ( c | x → ) = 1 − P ( c | x → ) ,于是,最小化分类错误率的贝叶斯最优分类器为
即对每个样本 x⃗ x → ,选择能使后验概率 P(c|x⃗ ) P ( c | x → ) 最大的标记类别。
基于贝叶斯定理, P(c|x⃗ ) P ( c | x → ) 可写为
可以看出,对于一个特定的样本 x⃗ x → ,其分类结果只与 P(c) P ( c ) 和 P(x⃗ |c) P ( x → | c ) 有关,此时问题便转化为通过训练集求出 P(c) P ( c ) 和 P(x⃗ |c) P ( x → | c ) ,不同的求法便产生了不同的学习算法。
朴素贝叶斯
- 对于类先验概率
P(c)
P
(
c
)
,直观上可以通过
P(c)=|Dc||D| P ( c ) = | D c | | D |来求。
- 对于样本 x⃗ x → 的类条件概率 P(x⃗ |c) P ( x → | c ) ,由于类条件概率 P(x⃗ |c) P ( x → | c ) 是所有属性上的联合概率,当样本维度增加时,计算复杂度呈指数级增长,同时也难以从有限的训练样本直接估计得出。
因此,朴素贝叶斯分类器采用属性条件独立性假设:对已知类别,假设所有属性相互独立。在此假设下,
此时,朴素贝叶斯分类器的表达式为
注意事项
- 在具体问题中,很有可能出现
P(xi|c)=0
P
(
x
i
|
c
)
=
0
的情形,此时,便得到
P(c)∏di=1P(xi|c)=0
P
(
c
)
∏
i
=
1
d
P
(
x
i
|
c
)
=
0
,显然,属性
xi
x
i
中未出现的属性值抹去了其他属性携带的信息,这是不合理的,因此常用“拉普拉斯修正”进行改进。令N表示训练集D中可能的类别数,
Ni
N
i
表示第i个属性可能的取值数,则有
P^(c)=|Dc|+1|D|+N P ^ ( c ) = | D c | + 1 | D | + NP^(xi|c)=|Dc,xi|+1|Dc|+Ni P ^ ( x i | c ) = | D c , x i | + 1 | D c | + N i“拉普拉斯修正”实质上假设了属性值与类别均匀分布。
- 可以看到,结果是一个连乘公式,且对于任意
1≤i≤d
1
≤
i
≤
d
,均有
P(xi|c)∈(0,1]
P
(
x
i
|
c
)
∈
(
0
,
1
]
,当
d
d
较大时,结果可能出现溢出。因此,常对其取log进行运算,公式变为
hnb(x⃗ )=argmaxc∈Y(logP(c)+∑i=1dlogP(xi|c)) h n b ( x → ) = a r g m a x c ∈ Y ( log P ( c ) + ∑ i = 1 d log P ( x i | c ) )
理论结合实践。为此,我编写了朴素贝叶斯方法的垃圾邮件分类器,适合初学者使用。