朴素贝叶斯基本原理
朴素贝叶斯(navie Bayes) 是基于贝叶斯定理与特征条件独立假设的分类方法。
先来了解一下这两个基本概念。
(1)贝叶斯定理:
P
(
y
i
∣
x
)
=
P
(
x
,
y
i
)
P
(
x
)
=
P
(
y
i
)
P
(
x
∣
y
i
)
P
(
x
)
=
P
(
y
i
)
P
(
x
∣
y
i
)
∑
j
=
1
k
P
(
y
j
)
P
(
x
∣
y
j
)
P(y_i|x) = \frac{P(x,y_i)}{P(x)} = \frac{P(y_i) P(x|y_i)}{P(x)} = \frac{P(y_i) P(x|y_i)}{\sum_{j=1}^kP(y_j)P(x|y_j)}
P(yi∣x)=P(x)P(x,yi)=P(x)P(yi)P(x∣yi)=∑j=1kP(yj)P(x∣yj)P(yi)P(x∣yi)
其中:
p
(
y
)
p(y)
p(y) 为先验概率,
p ( x ∣ y ) p(x|y) p(x∣y) 称为似然,
p ( y ∣ x ) p(y|x) p(y∣x) 称为后验概率
(2)条件独立假设
P
(
X
=
x
∣
Y
=
c
k
)
=
P
(
X
(
1
)
,
…
,
X
(
n
)
∣
Y
=
c
k
)
=
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
P(X=x|Y=c_k)=P(X^{(1)},\dots,X^{(n)}|Y=c_k)\ =\prod^n_{j=1}P(X^{(j)}=x^{(j)}|Y=c_k)
P(X=x∣Y=ck)=P(X(1),…,X(n)∣Y=ck) =j=1∏nP(X(j)=x(j)∣Y=ck)
条件独立假设这里给定 Y Y Y的情况下:每一个 X i X_i Xi和其他的每个 X k X_k Xk是条件独立的。
为了更好的说明朴素贝叶斯的基本原理,我们声明一些基本符号:
X
⃗
\vec X
X是定义在输入空间上的随机向量,
x
⃗
\vec x
x 是具体的向量,
X
⃗
=
x
⃗
=
(
x
1
,
x
2
,
…
x
d
)
\vec X = \vec x = (x^1,x^2,\ldots x^d)
X=x=(x1,x2,…xd) 表示一西瓜的属性 ,如色泽,纹理,触感等d个不同的属性;
Y
Y
Y是定义在输出空间上的随机变量,
y
y
y 是具体的取值,
y
∈
{
c
1
,
c
2
,
…
c
k
}
y \in \{c_1,c_2,\ldots c_k\}
y∈{c1,c2,…ck} ,是数据的标签,如西瓜是好瓜还是坏瓜;
P
(
X
⃗
,
Y
)
P(\vec X,Y)
P(X,Y) 是
X
⃗
\vec X
X和
Y
Y
Y的联合分布。有训练数据集如下:
T
=
{
(
x
⃗
1
,
y
1
)
,
(
x
⃗
2
,
y
2
)
…
,
(
x
⃗
n
,
y
n
)
}
T = \{(\vec x_1, y_1),(\vec x_2, y_2)\ldots,(\vec x_n, y_n) \}
T={(x1,y1),(x2,y2)…,(xn,yn)}
注:我们规定
x
i
(
j
)
x_i^{(j)}
xi(j) 表示第
i
i
i个样本的 第
j
j
j个属性
我们希望通过西瓜的一些基本属性向量 X ⃗ \vec X X 对西瓜进行分类,判断西瓜是好瓜还是坏瓜,一个简单的二分类问题。接下来我们要介绍朴素贝叶斯是如何做到的。
第一步:朴素贝叶斯先学习先验概率分布:
假设样本独立同分布,则有:
P
(
Y
=
c
k
)
=
∑
i
=
1
N
I
(
y
i
=
c
k
)
N
,
k
=
1
,
2
…
K
P(Y=c_k)=\frac{\sum_{i=1}^N I(y_i = c_k)}{N} , \quad k =1,2\ldots K
P(Y=ck)=N∑i=1NI(yi=ck),k=1,2…K
其中
N
N
N表示样本总数,当
y
i
=
c
k
y_i = c_k
yi=ck 时,
I
(
y
i
=
c
k
)
=
1
I(y_i = c_k)=1
I(yi=ck)=1 。
如:在西瓜分类问题中,计算所有西瓜中好瓜的概率和坏瓜的概率。
P
(
Y
=
"
好
瓜
"
)
=
好
瓜
的
数
目
西
瓜
总
数
P(Y="好瓜") = \frac{好瓜的数目}{西瓜总数}
P(Y="好瓜")=西瓜总数好瓜的数目
第二步:学习条件(似然)分布:
P
(
X
=
x
∣
Y
=
c
k
)
=
P
(
X
1
=
x
1
,
X
2
=
x
2
…
X
n
=
x
n
∣
Y
=
c
k
)
P(X=x|Y=c_k) = P(X^{1}=x^{1},X^{2}=x^{2}\ldots X^{n}=x^{n}|Y=c_k)
P(X=x∣Y=ck)=P(X1=x1,X2=x2…Xn=xn∣Y=ck)
那么,这里需要学习多少个概率值呢?如果每个特征
x
(
j
)
x^{(j)}
x(j) 有
S
j
S_j
Sj 个取值,
j
=
1
,
2
…
n
j = 1,2 \ldots n
j=1,2…n ,
Y
Y
Y 的取值有
K
K
K 个,那么需要计算的概率数一共是
K
∏
j
=
1
n
S
j
K \prod^n_{j=1} S_j
K∏j=1nSj 个。
根据条件独立假设则有:
P
(
X
=
x
∣
Y
=
c
k
)
=
P
(
X
1
=
x
1
,
X
2
=
x
2
…
X
n
=
x
n
∣
Y
=
c
k
)
=
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
\begin{aligned} P(X=x|Y=c_k) &= P(X^{1}=x^{1},X^{2}=x^{2}\ldots X^{n}=x^{n}|Y=c_k) \\ &=\prod^n_{j=1}P(X^{(j)}=x^{(j)}|Y=c_k) \end{aligned}
P(X=x∣Y=ck)=P(X1=x1,X2=x2…Xn=xn∣Y=ck)=j=1∏nP(X(j)=x(j)∣Y=ck)
引入条件独立假设,这里需要学习的概率值个数是
K
∑
j
=
1
n
S
j
K \sum^n_{j=1} S_j
K∑j=1nSj 个。
那么如何求解一个 P ( X ( j ) = x ( j ) ∣ Y = c k ) P(X^{(j)}=x^{(j)}|Y=c_k) P(X(j)=x(j)∣Y=ck)呢?
假设第
j
j
j 个特征
x
(
j
)
x^{(j)}
x(j) 的取值集合为
{
a
j
1
,
a
j
2
…
,
a
j
S
j
}
\{a_{j1},a_{j2}\ldots,a_{jS_j} \}
{aj1,aj2…,ajSj},则有:
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}^N I(x_i^{(j)}=a_{(jl)},y_i = c_k)}{\sum_{i=1}^N I(y_i = c_k)}
P(X(j)=a(jl)∣Y=ck)=∑i=1NI(yi=ck)∑i=1NI(xi(j)=a(jl),yi=ck)
j
=
1
,
2
…
,
n
;
l
=
1
,
2
…
,
S
j
;
j
=
1
,
2
…
,
K
j = 1,2\ldots,n;l = 1,2\ldots,S_j;j = 1,2\ldots,K
j=1,2…,n;l=1,2…,Sj;j=1,2…,K
如,计算西瓜属性中色泽=“乌黑”这一特征的分布:
P
(
色
泽
=
“
乌
黑
”
∣
Y
=
“
好
瓜
”
)
=
既
是
好
瓜
同
时
又
色
泽
乌
黑
的
西
瓜
的
个
数
好
瓜
总
数
P(色泽=“乌黑”|Y=“好瓜”) = \frac{既是好瓜同时又色泽乌黑的西瓜的个数}{好瓜总数}
P(色泽=“乌黑”∣Y=“好瓜”)=好瓜总数既是好瓜同时又色泽乌黑的西瓜的个数
P
(
色
泽
=
“
乌
黑
”
∣
Y
=
“
坏
瓜
”
)
=
既
是
坏
瓜
同
时
又
色
泽
乌
黑
的
西
瓜
的
个
数
坏
瓜
总
数
P(色泽=“乌黑”|Y=“坏瓜”) = \frac{既是坏瓜同时又色泽乌黑的西瓜的个数}{坏瓜总数}
P(色泽=“乌黑”∣Y=“坏瓜”)=坏瓜总数既是坏瓜同时又色泽乌黑的西瓜的个数
条件独立假设即用于分类的特征在确定类的前提下都是独立的,这一假设使得朴素贝叶斯变得简单,但有时会牺牲一定的分类准确率。
第三步:计算后验分布 P ( Y = c k ∣ X ⃗ = x ⃗ ) P(Y=c_k| \vec X = \vec x) P(Y=ck∣X=x) :
计算后验根据贝叶斯定理进行:
P
(
Y
=
c
k
∣
X
⃗
=
x
⃗
)
=
P
(
Y
=
c
k
,
X
⃗
=
x
⃗
)
p
(
X
⃗
=
x
⃗
)
=
P
(
Y
=
c
k
)
P
(
X
⃗
=
x
⃗
∣
Y
=
c
k
)
∑
k
=
1
K
P
(
Y
=
c
k
)
P
(
X
⃗
=
x
⃗
∣
Y
=
c
k
)
\begin{aligned} P(Y=c_k| \vec X = \vec x) &=\frac{P(Y=c_k,\vec X = \vec x)}{p(\vec X = \vec x)} \\ &= \frac{P(Y=c_k)P(\vec X = \vec x|Y=c_k)}{\sum_{k=1}^K P(Y=c_k)P(\vec X = \vec x|Y=c_k)} \end{aligned}
P(Y=ck∣X=x)=p(X=x)P(Y=ck,X=x)=∑k=1KP(Y=ck)P(X=x∣Y=ck)P(Y=ck)P(X=x∣Y=ck)
结合第二步学习到的似然概率,则有:
P
(
Y
=
c
k
∣
X
⃗
=
x
⃗
)
=
P
(
Y
=
c
k
)
P
(
X
⃗
=
x
⃗
∣
Y
=
c
k
)
∑
k
=
1
K
P
(
Y
=
c
k
)
P
(
X
⃗
=
x
⃗
∣
Y
=
c
k
)
=
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
∑
k
=
1
K
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
\begin{aligned} P(Y=c_k| \vec X = \vec x) &= \frac{P(Y=c_k)P(\vec X = \vec x|Y=c_k)}{\sum_{k=1}^K P(Y=c_k)P(\vec X = \vec x|Y=c_k)} \\ \\ &= \frac{P(Y=c_k)\prod^n_{j=1}P(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_{k=1}^K P(Y=c_k)\prod^n_{j=1}P(X^{(j)}=x^{(j)}|Y=c_k)} \end{aligned}
P(Y=ck∣X=x)=∑k=1KP(Y=ck)P(X=x∣Y=ck)P(Y=ck)P(X=x∣Y=ck)=∑k=1KP(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)P(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)
这就是朴素贝叶斯的基本公式。在好瓜与坏瓜的二分类任务中,我们可以计算,给定输入
x
⃗
\vec x
x 我们可以计算好瓜的概率
P
(
Y
=
c
1
∣
X
⃗
=
x
⃗
)
P(Y=c_1| \vec X = \vec x)
P(Y=c1∣X=x),再计算坏瓜的概率
P
(
Y
=
c
2
∣
X
⃗
=
x
⃗
)
P(Y=c_2| \vec X = \vec x)
P(Y=c2∣X=x) 二者中大者为最终结果。由此,朴素贝叶斯的分类器可表示为:
P
(
Y
=
c
k
∣
X
⃗
=
x
⃗
)
=
arg
max
c
k
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
∑
k
=
1
K
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
P(Y=c_k| \vec X = \vec x) = \arg \max\limits_{c_k} \frac{P(Y=c_k)\prod^n_{j=1}P(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_{k=1}^K P(Y=c_k)\prod^n_{j=1}P(X^{(j)}=x^{(j)}|Y=c_k)}
P(Y=ck∣X=x)=argckmax∑k=1KP(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)P(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)
因为上式中的分母对所有的
c
k
c_k
ck 都是相同的,所以
y
=
P
(
Y
=
c
k
∣
X
⃗
=
x
⃗
)
=
arg
max
c
k
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
y = P(Y=c_k| \vec X = \vec x) = \arg \max\limits_{c_k} P(Y=c_k)\prod^n_{j=1}P(X^{(j)}=x^{(j)}|Y=c_k)
y=P(Y=ck∣X=x)=argckmaxP(Y=ck)j=1∏nP(X(j)=x(j)∣Y=ck)
总结一下以上步骤:
说明以下两点:
(1) 似然概率 P ( X = x ∣ Y = c k ) P(X=x|Y=c_k) P(X=x∣Y=ck) 可以理解为在给定类别 Y = c k Y = c_k Y=ck 的前提下,分析当前类的数据具有什么样的性质特点,即朴素贝叶斯在对每一类数据的属性进行学习,形成一个个类的模板。
(2) 模板学习结束以后,后验概率上场 P ( Y = c k ∣ X ⃗ = x ⃗ ) P(Y=c_k| \vec X = \vec x) P(Y=ck∣X=x),给定一个个样本的属性 x ⃗ \vec x x ,然后到模板中去匹配,匹配度最高的为其类别。
为什么后验概率在最大化
那么,为什么匹配度最高的为其最终类别,也就是为什么后验概率在最大化者为其最终类别? 我们从期望风险最小化的角度来详述。
我们假设选择0-1 损失作为损失函数:
L
(
Y
,
f
(
X
⃗
)
)
=
{
1
,
Y
≠
f
(
X
⃗
)
0
,
Y
=
f
(
X
⃗
)
L(Y,f(\vec X)) = \left \{ \begin{array}{lr} 1, Y \neq f(\vec X) \\0 , Y = f(\vec X) \end{array} \right.
L(Y,f(X))={1,Y=f(X)0,Y=f(X)
f
(
X
⃗
)
f(\vec X )
f(X) 是分类决策函数。此时,期望风险函数(对损失函数求希望)为:
R
e
x
p
(
f
)
=
E
[
L
(
Y
,
f
(
X
⃗
)
)
]
R_{exp}(f) = E[L(Y,f(\vec X))]
Rexp(f)=E[L(Y,f(X))]
期望是对联合分布
P
(
X
⃗
,
Y
)
P(\vec X, Y)
P(X,Y) 取的,所以条件期望为:
R
e
x
p
(
f
)
=
E
X
E
Y
[
L
(
c
k
,
f
(
X
⃗
)
)
]
P
(
c
k
,
X
⃗
)
=
E
X
∑
k
=
1
K
[
L
(
c
k
,
f
(
X
⃗
)
)
]
P
(
c
k
∣
X
⃗
)
R_{exp}(f) = E_X E_Y[L(c_k,f(\vec X))]P(c_k,\vec X)=E_X \sum_{k=1}^K[L(c_k,f(\vec X))]P(c_k|\vec X)
Rexp(f)=EXEY[L(ck,f(X))]P(ck,X)=EXk=1∑K[L(ck,f(X))]P(ck∣X)
∑
k
=
1
K
[
L
(
c
k
,
f
(
X
⃗
)
)
]
P
(
c
k
∣
X
⃗
)
\sum_{k=1}^K[L(c_k,f(\vec X))]P(c_k|\vec X)
∑k=1K[L(ck,f(X))]P(ck∣X) 为在
X
⃗
=
x
⃗
\vec X=\vec x
X=x时的y的条件期望。
为了使期望风险最小化,只需对
X
⃗
=
x
⃗
\vec X = \vec x
X=x 逐个极小化,所以有:
f
(
x
⃗
)
=
arg
min
y
∈
Y
∑
k
=
1
K
L
(
c
k
;
y
)
P
(
c
k
∣
X
⃗
=
x
⃗
)
=
arg
min
y
∈
Y
∑
k
=
1
K
P
(
y
≠
c
k
∣
X
⃗
=
x
⃗
)
当
y
=
c
k
时
,
L
(
c
k
;
y
)
=
0.
=
arg
min
y
∈
Y
(
1
−
P
(
y
≠
c
k
∣
X
⃗
=
x
⃗
)
)
=
arg
max
y
∈
Y
P
(
y
=
c
k
∣
X
⃗
=
x
⃗
)
\begin{aligned} f(\vec x ) &= \arg \min_{y \in Y} \sum_{k=1}^KL(c_k;y)P(c_k|\vec X = \vec x) \\ &= \arg \min_{y \in Y} \sum_{k=1}^KP(y \neq c_k|\vec X = \vec x) \qquad 当y = c_k时,L(c_k;y)=0.\\ &=\arg \min_{y \in Y} (1-P(y \neq c_k|\vec X = \vec x) ) \\ &=\arg \max_{y \in Y}P(y=c_k|\vec X = \vec x) \end{aligned}
f(x)=argy∈Ymink=1∑KL(ck;y)P(ck∣X=x)=argy∈Ymink=1∑KP(y=ck∣X=x)当y=ck时,L(ck;y)=0.=argy∈Ymin(1−P(y=ck∣X=x))=argy∈YmaxP(y=ck∣X=x)
这就是后验概率最大化的准则。
实例—学习一个贝叶斯分类器
要求从如下数据集中学习一个分类器,并确定 x = ( 2 , S ) T x=(2,S)^T x=(2,S)T 的类别 y y y ,表中 X ( 1 ) , X ( 1 ) X^{(1)},X^{(1) } X(1),X(1) 为特征,取值集合分别为 A 1 = { 1 , 2 , 3 } , A 2 = { S , M , L } A_1 = \{1,2,3\},A_2=\{S,M,L\} A1={1,2,3},A2={S,M,L} , Y Y Y 为类标记, Y = { 1 , − 1 } Y = \{1,-1\} Y={1,−1}
第一步:学习先验概率分布
P
(
Y
=
1
)
=
9
15
P
(
Y
=
−
1
)
=
6
15
P(Y=1) = \frac{9}{15} \qquad P(Y=-1) = \frac{6}{15}
P(Y=1)=159P(Y=−1)=156
第二步:学习条件(似然)分布:
计算之前,我们先考虑一共需要计算多少个值?
上文已经提过一共是
K
∑
j
=
1
n
S
j
=
2
×
(
3
+
3
)
=
12
K \sum^n_{j=1} S_j = 2\times(3+ 3)=12
K∑j=1nSj=2×(3+3)=12 个。
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
(
2
)
=
S
∣
Y
=
1
)
=
1
9
P
(
X
(
2
)
=
M
∣
Y
=
1
)
=
2
6
P
(
X
(
2
)
=
L
∣
Y
=
1
)
=
1
6
P
(
X
(
1
)
=
1
∣
Y
=
−
1
)
=
3
6
P
(
X
(
1
)
=
2
∣
Y
=
−
1
)
=
3
6
P
(
X
(
1
)
=
3
∣
Y
=
−
1
)
=
4
6
P
(
X
(
2
)
=
S
∣
Y
=
−
1
)
=
3
6
P
(
X
(
2
)
=
M
∣
Y
=
−
1
)
=
2
6
P
(
X
(
2
)
=
L
∣
Y
=
−
1
)
=
1
6
\begin{aligned} &P(X^{(1)} = 1|Y=1) = \frac{2}{9} \qquad P(X^{(1)} = 2|Y=1) = \frac{3}{9} \qquad P(X^{(1)} =3|Y=1) = \frac{4}{9} \\ &P(X^{(2)} = S|Y=1) = \frac{1}{9} \qquad P(X^{(2)} = M|Y=1) = \frac{2}{6} \qquad P(X^{(2)} =L|Y=1) = \frac{1}{6} \\ &P(X^{(1)} = 1|Y=-1) = \frac{3}{6} \qquad P(X^{(1)} = 2|Y=-1) = \frac{3}{6} \qquad P(X^{(1)} =3|Y=-1) = \frac{4}{6} \\ &P(X^{(2)} = S|Y=-1) = \frac{3}{6} \qquad P(X^{(2)} = M|Y=-1) = \frac{2}{6} \qquad P(X^{(2)} = L|Y=-1) = \frac{1}{6} \\ \end{aligned}
P(X(1)=1∣Y=1)=92P(X(1)=2∣Y=1)=93P(X(1)=3∣Y=1)=94P(X(2)=S∣Y=1)=91P(X(2)=M∣Y=1)=62P(X(2)=L∣Y=1)=61P(X(1)=1∣Y=−1)=63P(X(1)=2∣Y=−1)=63P(X(1)=3∣Y=−1)=64P(X(2)=S∣Y=−1)=63P(X(2)=M∣Y=−1)=62P(X(2)=L∣Y=−1)=61
第三步:对于给定的
x
⃗
=
(
2
,
S
)
T
\vec x = (2,S)^T
x=(2,S)T计算后验分布:
P
(
Y
=
1
)
P
(
X
(
1
)
=
2
∣
Y
=
1
)
P
(
X
(
2
)
=
S
∣
Y
=
1
)
=
9
15
×
3
9
×
1
9
=
1
45
P
(
Y
=
−
1
)
P
(
X
(
1
)
=
2
∣
Y
=
−
1
)
P
(
X
(
2
)
=
S
∣
Y
=
−
1
)
=
6
15
×
2
6
×
3
6
=
1
15
\begin{aligned} &P(Y=1)P(X^{(1)} = 2|Y=1)P(X^{(2)} = S|Y=1)= \frac{9}{15}\times\frac{3}{9}\times\frac{1}{9} = \frac{1}{45}\\ &P(Y=-1)P(X^{(1)} = 2|Y=-1)P(X^{(2)} = S|Y=-1)= \frac{6}{15}\times\frac{2}{6}\times\frac{3}{6} = \frac{1}{15} \end{aligned}
P(Y=1)P(X(1)=2∣Y=1)P(X(2)=S∣Y=1)=159×93×91=451P(Y=−1)P(X(1)=2∣Y=−1)P(X(2)=S∣Y=−1)=156×62×63=151
取最大值,所以
y
=
−
1
y=-1
y=−1
拉普拉斯修正
回顾计算似然概率:
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
)
\begin{aligned} P(X^{(j)}=a_{(jl)}|Y=c_k) = \frac{\sum_{i=1}^N I(x_i^{(j)}=a_{(jl)},y_i = c_k)}{\sum_{i=1}^N I(y_i = c_k)} \end{aligned}
P(X(j)=a(jl)∣Y=ck)=∑i=1NI(yi=ck)∑i=1NI(xi(j)=a(jl),yi=ck)
存在一个问题,如果某类样本的某个特征没有出现过,会使得概率值为0,这会影响到后验概率的计算结果,使得分类产生偏差。因此,我们引入平滑,使得似然概率恒大于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
λ
\begin{aligned} P(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} \end{aligned}
P(X(j)=a(jl)∣Y=ck)=∑i=1NI(yi=ck)+Sjλ∑i=1NI(xi(j)=a(jl),yi=ck)+λ
注:
λ
≥
0
\lambda \geq 0
λ≥0,常取
λ
=
1
\lambda = 1
λ=1,此时,称为拉普拉斯平滑
同样的先验概率也引入拉普拉斯平滑:
P
(
Y
=
c
k
)
=
∑
i
=
1
N
I
(
y
i
=
c
k
)
+
λ
N
+
K
λ
P(Y=c_k)=\frac{\sum_{i=1}^N I(y_i = c_k)+\lambda}{N+K\lambda}
P(Y=ck)=N+Kλ∑i=1NI(yi=ck)+λ
优缺点
朴素贝叶斯的优点有4个,分别是:
- 朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。
- 对缺失数据不太敏感,算法也比较简单,常用于文本分类。
- 分类准确度高,速度快。
- 对小规模的数据表现很好,能处理多分类任务,适合增量式训练,当数据量超出内存时,我们可以一批批的去增量训练(朴素贝叶斯在训练过程中只需要计算各个类的概率和各个属性的类条件概率,这些概率值可以快速地根据增量数据进行更新,无需重新全量计算)。
朴素贝叶斯的缺点有3个,分别是:
-
对训练数据的依赖性很强,如果训练数据误差较大,那么预测出来的效果就会不佳。
-
理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。
但是在实际中,因为朴素贝叶斯“朴素”的特点,导致在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。
-
需要知道先验概率,且先验概率很多时候是基于假设或者已有的训练数据所得的,这在某些时候可能会因为假设先验概率的原因出现分类决策上的错误。