贝叶斯分类器| 学习笔记

简介: 快速学习贝叶斯分类器。

开发者学堂课程【高校精品课-北京理工大学-数据仓库与数据挖掘(上):贝叶斯分类器】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/921/detail/15645


贝叶斯分类器

 

内容介绍:

一、贝叶斯分类器概念

二、贝叶斯分类器计算

三、朴素贝叶斯分类器

四、朴素的贝叶斯计算问题

五、贝叶斯分类器的优缺点

 

一、贝叶斯分类器概念

贝叶斯分类器是一类基于统计的分类器。有坚实的数学基础,主要是依赖于贝叶斯定理。

对于贝叶斯分类器来说,它的性能是比较好的。最简单的贝叶斯分类器也就是朴素贝叶斯分类器,它的分类性能可以媲美决策树和基于神经网络的分类器的。

 

二、贝叶斯分类器计算

首先来看一下贝叶斯分类器中对于分类的任务的理解,在贝叶斯分类器中把每一个属性和每一个类都看做是一个随机变量。基于给定的一个数据对象,他的属性 X1X2 一直到 xd 分类的任务是要预测数据对象的类标签y。

1. 原理

在贝叶斯分类器中,要去找到一个y的值,使得概率 Given X1。X2 一直到 xd下Y=y 的概率最大。

2. 步骤

也就是把一个分类问题转换成了一个概率求解问题。如何去估算 GivenX1、X2、 xd 条件下 Y=y 的概率呢?通过一个例子介绍。

(1)、在贝叶斯分类器中,依然需要依赖训练集。训练集上,依然是由三个属性和一个类别。根据这样的一个训练集,需要预测一个未标记的数据对象x。确定x的类别是多少。

那么假设类别有两种 no 和 yes,需要判断的是,数据对象属于 yes 还是属于 no,也就是需要进行一个比较。

图片37.png 

(2)、方法。根据贝叶斯定理,GivenX1、X2一直到 xn 条件下 y 的概率其实是等于 Given y 条件下 X1、X21 到 xd出现的概率乘以 y 的概率,然后再除于下面的 X1、X2 、、、xd 的联合概率。

图片38.png 

(3)、因为在贝叶斯分类中,需要进行比较。也就是y的取值是有不同种,因为有不同的类别,每一类都会有一个概率,对于公式中分母的这一部分其实是完全一样的,所以是不需要计算的,那么对于 Py 来说,可以统计我们训练集中每一个类别出现的概率来实现估算。所以说最大化 Given x1 、x2 、、、xd 条件下 y 的概率,其实就等价于去最大化 py 乘以 Given y 条件下的 X1、X2 一直到 xd 出现的概率。

图片39.png

py 是可以估算的那么也就是在贝叶斯分类器中的核心就是怎么样去估算Given条件下X1、X2、、、xd 的值。

3.示例数据

(1)、给定一个测试记录。上面的一种概率计算是比较复杂的,但是可以通过一些假设简化他,比如还是以这个例子为主。

图片40.png

用 Yes 来代表一个类别等于 yes,用 no 来代表类别等于 no。对于这样的一个概率 Givenx 下 yes 出现的概率,用贝叶斯公式就可以表示,同理 Givenx 数据对象下取值为 no 的概率,那么可以去计算 yes 的概率和 no 的概率是很好估算。

(2)、概率计算。核心就变成了如何去求解 Giveny 条件下 X1 一直到 xd 出现的概率。

那么前面讲过,这样的概率是不太好计算的,所以就需要去使用一个假设条件。

 

三、朴素贝叶斯分类器

图片41.png

那么其中这样的一个。Σij就表示的是在类别为ij的条件下的属性为i的数据的方差,而μij就表示是类别为j,属性xi的均值。

然后得到概率分布函数之后,就可以把x值带进去计算,根据条件下xij的取值。

5.连续量类型例子

介绍一个例子。比如的收入是连续的。

(1)、因为 class=no 情况下,收入的均值是110。那么方差算出来是2975。对于 income=120。这种数据对象,在Given no 的条件下的属性,income=120的这概率就可以用概率分布函数计算出来,那么把我们的120带进去就可以得到再 Given no 条件下,income=120的概率等于0.0072,

图片42.png

(2)、属性分类

再回到例子中去,这里给出的是一个。用于预测是否买电脑的一个训练集。在训练集一共14个数据对象,他的类别主要是由两种 yes 或者是no。那么这时候,这样的一组训练集,需要对一个未标记的数据进行分类,未标记数数据的属性是 age 小于等于30。那么收入等于 medium,student 是等于 yes ,credit_rating=fairf。

图片43.png

(3)、P(CI)

首先要计算 py 的概率,那么在14个数据中,有九个是 yes,五个是 no,所以 yes 的概率就是0.643,no概率就是0.357。 

图片44.png

(4)、Given(ci)条件下 x 出现的概率

然后再计算完P(CI)之后,来计算 Given(ci)条件下,x 出现的概率。首先计算 age 属性,在 yes 的条件下,age小于等于30的概率,因为 age 是一个离散属性,取之为 yes 的数据对象是九个,其中有两个 age 属性是小于等于30,所以是0.222。那么,在计算 no 条件下,age 小于等于30的概率,那么可以得到是0.6。以此类推,计算 income 的一个概率,那么再计算 student、credit_rating 把所有的 Given cjx 的概率求出来。

图片45.png 

(5)、朴素贝叶斯训练数据集

之后就可以把它进行粘成了。对于数据对象来说,首先在 yes 的条件下,把每一个 Given yes 的条件下,这个属性出现的概率把他连乘起来。然后再计算在内条件下,把每个属性出现的概率乘起来,

还要考虑每一个类别出现的概率,最后可以看到在yes条件下数据对象数据的概率是0.028,在n o 条件下,数据对象出现的概率是0.007,那么很显然,yes 大于 No的,因此最后数据对象就被判定为是属于 yes 这个类。这个就是关于朴素的贝叶斯的计算方法。

图片46.png 

四、朴素的贝叶斯计算问题

1. 概率为0

朴素的贝叶斯计算方法中呢有一个容易产生问题的地方,因为在计算 Given y 条件下 x 出现概率的时候,要把它每一个属性的条件概率都要相乘。如果有一个条件概率为零,无论它的其他取值怎么样,在每种类别下出现的概率都为零,所以说,这种情况是不利于对分类进行判别的。

2.处理方法

就需要对此进行处理,处理的方法就是对每一个类别增加一个事例,保证每一个属性都不会取值为零,通过一个例子介绍。

(1)、问题

比如数据集中,是有1000个元素。Income=no 是零个。Income 等于中等水平的是990个,而 incom 等于 high 的是有十个。

那因为 incom=no 是零,所以说 Given x 下 yes 出现的概率和 Given  x 下 no 的概率都会是零。

图片47.png

(2)、拉普拉斯纠正

这个时候为了避免这样的一种情况,就把每一个类别都加一个数据对象。因为有三种情况,no 、medium、high。所以总共需要增加三个数据对象,这个时候收入等于no这种概率就是(1000+3)÷1。那我们的这样的一个收入,为中等的情况就是1000+3,除以990+1。那么这样一种操作把它称之为是叫做拉普拉斯纠正。

那通过这种拉普拉斯纠正,就避免了条件概率为零,从而导致没有办法去判定这个数据对象的类别的这样的一种问题。

图片48.png 

五、贝叶斯分类器的优缺点

最后总结一下,贝叶斯分类器的优缺点。在这里介绍的贝叶斯分类器是基于一种假设,就是属性之间,是彼此独立的,这种分类器称之为叫做朴素的贝叶斯分类器。

1.优点

对于朴素的贝叶斯分类器来说,它的好处是比较容易理解,较容易实施,那么它的分类性能也是非常好的。

2. 缺点

缺点中有一个最突出的地方就是要依赖于假设,就是属性之间必须是独立的。但是在真实的情况中,属性之间可能是有相互联系甚至相互组合在一起,对类别产生影响,所以为了解决这样的一种属性间不满足独立的条件,就推出了一种叫做贝叶斯信念网络的一种分类器。

相关文章
|
SQL 分布式计算 监控
Sqoop数据迁移工具使用与优化技巧:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入解析Sqoop的使用、优化及面试策略。内容涵盖Sqoop基础,包括安装配置、命令行操作、与Hadoop生态集成和连接器配置。讨论数据迁移优化技巧,如数据切分、压缩编码、转换过滤及性能监控。此外,还涉及面试中对Sqoop与其他ETL工具的对比、实际项目挑战及未来发展趋势的讨论。通过代码示例展示了从MySQL到HDFS的数据迁移。本文旨在帮助读者在面试中展现Sqoop技术实力。
1005 2
|
编译器 API Android开发
Android经典实战之Kotlin Multiplatform 中,如何处理不同平台的 API 调用
本文介绍Kotlin Multiplatform (KMP) 中使用 `expect` 和 `actual` 关键字处理多平台API调用的方法。通过共通代码集定义预期API,各平台提供具体实现,编译器确保正确匹配,支持依赖注入、枚举类处理等,实现跨平台代码重用与原生性能。附带示例展示如何定义跨平台函数与类。
463 0
|
机器学习/深度学习 人工智能 安全
【Python专栏】Python的历史及背景介绍
【Python专栏】Python的历史及背景介绍
1615 6
|
数据采集 数据可视化 数据挖掘
数据驱动决策:BI工具在数据分析和业务洞察中的应用
【10月更文挑战第28天】在信息爆炸的时代,数据成为企业决策的重要依据。本文综述了商业智能(BI)工具在数据分析和业务洞察中的应用,介绍了数据整合、清洗、可视化及报告生成等功能,并结合实际案例探讨了其价值。BI工具如Tableau、Power BI、QlikView等,通过高效的数据处理和分析,助力企业提升竞争力。
288 5
|
缓存 负载均衡 数据库
构建高性能微服务架构:策略与实践
【5月更文挑战第21天】 随着现代业务需求的不断演进,传统的单体应用架构已难以满足快速迭代和灵活部署的要求。微服务架构应运而生,以其服务的细粒度、独立性和弹性优势成为企业转型的重要选择。本文将深入探讨如何构建一个高性能的微服务系统,从服务划分原则到性能优化技巧,旨在为开发者提供一套系统的微服务性能提升方案。文章将重点讨论在设计高并发、低延迟的微服务时需要考虑的关键因素,包括服务治理、缓存策略、负载均衡以及异步通信机制等。
|
机器学习/深度学习 并行计算 编译器
AVX 指令集简介及其与 SSE 的对比
本文介绍了AVX指令集在高性能计算中的重要性,它是Intel于2011年推出的一种SIMD技术,扩展了SSE指令集,将向量宽度增至256位,支持更多数据类型和浮点精度控制。主要差异包括向量宽度、数据类型扩展、指令集增加和精度控制。文中通过C代码示例展示了如何使用AVX进行向量加法。AVX对科学计算、图像处理和机器学习等领域提供了显著的性能提升。编译时需确保编译器支持AVX标志。
|
关系型数据库 API 数据库
rds备份与恢复
rds备份与恢复
812 4
|
安全 Android开发 iOS开发
安卓与iOS操作系统的比较分析
【6月更文挑战第5天】本文将深入探讨安卓和iOS两大主流操作系统的特点、优势和劣势。通过对比分析,我们将揭示这两个系统在性能、安全性、用户体验等方面的差异,帮助用户更好地了解这两个系统,从而做出更明智的选择。
|
存储 Windows
GitHub+PicGo+Typora搭建个人免费图床并实现md粘贴即上传
本文介绍基于Github平台与PicGo工具,构建免费、稳定的图床,并实现在Typora内撰写Markdown文档时,粘贴图片就可以将这一图片自动上传到搭建好的图床中的方法~
1348 3
GitHub+PicGo+Typora搭建个人免费图床并实现md粘贴即上传
|
Java Linux
linux一键启动和停止多个端口服务脚本:springboot项目打jar包指定多个端口
linux一键启动和停止多个端口服务脚本:springboot项目打jar包指定多个端口
352 0