带你彻底理解朴素贝叶斯算法与实现

超级详细对朴素贝叶斯算法进行讲解,能让你对朴素贝叶斯算法的认识有质的飞跃。。。。

1. 朴素贝叶斯是什么

依据《统计学方法》上介绍:
朴素贝叶斯法(Naive Bayes)是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入 x ,利用贝叶斯定理求出后验概率最大的输出 y 。

可能读完上面这段话仍旧没办法理解朴素贝叶斯法到底是什么,又是怎样进行分类的。下面我尽可能详细且直观地描述朴素贝叶斯法的工作原理。首先我们需要知道的是,朴素贝叶斯是基于概率论的分类算法。然后我们来了解几个统计学小概念。

(我们将使用以下这个例子来贯穿全文进行讲解。)

在夏季,某公园男性穿凉鞋的概率为 1/2 ,女性穿凉鞋的概率为 2/3 ,并且该公园中男女比例通常为 2:1 ,问题:若你在公园中随机遇到一个穿凉鞋的人,请问他的性别为男性或女性的概率分别为多少?

1.1 先验概率

先验概率(prior probability) 是指根据以往经验和分析得到的概率,如全概率公式(后面会讲)。

我们使用以上例子来解释一下什么是先验概率。根据以上例子我们设定:假设某公园中一个人是男性为事件Y=ymen ,是女性则是 Y=ywomen;一个人穿凉鞋为事件X=x1 ,未穿凉鞋为事件 X=x0。而一个人的性别与是否穿凉鞋这两个事件之间是相互独立的。 于是我们可以看到该例子中存在四个先验概率:
在这里插入图片描述
  其中P(Y=ymen)P(Y=ywomen) 可以根据例子中“该公园中男女比例通常为 2:1 ” 这一以往经验求得:P(Y=ymen)=2/3 以及 P(Y=ywomen)=1/3。而先验概率P(Y=ymen)P(Y=ywomen) 并不能直接得出,需要根据全概率公式来求解。在学习全概率公式之前,我们先了解一下条件概率

1.2 条件概率

条件概率是指在事件Y=y 已经发生的条件下,事件X=x 发生的概率。条件概率可表示为: P(X=x|Y=y) 。而条件概率计算公式为:

P(X=x|Y=y)=P(X=x,Y=y)/P(Y=y)

其中 P(X=x,Y=y)联合概率,也就是两个事件共同发生的概率。而 P(Y=y)以及P(X=x)先验概率。   我们用例子来说明一下就是: “某公园男性穿凉鞋的概率为 1/2 ”,也就是说“是男性的前提下,穿凉鞋的概率是 1/2 ”,此概率为条件概率,即 P(X=x1|Y=ymen)=1/2。同理“女性穿凉鞋的概率为 2/3 ” 为条件概率 P(X=x1|Y=ywomen)=1/2

1.3 全概率公式

全概率公式是指:如果事件Y=y1,Y=y2,...,Y=yn 可构成一个完备事件组,即它们两两互不相容,其和为全集。则对于事件 X=x 有:
P(X=x)=∑i=1nP(Y=yi)P(X=x|Y=yi)
  因此对于上面的例子,我们可以根据全概率公式求得:
在这里插入图片描述
  也就是说不考虑性别的情况下,公园中穿脱鞋的概率为 5/9 ,不穿拖鞋的概率为 4/9 。

1.4 后验概率

后验概率是指,某事件X=x 已经发生,那么该事件是因为事件 Y=y 的而发生的概率。也就是上例中所需要求解的“在知道一个人穿拖鞋的前提下,这个人是男性的概率或者是女性的概率是多少”。后验概率形式化便是:
在这里插入图片描述
后验概率的计算要以先验概率为基础。后验概率可以根据通过贝叶斯公式,用先验概率似然函数计算出来。   贝叶斯公式如下:
在这里插入图片描述
  其中P(Y=ymen|X=x1) 为所求后验概率P(X=x1|Y=ymen)条件概率P(Y=ymen)先验概率在这里插入图片描述全概率公式
  朴素贝叶斯算法正是利用以上信息求解后验概率,并依据后验概率的值来进行分类。
  使用上面的例子来进行理解,后验概率为:
在这里插入图片描述
  也就是说,在知道一个人穿拖鞋的前提下,这个人是男性的概率是 3/5 ,是女性的概率是 2/5 。如果问题是“判断该人是男性还是女性”,此问题就是一个分类问题。由于依据贝叶斯公式计算的后验概率是男性的概率大于是女性的概率,即由于 P(Y=ymen|X=x1)>P(Y=ywomen|X=x1) ,那么我们就可以将其分类为男性(实际在使用朴素贝叶斯进行分类时,不需要求解分母 P(X=x1))。   到此,我们已经使用例子来讲解了使用朴素贝叶斯进行分类的基本步骤以及简单的原理了。接下来我们将对朴素贝叶斯的原理进行详细地探讨。

2. 朴素贝叶斯的推导

对于样本集: D = { ( x 1 ( 1 ) , x 2 ( 1 ) , . . . , x n ( 1 ) , y 1 ) , ( x 1 ( 2 ) , x 2 ( 2 ) , . . . , x n ( 2 ) , y 2 ) , . . . , ( x 1 ( m ) , x 2 ( m ) , . . . , x n ( m ) , y m ) D = \lbrace (x_1^{(1)}, x_2{(1)},...,x_n{(1)},y_1),(x_1^{(2)}, x_2{(2)},...,x_n{(2)},y_2),...,(x_1^{(m)}, x_2{(m)},...,x_n{(m)},y_m)
  其中 m 表示有 m 个样本, n 表示有 n 个特征。 yi,i=1,2,…,m 表示样本类别,取值为 {C1,C2,…,CK} 。
先验概率为:
在这里插入图片描述
条件概率为(依据条件独立假设):
在这里插入图片描述
后验概率为:
在这里插入图片描述
条件概率公式带入得:
在这里插入图片描述
上式为朴素贝叶斯分类的基本公式。于是,朴素贝叶斯分类器可表示为:

  由于分母对所有的 Ck 都是相同的,所以: P ( Y = C k X = x ) = a r g m a x C k P ( Y = C k ) j = 1 n P ( X j = x j Y = C k ) P(Y=C_k|X=x) = arg\underbrace{max}{C_k} P(Y=C_k)\prod{j=1}^n P(X_j=x_j|Y=C_k)

3. 参数估计

3.1 极大似然估计

针对样本集我们可以利用极大似然估计计算出以下一些信息:
在这里插入图片描述
  其中 计算的是样本类别为 Ck 的总数。先验概率计算的是类别 Ck 在样本集中的频率。
在这里插入图片描述
  其中第 j 个特征的取值可能是 {aj1,aj2,...,ajh} ,共 h 个。该条件概率指的是,在样本类别为 Ck 的子样本集中,第 j 个特征取值为 ajl 的样本的频率。

3.2 贝叶斯估计

为了弥补极大似然估计中可能出现概率值为0的情况(也就是某个事件出现的次数为0)。于是使用贝叶斯估计,如下:
在这里插入图片描述
  其中 K 为类别的个数。
在这里插入图片描述
  其中 Sj 为特征 Xj 取值的个数 h 。

4. 朴素贝叶斯算法过程

参数估计为极大似然估计为例:
  样本集为: D = { ( x 1 ( 1 ) , x 2 ( 1 ) , . . . , x n ( 1 ) , y 1 ) , ( x 1 ( 2 ) , x 2 ( 2 ) , . . . , x n ( 2 ) , y 2 ) , . . . , ( x 1 ( m ) , x 2 ( m ) , . . . , x n ( m ) , y m ) } D = \lbrace (x_1^{(1)}, x_2{(1)},...,x_n{(1)},y_1),(x_1^{(2)}, x_2{(2)},...,x_n{(2)},y_2),...,(x_1^{(m)}, x_2{(m)},...,x_n{(m)},y_m) \rbrace
  其中yi,i=1,2,..,m表示样本类别,取值为{C1,C2,...,CK}
  (1)计算先验概率: 求出样本类别的个数 K 。对于每一个样本 Y=Ck,计算出P(Y=Ck) 。其为类别 Ck 在总样本集中的频率。
  (2)计算条件概率: 将样本集划分成 K 个子样本集,分别对属于 Ck 的子样本集进行计算,计算出其中特征 Xj=ajl的概率: P(Xj=ajl|Y=Ck)。其为该子集中特征取值为 ajl 的样本数与该子集样本数的比值。
  (3)针对待预测样本 xtest ,计算其对于每个类别 Ck 的后验概率
在这里插入图片描述概率值最大的类别即为待预测样本的预测类别

5. 朴素贝叶斯分类流程图

整个朴素贝叶斯分类分为三个阶段:

第一阶段——准备工作阶段,这个阶段的任务是为朴素贝叶斯分类做必要的准备,主要工作是根据具体情况确定特征属性,并对每个特征属性进行适当划分,然后由人工对一部分待分类项进行分类,形成训练样本集合。这一阶段的输入是所有待分类数据,输出是特征属性和训练样本。这一阶段是整个朴素贝叶斯分类中唯一需要人工完成的阶段,其质量对整个过程将有重要影响,分类器的质量很大程度上由特征属性、特征属性划分及训练样本质量决定。

第二阶段——分类器训练阶段,这个阶段的任务就是生成分类器,主要工作是计算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概率估计,并将结果记录。其输入是特征属性和训练样本,输出是分类器。这一阶段是机械性阶段,根据前面讨论的公式可以由程序自动计算完成。

第三阶段——应用阶段。这个阶段的任务是使用分类器对待分类项进行分类,其输入是分类器和待分类项,输出是待分类项与类别的映射关系。这一阶段也是机械性阶段,由程序完成。

6. 朴素贝叶斯算法分析

优点:
(1)朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。
(2)对小规模的数据表现很好,能个处理多分类任务,适合增量式训练,尤其是数据量超出内存时,我们可以一批批的去增量训练。
(3)对缺失数据不太敏感,算法也比较简单,常用于文本分类。

缺点:
(1)理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型给定输出类别的情况下,假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。
(2)需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。
(3)由于我们是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率。
(4)对输入数据的表达形式很敏感。

有帮助的话来个三连击,让更多的人可以看到、学习到!!!

发布了19 篇原创文章 · 获赞 31 · 访问量 3171

猜你喜欢

转载自blog.csdn.net/ywsydwsbn/article/details/105139688