文章目录
引言
朴素贝叶斯多用于分类问题,实现简单,并且学习和预测的效率都很高。而贝叶斯作为朴素贝叶斯的基础这里就不过多介绍了。
P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ) P(A|B)={\frac{P(B|A)P(A)}{P(B)}} P(A∣B)=P(B)P(B∣A)P(A)
朴素贝叶斯
给定训练集 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),设类别可选数目为K,即 c 1 , c 2 , . . . , c K c_1,c_2,...,c_K c1,c2,...,cK,特征维度为m,即 x i = ( x i 1 , x i 2 , . . . x i m ) x_i=(x_i^1,x_i^2,...x_i^m) xi=(xi1,xi2,...xim),第j维的特征可取值数目为 S j S_j Sj,分别为 a j 1 , a j 2 , . . . , a j S j a_j^1,a_j^2,...,a_j^{S_j} aj1,aj2,...,ajSj。
这里的描述比较抽象,我用一个简单的例子来表示:
这里是统计学习方法p50页的例题,这里我不解答,而是针对里面的内容来简单的表示上面的描述。
-
可选数目K就是题目中的Y的类别数也就是2, c 1 , c 2 , . . . , c K c_1,c_2,...,c_K c1,c2,...,cK可以具体表示为-1和1。
-
特征维度m对应题目就是 x = ( 2 , S ) T x=(2,S)^T x=(2,S)T,此处m=2有两个维度,对应了表格中的 X ( 1 ) X^{(1)} X(1)和 X ( 2 ) X^{(2)} X(2)。
-
特征可取值数目 S j S_j Sj 就是具体每个特征可能的取值,题目中 X ( 1 ) X^{(1)} X(1)就三个取值1,2,3,因此 S 1 S_1 S1就为3。
a j 1 , a j 2 , . . . , a j S j a_j^1,a_j^2,...,a_j^{S_j} aj1,aj2,...,ajSj对应了每个取值,此处 a 1 1 = 1 , a 1 2 = 2 , a 1 3 = 3 a_1^1=1,a_1^2=2,a_1^3=3 a11=1,a12=2,a13=3。对于 X ( 2 ) X^{(2)} X(2)来说 a 1 1 = S , a 1 2 = M , a 1 3 = L a_1^1=S,a_1^2=M,a_1^3=L a11=S,a12=M,a13=L。
而我们的目标就是知道x的数据,将x分到正确的类别中。
在有了上面的描述后,我们可以得到以下的先验概率和条件概率:
先验概率为:
P
(
Y
=
c
k
)
,
k
=
1
,
2
,
.
.
.
,
K
P(Y=c_k),k=1,2,...,K
P(Y=ck),k=1,2,...,K
条件概率为:
P
(
X
=
x
∣
Y
=
c
k
)
=
P
(
X
1
=
x
1
,
X
2
=
x
2
,
.
.
.
,
X
m
=
x
m
∣
Y
=
c
k
)
,
k
=
1
,
2
,
.
.
.
,
K
P(X=x|Y=c_k)=P(X^1=x^1,X^2=x^2,...,X^m=x^m|Y=c_k),k=1,2,...,K
P(X=x∣Y=ck)=P(X1=x1,X2=x2,...,Xm=xm∣Y=ck),k=1,2,...,K
因此也就得到了联合概率:
p
(
X
=
x
,
Y
=
c
k
)
=
P
(
Y
=
c
k
)
P
(
X
=
x
∣
Y
=
c
k
)
p(X=x,Y=c_k)=P(Y=c_k)P(X=x|Y=c_k)
p(X=x,Y=ck)=P(Y=ck)P(X=x∣Y=ck)
为了降低模型的复杂度,朴素贝叶斯作了条件独立性的假设:
P
(
X
=
x
∣
Y
=
c
k
)
=
P
(
X
1
=
x
1
,
X
2
=
x
2
,
.
.
.
,
X
m
=
x
m
∣
Y
=
c
k
)
=
∏
j
=
1
m
P
(
X
j
=
x
j
∣
Y
=
c
k
)
P(X=x|Y=c_k)=P(X^1=x^1,X^2=x^2,...,X^m=x^m|Y=c_k) \\=\prod_{j=1}^mP(X^j=x^j|Y=c_k)
P(X=x∣Y=ck)=P(X1=x1,X2=x2,...,Xm=xm∣Y=ck)=j=1∏mP(Xj=xj∣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
(
X
=
x
,
Y
=
c
k
)
P
(
X
=
x
)
=
P
(
Y
=
c
k
)
P
(
X
=
x
∣
Y
=
c
k
)
P
(
X
=
x
)
=
P
(
Y
=
c
k
)
∏
j
=
1
m
P
(
X
j
=
x
j
∣
Y
=
c
k
)
P
(
X
=
x
)
P(Y=c_k|X=x)=\frac{p(X=x,Y=c_k)}{P(X=x)} \\=\frac{P(Y=c_k)P(X=x|Y=c_k)}{P(X=x)} \\=\frac{P(Y=c_k)\prod_{j=1}^mP(X^j=x^j|Y=c_k)}{P(X=x)}
P(Y=ck∣X=x)=P(X=x)p(X=x,Y=ck)=P(X=x)P(Y=ck)P(X=x∣Y=ck)=P(X=x)P(Y=ck)∏j=1mP(Xj=xj∣Y=ck)
而我们的目标就是选取使得
P
(
Y
=
c
k
∣
X
=
x
)
P(Y=c_k|X=x)
P(Y=ck∣X=x)概率最大的
c
k
c_k
ck类别,因此分母
P
(
X
=
x
)
P(X=x)
P(X=x)并没有太多用处,不影响
c
k
c_k
ck的取值。
因为我的目标就变成了如下的式子:
y
=
arg
max
c
k
P
(
Y
=
c
k
)
∏
j
=
1
m
P
(
X
j
=
x
j
∣
Y
=
c
k
)
y=\arg \max_{c_k}P(Y=c_k)\prod_{j=1}^mP(X^j=x^j|Y=c_k)
y=argckmaxP(Y=ck)j=1∏mP(Xj=xj∣Y=ck)
找到一个合适的
c
k
c_k
ck使
P
(
Y
=
c
k
∣
X
=
x
)
P(Y=c_k|X=x)
P(Y=ck∣X=x)概率最大。
朴素贝叶斯的参数估计
极大似然估计
对于目标公式中的先验概率
P
(
Y
=
c
k
)
P(Y=c_k)
P(Y=ck):
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},k=1,2,...,K
P(Y=ck)=N∑i=1NI(yi=ck),k=1,2,...,K
其中
I
(
y
i
=
c
k
)
I(y_i=c_k)
I(yi=ck)为信号函数,成立的时候返回1,不成立返回0
对与目标公式中的条件概率
P
(
X
j
=
x
j
∣
Y
=
c
k
)
P(X^j=x^j|Y=c_k)
P(Xj=xj∣Y=ck),设第
j
j
j 个特征
x
j
x^j
xj可能的取值集合为
a
j
1
,
a
j
2
,
a
j
3
.
.
.
,
a
j
S
j
a_j^1,a_j^2,a_j^3...,a_j^{S_j}
aj1,aj2,aj3...,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
)
,
l
=
1
,
2
,
.
.
.
,
S
j
P(X^{j}=a_j^l|Y=c_k)=\frac{\sum_{i=1}^{N}I(x_i^j=a_j^l,y_i=c_k)}{\sum_{i=1}^{N}I(y_i=c_k)},l=1,2,...,S_j
P(Xj=ajl∣Y=ck)=∑i=1NI(yi=ck)∑i=1NI(xij=ajl,yi=ck),l=1,2,...,Sj
这个举个例子来简单说明下,假设有两个类别(1 , 2),3个特征(a, b , c),每个特征都有4个可能的取值,上面那个公式说明的就是在给定具体类别的前提下(1或者2),每个特征(a\b\c)中每一个可能取值的概率(4个可能取值),如
P
(
a
=
a
1
∣
Y
=
1
)
P(a=a_1|Y=1)
P(a=a1∣Y=1)表示的就是在给定类别1的前提下,特征a的第一个可能取值的概率。因为我们这里用了信号函数,所以可以通过统计数据集直接得到概率。
在得到先验概率和条件概率后,对于给定的数据
x
=
(
x
i
1
,
x
i
2
,
.
.
.
x
i
m
)
x=(x_i^1,x_i^2,...x_i^m)
x=(xi1,xi2,...xim)就可以得到:
P
(
Y
=
c
k
)
∏
j
=
1
m
P
(
X
j
=
x
j
∣
Y
=
c
k
)
,
k
=
1
,
2
,
3
,
.
.
.
.
K
P(Y=c_k)\prod_{j=1}^mP(X^j=x^j|Y=c_k), k=1,2,3,....K
P(Y=ck)j=1∏mP(Xj=xj∣Y=ck),k=1,2,3,....K
最后在找到使上面式子最大的
c
k
c_k
ck,就是最后的结果:
y
=
arg
max
c
k
P
(
Y
=
c
k
)
∏
j
=
1
m
P
(
X
j
=
x
j
∣
Y
=
c
k
)
y=\arg \max_{c_k}P(Y=c_k)\prod_{j=1}^mP(X^j=x^j|Y=c_k)
y=argckmaxP(Y=ck)j=1∏mP(Xj=xj∣Y=ck)
配合例子肯定更好理解,例子在统计学习方法P50页有,也就是我上面提到的例子,这里附上完整版的。