1. 概念
朴素贝叶斯是基于贝叶斯定理与特征条件独立性假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出 的联合概率分布;然后基于此模型,对于给定输入 x x ,利用贝叶斯定理求出后验概率最大的输出 .
2. 基本方法
使用朴素贝叶斯法分类时,对给定的输入x,我们想知道其属于
ck
c
k
的概率,即:
P(Y=ck|X=x)=P(Y=ck|X(1)=x(1),....,X(n)=x(n))
P
(
Y
=
c
k
|
X
=
x
)
=
P
(
Y
=
c
k
|
X
(
1
)
=
x
(
1
)
,
.
.
.
.
,
X
(
n
)
=
x
(
n
)
)
贝叶斯定理告诉我们:
P(A|B)=P(B|A)⋅P(A)P(B)
P
(
A
|
B
)
=
P
(
B
|
A
)
⋅
P
(
A
)
P
(
B
)
由此我们可以得到:
P(Y=ck|X=x)=P(X=x|Y=ck)⋅P(Y=ck)P(X=x)
P
(
Y
=
c
k
|
X
=
x
)
=
P
(
X
=
x
|
Y
=
c
k
)
⋅
P
(
Y
=
c
k
)
P
(
X
=
x
)
也就是说,只要我们知道
P(X=x|Y=ck),P(Y=ck)
P
(
X
=
x
|
Y
=
c
k
)
,
P
(
Y
=
c
k
)
以及
P(X=x)
P
(
X
=
x
)
,那么我们就可以求出P(Y=ck|X=x)的值.那么该如何获得这三个概率值呢?带着这个疑问,我们首先给出朴素贝叶斯法的条件独立性假设:
P(X=x|Y=ck)=P(X(1)=x(1),….,X(n)=x(n)|Y=ck)=∏nj=1P(X(j)=x(j)|Y=ck)
P
(
X
=
x
|
Y
=
c
k
)
=
P
(
X
(
1
)
=
x
(
1
)
,
…
.
,
X
(
n
)
=
x
(
n
)
|
Y
=
c
k
)
=
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
|
Y
=
c
k
)
这个假设告诉我们,每个类别的样本的各个特征之间是相互独立的,因此在计算的时候我们就可以将其拆成连乘的形式。由于这是一个较强的假设,朴素贝叶斯算法也由此得名。
接下来,我们将分别求出上文提到的三个概率: P(X=x|Y=ck) P ( X = x | Y = c k ) , P(Y=ck) P ( Y = c k ) 以及 P(X=x) P ( X = x )
假设训练数据集为:
T=(x1,y1),(x2,y2),....(xN,yN)
T
=
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
.
(
x
N
,
y
N
)
首先由上文我们已经知道:
P(X=x|Y=ck)==∏nj=1P(X(j)=x(j)|Y=ck)
P
(
X
=
x
|
Y
=
c
k
)
==
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
|
Y
=
c
k
)
假设在训练集T中,类别为
ck
c
k
的样本个数为
Nk
N
k
,在类别为
ck
c
k
的所有样本中
X(j)=x(j)
X
(
j
)
=
x
(
j
)
的样本个数为
njk
n
j
k
,那么.
P(X(j)=x(j)|Y=ck)=njkNk
P
(
X
(
j
)
=
x
(
j
)
|
Y
=
c
k
)
=
n
j
k
N
k
进一步:
P(X=x|Y=ck)=∏nj=1njkNk
P
(
X
=
x
|
Y
=
c
k
)
=
∏
j
=
1
n
n
j
k
N
k
最后,我们来求P(X=x)的值。
P(X=x)=∑kP(X=x,Y=ck)=∑kP(X=x|Y=ck)⋅P(Y=ck)
P
(
X
=
x
)
=
∑
k
P
(
X
=
x
,
Y
=
c
k
)
=
∑
k
P
(
X
=
x
|
Y
=
c
k
)
⋅
P
(
Y
=
c
k
)
即
P(X=x)=∑kP(Y=ck)∏nj=1P(X(j)=x(j)|Y=ck)
P
(
X
=
x
)
=
∑
k
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
|
Y
=
c
k
)
我们注意到,求解
P(Y=ck|X=x)
P
(
Y
=
c
k
|
X
=
x
)
时,我们给定一个输入x,对于不同的类别
ck
c
k
,P(X=x)的值是相同的,也就是说它的值不会影响我们对于输入实例属于某个类别的判定,因此我们只需设定
由此我们可以得到
P(Y=ck|X=x)=P(Y=ck)⋅∏nj=1P(X(j)=x(j)|Y=ck)
P
(
Y
=
c
k
|
X
=
x
)
=
P
(
Y
=
c
k
)
⋅
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
|
Y
=
c
k
)
对于给定的输入x,要知道其属于哪个类别,只需求出每个类别下的概率P(Y=ck|X=x),然后找出概率最大的类别,那么输入实例就属于这个类别。
3. 实验
类标记y的取值就两个:1或-1,要确定 x=(2,S)T x = ( 2 , S ) T 的类标记,我们只需求 P(Y=1|X=(2,S)T) P ( Y = 1 | X = ( 2 , S ) T ) 和 P(Y=−1|X=(2,S)T) P ( Y = − 1 | X = ( 2 , S ) T ) 的概率,然后比较两者大小即可确定。
P(Y=−1)=615
P
(
Y
=
−
1
)
=
6
15
P(Y=1)=915
P
(
Y
=
1
)
=
9
15
P(X(1)=2|Y=1)=39
P
(
X
(
1
)
=
2
|
Y
=
1
)
=
3
9
P(X(2)=S|Y=1)=19
P
(
X
(
2
)
=
S
|
Y
=
1
)
=
1
9
P(X(1)=2|Y=−1)=26
P
(
X
(
1
)
=
2
|
Y
=
−
1
)
=
2
6
P(X(2)=S|Y=−1)=36
P
(
X
(
2
)
=
S
|
Y
=
−
1
)
=
3
6
所以
P(Y=1|X=(2,S)T)=915⋅39⋅19=145
P
(
Y
=
1
|
X
=
(
2
,
S
)
T
)
=
9
15
⋅
3
9
⋅
1
9
=
1
4
5
P(Y=−1|X=(2,S)T)=615⋅26⋅36=115
P
(
Y
=
−
1
|
X
=
(
2
,
S
)
T
)
=
6
15
⋅
2
6
⋅
3
6
=
1
1
5
因为
P(Y=1|X=(2,S)T)<P(Y=−1|X=(2,S)T)
P
(
Y
=
1
|
X
=
(
2
,
S
)
T
)
<
P
(
Y
=
−
1
|
X
=
(
2
,
S
)
T
)
,
所以x=(2,S)T的类标记为-1。