朴素贝叶斯1| 学习笔记

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

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

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


朴素贝叶斯1

 

内容介绍

一、朴素贝叶斯

二、朴素贝叶斯的模型

二、总结

 

一、朴素贝叶斯

1.朴素贝叶斯(Naive Baves,NB)是一种少见得基于概率理论的分类算法,例如有几个分类结果,计算样本归属于每一个分类的概率,取概率最大的分类作为最终的输出结果,贝叶斯理论为理论基础通过计算样本归属于不同类别的概率来进行分类,是一种经典的分类算法。

2.贝叶斯理论(偏哲学):基于能获得的最好证据(观察、数据和信息等),来计算信念度(或者假说、主张、命题)的有效方法。信念度即为对事物的真实性和正确性所具有的的信心。

3.朴素:单纯的、粗糙的,简单粗暴的假设给定目标值时属性之间相互条件独立,互补影响。

已知一组事件{A1,A2,…An},通过这组事件去估计一个事件B发生的概率,即求:P(B|A1,A2,…,An)根据贝叶斯公式有:

image.png

以上为典型的联合概率,例:P(A1A2)=P(A2|A1)*P(A1)

假设有100个事件,每个事件可能的结果有2个,将所有属性组合起来判断交集,则该事件组的联合分布有2的100次方种组合,无法计算,有可能存在交集是空的情况,但在没有便利之前,并不知道哪些交集是空,所以需要计算2的100次方次,很难计算。

一旦“朴素”,即各事件独立,马上变简单了,就不需要去计算复杂的条件概率下的联合概率、相互之间是独立的。

image.png

联合概率就变成了,每一个事件发生的乘积,b 发生条件下 Ai 发生的概率的乘积,计算数量一下子就从2的100次方下降到200个,实际上 a 事件之间并不是相互独立的,不能武断粗暴的理解为独立的,对准确性有影响,但在计算量上来讲,精确的准确的无法计算,做了粗暴的假设后,计算量变得很小。如果事件之间关联性比较大的话,互相影响比较严重,建议不要使用朴素贝叶斯算法,因为前提条件本身不成立。

 

二、朴素贝叶斯的模型

有 m 个样本,每个样本有 n 个特征,输出为 k 个类别,表示如下:

image.png

通过样本学习得到先验概率:P(Y=Cj),j=1,2,…,k

通过样本学习得到条件概率:P(X=x|Y=Cj)=P(X1= x1,X₂ = x2,…Xn = xn|Y =Cj)

通过上述学习结果,可以计算X,Y的联合概率分布:

image.png

最终输出结果是某一个类,其中存在一个样本为x的概率是多大。

对上图结果再进行朴素假设得到如下结果

image.png

将联合概率变成一组单个概率发生事件的乘积,可算性就变强许多。即可得到最终结果

image.png

对新样本的预测

image.png

计算 k 个分类的条件概率是为了给新样本找到属于某一个类的概率,找到概率最大的一类,就可以作为新样本最终归属的类。

 

三、总结

1. 首先得到先验概率

2. 条件概率并不是主要的,因为后续可以将其化简成单个独立事件发生的概率

3. 通过先验概率去计算联合概率分布,即可确定朴素贝叶斯的模型。

4. 再对新样本预测,计算 k 个分类的条件概率,找到最大的一个即可。

相关文章
|
存储 编译器 C语言
详解C/C++中的static和extern
本文详解了C/C++中`static`和`extern`关键字的用法和区别,通过具体代码示例说明了在不同情境下如何正确使用这两个关键字,以及`extern "C"`在C++中用于兼容C语言库的特殊作用。
494 4
详解C/C++中的static和extern
|
Linux
修复io.minio.errors.ErrorResponseException: Access denied错误
修复io.minio.errors.ErrorResponseException: Access denied错误
1821 0
|
安全 Android开发 iOS开发
Android vs iOS:深入剖析两大移动操作系统的优劣与未来趋势####
【10月更文挑战第21天】 本文旨在通过技术视角,全面对比分析Android与iOS两大主流移动操作系统的架构差异、用户体验、安全性及生态系统等方面,探讨其各自优势与不足,并预测未来发展趋势。 ####
1411 1
|
JavaScript 前端开发 开发者
哇塞!Vue.js 与 Web Components 携手,掀起前端组件复用风暴,震撼你的开发世界!
【8月更文挑战第30天】这段内容介绍了Vue.js和Web Components在前端开发中的优势及二者结合的可能性。Vue.js提供高效简洁的组件化开发,单个组件包含模板、脚本和样式,方便构建复杂用户界面。Web Components作为新兴技术标准,利用自定义元素、Shadow DOM等技术创建封装性强的自定义HTML元素,实现跨框架复用。结合二者,不仅增强了Web Components的逻辑和交互功能,还实现了Vue.js组件在不同框架中的复用,提高了开发效率和可维护性。未来前端开发中,这种结合将大有可为。
516 0
|
消息中间件 JSON 大数据
大数据-66 Kafka 高级特性 分区Partition 副本因子Replication Factor replicas动态修改 线上动态修改副本数
大数据-66 Kafka 高级特性 分区Partition 副本因子Replication Factor replicas动态修改 线上动态修改副本数
370 1
|
9月前
|
机器学习/深度学习 自然语言处理 数据可视化
《自然语言处理架构的隐秘力量:FFN深度揭秘》
前馈神经网络(FFN)是自然语言处理(NLP)领域中不可或缺的组件,尤其在Transformer等架构中发挥重要作用。FFN通过非线性变换和特征提取,增强模型对复杂语义的理解能力,同时平衡注意力机制输出,提升泛化性能。其基本结构包括输入层、隐藏层和输出层,工作原理涉及加权求和与激活函数处理。尽管存在训练成本高和可解释性差等问题,未来的研究可能通过稀疏连接、动态计算等方式优化FFN,推动NLP技术进一步发展。
483 3
|
JavaScript 算法
【Vue面试题六】、为什么Vue中的 v-if 和 v-for 不建议一起用?
这篇文章解释了Vue中`v-if`和`v-for`不建议一起使用的原因,因为`v-for`具有更高的优先级,同时使用会导致性能浪费。文章建议使用`<template>`标签来包裹`v-if`和`v-for`,以优化性能,并通过计算属性提前过滤不需要显示的项。
【Vue面试题六】、为什么Vue中的 v-if 和 v-for 不建议一起用?
|
安全 编译器 API
为什么会有 GIL?如何释放 GIL 实现并行?
为什么会有 GIL?如何释放 GIL 实现并行?
312 1
|
缓存 前端开发
后端MultipartFile接收文件转Base64
后端MultipartFile接收文件转Base64
204 0
|
JavaScript 小程序
微信小程序 搜索框实现模糊搜索(带模拟数据,js,wxml,wxss齐全
微信小程序 搜索框实现模糊搜索(带模拟数据,js,wxml,wxss齐全