第5章�朴素贝叶斯
周口师范学院
1
�学习目标
理解朴素贝叶斯的基本原理
掌握Scikit-learn库构建不同类型朴
素贝叶斯模型的基本方法
1
2
2
�目录页
3
�基本原理
�应用实例
朴素贝叶斯
��基本原理
•朴素贝叶斯算法利用贝叶斯定理构建分类模型,同时通过特征相
互独立(即朴素的基本含义)的假设简化模型求解的复杂度。
4
��基本原理
• 贝叶斯原理相关概念:
1.先验概率:通过经验判断事件发生的概率(如乳腺癌发病率为%
且%发生在发展中国家、微博用户男生比例占55%等)
2.后验概率:事件发生后推测起因的概率(如已知病人患有“乳腺癌”
的情况下推断遗传因素、营养过剩等导致“乳腺癌”起因的概率)
3.条件概率:当前事件在另一事件已发生情况下的发生概率(如在已知
存在“遗传因素”的情况下“乳腺癌”发病的概率)
4.似然函数:用于确定模型参数的函数。概率描述已知参数时变量的输
出,而似然则描述已知变量输出时未知参数的可能取值
5
�基本概念
6
�基本概念
7
�基本概念
8
�基本概念
9
�基本概念
10
��基本概念
•表1所示的“学生作息与成绩关系”数据,此处以预测“出勤=早、
休息=晚”学生成绩的好或差为例描述其基本过程
11
序号 出勤 休息 成绩
1 早 晚 好
2 早 早 好
3 早 晚 差
4 晚 早 差
5 晚 晚 好
6 早 晚 好
7 早 早 好
8 晚 早 差
9 晚 晚 差
10 早 晚 好
表 1 学生作息与成绩关系数据
��基本概念
12
��基本概念
13
��基本概念
14
��主要类型
• 在Scikit-learn库native_bayes模块中,根据特征的类条件概率可将朴
素贝叶斯模型分为:
(1)高斯朴素贝叶斯(GaussianNB)
• GaussianNB假设特征的类条件概率服从正态分布(均值与方差根据
训练数据估计)。
(2)多项式朴素贝叶斯(MultinomialNB)
• MultinomialNB假设特征的类条件概率服从多项式分布,与适于连续
型特征取值的GaussianNB不同,其更适于离散型特征情况下分类问
题的求解。
15
��主要类型
(3)伯努利朴素贝叶斯(BernoulliNB)
• BernoulliNB假设特征的类条件概率服从伯努利分布,即数据包含多个特征,
而每个特征的取值仅有两种;因而,与MultinomialNB不同,BernoulliNB
更关注事件是否存在而非发生的次数。
16
��主要类型
(4)补集朴素贝叶斯(ComplementNB)
• ComplementNB主要用于解决朴素贝叶斯中的“朴素”假设以及样本不均
衡等因素产生的各种问题(在计算每个类别的分类概率时,传统的朴素贝
叶斯分类器可能会倾向于预测样本数较多的类别)。具体而言,对于指定
类别及其补集,ComplementNB首先计算相应特征条件概率的乘积,然后
利用两者之商作为指定类别最终的分类概率。
17
��应用实例
(1)高斯朴素贝叶斯(GaussianNB)
•导入方法:from�_bayes�import�GaussianNB
•函数原型:
• GaussianNB()
18
��应用实例
(2)多项式朴素贝叶斯(MultinomialNB)
•导入方法:from�_bayes�import�MultinomialNB
•函数原型:
• class��(alpha=,�
fit_prior=True,�class_prior=None)
19
��应用实例
(3)伯努利朴素贝叶斯(BernoulliNB)
•导入方法:from�_bayes�import�BernoulliNB
•函数原型:
• class�(alpha=,�
binarize=,�fit_prior=True,�class_prior=None)
20
��应用实例
(4)补集朴素贝叶斯(ComplementNB)
•导入方法:from�_bayes�import�ComplementNB
•函数原型:
• class��(alpha=,�
fit_prior=True,�class_prior=None,�norm=False)
21
��高斯朴素贝叶斯
• 高斯朴素贝叶斯分类器假定每个特征的条件概率均服从高斯分布,进而可根据贝叶斯公式
计算新样本属于各个类别的后验概率,最后通过最大化后验概率来确定样本的所属类别。
在实际中,若特征分布形态未知或不易确定时,通常可先采用高斯朴素贝叶斯分类器进行
初始分类或预测,若相应的精度达不到指定标准,则可尝试其他类型的朴素贝叶斯分类器。
• 案例5-1:成绩预测
• (1)问题描述
• 如表1所示“学生作息与成绩关系”数据构建高斯朴素贝叶斯分类器以实现新样本的预测
• (2)编程实现�����见5-1成绩预测.py
22
��高斯朴素贝叶斯
(3)结果分析
•成绩为好或差:�[[�]]
•成绩类别:�[0]
•预测精度:�
23
��高斯朴素贝叶斯
案例5-2:红酒分类
• (1)问题描述
• 利用高斯朴素贝叶斯分类器对Scikit-learn库中的红酒数据进行分类,
具体要求如下:
• ①利用训练样本构建模型,然后利用测试样本测试模型的精度。
• ②对分类结果进行可视化。
• (2)编程实现���见5-2红酒分类.py
24
��高斯朴素贝叶斯
•(3)结果分析
•预测精度:�
25
高斯朴素贝叶斯分类效果图(方形:训练样本,�圆形:测试样本)
��多项式朴素贝叶斯
• 多项式朴素贝叶斯主要适用于离散型特征(如次数、频率、计数等)
相关的分类问题的求解。例如,在文本分类问题中判断一段文本是属
于教育类别还是军事类别,此时仅需求取两者相应的概率P(教育|文本)
与P(军事|文本)的大小即可(其中最大者相应的类别即为文本所属类别)
;其中,由于文本本身由多个关键词构成,因而概率P(教育|文本)与P
(军事|文本)可转化为求取P(教育|关键词1,关键词2,关键词3...)与P
(军事|键词1,关键词2,关键词3...),进而可通过贝叶斯公式将概率求
取问题转化为不同关键词出现频率统计的问题。
26
��多项式朴素贝叶斯
• 实例5-3:特征离散化
• (1)问题描述
• 首先构造包含两个特征的样本集,然后完成以下实验:
• ①对样本集进行归一化处理。
• ②将样本集划分为训练样本与测试样本,然后利用训练样本构建多项式朴素贝叶斯模型并
利用测试样本测试其精度。
• ③查看相关先验概率与类条件概率。
• ④对原特征进行离散化处理并重新进行模型训练与测试。
• (2)编程实现���见实例5-3特征离散化.py
27
��多项式朴素贝叶斯
•(3)结果分析
•类先验概率:�[�]
•类条件概率:�[[�]
• �[�]]
•预测精度:�
•数据基本结构:�(700,�20)
•预测精度:�
•每个特征值离散为10个独热编码值,两个特征相应独热编码值共20个。
以离散化后的特征值训练MultinomialNB模型,其精度可提高到
28
��多项式朴素贝叶斯
•实例5-4:文本分类。
(1)问题描述
•首先下载Scikit-learn库fetch_20newsgroups数据(包含18846
篇新闻文本及20个新闻类别),然后统计文本中的词频并构建多
项式朴素贝叶斯分类器对文本进行分类。
(2)编程实现���见实例5-4:文本分类.py
29
��多项式朴素贝叶斯
(3)结果分析
预测精度:�
•本例首先对文本进行分词、词频统计与向量化处理,进而生成多
项式朴素贝叶斯分类器构建相应的样本。由于分类器自身性能以
及特征取值分布的影响,利用测试样本对多项式朴素贝叶斯分类
器进行测试的精度为。
30
��伯努利朴素贝叶斯
•伯努利朴素贝叶斯与多项式朴素贝叶斯非常相似,但与多项式朴
素贝叶斯不同的是其偏重于解决“是否存在”问题而非次数或频
率问题;例如,在文本分类中,伯努利朴素贝叶斯使用标示关键
词“是否出现”的0/1值而非关键词出现的次数或频率构建样本
以构建分类器。
31
��伯努利朴素贝叶斯
(1)问题描述
• Scikit-learm库手写数字数据集包含1797个手写数字样本,每个
样本为8×8二维数组(元素取值为0-16之间的整数),相应分类
标记为0-9之间的整数。利用伯努利朴素贝叶斯分类器实现Scikit
-learn库手写数字样本的分类。
(2)编程实现��见伯努利朴素贝叶斯.py
32
��伯努利朴素贝叶斯
(3)结果分析
• (1797,�64)
• (1797,)
•测试精度:�
• 提高相应的精度。
33伯努利朴素贝叶斯分类器
��补集朴素贝叶斯
• 补集朴素贝叶斯通过考虑每个类别的补集解决类别不平衡的问题,在实际中能够更
好地适应样本数较少的类别。然而,由于需要计算每个类别及其补集的概率,因而
计算复杂度相对较高。
• (1)问题描述
• 首先构造两类数量不均衡的样本并将其划分为训练样本与测试样本,然后利用训练
构建高斯朴素贝叶斯、多项式朴素贝叶斯、伯努利朴素贝叶斯与补集朴素贝叶斯分
类器并利用测试样本测试其性能(求取并对比相应的精度、召回率与AUC值)。
• (2)编程实现���见补集朴素贝叶斯.py
34
��补集朴素贝叶斯
(3)结果分析
Gaussian
Accuracy:
Recall:
AUC:
Multinomial
Accuracy:
Recall:
AUC:
35
Bernoulli
Accuracy:
Recall:
AUC:
Complement
Accuracy:
Recall:
AUC:
��补集朴素贝叶斯
(3)结果分析
•高斯与多项式朴素贝叶斯对不均衡数据较为敏感,召回率相对较
低;相对而言,伯努利与补集朴素贝叶斯可较好地缓解数据不均
衡问题,尤其是补集朴素贝叶斯,其虽然精度不高,但对不均衡
数据适应性较好。此外,在特征取值连续时,高斯朴素贝叶斯精
度最高,在实际中也最为常用。
36
本章小结
• 朴素贝叶斯是一种基于贝叶斯定理的分类算法,有着坚实的数学基础;
其通过假设特征之间相互独立,极大地降低了相关先验概率与类条件
概率的计算复杂度。在实际中,虽然其所依赖的特征相互独立的假设
在有些情况下并不成立,但由于原理与实现简单,而且训练与预测效
率较高,仍广泛应用于文档分类、垃圾邮件过滤与情感分析等诸多领
域,而且在数据量较大时往往仍能表现出较好的性能。此外,由于其
针对每个特征单独计算相关概率,因而也易于并行实现。
37
谢谢使用
周口师范学院
38