从贝叶斯定理到 naive bayes 分类器,最后说明一下其应用和优缺点。

在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同。对于大多数的分类算法,比如决策树,KNN,逻辑回归,支持向量机等,他们都是判别方法,也就是直接学习出特征输出Y和特征 X之间的关系,要么是决策函数 𝑌=𝑓(𝑋)(比如支持向量机),要么是条件分布 𝑃(𝑌|𝑋)(比如逻辑回归)。但是朴素贝叶斯却是生成方法,也就是直接找出特征输出 Y和特征 X的联合分布 𝑃(𝑋,𝑌),然后用 𝑃(𝑌|𝑋)=𝑃(𝑋,𝑌)𝑃(𝑋)得出。

朴素贝叶斯

贝叶斯学派的思想可以概括为先验概率+数据=后验概率。也就是说我们在实际问题中需要得到的后验概率,可以通过先验概率和数据一起综合得到。先验概率就是我们对于数据所在领域的历史经验,但是这个经验常常难以量化或者模型化,于是贝叶斯学派大胆的假设先验分布的模型,比如正态分布,beta分布等。(因为在没有计算之前就认为数据服从某个分布,所以被称为先验概率)

贝叶斯公式:

P(Y|X)=P(X|Y)P(Y)P(X)

  • 先验概率 P(X):先验概率是指根据以往经验和分析得到的概率。
  • 后验概率 P(Y|X):事情已经发生,要求这件事情发生的原因是由某个因素引起的可能性的大小,后验分布 P(Y|X)表示事件 X已经发生的前提下,事件 Y发生的概率,叫做事件 X发生下事件 Y的条件概率。(执果索因)
  • 后验概率 P(X|Y):在已知Y发生后X的条件概率,也由于知道 Y的取值而被称为 X的后验概率
  • 朴素:朴素贝叶斯算法是假设各个特征之间相互独立,也是朴素这词的意思那么贝叶斯公式中的 P(X|Y)可写成:

P(X|Y)=P(x1|Y)P(x2|Y)P(xn|Y)

全概率公式: P(X)=kP(X|Y=Yk) 其中 kP(Yk)=1

所以,将上面的式子整合起来,得到朴素贝叶斯公式:

P(Y|X)=P(X|Yk)P(Yk)kP(X|Y=Yk)

三种常见的贝叶斯模型

上文提到了先验概率模型,这里主要介绍多项式模型(MultinomialNB)、高斯模型(GaussianNB)和伯努利模型(BernoulliNB)。

多项式模型(MultinomialNB)

多项式朴素贝叶斯常用语文本分类,特征是单词,值时单词出现的次数。多项式模型在计算先验概率 P(Yk)和和条件概率 P(Xi|Yk)时,会做出一些平滑处理(拉普拉斯平滑),具体公式为: P(Yk)=NYk+αN+Kα

  • N:样本数
  • NYk:类别为Yk的样本数
  • K:总的类别个数
  • α:平滑值

P(xi|Yk)=NYk,xi+αNYk+nα

  • NYk,xi:类别为Yk,且特征为Xi的样本数
  • n:特征Xi可以选择的数量

高斯模型(GaussianNB)

当特征是连续变量的时候,假设特征分布为正态分布,根据样本算出均值和方差,再求得概率。

可以参考这里.

** 伯努利模型(BernoulliNB)** 伯努利模型适用于离散特征的情况,伯努利模型中每个特征的取值只能是1和0。

可以参考这里

朴素贝叶斯分类的原理和流程

总体的公式: p(类别|特征)=p(类别)p特征|类别)p(特征)

  1. 设特征 x=a1,a2,,am, 其中 x 是一条数据, ai 是一个特征属性。
  2. 有类别信息 C=y1,y2,,yn
  3. 计算 P(y1|x),P(y2|x),,P(yn|x)
  4. 如果 P(yk|x)=maxP(y1|x),P(y2|x),,P(yn|x), 那么 xyk.

所以现在的关键步骤是如何计算第 3 步骤中的各个条件概率。可以这样做,

  1. 找到一个已知分类的待分类项集合,这个集合叫做训练样本集。
  2. 统计得到在各类别下各个特征属性的条件概率估计 P(a1|y1),P(a2|y1),,P(am|y1);P(a1|y2),P(a2|y2),,P(am|y2);;P(a1|yn),P(a2|yn),,P(am|yn)
  3. 如果各个特征属性是条件独立的,则根据贝叶斯定理有如下推导

P(yi|x)=P(x|yi)P(yi)P(x)

因为分母对于所有类别为常数,因为我们只要将分子最大化皆可。又因为各特征属性是条件独立的,所以有: P(x|yi)P(yi)=P(a1|yi)P(a2|yi)P(am|yi)P(yi)=P(yi)j=1mP(aj|yi)

如果再计算过程中某个概率值为0,那么是可以考虑拉普拉斯平滑。两个概率计算公式,分子和分母都分别加上一个常数,就可以避免这个问题。

应用

朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,即认为此待分类项属于哪个类别。适用场景:

  • 算法比较简单,在大样本下会有比较好的表现
  • 对缺省数据不太敏感
  • 具有支持增量式训练的能力(不借助于旧有训练数据,每一组新的训练数据都有可能引起概率值的变化,而如决策树和支持向量机,则需要我们一次性将整个数据集都传给它们。)对于一个如垃圾邮件过滤这样的应用程序而言,支持增量式训练的能力是非常重要的,因为过滤程序时常要对新到的邮件进行训练,然后必须即可进行相应的调整;更何况,过滤程序也未必有权限访问已经收到的所有邮件信息。

缺点:

  • 不适合输入的向量有很强的特征关联的场景
  • 无法处理基于特征值组合所产生的变化结果。例如:“在线”和“药店”分开出现时一般出现在正常邮件中,但当组合起来时“在线药店”却一般出现在垃圾邮件中,贝叶斯分类器无法理解这种特征组合。

它经常被用于文本分类中,包括互联网新闻的分类,垃圾邮件的筛选。