朴素贝叶斯

朴素贝叶斯因为假设特征之间的独立性而得名“朴素”,经常用在文本分类之中。其实,常见的朴素贝叶斯有三个版本:应用于文本分类的多项式模型朴素贝叶斯和伯努利模型朴素贝叶斯和用于连续变量的高斯分布的朴素贝叶斯。

首先,对于文本分类,我们假设文档长度为k,词汇表大小为M(即数据集中有M个不同的单词).
伯努利分布是指只有两个可能结果的单次实验,最典型的例子就是掷硬币。
那么,将伯努利模型应用于文本上,就是进行M次伯努利模型,即词汇表中的每个单词都进行一次伯努利实验,在这M次实验中,有k次实验的结果为1(表示单词出现),最后,生成了长度为K的文档。

多项式分布是二项分布的推广形式,所谓二项式分布就是N次伯努利实验结果所服从的概率分布,比如N次掷硬币实验正反面次数就服从二项分布,而多项式分布就是每次实验结果可能有多个,而不是局限在伯努利实验中的两个结果,N次实验后实验结果所服从的分布就是多项式分布。以掷色子为例,N次掷色子后,1,2,3,4,5,6出现的次数即为多项分布。以文本为例,假设每次实验有M个结果(对应词汇表中的每个单词),那么,进行K次实验后就生成了长度为K的文档。

以上过程可以帮助我们理解基于伯努利和多项分布的朴素贝叶斯模型。朴素贝叶斯假设特征之间是独立的,在文本的场景中就是一个单词的出现和其他单词完全没有关系,即实验是独立的。虽然这种假设不正确,但是确实可以简化模型,在实际应用中也有不错的效果。

对于两种分布的朴素贝叶斯有如下结论(加了拉普拉斯平滑):
多项分布:

先验概率P(c)= 类c下单词总数/整个训练样本的单词总数
类条件概率P(tk|c)=(类c下单词tk在各个文档中出现过的次数之和+1)/(类c下单词总数+|V|)
V是训练样本的单词表(即抽取单词,单词出现多次,只算一个),|V|则表示训练样本包含多少种单词。

伯努利分布:

P(c)= 类c下文件总数/整个训练样本的文件总数
P(tk|c)=(类c下包含单词tk的文件数+1)/(类c下单词总数+2)

高斯分布又叫正态分布。当处理连续变量时,我们假设这些变量服从高斯分布,从而有了高斯版本的朴素贝叶斯。

p(x|y)=12πσ2e(xμ)22σ2

高斯分布有两个充分统计量:均值和方差。根据上面的公式,我们需要计算每个类下每个特征的条件概率 p(x|y) ,而 计算这两个概率只需要计算在每个类下每个特征的均值和方差即可。有了这两个值,在给定类别和特征值后 p(x|y) 就有了。

高斯分布的先验可以设置为每个类的样本在训练集中样本的比例。

一些问题:

平滑:为避免某个条件概率为零导致后验为0的情况,每个 p(x|y) p(x|y)都很小,那么将导致后验为0,为此,可以对概率去对数来避免这种情况

p(y|x)=logp(x1|y)p(x2|y)...p(xn|y)p(y)=i=1nlogp(xi|y)+logp(y)

参考:
1. http://blog.163.com/jiayouweijiewj@126/blog/static/1712321772010102802635243/
2. http://python.jobbole.com/81019/

你可能感兴趣的:(机器学习,朴素贝叶斯)