简介
朴素贝叶斯(naive bayes)是基于贝叶斯定理以及特征条件假设的分类方法。
朴素贝叶斯自1950年以来就有了深入研究,在60年代初被引入信息检索委员会,此后便成为文本分类的基本方法之一,使用单词频率作为特征,来判断文档属于哪一个分类(如垃圾或正常邮件,运动或政治等等)。经过某种适当处理,朴素贝叶斯在文本分类领域还是能够与一些更高级的方法(如support vector machines支持向量机)有的一拼。在自动化医疗诊断也有一定的应用。(来自*)
朴素贝叶斯是一个构建分类器的简单方法,即对于一个要分类的实例,这个实例以一个特征向量表示,朴素贝叶斯根据输入的特征向量将这个实例划分到某一类。朴素贝叶斯假定各个特征互相独立(下文推导时会解释)。例如,如果一个水果是红色,圆的,并且直径大概10cm,那么可能会将它分类为苹果,这里,输入特征向量为[红,圆,10cm],输出分类值为“苹果”。朴素贝叶斯假设这几个特征之间是独立的。(来自*)
尽管有这个简单的设定(特征之间相互独立),朴素贝叶斯依然在很多实际复杂的场合能表现的很好。
然而2006年的一次综合比较显示,朴素贝叶斯分类的效果被其他一些分类方法如boosted trees和random forests 超越。
不过,朴素贝叶斯的优点是它只需要少量的训练数据就可以估计分类需要的参数。(来自*)
概率模型
假设训练数据集
T = {(x1,y1),(x2,y2), ... , (xN, yN)}
其中,x为n维列向量,y为标量,取值为一系列离散值{C1,C2, ... , CK},表示各个分类值。
(下标表示数据点编号,上标表示特征向量的维度,分类编号也用上标表示)
通过训练数据集学习得到一个分类器,使得能够:给定一个新的输入特征向量x = [xi1,xi2, ... , xin],能做出正确分类y = Ck , 也就是求一个条件概率
p(Ck|xi1,xi2, ... , xin)
条件概率最大时的Ck就是最终的分类。
问题的难点在于可能特征数量n很大,或者特征的取值范围比较大,这时基于朴素贝叶斯模型的计算就比较困难。因此使用贝叶斯理论做一个处理,
其中,p(Ck)通过训练数据集得到,表示Ck这个分类的概率。
实际应用中,我们只对上式的分子感兴趣,因为分母在分类Ck取不同值时,都不会改变,而分子等价于
p(Ck, x1,x2, ... , xn)
所以我们有,
朴素贝叶斯假设特征之间相互独立,也就是说
综上,
(*)
其中Z=p(x)仅与给定的特征向量相关,与某个分类值Ck无关,可以看作一个常数。
参数估计
极大似然估计
通过上面的(*)式可知,我们根据已知的训练数据集学习得到参数p(Ck)和p(xi|Ck),可以应用极大似然估计,
其中,分母为数据集大小N,分子为分类值为Ck的数量
假设x的特征向量是n维,每一维有各自的取值范围(有限可列),第j维的取值集合为{aj1,aj2, ... , ajnj},那么条件概率
其中j取值为{1,2, ... , n},l 表示 特征向量第j维的第l个取值ajl,总共nj个值,l 取值范围为 {1, 2, ... , nj}, k = 1, 2, ... , K,表示共K个分类,分母为数据集中分类值为Ck的数量,分子为数据集中分类值为Ck,且特征向量第j维为ajl的数量。
贝叶斯估计
用极大似然估计可能会出现参数为0的情况,影响后验概率的计算结果,从而使分类产生偏差。条件概率的贝叶斯估计为
(**)
其中λ>=0,nj为特征向量第j维的取值个数。λ=0时,就是极大似然估计,通常取λ=1,即为拉普拉斯平滑。
显然 (**)式 >=0 并且 <= 1 且有
这说明(**)确实是概率分布。
对应地,先验概率的贝叶斯估计为
同样可以验证此时0<=p(Ck)<=1,且有