多项式朴素贝叶斯MultinomialNB
多项式贝叶斯可能是除了高斯之外,最为人所知的贝叶斯算法了。它也是基于原始的贝叶斯理论,但假设概率分布是服从一个简单多项式分布。多项式分布来源于统计学中的多项式实验,这种实验可以具体解释为:实验包括n次重复试验,每项试验都有不同的可能结果。在任何给定的试验中,特定结果发生的概率是不变的。
举个例子,比如,一个特征矩阵表示投掷硬币的结果,则得到正面的概率为P(X=正面|Y) = 0.5,反面的概率为P(X=反面|Y) = 0.5,只有这两种可能,并且两种结果互不干涉,两个随机事件的概率加和为1,这就是二项分布。这种情况下,适合于多项式朴素贝叶斯的特征矩阵应该长这样:
假设另一个特征X’表示投掷骰子的结果,则 i 就可以在[1,2,3,4,5,6]中取值,六种结果互不干涉,且只要样本量足够大,概率都为1/6,这就是一个多项分布。多项分布的特征矩阵应该长这样:
可以看出:
- 多项式分布擅长的是分类型变量,在其原理假设中,P(xi|Y)的概率是离散的,并且不同xi下的P(xi|Y)相互独立,互不不影响。虽然sklearn中的多项式分布也可以处理连续型变量,但现实中,
如果我们真的想要处理连续型变量,应当使用高斯朴素贝叶斯。 - 多项式实验中的实验结果都很具体,它所涉及的特征往往是次数,频率,计数,出现与否这样的概念,这些概念都是离散的正整数,因此,sklearn中的多项式朴素贝叶斯不接受负值的输入。
由于这样的特性,多项式朴素贝叶斯的特征矩阵经常是稀疏矩阵(不一定总是稀疏矩阵),并且它经常被用于文本分类。我们可以使用著名的TF-IDF向量技术,也可以使用常见并且简单的单词计数向量手段与贝叶斯配合使用。这两种手段都属于常见的文本特征提取的方法,可以很简单地通过sklearn来实现。
从数学的角度来看,在一种标签类别Y=c下,有一组分别对应特征的参数向量 θ c = ( θ c 1 , θ c 2 , . . . , θ c n , ) \theta_c=(\theta_{c1},\theta_{c2},...,\theta_{cn},) θc=(θc1,θc2,...,θcn,),其中n表示特征的总数。一个 θ c i \theta_{ci} θci表示这个标签类别下的第i个特征所对应的参数。这个参数被我们定义为:
θ c i = 特 征 X i 在 Y = 特 征 在 c 这 个 分 类 下 的 所 有 样 本 的 取 值 总 和 所 有 特 征 在 Y = 特 征 在 c 这 个 分 类 下 的 所 有 样 本 的 取 值 总 和 \theta_{ci}=\large\frac{特征{X_i}在Y=特征在c这个分类下的所有样本的取值总和}{所有特征在Y=特征在c这个分类下的所有样本的取值总和} θci=所有特征在Y=特征在c这个分类下的所有样本的取值总和特征Xi在Y=特征在c这个分类下的