朴素贝叶斯3| 学习笔记

简介: 快速学习朴素贝叶斯3。

开发者学堂课程【机器学习算法 :朴素贝叶斯3】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/535/detail/7278


朴素贝叶斯3

 

内容介绍

一、拉普拉斯平滑

二、应用实践

三、朴素贝叶斯算法的优缺点

 

一、拉普拉斯平滑

拉普拉斯平滑:分类过程中,有时会碰到零概率问题,即某个待预测样本中的某个属性取值在样本中没有出现过,会导致整个概率的计算结果为0。拉普拉斯平滑通过在分子、分母上加上调整可以很好的解决这类问题。

image.png

在最终预测的时候,样本已经存在,需要确定样本属于哪一个分类的时候,分子部分是连乘,是很多属性取值条件概率的乘积,有任何一个乘积为0,就会导致整个式子分类失败。

 

二、应用实践

image.png 

1.如上图所示:条件概率为 ni/N,对其进行拉普拉斯平滑,即分子+1,分母+k(其中 k 为输出分类的个数)通过上述方式,解决0概率的问题。

2.以之前的购买记录分类为例:

P(中年|否)=0,此结果对最后结果有哪些影响?假设预测新纪录,中年、收入高、不是单身、信用良好会不会购买电脑?

(1)若按朴素贝叶斯方式计算会得到:

image.png

是或否都会正比于后面的式子,需要对两个式子进行对比,但其中包含了 P(中年|否)=0,那么否这一栏不需要计算,恒等于0,但并不等于中年、收入高、不是单身、信用良好一定会购买电脑,因为 P(中年|否)=0,没有出想过,没有前提支持,并不了解,将其做成0是不合适的。

(2)我们通过拉普拉斯平滑修正,因为他是0个,所有的中年人中有0个人购买电脑对其进行加一处理,分母加二处理即可,P(中年|否)=0+1/5+2=1/7。

(3)就可以使用P(中年|否)=1/7。进行继续计算,在进行对比即可,解决0概率问题。


三、朴素贝叶斯算法的优缺点

NB 优点:

1.有统计学基础背书,分类效率稳定支持多2.分类任务对缺失数据不敏感

3.算法简单,模型容易解释

4.计算量小,支持海量数据

5.支持增量式计算,可用作在线预测

NB 缺点:

1. 需要有先验概率,主观性强,不同值对结果有影响

2. 分类决策存在错误率

3.对输入数据表达形式敏感

4.“朴素”的假设对结果影响大

相关文章
|
算法 安全 搜索推荐
TLS 协议-对称加密原理
TLS 协议-对称加密原理
713 0
|
10月前
|
存储 人工智能
Scaling Law或将终结?哈佛MIT预警:低精度量化已无路可走,重磅研究掀翻AI圈
哈佛大学和麻省理工学院的研究人员最近发布了一项重磅研究,对Scaling Law在低精度量化中的应用提出严重质疑。研究表明,随着训练数据增加,低精度量化带来的性能损失也增大,且与模型大小无关。这挑战了通过增加规模提升性能的传统观点,提醒我们在追求效率时不能忽视性能损失。该研究结果在AI圈内引发广泛讨论,提示未来需探索其他方法来提高模型效率,如混合精度训练、模型压缩及新型硬件架构。论文地址:https://arxiv.org/pdf/2411.04330。
295 11
|
Ubuntu Shell 应用服务中间件
在Ubuntu 14.04上安装和使用Docker Compose的方法
在Ubuntu 14.04上安装和使用Docker Compose的方法
442 1
|
安全 JavaScript 前端开发
C++一分钟之-C++17特性:结构化绑定
【6月更文挑战第26天】C++17引入了结构化绑定,简化了从聚合类型如`std::tuple`、`std::array`和自定义结构体中解构数据。它允许直接将复合数据类型的元素绑定到单独变量,提高代码可读性。例如,可以从`std::tuple`中直接解构并绑定到变量,无需`std::get`。结构化绑定适用于处理`std::tuple`、`std::pair`,自定义结构体,甚至在范围for循环中解构容器元素。注意,绑定顺序必须与元素顺序匹配,考虑是否使用`const`和`&`,以及谨慎处理匿名类型。通过实例展示了如何解构嵌套结构体和元组,结构化绑定提升了代码的简洁性和效率。
332 5
|
JSON 安全 Java
Spring Boot中使用JWT进行安全认证
Spring Boot中使用JWT进行安全认证
|
安全 存储 网络安全
信息安全管理与评估DCST-6000B-Pro神州数码堡垒机沙箱连接教程
信息安全管理与评估DCST-6000B-Pro神州数码堡垒机沙箱连接教程
信息安全管理与评估DCST-6000B-Pro神州数码堡垒机沙箱连接教程
|
Go API 微服务
Golang微服务框架Kratos轻松集成并使用Swagger UI
在我们的开发当中,调试接口,测试接口,提供接口文档给前端,那都是非常频繁的工作内容。 那么,我们需要用什么方法和工具来实施这些工作内容呢? Swagger,或者说OpenAPI。
699 0
|
JavaScript 前端开发 Linux
网页跳转代码的三种方法
网页跳转代码的三种方法
1912 0
|
存储 缓存 Cloud Native
Nacos系列-Nacos配置中心
Nacos系列-Nacos配置中心
695 0
Nacos系列-Nacos配置中心