朴素贝叶斯算法

原理概述

贝叶斯分类算法是统计学的一种概率分类方法,朴素贝叶斯分类是贝叶斯分类中最简单的一种。其分类原理就是利 用贝叶斯公式根据某特征的先验概率计算出其后验概率,然后选择具有最大后验概率的类作为该特征所属的类。之 所以称之为”朴素”,是因为贝叶斯分类只做最原始、最简单的假设:所有的特征之间是统计独立的。
1.条件概率公式
条件概率(Condittional probability),就是指在事件B发生的情况下,事件A发生的概率,用P(A|B)来表示。
朴素贝叶斯算法
根据文氏图可知:在事件B发生的情况下,事件A发生的概率就是P(A∩B)除以P(B)。
朴素贝叶斯算法
同理可得:
朴素贝叶斯算法
所以
朴素贝叶斯算法
全概率公式:如果事件 构成一个完备事件且都有正概率,那么对于任意一个事件B则 有:
朴素贝叶斯算法
2.贝叶斯公式
根据条件概率和全概率公式,可以得到贝叶斯公式如下 :
朴素贝叶斯算法
P(A)称为"先验概率”(Prior probability),即在B事件发生之前,我们对A事件概率的一个判断。
P(A| B)称为"后验概率" (Posterior probability),即在B事件发生之后,我们对A事件概率的重新评估。
P(B |A)/P(B)称为"可能性函数”(Likely hood), 这是一个调整因子,使得预估概率更接近真实概率。
所以条件概率可以理解为:后验概率=先验概率*调整因子

例题分析

嫁与不嫁
朴素贝叶斯算法
现在给我们的问题是:给定男生的4个特征,预测女生是否会嫁?
转为数学问题就是比较p(嫁|(不帅、性格不好、身高矮、不上进))与p(不嫁|(不帅、性格不好、身高矮、不上进))两者的概率,选择概率大的事件。
p(不帅、性格不好、身高矮、不上进|嫁) = p(不帅|嫁)*p(性格不好|嫁)*p(身高矮|嫁)*p(不上进|嫁)
这个等式成立的条件需要特征之间相互独立,这也就是为什么朴素贝叶斯分类有朴素一词的来源,朴素贝叶斯算法是假设各个特征之间相互独立,那么这个等式就成立了。
朴素贝叶斯算法

垃圾文本过滤

由于垃圾文本过滤是个二分类问题,所以类别={“正常文本”, “垃圾文本”}。我们把每一个词看成一个独立的特征贝叶斯公式可以写成如下形式

朴素贝叶斯算法
由于分母是一样的,所以只需要比较分子即可。

训练集:正常文本和垃圾文本各1000条。
1)构建词典:通过jieba对1000条垃圾训练文本切词,同时去除停用词,将剩余的词集记作一维向量的形式。(向量图片)
2)文本向量化:将每一条训练文本依据词典以向量的形式表示出来,向量的每一个特征表示该词在文本中出现的次数。(词袋模型)
3)计算每个词的条件概率
对于正类文本,统计词典中每个词(特征)在正类文本中出现的次数,然后再除以总词数,获得正类文本的模型向量,向量中每个值代表该词在正类文本中出现的概率。(拉普拉斯平滑:对于某个数据集,我们考虑到对于某个特征X在训练集中没有出现,那么将会导致整个分类概率变为0,这将会导致分类变得非常不合理,所以为了解决零概率的问题,法国数学家拉普拉斯最早提出用加1的方法估计没有出现过的现象的概率,所以加法平滑也叫做拉普拉斯平滑。假定训练样本很大时,每个分量x的计数加1造成的估计概率变化可以忽略不计,但可以方便有效的避免零概率问题。)对于负类文本执行同样的操作。最后获得两个词向量训练模型。(很多小概率的乘积会导致浮点数下溢出,由于 log(xy)=log(x)+log(y) ,可以通过取对数将原来的乘积计算变成求和计算由于 log 是单调函数,因此得分最高的类别不会发生改变,因此,实际中常用的是:)
4)计算先验概率:
正类文本和负类文本的先验概率就是各自在训练集中所占的比率,本训练集包含正负文本各1000条,故先验概率均为0.5

5)模型预测:
将待预测的文本转化成词向量的形式,分别计算正类和负类的后验概率,概率较大的对应的类别为最终的预测结果。
朴素贝叶斯算法