朴素贝叶斯分类算法

2023-10-27


版权声明:本文为CSDN博主「JensLee」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/LEE18254290736/article/details/82414685

 

贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。这篇文章我尽可能用直白的话语总结一下我们学习会上讲到的朴素贝叶斯分类算法,希望有利于他人理解。

 

1、分类问题综述

 既然是贝叶斯分类算法,那么分类的数学描述又是什么呢?

从数学角度来说,分类问题可做如下定义:已知集合,确定映射规则y = f(x),使得任意有且仅有一个,使得成立。

其中C叫做类别集合,其中每一个元素是一个类别,而I叫做项集合(特征集合),其中每一个元素是一个待分类项,f叫做分类器。分类算法的任务就是构造分类器 f。

分类算法的内容是要求给定特征,让我们得出类别,这也是所有分类问题的关键。那么如何由指定特征,得到我们最终的类别,也是我们下面要讲的,每一个不同的分类算法,对应着不同的核心思想。

 

2、朴素贝叶斯分类

那么既然是朴素贝叶斯分类算法,它的核心算法又是什么呢?

是下面这个贝叶斯公式:

换个表达形式就会明朗很多,如下:

我们最终求的p(类别|特征)即可!就相当于完成了我们的任务。

 

3、实例

给定数据如下:

问题:如果一对男女朋友,男生想女生求婚,男生的四个特点分别是不帅,性格不好,身高矮,不上进,请你判断一下女生是嫁还是不嫁?

这是一个典型的分类问题,转为数学问题就是比较p(嫁|(不帅、性格不好、身高矮、不上进))与p(不嫁|(不帅、性格不好、身高矮、不上进))的概率,谁的概率大,我就能给出嫁或者不嫁的答案!

这里我们联系到朴素贝叶斯公式:

我们需要求p(嫁|(不帅、性格不好、身高矮、不上进),这是我们不知道的,但是通过朴素贝叶斯公式可以转化为好求的三个量。

p(不帅、性格不好、身高矮、不上进|嫁)、p(不帅、性格不好、身高矮、不上进)、p(嫁)(至于为什么能求,后面会讲,那么就太好了,将待求的量转化为其它可求的值,这就相当于解决了我们的问题!)

 

4、朴素贝叶斯算法的朴素一词解释

(1)那么这三个量是如何求得?

是根据已知训练数据统计得来,下面详细给出该例子的求解过程。

 

(2)回忆一下我们要求的公式如下:

那么我只要求得p(不帅、性格不好、身高矮、不上进|嫁)、p(不帅、性格不好、身高矮、不上进)、p(嫁)即可,好的,下面我分别求出这几个概率,最后一比,就得到最终结果。

p(不帅、性格不好、身高矮、不上进|嫁) = p(不帅|嫁)*p(性格不好|嫁)*p(身高矮|嫁)*p(不上进|嫁),那么我就要分别统计后面几个概率,也就得到了左边的概率!

等等,为什么这个成立呢?学过概率论的同学可能有感觉了,这个等式成立的条件需要特征之间相互独立吧!

对的!这也就是为什么朴素贝叶斯分类有朴素一词的来源,朴素贝叶斯算法是假设各个特征之间相互独立,那么这个等式就成立了!

 

(3)但是为什么需要假设特征之间相互独立呢?

1、我们这么想,假如没有这个假设,那么我们对右边这些概率的估计其实是不可做的,这么说,我们这个例子有4个特征,其中帅包括{帅,不帅},性格包括{不好,好,爆好},身高包括{高,矮,中},上进包括{不上进,上进},那么四个特征的联合概率分布总共是4维空间,总个数为2*3*3*2=36个。

36个,计算机扫描统计还可以,但是现实生活中,往往有非常多的特征,每一个特征的取值也是非常之多,那么通过统计来估计后面概率的值,变得几乎不可做,这也是为什么需要假设特征之间独立的原因。

2、假如我们没有假设特征之间相互独立,那么我们统计的时候,就需要在整个特征空间中去找,比如统计p(不帅、性格不好、身高矮、不上进|嫁),

我们就需要在嫁的条件下,去找四种特征全满足分别是不帅,性格不好,身高矮,不上进的人的个数,这样的话,由于数据的稀疏性,很容易统计到0的情况。 这样是不合适的。

根据上面俩个原因,朴素贝叶斯法对条件概率分布做了条件独立性的假设,由于这是一个较强的假设,朴素贝叶斯也由此得名!这一假设使得朴素贝叶斯法变得简单,但有时会牺牲一定的分类准确率。

 

(4)好的,上面我解释了为什么可以拆成分开连乘形式。那么下面我们就开始求解!

我们将上面公式整理一下如下:

下面我将一个个的进行统计计算:

  • p(嫁) = 6/12(总样本数) = 1/2
  • 则p(不帅|嫁) = 3/6 = 1/2
  • 则p(性格不好|嫁)= 1/6
  • 则p(矮|嫁) = 1/6
  • 则p(不上进|嫁) = 1/6

下面开始求分母,p(不帅),p(性格不好),p(矮),p(不上进):

  • p(不帅) = 4/12 = 1/3
  • p(性格不好) = 4/12 = 1/3
  • p(身高矮) = 7/12
  • p(不上进) = 4/12 = 1/3

到这里,要求p(不帅、性格不好、身高矮、不上进|嫁)的所需项全部求出来了,下面我带入进去即可,

= (1/2*1/6*1/6*1/6*1/2)/(1/3*1/3*7/12*1/3)

 

(5)下面我们根据同样的方法来求p(不嫁|不帅,性格不好,身高矮,不上进),完全一样的做法,为了方便理解,我这里也走一遍帮助理解。首先公式如下:

下面我也一个一个来进行统计计算,这里与上面公式中,分母是一样的,于是我们分母不需要重新统计计算!

p(不嫁)=6/12 = 1/2

p(不帅|不嫁) = 1/6

p(性格不好|不嫁) =3/6 = 1/2

p(矮|不嫁) = 6/6 = 1

p(不上进|不嫁) = 3/6 = 1/2

那么根据公式:

p (不嫁|不帅、性格不好、身高矮、不上进) = ((1/6*1/2*1*1/2)*1/2)/(1/3*1/3*7/12*1/3)

 

(6)很显然(1/6*1/2*1*1/2) > (1/2*1/6*1/6*1/6*1/2)

于是有p (不嫁|不帅、性格不好、身高矮、不上进)>p (嫁|不帅、性格不好、身高矮、不上进)

所以我们根据朴素贝叶斯算法可以给这个女生答案,是不嫁!!!!

 

5、高斯朴素贝叶斯分类器

(1)若x为离散属性(朴素贝叶斯分类器)

在估计条件概率时,若为离散值属性,那么我们只需计算每个属性取值占所有样本的数量比例:


表示训练集D中第c类样本组成的集合,外加两条竖线表示的是集合的元素数量。表示的是中在第i个属性值上取值为xi的的样本组成的集合。

(2)若x为连续属性(高斯朴素贝叶斯分类器​​​​​​​)

为连续值属性,我们就得用概率密度函数了。

我们不妨假设服从高斯分布,基于这个分布,我们就可以构造一个高斯朴素贝叶斯分类器了。

假定服从这样的高斯分布,分别是第c类样本在第i个属性上取值的均值和方差。

的概率密度函数为:

这样我们就可以计算出各个p(xi|c),然后利用上面的公式:

建立一个高斯朴素贝叶斯分类器,我们用已知的类变量c的所有可能的值计算概率,并选择输出概率是最大的结果。

 

 

6、朴素贝叶斯分类的优缺点

优点:

(1) 算法逻辑简单,易于实现(算法思路很简单,只要使用贝叶斯公式转化一下即可!)

(2)分类过程中时空开销小(假设特征相互独立,只会涉及到二维存储)

缺点:

理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。

而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

朴素贝叶斯分类算法 的相关文章

  • 自信息量和一阶熵

    信息论中 自信息量和一阶熵是用来度量信息的重要概念 它们提供了一种方式来理解和量化信息的不确定性和平均量 对于解决信息传输 编码和存储等问题非常有用 首先 让我们来了解一下自信息量 自信息量是用来度量一个事件的信息量或不确定性的大小 假设有
  • Keras 3.0正式发布:可用于TensorFlow、JAX和PyTorch

    经过 5 个月的更新迭代 Keras 3 0 终于来了 大新闻 我们刚刚发布了 Keras 3 0 版本 Keras 之父 Fran ois Chollet 在 X 上激动的表示 现在你可以在 JAX TensorFlow 以及 PyTor
  • 人工智能知识表示与推理:构建智能系统的认知引擎

    导言 人工智能知识表示与推理是构建智能系统认知引擎的关键组成部分 本文将深入研究知识表示的方法和推理技术 以及它们在解决现实问题和提升智能系统智能水平中的作用 1 知识表示方法 符号表示法 使用符号和逻辑关系来表示知识 例如谓词逻辑 连接主
  • 人工智能伦理学与法律:创造公正智能的道路

    导言 随着人工智能的迅速发展 伦理学和法律的角色变得愈发关键 人工智能的迅猛发展引发了对伦理和法律框架的深刻思考 本文将深入探讨人工智能伦理学的原则 伦理法规的建设以及法律对人工智能的监管 为创造公正智能的道路指明方向 探讨如何将伦理学和法
  • 人工智能边缘计算:连接智能的边界

    导言 人工智能边缘计算是将智能计算推向数据源头的重要发展方向 本文将深入探讨边缘计算与人工智能的交融 以及在未来数字化社会中的前景 1 边缘计算的基础 分布式计算 边缘计算通过将计算任务推送至数据产生的地方 实现更高效的分布式计算 低延迟通
  • 【YOLO算法训练数据集处理】缩放训练图片的大小,同时对图片的标签txt文件中目标的坐标进行同等的转换

    背景 在训练一个自己的yolo模型目标检测模型时 使用公共数据集时 通常要将图片缩放处理 而此时图片对应的标签文件中目标的坐标也应进行同等的变换 这样才能保证模型的正确训练 当然 如果是自建的数据集 则将图片进行缩放后 使用Labelimg
  • .h5文件简介

    一 简介 HDF5 Hierarchical Data Format version 5 是一种用于存储和组织大量数据的文件格式 它支持高效地存储和处理大规模科学数据的能力 HDF5 是一种灵活的数据模型 可以存储多种数据类型 包括数值数据
  • 机器学习 项目结构 数据预测 实验报告

    需求 我经过处理得到了测试值 然后进一步得到预测和真实值的比较 然后再把之前的所有相关的参数 评估指标 预测值 比较结果都存入excel 另外我还打算做测试报告模板 包括敏感性分析等 您建议我这些功能如何封装这些功能 哪些功能放到一个文件中
  • 天猫双十实战

    import numpy as np import matplotlib pyplot as plt from sklearn linear model import SGDRegressor from sklearn preprocess
  • 机器学习 项目结构 数据预测 实验报告

    需求 我经过处理得到了测试值 然后进一步得到预测和真实值的比较 然后再把之前的所有相关的参数 评估指标 预测值 比较结果都存入excel 另外我还打算做测试报告模板 包括敏感性分析等 您建议我这些功能如何封装这些功能 哪些功能放到一个文件中
  • 互操作性(Interoperability)如何影响着机器学习的发展?

    互操作性 Interoperability 也称为互用性 即两个系统之间有效沟通的能力 是机器学习未来发展中的关键因素 对于银行业 医疗和其他生活服务行业 我们期望那些用于信息交换的平台可以在我们需要时无缝沟通 我们每个人都有成千上万个数据
  • 什么是“人机协同”机器学习?

    人机协同 HITL 是人工智能的一个分支 它同时利用人类智能和机器智能来创建机器学习模型 在传统的 人机协同 方法中 人们会参与一个良性循环 在其中训练 调整和测试特定算法 通常 它的工作方式如下 首先 对数据进行人工标注 这就为模型提供了
  • 山西电力市场日前价格预测【2024-01-05】

    日前价格预测 预测说明 如上图所示 预测明日 2024 01 05 山西电力市场全天平均日前电价为259 10元 MWh 其中 最高日前电价为363 99元 MWh 预计出现在18 00 最低日前电价为0 00元 MWh 预计出现在11 1
  • MIT_线性代数笔记:复习二

    目录 第二单元主要内容 例题 第二单元主要内容 正交矩阵 Q 用矩阵形式描述正交性质 投影矩阵 P 最小二乘法 在方程无解时求 最优解 Gram Schmidt 正交化 从任意一组基得到标准正交基 策略是从向量 中减去投影到其它向量方向的分
  • 如何用GPT制作PPT和写代码?

    详情点击链接 如何用GPT制作PPT和写模型代码 一OpenAI 1 最新大模型GPT 4 Turbo 2 最新发布的高级数据分析 AI画图 图像识别 文档API 3 GPT Store 4 从0到1创建自己的GPT应用 5 模型Gemin
  • 机器学习:基于python微博舆情分析系统+可视化+Django框架 K-means聚类算法(源码)✅

    博主介绍 全网粉丝10W 前互联网大厂软件研发 集结硕博英豪成立工作室 专注于计算机相关专业 毕业设计 项目实战6年之久 选择我们就是选择放心 选择安心毕业 感兴趣的可以先收藏起来 点赞 关注不迷路 毕业设计 2023 2024年计算机毕业
  • 机器学习算法实战案例:Informer实现多变量负荷预测

    文章目录 机器学习算法实战案例系列 答疑 技术交流 1 实验数据集 2 如何运行自己的数据集 3 报错分析 机器学习算法实战案例系
  • 3D点云检测神技 | UFO来了!让PointPillars、PV-RCNN统统涨点!

    作者 AI驾驶员 编辑 智驾实验室 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 3D目标检测 技术交流群 本文只做学术分享 如有侵权 联系删文 在这篇论文中提出了一个关于在3D点云中检测未
  • 5_机械臂运动学基础_矩阵

    上次说的向量空间是为矩阵服务的 1 学科回顾 从科技实践中来的数学问题无非分为两类 一类是线性问题 一类是非线性问题 线性问题是研究最久 理论最完善的 而非线性问题则可以在一定基础上转化为线性问题求解 线性变换 数域 F 上线性空间V中的变
  • 自动驾驶离不开的仿真!Carla-Autoware联合仿真全栈教程

    随着自动驾驶技术的不断发展 研发技术人员开始面对一系列复杂挑战 特别是在确保系统安全性 处理复杂交通场景以及优化算法性能等方面 这些挑战中 尤其突出的是所谓的 长尾问题 即那些在实际道路测试中难以遇到的罕见或异常驾驶情况 这些问题暴露了实车

随机推荐

  • QT遇到的一些坑 信号槽 多线程 GBK

    1 信号槽 想使用信号槽 需要继承public QWidget类 并在类中定义宏Q OBJECT 2 GBK编码 QT的中文是UTF8编码且会自动把gbk编码转换成utf8编码 3 多线程 QT的线程是异步模型 需要把socket传到线程中
  • 更常用的BRDF--------Phong光照方程

    Phong光照方程 相对于物理的BRDF使用较多的反射计算方程为Phone光照方程如下 其中v是从表面点p到视点的向量 r是光线l对法线n的反射光线 mshi是参数因子用于不同材质的不同反射强度 如下图 由公式可知向量r和向量v越接近反射亮
  • 【Flutter 1-5】运行Flutter的第一个项目——计数器

    创建项目 创建Flutter项目有很多种方法 各个IDE工具也都集成了创建Flutter项目的快捷操作 我们这里列举三种方式 使用命令行创建 使用Android Studio创建和使用VSCode创建 文章首发地址 使用命令行创建 在Flu
  • vue --echarts

    x轴文字横向竖着排列 xAxis type category boundaryGap true nameGap 30 splitArea show false axisLabel show true interval 0 formatter
  • RunnerGo:轻量级、全栈式、易用性和高效性的测试工具

    随着软件测试的重要性日益凸显 市场上的测试工具也日益丰富 RunnerGo作为一款基于Go语言研发的开源测试平台 以其轻量级 全栈式 易用性和高效性的特点 在测试工具市场中逐渐脱颖而出 RunnerGo是一款轻量级的测试工具 使用Go语言研
  • @FeignClient 注解的使用与常见问题

    概述 Feign 是一个声明式的 Web 服务 通过定义一个添加相应注解的接口 即可完成一个 Web 服务的接口 SpringCloud 对 Feign 进行了封装以后 其开始能够支持 Spring MVC 标准注解 同时在 SpringC
  • 有序数组合并

    数组合并是归并排序中的一个步骤 今单独就两个有序数组的合并给出代码实现 归并排序的另一个步骤就是递归 递归就是一个方法在其方法体的某个地方调用自己 这样就会将同一个逻辑不断的压栈 到达递归条件后 又一层层地出栈 直到所有方法被压栈的部分都被
  • ARGB与RGB、RGBA的区别

    ARGB 是一种色彩模式 也就是RGB色彩模式附加上Alpha 透明度 通道 常见于32位位图的存储结构 RGB 色彩模式是工业界的一种颜色标准 是通过对红 R 绿 G 蓝 B 三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的
  • HikariPool-1 - Failed to validate connection com.mysql.cj.jdbc....Possibly consider using a shorter

    今天使用springboot遇到了这样的问题 springboot项目启动开始可以访问数据库 但是几分钟之后就会报错 idea报错信息 HikariPool 1 Failed to validate connection com mysql
  • 【技术分享】开启机器学习之旅的8个推荐Python库

    机器学习是当今的热门话题之一 Python 是众多用户中排名第一的编程语言 然而 Python 是一种通用编程语言 这意味着它被用于许多不同的领域 要使用 Python 进行机器学习 除了通用Python之外 您还需要学习一些额外的 Pyt
  • SSH和SSM对比总结

    Java开发之路 2016 10 18 11 19 当下流行的两种企业开发MVC开源框架 是我们Java程序猿必备知识能力 MVC 即模型 model 视图 view 控制器 controller 的缩写 一种软件设计典范 用一种业务逻辑
  • MVC三层架构的模式

    大家好 今天给大家分享一下MVC 三层架构的模式 首先你要知道 所谓的MVC就是一种面向于javaee企业级开发的设计模式 这里要强调一点 MVC 不是一种技术 不是一种像spring 那样的框架 它是一种思想 可以理解为一种解决问题的风格
  • 001学习亿级流量搭建-ubuntu-小白式环境搭建准备

    本人也是刚开始学习亿级流量搭建 包括虚拟机安装 java配置 系统配置 有什么不对 可以微信公众号一起交流 java微技术 环境搭建准备 本人用ubuntu16 04 下载地址http releases ubuntu com 16 04 u
  • java selenium 环境搭建

    eclipse运行selenium webdriver工程 1 需要三个文件selenium server standalone 3 141 0 jar selenium java 4 0 jar和selenium java 4 0 0 s
  • 一些算法岗的校招面经

    从今年3月份暑期实习到秋招一直投的算法岗 数据挖掘 机器学习 今年听说投算法的人特别多 竞争激烈 自己之前本来想去金融 后来觉得还是喜欢互联网 从去年11月才开始好好看书 又不是CS科班出身 所以面试毫无优势可言 基本上把大半个互联网公司都
  • 奇迹服务器放虚拟机,虚拟机双开奇迹教程

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 准备工作 1 VMware Workstation 5 5 4 2 XP安装盘 没有的人可以去买个或去下个系统 最好是最原始的系统没任何补丁的 安装系统的时候把虚拟系统里面的硬盘分2个区 一个盘
  • 互联网产品中的平台、社区、软件、网站、品牌等科普

    文章目录 GitHub GitLab xiaomi cn 微博 B站 MIUI Android Redmi ROM LineageOS SU ASUS Nokia Nubia NVIDIA OnePlus Razer Fairphone S
  • 游戏开发unity编辑器扩展知识系列:获取选中对象

    参考 UnityEditor的Selection类
  • amd raid for Linux,AMD平台RAID 0安装

    AMD平台RAID 0安装 2011 05 29 16 07 47 标签 电脑 it 分类 技术 AMD平台RAID 0安装 AMD平台的RAID 0安装要稍微复杂一些 这主要是因为安装系统的时候 Windows 7以及Windows Vi
  • 朴素贝叶斯分类算法

    版权声明 本文为CSDN博主 JensLee 的原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接及本声明 原文链接 https blog csdn net LEE18254290736 article detail