朴素贝叶斯 ( N a i v e (Naive (Naive B a y e s ) Bayes) Bayes)
文章目录
朴素贝叶斯法的学习和分类
基本方法
设输入空间
χ
⊆
R
n
\chi \subseteq R^n
χ⊆Rn为
n
n
n维向量的集合,输出空间为类标记集合
Y
=
{
c
1
,
c
2
,
c
K
}
Y = \{c_1,c_2,c_K\}
Y={c1,c2,cK}。输入为特征向量
x
∈
χ
x\in \chi
x∈χ ,输出为类标记
y
∈
Y
y\in Y
y∈Y。X和Y是定义在输入空间
χ
\chi
χ和输出空间
Y
Y
Y上的随机变量。
P
(
P(
P(X,Y
)
)
),是X和Y的联合概率分布。训练数据集为:
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋅
⋅
⋅
,
(
x
N
,
y
N
)
}
T=\{(x_1,y_1),(x_2,y_2),···,(x_N,y_N)\}
T={(x1,y1),(x2,y2),⋅⋅⋅,(xN,yN)}
是由
P
(
P(
P(X,Y
)
)
)独立同分布产生。
贝叶斯公式
设X和Y是定义在输入空间
χ
\chi
χ和输出空间
Y
Y
Y上的随机变量,则如下贝叶斯公式有:
P
(
Y
=
c
k
∣
X
=
x
)
=
P
(
Y
=
c
k
)
P
(
X
=
x
∣
Y
=
c
k
)
P
(
X
=
x
)
P(Y=c_k|X=x) = \frac{P(Y=c_k)P(X=x|Y=c_k)}{P(X=x)}
P(Y=ck∣X=x)=P(X=x)P(Y=ck)P(X=x∣Y=ck)
X为
n
n
n维向量,则上列式子可以写成:
P
(
Y
=
c
k
∣
X
=
x
)
=
P
(
Y
=
c
k
)
P
(
X
(
1
)
=
x
(
1
)
,
X
(
1
)
=
x
(
1
)
,
⋅
⋅
⋅
,
X
(
n
)
=
x
(
n
)
∣
Y
=
c
k
)
P
(
X
(
1
)
=
x
(
1
)
,
X
(
1
)
=
x
(
1
)
,
⋅
⋅
⋅
,
X
(
n
)
=
x
(
n
)
)
P(Y=c_k|X=x) = \frac{P(Y=c_k)P(X^{(1)}=x^{(1)},X^{(1)}=x^{(1)},···,X^{(n)}=x^{(n)}|Y=c_k)}{P(X^{(1)}=x^{(1)},X^{(1)}=x^{(1)},···,X^{(n)}=x^{(n)})}
P(Y=ck∣X=x)=P(X(1)=x(1),X(1)=x(1),⋅⋅⋅,X(n)=x(n))P(Y=ck)P(X(1)=x(1),X(1)=x(1),⋅⋅⋅,X(n)=x(n)∣Y=ck)
X(j)表示X的第j分量
朴素贝叶斯基本假设
假定输入的
n
n
n维特征向量每个维度上的取值相互独立,也即:
P
(
X
=
x
)
=
P
(
X
(
1
)
=
x
(
1
)
,
X
(
1
)
=
x
(
1
)
,
⋅
⋅
⋅
,
X
(
n
)
=
x
(
n
)
)
=
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
)
P(X=x)=P(X^{(1)}=x^{(1)},X^{(1)}=x^{(1)},···,X^{(n)}=x^{(n)})= \prod_{j=1}^nP(X^{(j)}=x^{(j)})
P(X=x)=P(X(1)=x(1),X(1)=x(1),⋅⋅⋅,X(n)=x(n))=j=1∏nP(X(j)=x(j))
所以上述贝叶斯公式可以改写为:
P
(
Y
=
c
k
∣
X
=
x
)
=
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
)
P(Y=c_k|X=x) = \frac{P(Y=c_k)\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)}{\prod_{j=1}^nP(X^{(j)}=x^{(j)})}
P(Y=ck∣X=x)=∏j=1nP(X(j)=x(j))P(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)
习惯上,我们把其中的
P
(
Y
=
c
k
)
P(Y=c_k)
P(Y=ck)称为先验概率,将
P
(
Y
=
c
k
∣
X
=
x
)
P(Y=c_k|X=x)
P(Y=ck∣X=x)称之为后验概率。
朴素贝叶斯分类器
可以根据上述的公式
P
(
Y
=
c
k
∣
X
=
x
)
=
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
)
P(Y=c_k|X=x) = \frac{P(Y=c_k)\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)}{\prod_{j=1}^nP(X^{(j)}=x^{(j)})}
P(Y=ck∣X=x)=∏j=1nP(X(j)=x(j))P(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)
来推算给定一个数据
X
=
x
X=x
X=x,他属于某个类
Y
=
c
k
Y=c_k
Y=ck的概率是
P
(
Y
=
c
k
∣
X
=
x
)
P(Y=c_k|X=x)
P(Y=ck∣X=x),这个概率可以根据训练集训练出来的模型给出。
损失函数最小
上面谈到对于给定的数据 X = x X=x X=x,要判断它属于的类别 Y = c k Y=c_k Y=ck,我们可以算出属于每个类别的概率,再选出概率最大的那个类别,我们有理由认为这个概率最大的类别就是它所属的类别**(极大似然法),而且对于给定的训练集分母是一个常数,只需要比较分子大小即可。接下来用损失函数最小**来证明这个结论:
假定选定0-1损失函数:
L
(
Y
,
f
(
X
)
)
=
{
1
,
Y
≠
f
(
X
)
0
,
Y
=
f
(
X
)
L(Y,f(X)) = \left\{ \begin{aligned} &1, &Y\neq f(X) \\ &0, &Y = f(X) \\ \end{aligned} \right.
L(Y,f(X))={1,0,Y=f(X)Y=f(X)
期望风险函数为:
R
e
x
p
(
f
)
=
E
[
L
(
Y
,
f
(
X
)
)
]
R_{exp}(f)=E[L(Y,f(X))]
Rexp(f)=E[L(Y,f(X))]
X和Y有联合分布
P
(
P(
P(X,Y
)
)
),所以根据取条件期望:
E
[
L
(
Y
,
f
(
X
)
)
]
=
E
χ
∑
k
=
1
K
L
(
c
K
,
y
)
P
(
c
k
∣
X
)
E[L(Y,f(X))] = E_\chi\sum_{k=1}^KL(c_K,y)P(c_k|X)\\
E[L(Y,f(X))]=Eχk=1∑KL(cK,y)P(ck∣X)
为了使得期望风险最小化,只需要对
X
=
x
X=x
X=x逐个极小化,由此可以得到:
f
(
x
)
=
a
r
g
m
i
n
y
∈
Y
∑
k
=
1
K
L
(
c
K
,
y
)
P
(
c
k
∣
X
=
x
)
=
a
r
g
m
i
n
y
∈
Y
∑
k
=
1
K
P
(
y
≠
c
k
∣
X
=
x
)
=
a
r
g
m
a
x
y
∈
Y
∑
k
=
1
K
P
(
y
=
c
k
∣
X
=
x
)
\begin{aligned} f(x) & = arg \ min_{y\in Y}\sum_{k=1}^KL(c_K,y)P(c_k|X=x)\\ & = arg \ min_{y\in Y}\sum_{k=1}^KP(y\neq c_k|X=x)\\ & = arg \ max_{y\in Y} \sum_{k=1}^KP(y= c_k|X=x)\\ \end{aligned}
f(x)=arg miny∈Yk=1∑KL(cK,y)P(ck∣X=x)=arg miny∈Yk=1∑KP(y=ck∣X=x)=arg maxy∈Yk=1∑KP(y=ck∣X=x)
所以损失函数极小化最后等价于后验概率最大化。
朴素贝叶斯法的参数估计
训练集极大似然估计
知道了应该利用训练集中的某些概率来对X进行分类,接下来看一下怎么利用训练集:
先验概率:
P
(
Y
=
c
k
)
=
∑
i
=
1
N
I
(
y
i
=
c
k
)
N
P(Y=c_k) = \frac{\sum_{i=1}^N I(y_i=c_k)}{N}
P(Y=ck)=N∑i=1NI(yi=ck)
也就是训练集中
Y
=
c
k
Y=c_k
Y=ck出现的频率(视作概率,可以通过极大似然估计得出)
条件概率:
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
=
∑
i
=
1
N
I
(
x
i
(
j
)
=
x
(
j
)
,
y
i
=
c
k
)
∑
i
=
1
N
I
(
y
i
=
c
k
)
P(X^{(j)}=x^{(j)}|Y=c_k)=\frac{\sum_{i=1}^NI(x_i^{(j)}=x^{(j)},y_i=c_k)}{\sum_{i=1}^N I(y_i=c_k)}
P(X(j)=x(j)∣Y=ck)=∑i=1NI(yi=ck)∑i=1NI(xi(j)=x(j),yi=ck)
也就是
y
i
=
c
k
y_i=c_k
yi=ck中出现
x
i
(
j
)
=
x
(
j
)
x_i^{(j)}=x^{(j)}
xi(j)=x(j)的频率(视为概率,可以通过极大似然估计得出)
学习分类算法
输入:训练数据 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋅ ⋅ ⋅ , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),···,(x_N,y_N)\} T={(x1,y1),(x2,y2),⋅⋅⋅,(xN,yN)},其中 x i = ( x i ( 1 ) , x i ( 2 ) , ⋅ ⋅ ⋅ , x i ( n ) ) x_i = (x_i^{(1)},x_i^{(2)},···,x_i^{(n)}) xi=(xi(1),xi(2),⋅⋅⋅,xi(n))为 n n n维向量, x i ( j ) ∈ { a j 1 , a j 2 . ⋅ ⋅ ⋅ , a j L } x_i^{(j)}\in \{a_{j1},a_{j2}.···,a_{jL}\} xi(j)∈{aj1,aj2.⋅⋅⋅,ajL}(第 j j j个维度有 L L L个取值), y i ∈ { c 1 , c 2 , ⋅ ⋅ ⋅ , c K } y_i\in \{c_1,c_2,···,c_K\} yi∈{c1,c2,⋅⋅⋅,cK};实例 x x x。
输出:实例 x x x所属的类别 y y y
-
计算先验概率以及条件概率:
P ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) N P(Y=c_k) = \frac{\sum_{i=1}^N I(y_i=c_k)}{N} P(Y=ck)=N∑i=1NI(yi=ck)P ( X ( j ) = a j l ∣ Y = c k ) = ∑ i = 1 N I ( x i ( j ) = a j l , y i = c k ) ∑ i = 1 N I ( y i = c k ) P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)}{\sum_{i=1}^N I(y_i=c_k)} P(X(j)=ajl∣Y=ck)=∑i=1NI(yi=ck)∑i=1NI(xi(j)=ajl,yi=ck)
-
对于给定的实例 x = { x ( 1 ) , x ( 2 ) , ⋅ ⋅ ⋅ , x ( n ) } x=\{x^{(1)},x^{(2)},···,x^{(n)}\} x={x(1),x(2),⋅⋅⋅,x(n)},计算:
P ( Y = c k ) ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k) P(Y=ck)j=1∏nP(X(j)=x(j)∣Y=ck)
3.确定实例
x
x
x的类别:
y
=
a
r
g
m
a
x
c
k
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
y = {arg\ max}_{c_k}P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k)
y=arg maxckP(Y=ck)j=1∏nP(X(j)=x(j)∣Y=ck)
eg: 给定一个表格确定
x
=
(
2
,
S
)
x=(2,S)
x=(2,S)所属的类,表中
X
(
1
)
,
X
(
2
)
X^{(1)},X^{(2)}
X(1),X(2)对应的取值集合为
A
1
=
{
1
,
2
,
3
,
4
}
,
A
2
=
{
S
,
M
,
L
}
A_1 = \{1,2,3,4\},A_2 = \{S,M,L\}
A1={1,2,3,4},A2={S,M,L},
Y
∈
{
−
1
,
1
}
Y\in\{-1,1\}
Y∈{−1,1}。
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
X ( 1 ) X^{(1)} X(1) | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 3 | 3 | 3 | 3 | 3 |
X ( 2 ) X^{(2)} X(2) | S | M | M | S | S | S | M | M | L | L | L | M | M | L | L |
Y Y Y | -1 | -1 | 1 | 1 | 1 | -1 | -1 | -1 | 1 | 1 | 1 | 1 | 1 | 1 | -1 |
根据上列的算法可以得出:
P ( Y = 1 ) = 9 15 , P ( Y = − 1 ) = 6 15 P(Y=1)=\frac{9}{15},P(Y=-1)=\frac{6}{15} P(Y=1)=159,P(Y=−1)=156
P ( X ( 1 ) = 1 ∣ Y = 1 ) = 2 9 , P ( X ( 1 ) = 2 ∣ Y = 1 ) = 3 9 , P ( X ( 1 ) = 3 ∣ Y = 1 ) = 4 9 , P ( X ( 1 ) = 4 ∣ Y = 1 ) = 0 P(X^{(1)}=1|Y=1)=\frac{2}{9} , P(X^{(1)}=2|Y=1)=\frac{3}{9},P(X^{(1)}=3|Y=1)=\frac{4}{9},P(X^{(1)}=4|Y=1)=0 P(X(1)=1∣Y=1)=92,P(X(1)=2∣Y=1)=93,P(X(1)=3∣Y=1)=94,P(X(1)=4∣Y=1)=0
P ( X ( 2 ) = S ∣ Y = 1 ) = 1 9 , P ( X ( 2 ) = M ∣ Y = 1 ) = 4 9 , P ( X ( 2 ) = L ∣ Y = 1 ) = 4 9 P(X^{(2)}=S|Y=1)=\frac{1}{9} , P(X^{(2)}=M|Y=1)=\frac{4}{9},P(X^{(2)}=L|Y=1)=\frac{4}{9} P(X(2)=S∣Y=1)=91,P(X(2)=M∣Y=1)=94,P(X(2)=L∣Y=1)=94
P ( X ( 1 ) = 1 ∣ Y = − 1 ) = 3 6 , P ( X ( 1 ) = 2 ∣ Y = − 1 ) = 2 6 , P ( X ( 1 ) = 3 ∣ Y = − 1 ) = 1 6 , P ( X ( 1 ) = 4 ∣ Y = − 1 ) = 0 P(X^{(1)}=1|Y=-1)=\frac{3}{6} , P(X^{(1)}=2|Y=-1)=\frac{2}{6},P(X^{(1)}=3|Y=-1)=\frac{1}{6},P(X^{(1)}=4|Y=-1)=0 P(X(1)=1∣Y=−1)=63,P(X(1)=2∣Y=−1)=62,P(X(1)=3∣Y=−1)=61,P(X(1)=4∣Y=−1)=0
P ( X ( 2 ) = S ∣ Y = − 1 ) = 3 6 , P ( X ( 2 ) = M ∣ Y = − 1 ) = 2 6 , P ( X ( 2 ) = L ∣ Y = − 1 ) = 1 6 P(X^{(2)}=S|Y=-1)=\frac{3}{6} , P(X^{(2)}=M|Y=-1)=\frac{2}{6},P(X^{(2)}=L|Y=-1)=\frac{1}{6} P(X(2)=S∣Y=−1)=63,P(X(2)=M∣Y=−1)=62,P(X(2)=L∣Y=−1)=61
对于给定的 x = ( 2 , S ) x=(2,S) x=(2,S),
P ( Y = 1 ∣ x ) = 9 15 3 9 1 9 = 1 45 P(Y=1|x)=\frac{9}{15}\frac{3}{9}\frac{1}{9}=\frac{1}{45} P(Y=1∣x)=1599391=451
P ( Y = − 1 ∣ x ) = 6 15 2 6 3 6 = 1 15 P(Y=-1|x)=\frac{6}{15}\frac{2}{6}\frac{3}{6}=\frac{1}{15} P(Y=−1∣x)=1566263=151
所以 x x x属于类别 y = − 1 y=-1 y=−1的可能性更高,输出-1
存在的问题
假如给定一个实例
x
=
{
4
,
S
}
x = \{4,S\}
x={4,S},那
x
x
x怎么分类呢?可以看到表中没有
X
(
1
)
=
4
X^{(1)}=4
X(1)=4 的样本,所以可能会因为训练集不够多引起的概率为0的情况,这个会影响到后验概率从而影响分类,为了避免这个问题我们一般采用贝叶斯估计。
P
λ
(
X
(
j
)
=
a
j
l
∣
Y
=
c
k
)
=
∑
i
=
1
N
[
I
(
x
i
(
j
)
=
a
j
l
,
y
i
=
c
k
)
+
λ
]
∑
i
=
1
N
I
(
y
i
=
c
k
)
+
S
j
λ
(
λ
≥
0
)
P_{\lambda}(X^{(j)}=a_{jl}|Y=c_k) = \frac{\sum_{i=1}^N[I(x_i^{(j)}=a_{jl},y_i=c_k)+\lambda]}{\sum_{i=1}^N I(y_i = c_k)+S_j\lambda} \ (\lambda ≥0)
Pλ(X(j)=ajl∣Y=ck)=∑i=1NI(yi=ck)+Sjλ∑i=1N[I(xi(j)=ajl,yi=ck)+λ] (λ≥0)
相当于在随机变量各个取值的频数上加一个正数
λ
\lambda
λ,为了每个维度和仍然为1,取
S
j
S_j
Sj为每个维度取值个数,则整体相对于极大似然估计,分母增加了
N
S
j
λ
NS_j\lambda
NSjλ,而分子对维度
j
j
j,对某一个
l
l
l,分子增加
N
λ
N\lambda
Nλ,而一共有
L
=
S
j
L=S_j
L=Sj个取值,所以分子也增加
N
S
j
λ
NS_j\lambda
NSjλ,总体和仍然为0,只不过避免了条件概率以及先验概率出现为0的情况。
特别的当 λ = 1 \lambda = 1 λ=1时,这时称之为拉普拉斯平滑,这也是我们最常用到的 λ \lambda λ的取值。
类似的,为了保证先验概率和为1,对先验概率也进行处理:
P
λ
(
Y
=
c
k
)
=
∑
i
=
1
N
I
(
y
i
=
c
k
)
+
λ
N
+
K
λ
P_\lambda(Y=c_k)=\frac{\sum_{i=1}^NI(y_i=c_k)+\lambda}{N+K\lambda}
Pλ(Y=ck)=N+Kλ∑i=1NI(yi=ck)+λ
其中,
K
K
K为
Y
Y
Y取值个数。
再来一次
根据上述问题的改进,用贝叶斯估计我们可以得到上述训练集的先验概率和条件概率:
P ( Y = 1 ) = 10 17 , P ( Y = − 1 ) = 7 17 P(Y=1)=\frac{10}{17},P(Y=-1)=\frac{7}{17} P(Y=1)=1710,P(Y=−1)=177
P ( X ( 1 ) = 1 ∣ Y = 1 ) = 3 13 , P ( X ( 1 ) = 2 ∣ Y = 1 ) = 4 13 , P ( X ( 1 ) = 3 ∣ Y = 1 ) = 5 13 , P ( X ( 1 ) = 4 ∣ Y = 1 ) = 1 13 P(X^{(1)}=1|Y=1)=\frac{3}{13} , P(X^{(1)}=2|Y=1)=\frac{4}{13},P(X^{(1)}=3|Y=1)=\frac{5}{13},P(X^{(1)}=4|Y=1)=\frac{1}{13} P(X(1)=1∣Y=1)=133,P(X(1)=2∣Y=1)=134,P(X(1)=3∣Y=1)=135,P(X(1)=4∣Y=1)=131
P ( X ( 2 ) = S ∣ Y = 1 ) = 2 12 , P ( X ( 2 ) = M ∣ Y = 1 ) = 5 12 , P ( X ( 2 ) = L ∣ Y = 1 ) = 5 12 P(X^{(2)}=S|Y=1)=\frac{2}{12} , P(X^{(2)}=M|Y=1)=\frac{5}{12},P(X^{(2)}=L|Y=1)=\frac{5}{12} P(X(2)=S∣Y=1)=122,P(X(2)=M∣Y=1)=125,P(X(2)=L∣Y=1)=125
P ( X ( 1 ) = 1 ∣ Y = − 1 ) = 4 10 , P ( X ( 1 ) = 2 ∣ Y = − 1 ) = 3 10 , P ( X ( 1 ) = 3 ∣ Y = − 1 ) = 2 10 , P ( X ( 1 ) = 4 ∣ Y = − 1 ) = 1 10 P(X^{(1)}=1|Y=-1)=\frac{4}{10} , P(X^{(1)}=2|Y=-1)=\frac{3}{10},P(X^{(1)}=3|Y=-1)=\frac{2}{10},P(X^{(1)}=4|Y=-1)=\frac{1}{10} P(X(1)=1∣Y=−1)=104,P(X(1)=2∣Y=−1)=103,P(X(1)=3∣Y=−1)=102,P(X(1)=4∣Y=−1)=101
P ( X ( 2 ) = S ∣ Y = − 1 ) = 4 9 , P ( X ( 2 ) = M ∣ Y = − 1 ) = 3 9 , P ( X ( 2 ) = L ∣ Y = − 1 ) = 2 9 P(X^{(2)}=S|Y=-1)=\frac{4}{9} , P(X^{(2)}=M|Y=-1)=\frac{3}{9},P(X^{(2)}=L|Y=-1)=\frac{2}{9} P(X(2)=S∣Y=−1)=94,P(X(2)=M∣Y=−1)=93,P(X(2)=L∣Y=−1)=92
对于给定的实例 x = ( 2 , S ) x=(2,S) x=(2,S):
P ( Y = 1 ∣ x ) = 10 17 4 13 2 12 = 20 663 P(Y=1|x)=\frac{10}{17}\frac{4}{13}\frac{2}{12}=\frac{20}{663} P(Y=1∣x)=1710134122=66320
P ( Y = − 1 ∣ x ) = 7 17 3 10 4 9 = 14 238 P(Y=-1|x)=\frac{7}{17}\frac{3}{10}\frac{4}{9}=\frac{14}{238} P(Y=−1∣x)=17710394=23814
所以 x x x还是属于 y = − 1 y=-1 y=−1的类别。