什么是朴素贝叶斯

朴素贝叶斯,它是一种简单但极为强大的预测建模算法。之所以称为朴素贝叶斯,是因为它假设每个输入变量是独立的。这是一个强硬的假设,实际情况并不一定,但是这项技术对于绝大部分的复杂问题仍然非常有效。
朴素贝叶斯模型由两种类型的概率组成:

  1. 每个类别的概率P(Cj)
  2. 每个属性的条件概率P(Ai|Cj)

我来举个例子说明下什么是类别概率和条件概率。假设我有 7 个棋子,其中 3 个是白色的,4 个是黑色的。那么棋子是白色的概率就是 3/7,黑色的概率就是 4/7,这个就是类别概率
假设我把这 7 个棋子放到了两个盒子里,其中盒子 A 里面有 2 个白棋,2 个黑棋;盒子 B 里面有 1 个白棋,2 个黑棋。那么在盒子 A 中抓到白棋的概率就是 1/2,抓到黑棋的概率也是 1/2,这个就是条件概率,也就是在某个条件(比如在盒子 A 中)下的概率

在朴素贝叶斯中,我们要统计的是属性的条件概率,也就是假设取出来的是白色的棋子,那么它属于盒子 A 的概率是 2/3。

为了训练朴素贝叶斯模型,我们需要先给出训练数据,以及这些数据对应的分类。那么上面这两个概率,也就是类别概率和条件概率。他们都可以从给出的训练数据中计算出来。一旦计算出来,概率模型就可以使用贝叶斯原理对新数据进行预测。

贝叶斯原理、贝叶斯分类和朴素贝叶斯的区别

贝叶斯原理是最大的概念,它解决了概率论中“逆向概率”的问题,在这个理论基础上,人们设计出了贝叶斯分类器,朴素贝叶斯分类是贝叶斯分类器中的一种,也是最简单,最常用的分类器。朴素贝叶斯之所以朴素是因为它假设属性是相互独立的,因此对实际情况有所约束,如果属性之间存在关联,分类准确率会降低。不过好在对于大部分情况下,朴素贝叶斯的分类效果都不错。
image.png

朴素贝叶斯分类工作原理

朴素贝叶斯分类是常用的贝叶斯分类方法。我们日常生活中看到一个陌生人,要做的第一件事情就是判断 TA 的性别,判断性别的过程就是一个分类的过程。根据以往的经验,我们通常会从身高、体重、鞋码、头发长短、服饰、声音等角度进行判断。这里的“经验”就是一个训练好的关于性别判断的模型,其训练数据是日常中遇到的各式各样的人,以及这些人实际的性别数据。
我们遇到的数据可以分为两种,一种是离散数据,另一种是连续数据

离散数据

什么是离散数据呢?离散就是不连续的意思,有明确的边界,比如整数 1,2,3 就是离散数据,而 1 到 3 之间的任何数,就是连续数据,它可以取在这个区间里的任何数值。
我以下面的数据为例,这些是根据你之前的经验所获得的数据。然后给你一个新的数据:身高“高”、体重“中”,鞋码“中”,请问这个人是男还是女?
image.png
针对这个问题,我们先确定一共有3个属性,假设我们用朴素贝叶斯 - 图3代表属性,用朴素贝叶斯 - 图4分别为身高=高、体重=中、鞋码=中。一共有两个类别,假设用朴素贝叶斯 - 图5代表类别,那么朴素贝叶斯 - 图6分别是:男、女,在未知的情况下我们用朴素贝叶斯 - 图7表示。
那么我们想求在朴素贝叶斯 - 图8属性下,朴素贝叶斯 - 图9的概率,用条件概率表示就是朴素贝叶斯 - 图10。根据上面讲的贝叶斯的公式,我们可以得出:
朴素贝叶斯 - 图11
因为一共有2个类别,所以我们只需要求得朴素贝叶斯 - 图12朴素贝叶斯 - 图13的概率即可,然后比较下哪个分类的可能性大,就是哪个分类结果。
在这个公式里,因为朴素贝叶斯 - 图14都是固定的,我们想要寻找使得朴素贝叶斯 - 图15的最大值,就等价于求朴素贝叶斯 - 图16最大值。
我们假定朴素贝叶斯 - 图17之间是相互独立的,那么:
朴素贝叶斯 - 图18

然后我们需要从朴素贝叶斯 - 图19朴素贝叶斯 - 图20中计算出朴素贝叶斯 - 图21的概率,带入到上面的公式得出朴素贝叶斯 - 图22,最后找到使得 朴素贝叶斯 - 图23最大的类别朴素贝叶斯 - 图24
我分别求下这些条件下的概率:
朴素贝叶斯 - 图25,所以朴素贝叶斯 - 图26
因为朴素贝叶斯 - 图27,所以应该是朴素贝叶斯 - 图28类别,即男性。

连续数据案例

我们做了一个离散的数据案例,实际生活中我们得到的是连续的数值,比如下面这组数据:
image.png
那么如果给你一个新的数据,身高 180、体重 120,鞋码 41,请问该人是男是女呢?
公式还是上面的公式,这里的困难在于,由于身高、体重、鞋码都是连续变量,不能采用离散变量的方法计算概率。而且由于样本太少,所以也无法分成区间计算。怎么办呢?
这时,可以假设男性和女性的身高、体重、鞋码都是正态分布,通过样本计算出均值和方差,也就是得到正态分布的密度函数。有了密度函数,就可以把值代入,算出某一点的密度函数的值。比如,男性的身高是均值179.5、标准差为3.697的正态分布。所以男性的身高为180的概率为0.1069。怎么计算得出的呢? 你可以使用EXCEL的NORMDIST(x,mean,standard_dev,cumulative) 函数,一共有4个参数:

  • x:正态分布中,需要计算的数值;
  • Mean:正态分布的平均值;
  • Standard_dev:正态分布的标准差;
  • Cumulative:取值为逻辑值,即False或True。它决定了函数的形式。当为TRUE时,函数结果为累积分布;为False时,函数结果为概率密度。

这里我们使用的是NORMDIST(180,179.5,3.697,0)=0.1069。
同理我们可以计算得出男性体重为120的概率为0.000382324,男性鞋码为41号的概率为0.120304111。
所以我们可以计算得出该人为男性的概率:
朴素贝叶斯 - 图30
同理我们也可以计算出来该人为女的可能性:
朴素贝叶斯 - 图31
明显这组数据分类为男的概率大于分类为女的概率。

朴素贝叶斯分类器工作流程

朴素贝叶斯分类常用于文本分类,尤其是对于英文等语言来说,分类效果很好。它常用于垃圾文本过滤、情感预测、推荐系统等。
流程可以用下图表示:
image.png

第一阶段:准备阶段

在这个阶段我们需要确定特征属性,比如上面案例中的“身高”、“体重”、“鞋码”等,并对每个特征属性进行适当划分,然后由人工对一部分数据进行分类,形成训练样本。
这一阶段是整个朴素贝叶斯分类中唯一需要人工完成的阶段,其质量对整个过程将有重要影响,分类器的质量很大程度上由特征属性、特征属性划分及训练样本质量决定。

第二阶段:训练阶段

这个阶段就是生成分类器,主要工作是计算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概率。
输入是特征属性和训练样本,输出是分类器。

第三阶段:应用阶段

这个阶段是使用分类器对新数据进行分类。输入是分类器和新数据,输出是新数据的分类结果。