朴素贝叶斯原理
在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同。对于大多数的分类算法,比如决策树,KNN,逻辑回归,支持向量机等,他们都是判别方法,也就是直接学习出特征输出Y和特征X之间的关系,要么是决策函数Y=f(X)Y=f(X), 要么是条件分布P(Y|X)P(Y|X)。但是朴素贝叶斯却是生成方法,也就是直接找出特征输出Y和特征X的联合分布P(X,Y)P(X,Y),然后用P(Y|X)=P(X,Y)/P(X)P(Y|X)=P(X,Y)/P(X)得出。
1. 定义
先验概率:
在考虑任何新证据之前,基于已有知识或经验对事件发生的概率估计。
例如,在疾病检测中,某疾病的发病率 P(D)就是先验概率。
后验概率:
在观察到新证据后,更新的事件发生概率。
例如,在疾病检测中,已知检测结果为阳性后,患病的概率 P(D∣T)就是后验概率。
2. 数学表达
先验概率:P(Y)
表示事件 Y 在没有任何额外信息下的概率。
后验概率:P(Y∣X)
表示在观察到证据 X 后,事件 Y 的条件概率。
首先,这个名字里的“朴素”是指它做了某种简化的假设。那贝叶斯部分肯定和贝叶斯定理有关。贝叶斯定理是条件概率相关的,所以这个算法是基于条件概率进行分类的。
那贝叶斯定理的公式是什么呢?是P(A|B) = P(B|A) * P(A) / P(B)。也就是说,在B发生的条件下,A发生的概率等于A发生的概率乘以在A发生的条件下B发生的概率,再除以B发生的总体概率。
可是,为什么叫“朴素”呢?应该是因为它在计算的时候做了一些假设来简化问题。假设特征之间是相互独立的,也就是特征之间没有关联。这样在计算联合概率的时候,可以拆分成各个特征概率的乘积,而不需要考虑复杂的条件依赖关系。虽然这在现实中可能不成立,但这样的简化可以让计算变得可行,尤其是当特征数量很多的时候。
朴素贝叶斯分类器具体是怎么工作的呢?
比如说,用天气情况预测是否去打网球。特征可能是天气、温度、湿度、风况等,每个特征有不同的取值,类别是去或不去。训练数据中统计每种特征在去和不去的情况下的条件概率,然后当有一个新的天气情况出现时,计算后验概率,选择较大的那个类别作为预测结果。这时候如果假设各个天气特征之间独立,那么就可以用朴素贝叶斯来分类了。
不过,这里可能要注意处理零概率的问题。比如,如果特征在训练数据中的某个类别里从未出现,那么它的条件概率就会是零,这样整个乘积也会是零,这显然不合理。这时候可能需要用拉普拉斯平滑或者其他方法来调整概率估计,避免零值出现。
应用场景除了文本分类,还有哪些呢?
比如情感分析、垃圾邮件过滤、新闻分类、推荐系统,或者医疗诊断中的分类问题,只要特征可以被合理地独立看待,或者即使不独立但影响不大的情况下,都可以尝试使用朴素贝叶斯。
具体来说训练的过程。先统计每个类别下各个特征的条件概率,以及每个类别的先验概率。比如,先计算垃圾邮件的比例作为先验概率P(垃圾),然后对于每个单词,计算在垃圾邮件中出现的概率P(单词|垃圾),同理正常邮件的概率P(单词|正常)。当有一个新邮件来的时候,里面包含了一些单词,那么就计算P(垃圾)乘以所有单词在垃圾邮件中的条件概率的乘积,同样的计算正常邮件的,然后比较两者的大小,选择较大的那个作为分类结果。
朴素贝叶斯的优缺点是什么呢?
优点:
- 简单、高效,尤其是在高维数据中,比如文本分类,特征数量可能成千上万,但朴素贝叶斯仍然可以处理。而且训练速度很快,因为只需要计算各个概率,不需要复杂的迭代优化过程。
- 它对缺失数据不太敏感,如果某个特征在测试数据中没有出现,可以忽略或者用默认值处理。
缺点:
- 主要是特征条件独立的假设,在现实中往往不成立,比如在文本中,某些词之间可能存在关联,这时候模型可能无法捕捉到这些关系,导致准确率下降。
- 虽然可以通过平滑处理零概率问题,但如果训练数据不足或者分布不均匀,可能对先验概率的依赖较大,影响结果。
拉普拉斯平滑,是一种在概率估计中常用的平滑技术,主要用于处理概率为零的问题。它在朴素贝叶斯分类器、语言模型等场景中被广泛应用,尤其是在处理文本数据时,能够有效避免因某些特征在训练集中未出现而导致的概率为零的问题。
拉普拉斯平滑的核心思想是为每个概率估计加上一个非零的常数(通常是1),以避免零概率问题。具体来说,对于一个离散随机变量 X,其取值范围为 {x1,x2,…,xk},假设我们有 N 个观测值,其中 ni 是 xi 出现的次数。那么,拉普拉斯平滑后的概率估计为:
P(X=xi)=N+kni+1
为什么使用拉普拉斯平滑
避免零概率问题:在实际应用中,尤其是文本数据处理中,某些特征可能在训练集中未出现,但它们在测试集中可能会出现。拉普拉斯平滑通过为每个特征加上一个非零的平滑参数,确保所有特征的概率估计都不为零。
提高模型的鲁棒性:通过平滑处理,模型对未见过的数据有更好的适应性,从而提高模型的泛化能力。
简单易实现:拉普拉斯平滑的实现非常简单,只需在计数时加上一个常数即可。
相关文章:

朴素贝叶斯原理
在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同。对于大多数的分类算法,比如决策树,KNN,逻辑回归,支持向量机等,他们都是判别方法,也就是直接学习出特征输出Y和特征X之间的关系,要么…...
k8s中,一.pod污点,二.pod容器污点容忍策略,三.pod优先级(PriorityClass类)
一.pod污点:污点是让节点与pod产生排斥的一类规则污点标签的命令1.查看污点标签kubectl describe nodes 节点名2.设置污点标签kubectl taint node 节点名 key值value值:污点标签种类3.删除污点标签kubectl taint node 节点名 key值value值:污点标签种类-4.污点标签种类驱逐:NoE…...

【重生之学习C语言----水仙花篇】
目录 编辑 ----------------------------------------begin-------------------------------------- 一、什么是水仙花数? 二、问题分析 确定数字的位数:计算输入数字的位数 n。 分离每一位数字:例如将 153 分离为 1、5、3。 计算各…...

两步构建 AI 总结助手,实现智能文档摘要
在信息极度丰富的当下,如何从海量且复杂的文件资料中筛选出关键内容,成为了不少企业和个人急需解决的问题。本次解决方案将向您介绍,如何通过函数计算 FC 阿里云百炼平台搭建智能 AI 总结助手,实现高效的文本自动总结和信息提取。…...

承压金字塔(蓝桥杯17C)
文件读取,与写入:C 文件和流 | 菜鸟教程 #include <iostream> #include <fstream> #include <string> using namespace std; double sum[30][30]; int main() {ifstream infile("C:\\Users\\xutianci\\OneDrive\\Desktop\\TMOCC\…...
day33-数据同步rsync
一、Rsync本地模式和远程模式 纯通过rsync的命令,来实现,数据目录A 拷贝到数据目录B 也就是模拟cp的用法 很简单 1.安装 yum install rsync -y 2.命令语法,分几个模式 - 本地模式 rsync 参数 源路径 目标路径 rsync -xxxxx /var…...
Android 实现首页Tab切换并且支持懒加载功能详解
目录 1. 添加依赖2. 布局文件3. 创建 Fragment4. 创建适配器5. 在 MainActivity 中设置 TabLayout 和 ViewPager2 1. 添加依赖 在 build.gradle 文件中添加以下依赖: implementation androidx.viewpager2:viewpager2:1.1.0-beta01 implementation com.google.andr…...

[Android] 360行车记录仪谷歌版
[Android] 360行车记录仪谷歌版 链接:https://pan.xunlei.com/s/VOIQYq-jmW8Jpb8y3EIA3YdtA1?pwd3abw# 新买的360行车记录仪,配套软件让安装360智慧生活软件,二百多兆,各种功能齐全、忒齐全,好多用不到,…...
基于Redis分布式锁
1. 获取锁的过程 使用SETNX命令:SETNX(SET if Not eXists)是一个原子操作,它会在指定的key不存在时,将key的值设置为给定的value,并返回1;如果key已经存在,则不做任何操作࿰…...
Spring Boot 条件注解:@ConditionalOnProperty 完全解析
在 Spring Boot 项目中,有时候我们希望根据配置文件中的某个属性值来决定是否启用某个功能或加载某个组件。此时,ConditionalOnProperty 注解就可以发挥作用。它通过配置文件的属性值控制 Bean 或配置类的加载,使得我们的程序更具灵活性。 本…...
canny边缘检测
Canny边缘检测算法是一种广泛使用的边缘检测方法,由John F.Canny在1986年提出。它被认为是边缘检测的“黄金标准”,因为它在检测边缘的同时能够很好地抑制噪声,并且能够精确地定位边缘。Canny算法通过一系列步骤来实现鲁棒的边缘检测…...

团建 蓝桥杯省a 15
问题描述 小蓝正在和朋友们团建,有一个游戏项目需要两人合作,两个人分别拿到一棵大小为 nn 和 mm 的树,树上的每个结点上有一个正整数权值。 两个人需要从各自树的根结点 1 出发走向某个叶结点,从根到这个叶结点的路径上经过的所…...
【逻辑学导论】1.6 有效性和真实性
当一个演绎论证成功地将结论和前提必然地联系起来,它是有效的。有效性是针对论证的各命题之间的关系而言的。一个论证是有效的,当且仅当它不可能有真前提和假结论,当且仅当其结论是从其前提逻辑必然地推导出来的。因此,有效性永远…...

IDEA 中集成 Maven,配置环境、创建以及导入项目
目录 在 IntelliJ IDEA 中集成 Maven 并配置环境 1. 打开 IDEA 设置 2. 定位 Maven 配置选项 3. 配置 Maven 路径 4. 应用配置 创建 Maven 项目 1. 新建项目 2. 选择项目类型 3. 配置项目信息 4. 确认 Maven 设置 5. 完成项目创建 导入 Maven 项目 1. 打开导入窗口…...

Qt跨屏窗口的一个Bug及解决方案
如果我们希望一个窗口覆盖用户的整个桌面,此时就要考虑用户有多个屏幕的场景(此窗口要横跨多个屏幕),由于每个屏幕的分辨率和缩放比例可能是不同的,Qt底层在为此窗口设置缩放比例(DevicePixelRatio…...
Vue WebSocket简单应用 ws
webSocket应用 <template><div></div> </template><script> import { getToken } from "/utils/auth"; export default {data() {return {url: "",Socket: null, //socket对象lockReconnect: false, //锁定拒绝重连close: …...

快速单机部署ollama v0.5.7 +openwebui(免去网络环境干扰)
1 概述 本文介绍在一台机器上快速部署测试ollama和openwebui,免去国内网络环境的干扰。 2 环境 2.1 环境 版本信息如下: a、操作系统:centos 7.9 c、docker版本:20.10.5-3 3 部署 3.1 安装docker yum install -y yum-util…...
【华为OD-E卷 - 114 找最小数 100分(python、java、c++、js、c)】
【华为OD-E卷 - 找最小数 100分(python、java、c、js、c)】 题目 给一个正整数NUM1,计算出新正整数NUM2,NUM2为NUM1中移除N位数字后的结果,需要使得NUM2的值最小 输入描述 输入的第一行为一个字符串,字…...

快速搭建GPU环境 | docker、k8s中使用gpu
目录 一、裸机部署安装 GPU Driver安装 CUDA Toolkit测试 二、Docker 环境安装 nvidia-container-toolkit配置使用该 runtime 三、 k8s 环境安装 device-plugin安装 GPU 监控 一、裸机部署 裸机中要使用上 GPU 需要安装以下组件: GPU DriverCUDA Toolkit 二者的关…...

VSCode设置——通过ctrl+鼠标滚动改变字体大小(新版本的vs)
"editor.mouseWheelZoom": true 第一步: 第二步:...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...