[有监督学习]6.详细图解朴素贝叶斯

朴素贝叶斯

朴素贝叶斯(Naive Bayes)是常用于自然语言分类问题的算法。它在垃圾邮件过滤上的应用非常有名。


概述
朴素贝叶斯是一个基于概率进行预测的算法,在实践中被用于分类问题。具体来说,就是计算数据为某个标签的概率,并将其分类为概率值最大的标签。朴素贝叶斯主要用于文本分类和垃圾邮件判定等自然语言处理中的分类问题。
下面使用朴素贝叶斯将虚构的新闻标题分类为“电影”和“宇宙”两个类别(图 2-26)。

▲图 2-26 类别的分类


使用的数据如表 2-10 和表 2-11 所示。
▼表 2-10 训练数据

▼表 2-11 验证数据

表 2-11 的验证数据是作为“电影”类别的新闻标题生成的,但这里我们当作不知道它的类别。
下面思考根据训练数据计算未知数据的类别是“电影”还是“宇宙”的概率的方法。训练数据中类别为“电影”的数据有 3 条,类别为“宇宙”的数据也有 3 条。简单地计算一下,可知未知数据的类别为“电影”的概率是 3/6 = 50%,同样地,类别为“宇宙”的概率也是 50%。这个方法虽然很简单,但是如果采用这个计算方法,那么不管未知数据中的文本是什么,分类为各个类别的概率都是固定的。
朴素贝叶斯基于文本中包含的单词推测未知数据的类别。我们关注一下验证数据中包含的“感动”这个词。这个词在哪个类别里都会出现,但是出现的比例在每个类别里都不一样(图 2-27)。

▲图 2-27 单词出现的比例


在“电影”类别的数据中出现“感动”这个词的概率是 2/3 ≈ 67%,在“宇宙”类别的数据中则是 1/3 ≈ 33%,可见这个词更容易出现在“电影”类别的数据中。另外,在出现“感动”这个词的数据中,类别为“电影”的概率是 2/3 ≈ 67%,为“宇宙”的概率是 1/3 ≈ 33%。如果对使用验证数据中的“感动”这个词进行筛选后的数据计算比例,类别是“电影”的概率更高。此处求得的在某个条件(这次的条件是“感动”这个词出现)下的概率叫作条件概率
朴素贝叶斯不仅使用了单词在文本中出现的比例,还使用了每个单词的条件概率,通过文本中单词的信息提高了计算精度。


算法说明
虽然最终要做的是自然语言处理的分类,但在应用朴素贝叶斯时,还需要将输入数据转换为由特征值构成的向量。我们先在预处理阶段将文本转换为由特征值构成的向量,然后使用朴素贝叶斯进行训练,最后查看结果。


预处理
在预处理阶段,我们将文本转换为 BoW(Bag of Words,词袋)的形式,形成由特征值构成的向量和标签的组合。
先从现有的训练数据的文本中只提取出名词,忽略名词在文本中的顺序,把它们作为集合处理 1。表 2-12 列出了只从训练数据中提取出名词的结果。
1为了从文本中提取出单词的集合,需要进行分词处理,这里假定这些处理已事先做完,正文中不进行介绍。
▼表 2-12 提取出训练数据的单词后形成的集合

接下来,将训练数据和类别转换为易于处理的数据形式。当所有单词的集合包含训练数据的单词时,将该单词列的值设为 1,否则设为 0。另外,当类别为“电影”时,将类别的值替换为 1;当类别为“宇宙”时,将类别的值替换为 0,结果如表 2-13 所示。这些就是标签。
▼表 2-13 训练数据已成为特征值的向量

通过以上处理,我们可以将以自然语言书写的文本转换为表示单词出现的特征值和标签的组合,这种文本表示方式称为 BoW。下面采用同样的做法处理验证数据。验证数据中包含了训练数据中不包含的“复映”一词。这样的单词很难处理,简单起见,这次就不处理这个词了。文本处理后的结果如表 2-14 所示。
▼表 2-14 验证数据已成为特征值的向量

通过实施上述预处理,本次的问题就变为了预测验证数据 [1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0] 的类别的问题。


概率的计算
朴素贝叶斯使用训练数据来学习与各标签对应的单词的出现概率在分类时求出每个标签对应的概率,将概率最高的标签作为分类结果。朴素贝叶斯在训练时计算以下两种概率。
1 每个标签出现的概率。
2 在各标签下,每个单词出现的条件概率。
对朴素贝叶斯在训练时进行的处理进行汇总,如图 2-28 所示。注意,图中只展示了部分特征值的列。

▲图 2-28 训练时进行的处理


在图 2-8 中应该分配概率 0 的地方,我们分配了小的概率值 0.01,这种做法叫作平滑(smoothing)。概率为 0 的位置表示在对应的训练数据中没有出现对应的单词,但是如果使用更大的数据集作为训练数据,那个单词却真有可能出现。平滑处理考虑到了这种可能性,在没有出现单词的位置也分配小的概率值。
在分类时,朴素贝叶斯分别为每个标签值计算上述两个概率的乘积,通过比较进行分类。
例如,在对本次的验证数据 [1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0](“复映的动作电影名作让人感动”)这个文本进行分类时,实际比较的是下列处理的结果。
1 求出“电影”类别的文本出现的概率。
2 从“电影”类别的文本中分别求出“名作”“动作”“感动”这几个单词出现的概率。
3 对于文本中没有出现的单词,也要求出在“电影”类别的文本中没有出现的概率。
4 计算所有概率的乘积。
上述处理如图 2-29 所示。按标签比较图 2-29 中的处理的结果,输出其中概率最大的标签作为分类结果。

▲图 2-29 处理的示意图
图 2-29 中分别计算了作为特征值的每个单词的概率,没有考虑单词的顺序和组合。朴素贝叶斯通过“每个单词都是独立的”这样一个简单的假设简化了学习过程。


示例代码
下面实际编写代码来查看计算结果。
 

from sklearn.naive_bayes import MultinomialNB# 生成数据
X_train = [[1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0],[0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0],[1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0],[0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1]]y_train = [1, 1, 1, 0, 0, 0]model = MultinomialNB()
model.fit(X_train, y_train)
model.predict([[1,1,0,0,0,1,0,0,0,0,0]])

结果:

array([1])
这里得到的 array([1]) 意味着类别是“电影”,说明这次的判断是正确的。


详细说明
注意点
朴素贝叶斯是自然语言分类的基础算法,但是不适合预测天气预报中的降水概率那种预测值是概率本身的情况。前面的“算法说明”部分提到过,朴素贝叶斯基于“每个单词的概率可以独立计算”的假设,这是为了使概率的计算方法尽量简单。这个假设忽略了文本中单词之间的关联性。如果要计算的概率值很重要,则应该避免直接将由朴素贝叶斯算出的值用作概率。
另外,朴素贝叶斯的“即使将各自的特征作为独立的变量来处理,也可以计算出概率”这一假设对于某些学习任务不成立。例如,如果单词在不同的上下文中含义不同,那么朴素贝叶斯的假设是不成立的。“踢”这个单词常常在格斗等运动的文本中出现,但是如果文本中出现了“踢了球”的用法,那么此时文本的主题很有可能是足球。这种单词含义在不同的上下文中有所变化的情况是不满足朴素贝叶斯“所有特征都是相互独立的”这一假设的。如果要考虑单词的上下文,就需要根据不同的上下文考虑使用其他模型。

———————————————————————————————————————————

文章来源:书籍《图解机器学习算法》

作者:秋庭伸也 杉山阿圣 寺田学

出版社:人民邮电出版社

ISBN:9787115563569

本篇文章仅用于学习和研究目的,不会用于任何商业用途。引用书籍《图解机器学习算法》的内容旨在分享知识和启发思考,尊重原著作者宫崎修一和石田保辉的知识产权。如有侵权或者版权纠纷,请及时联系作者。
———————————————————————————————————————————

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/20443.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零开始利用MATLAB进行FPGA设计(七)用ADC采集信号教程2

黑金的教程做的实在太拉闸了,于是自己摸索信号采集模块的使用方法。 ADC模块:AN9238 FPGA开发板:AX7020;Xilinx 公司的 Zynq7000 系列的芯片XC7Z020-2CLG400I,400引脚 FBGA 封装。 往期回顾: 从零开始利…

STM32学习问题总结(2)—CubeMX生成项目后串口没效果和Microlib

检查完所有的硬件和软件部分,最后发现,又是Keil的设置问题,啊啊啊啊 打开Keil的魔术棒,勾选Target的Use Microlib选项即可,但这并不是最佳方案 最终解决方案: 参考:http://t.csdnimg.cn/2Tjfc…

服务器主板电池

一、什么是服务器纽扣电池? 服务器纽扣电池,也叫CMOS电池,是一种非常小型的电池,通常与服务器主板上的CMOS芯片相结合,用于储存BIOS设置、时钟和其他关键系统信息。这种电池的体积通常比一枚硬币还小,而且…

四、.Net8对接Ollama实现文字翻译(.Net8+SemanticKernel+Ollama)本地运行自己的大模型

.Net8SemanticKernelOllama 一、Semantic Kernel官方定义SK能做什么? 二、基本使用1、普通对话2、使用插件实现文本翻译功能 三、IChatCompletionService、ITextGenerationService、ITextEmbeddingGenerationService 很多情况都有这样的需求,使用自有系统…

巨细巨细的白痴级vulntarget-a靶场wp再不会你打死我

ad一,靶场搭建 下载靶场:GitHub - crow821/vulntarget: vulntarget靶场系列 官方拓补图 ps:此处 攻击机ip192.168.87.134,win7ip1为192.168.87.144 下载完毕后直接装入虚拟机不要进去,不要进去,不要进去…

d3dcompiler43.dll丢失怎么修复,分享几种有效的修复教程

电脑已经成为我们生活中不可或缺的一部分。然而,由于各种原因,电脑可能会出现一些问题,其中之一就是d3dcompiler43.dll文件丢失。这个文件是DirectX组件之一,用于编译和链接DirectX应用程序。当这个文件丢失时,可能会导…

网安面试。

SQL注入 sql注入原理 对用户输入的数据没有进行严格的过滤与判断,导致用户构造各种恶意 payload 拼接进后台数据库查询语句中执行。 sql的类型 联合注入 堆叠注入 宽字节注入 cookie注入 XFF头注入 UA注入(user-agent注入) Referer注…

AI大模型探索之路-实战篇12: 构建互动式Agent智能数据分析平台:实现多轮对话控制

系列篇章💥 AI大模型探索之路-实战篇4:深入DB-GPT数据应用开发框架调研 AI大模型探索之路-实战篇5:探索Open Interpreter开放代码解释器调研 AI大模型探索之路-实战篇6:掌握Function Calling的详细流程 AI大模型探索之路-实战篇7…

nnUNet保姆级使用教程!从环境配置到训练与推理(新手必看)

文章目录 写在前面nnUNet是什么?一、配置虚拟环境二、安装nnUNet框架1.安装nnUNet这一步我遇到的两个问题: 2.安装隐藏层hiddenlayer(可选) 三、数据集准备nnUNet对于你要训练的数据是有严格要求的,这第一点就体现在我…

WEB攻防-JAVAWEB项目常见漏洞

知识点 1.JavaWeb常见安全及代码逻辑 2.目录遍历&身份验证&逻辑&JWT 3.访问控制&安全组件&越权&三方组件 本篇主要了解以上问题在javaweb中的呈现, 第一个重点理解URL与javaweb代码框架的对应方式,java在没有代码的情况下是很难…

PMP学习和考试难度分析

PMP(项目管理专业人士)考试目前是全球范围内比较具权威性和认可度的项目管理证书之一。因此PMP考试的难度是一个备受关注的话题。根据我们以往的学员经验我从不同角度解析PMP考试的难度,并提供一些应对挑战的建议。希望对大家有所帮助。 PMP考…

Ubuntu 安装好虚拟环境后,找不到workon 命令

1、安装虚拟环境 pip3 install virtualenv pip3 install virtualenvwrapper 2、安装完成后 workon 命令。 找不到workon 命令 执行,source virtualenvwrapper.sh 执行后,在使用workon命令,即可完成。

君耐策划有限公司员工信息管理系统的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,基础数据管理,公告管理,薪资管理,员工考勤管理 员工账户功能包括:系统首页,个人中心,公告管理&#xff0…

vivo鄢楠:基于OceanBase 的降本增效实践

在3 月 20 日的2024 OceanBase 数据库城市行中,vivo的 体系与流程 IT 部 DBA 组总监鄢楠就“vivo 基于 OceanBase 的降本增效实践”进行了主题演讲。本文为该演讲的精彩回顾。 vivo 在1995年于中国东莞成立,作为一家全球领先的移动互联网智能终端公司&am…

【智能算法】吸引-排斥优化算法(AROA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年,K Cymerys受到自然界中吸引-排斥现象启发,提出了吸引-排斥优化算法(Attraction–Repulsion Optimization Algorithm, AROA)。 2.算法…

Python—面向对象小解(5)

一、多任务介绍 1.1 进程与线程 进程是操作系统分配资源的最小单元 线程执行程序的的最小单元 线程依赖进程,可以获取进程的资源 一个程序执行 先要创建进程分配资源,然后使用线程执行任务 默认情况下一个进程中有一个线程 1.2 多任务介绍 运行多个进程…

深入解析CRM客户关系系统:技术架构与功能实现的融合创新

CRM客户关系管理系统(Customer Relationship Management System)是一种以客户为中心的信息系统,旨在帮助企业更好地管理和维护客户关系,提高客户满意度和忠诚度,从而提升企业的市场竞争力。以下是CRM客户关系管理系统的…

电磁兼容整改时磁环怎么选型

电磁兼容整改时磁环怎么选型 磁环的选型错误磁环特性纳米微晶磁环磁环选型示例磁环选型 一条线缆两端都有设备,那磁环应该放在哪里? 我们怎么样来选择这个磁环,通过磁环的吸收作用,让辐射的强度和传导发射的这个强度衰减更大的那我…

Linux|虚拟机|Windows 11 家庭版的Hyper虚拟机服务开启

前言: Windows11的版本是比较多的,但有的时候笔记本预装的可能是家庭版,而家庭版的Windows通常是不支持虚拟机的,也就是说Hyper服务根本就看不到 Windows的程序和功能大体如下: 🆗,那么如何开…

一、初识Qt 之 Hello world

一、初识Qt 之 Hello world 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 初识Qt 之 Hello world文章目录 一、Qt 简介二、Qt 获取安装三、Qt 初步使用四、Qt 之 Hello world1.新建一个项目 总结 一、Qt 简介 C &#xf…