模型概述
-
朴素贝叶斯方法,是指
- 朴素:特征条件独立
- 贝叶斯:基于贝叶斯定理
根据贝叶斯定理,对一个分类问题,给定样本特征x,样本属于类别y的概率是
p(y|x)=p(x|y)p(y)p(x)。。。。。。(1)
在这里,x是一个特征向量,将设x维度为M。因为朴素的假设,即特征条件独立,根据全概率公式展开,公式(1)可以表达为
p(y=ck|x)=∏Mi=1p(xi|y=ck)p(y=ck)∑kp(y=ck)∏Mi=1P(xi|y=ck)。。。。(2)
这里,只要分别估计出,特征 xi 在每一类的条件概率就可以了。类别y的先验概率可以通过训练集算出,同样通过训练集上的统计,可以得出对应每一类上的,条件独立的特征对应的条件概率向量。
如何统计,就是下一部分——学习——所关心的内容。
学习(参数估计)
下面介绍如何从数据中,学习得到朴素贝叶斯分类模型。概述分类方法,并提出一个值得注意的问题。
学习
-
训练集TrainingSet=
{(x1,y1),(x2,y2),...,(xN,yN)}
包含N条训练数据,其中
xi=(x(1)i,x(2)i,...,x(M)i)T
是M维向量,
yi∈{c1,c2,...cK}
属于K类中的一类。
-
学习 1.首先,我们来计算公式(2)中的 p(y=ck)
p(y=ck)=∑Ni=1I(yi=ck)N。。。。(3)
其中 I(x) 为指示函数,若括号内成立,则计1,否则为0。 -
学习 2.接下来计算分子中的条件概率,设 M 维特征的第 j 维有 L 个取值,则某维特征的某个取值 ajl ,在给定某分类 ck 下的条件概率为:
p(xj=ajl|y=ck)=∑Ni=1I(xji=ajl,yi=ck)∑Ni=1I(yi=ck)。。。(4)
经过上述步骤,我们就得到了模型的基本概率,也就完成了学习的任务。
分类
-
通过学到的概率,给定未分类新实例
X
,就可以通过上述概率进行计算,得到该实例属于各类的后验概率
p(y=ck|X)
,因为对所有的类来说,公式(2)中分母的值都相同,所以只计算分子部分即可,具体步骤如下:
-
分类 1.计算该实例属于 y=ck 类的概率
p(y=ck|X)=p(y=ck)∏j=1np(X(j)=x(j)|y=ck)。。。(5)
分类 2.确定该实例所属的分类 y
y=argmaxckp(y=ck|X)。。。。(6)
于是我们得到了新实例的分类结果
拉普拉斯平滑
-
到这里好像方法已经介绍完了,实则有一个小问题需要注意,在公式(3)(4)中,如果从样本中算出的概率值为0该怎么办呢?
下面介绍一种简单方法,给学习步骤中的两个概率计算公式,分子和分母都分别加上一个常数,就可以避免这个问题。更新过后的公式如下:
-
p(y=ck)=∑Ni=1I(yi=ck)+λN+Kλ。。。。(7)
K 是类的个数
p(xj=ajl|y=ck)=∑Ni=1I(xji=ajl,yi=ck)+λ∑Ni=1I(yi=ck)+Ljλ。。。(8)
Lj 是第 j 维特征的最大取值
可以证明,改进以后的(7)(8)仍然是概率。平滑因子 λ=0 即为(3)(4)实现的最大似然估计,这时会出现在本节开始时提到的0概率问题;而 λ=1 则避免了0概率问题,这种方法被称为拉普拉斯平滑。