最近自己会把自己个人博客中的文章陆陆续续的复制到CSDN上来,欢迎大家关注我的 个人博客,以及我的github。
本文主要讲解有关朴素贝叶斯的相关知识。
本文主要是依据李航老师的《统计学习方法》和邹博老师的机器学习教学视频总结编写的。文中所用到的有关机器学习的基本概念和方法可以参考本人博客中该系列之前的文章,或者直接上网搜索相关的内容。以下文章所列出的公式以及公式的推导读者们最好是在草稿本上自己推导一遍。由于本人水平所限,文章中难免有错误和不当之处,欢迎大家多多批评指正!
贝叶斯分类是一种利用贝叶斯公式来进行分类的算法总称,其中朴素贝叶斯是最简单的一种,它假设了各个样本特征之间相互独立。
一、先验概率和后验概率
先验概率:指根据以往经验和分析得到的概率。
后验概率:事情已经发生,要求这件事情发生的原因是由某个因素引起的可能性的大小。
二、朴素贝叶斯
首先来看下贝叶斯公式:
P
(
Y
∣
X
)
=
P
(
X
∣
Y
)
⋅
P
(
Y
)
P
(
X
)
P(Y|X)=\frac{P(X|Y)\cdot P(Y)}{P(X)}
P(Y∣X)=P(X)P(X∣Y)⋅P(Y)
当用作对样本进行分类时,可以用下面的公式来理解:
P
(
类
别
∣
特
征
)
=
P
(
特
征
∣
类
别
)
⋅
P
(
类
别
)
P
(
特
征
)
公
式
(
1
)
P(类别|特征)=\frac{P(特征|类别)\cdot P(类别)}{P(特征)}\quad\quad公式(1)
P(类别∣特征)=P(特征)P(特征∣类别)⋅P(类别)公式(1)
其中:
- 已知样本的某个特征,求该样本属于某个类别的概率 P ( 类 别 ∣ 特 征 ) P(类别|特征) P(类别∣特征);
- 已知样本所属类别时某个特征出现的概率 P ( 特 征 ∣ 类 别 ) P(特征|类别) P(特征∣类别);
- 该样本所属类别出现的概率 P ( 类 别 ) P(类别) P(类别);
- 样本的某个特征出现的概率 P ( 特 征 ) P(特征) P(特征)
在最一般的情况下,样本的所有特征不都相互独立,如果样本有多个特征,并且每个特征都有多个不同的取值时,那么要计算
P
(
特
征
∣
类
别
)
P(特征|类别)
P(特征∣类别)是比较困难的。所以朴素贝叶斯加入了一个很强的假设条件:所有的样本特征都是相互独立的。这样一来,就可以利用以下公式来进行计算了:
P
(
特
征
1
,
特
征
2
,
.
.
.
,
特
征
n
∣
类
别
)
=
∏
i
=
1
n
P
(
特
征
i
∣
类
别
)
公
式
(
2
)
P(特征1,特征2,...,特征n|类别)=\prod_{i=1}^nP(特征i|类别)\quad\quad公式(2)
P(特征1,特征2,...,特征n∣类别)=i=1∏nP(特征i∣类别)公式(2)
这样一来,
P
(
特
征
∣
类
别
)
P(特征|类别)
P(特征∣类别) 就变得可以计算了。
三、朴素贝叶斯的参数估计
在公式 (1) 中,当给定样本集时,由于计算样本属于每个类别时等式右边的分母都相等,所以只需要计算分子就可以了。而又因为朴素贝叶斯假定了样本的特征之间相互独立,所以
P
(
类
别
)
P(类别)
P(类别) 和
P
(
特
征
i
∣
类
别
)
P(特征i|类别)
P(特征i∣类别) 都可以通过极大似然估计法估计出相应的概率,
P
(
类
别
)
P(类别)
P(类别) 的极大似然估计是:
P
(
类
别
=
C
k
)
=
∑
i
=
1
N
I
(
类
别
=
C
k
)
N
P(类别=C_k)=\frac{\sum_{i=1}^N{I(类别=C_k)}}{N}
P(类别=Ck)=N∑i=1NI(类别=Ck)
其中 N 是样本的个数;
I
(
)
I()
I() 是指示函数,当其中条件成立时函数值为1,反之为 0 ;
C
k
C_k
Ck是第 k 个类别。
P
(
特
征
∣
类
别
)
P(特征|类别)
P(特征∣类别)的极大似然估计为:
P
(
特
征
=
A
j
∣
类
别
=
C
k
)
=
∑
i
=
1
N
I
(
特
征
=
A
j
,
类
别
=
C
k
)
∑
i
=
1
N
I
(
类
别
=
C
k
)
P(特征=A_j|类别=C_k)=\frac{\sum_{i=1}^N{I(特征=A_j,类别=C_k)}}{\sum_{i=1}^NI(类别=C_k)}
P(特征=Aj∣类别=Ck)=∑i=1NI(类别=Ck)∑i=1NI(特征=Aj,类别=Ck)
其中
A
j
A_j
Aj 是第 j 个特征。
至此,公式(1)中等式右边的概率都可以通过给定的样本集计算出来了,带入公式后就得到了 P ( 类 别 ∣ 特 征 ) P(类别|特征) P(类别∣特征)。得到了样本属于每个类别的概率后,只需要把该样本分类为概率最高的类就好了。
四、贝叶斯估计
从公式(2)中你会发现,如果有一个
P
(
特
征
i
∣
类
别
)
P(特征i|类别)
P(特征i∣类别)为0,则整个概率就为0了,这会使分类产生一定的误差,为了解决该办法可以使用贝叶斯估计,具体的贝叶斯估计如下:
P
(
类
别
=
C
i
∣
特
征
=
A
j
)
=
∑
I
(
特
征
=
A
j
,
类
别
=
C
i
)
+
λ
∑
I
(
类
别
=
C
i
)
+
S
j
⋅
λ
P(类别=C_i|特征=A_j)=\frac{\sum I(特征=A_j,类别=C_i)+\lambda}{\sum I(类别=C_i)+S_j\cdot\lambda}
P(类别=Ci∣特征=Aj)=∑I(类别=Ci)+Sj⋅λ∑I(特征=Aj,类别=Ci)+λ
其中
S
j
S_j
Sj是第 j 个特征的取值个数;
λ
\lambda
λ 是一个非负数,该值通常取 1 ,这时成为拉普拉斯平滑,而当
λ
=
0
\lambda=0
λ=0 时就是极大似然 估计。