当前位置: 首页 > news >正文

一文讲明白朴素贝叶斯算法及其计算公式(入门普及)

1、贝叶斯算法

贝叶斯定理由英国数学家托马斯·贝叶斯 ( Thomas Bayes) 提出的,用来描述两个条件概率之间的关系。通常,事件A在事件B 发生的条件下与事件 B 在事件 A 发生的条件下,它们两者的概率并不相同,但是它们两者之间存在一定的相关性,并具有以下公式,称之为贝叶斯公式:

对于一般的机器学习算法学习者而言,大家看到这种公式基本上都是在努力回忆那些学过的数学知识,总有一种似曾相识的感觉,但却不能准确理解,为此首先进行复习和回归数学中的那些个事情。

 ☀什么是条件概率?

条件概率就像是在一个已经有了某种“前提情况”下,去看另一件事情发生的可能性。比如说,你想知道在“今天是下雨天”这个前提条件下,“路上堵车”的概率。“今天是下雨天”就是那个已经发生的事件B,“路上堵车” 就是事件A,我们想求的就是P(A|B)。

☀如何理解2个事件存在一定的相关性?

当我们考虑两个条件概率P(A|B)P(B|A)时,它们之间的相关性源于事件A和B本身的内在联系。例如,假设事件A是“一个人患有流感”,事件B是“一个人发烧”。 

P(A|B)表示在一个人发烧的情况下,他患有流感的概率。而P(B|A)表示在一个人患有流感的情况下,他发烧的概率。很明显,这两个概率是相关的,因为流感和发烧这两个事件是紧密联系在一起的。如果一个人更容易在患流感的时候发烧,那么P(B|A)的值就会比较高;反过来,发烧是患流感的一个常见症状,那么在看到一个人发烧时,他患流感的概率P(A|B)也会受到P(B|A)的影响。

条件概率是“贝叶斯公式”的关键所在,它也被称为“似然概率”, 一般是通过历史数据统计得到.贝叶斯公式可以预测事件发生的概率,两个本来相互独立的事件A和B,发生了某种“相关性”,此时就可以通过“贝叶斯公式”实现预测。

2、朴素贝叶斯算法实现 

贝叶斯分类法是个厉害的统计学分类“神器”,它的基础就是贝叶斯定理,在机器学习领域比较受欢迎。简单来说,它主要用于预测一个“物品”属于某一类的可能性有多大,然后根据这个概率来给“物品”分类。

为啥说它是“朴素贝叶斯”呢?因为假定世间万物的各种特征都是自己管自己,互相之间不干扰,就好像每个特征都活在自己的“小世界”里,谁也影响不了谁。比如说判断一个水果是不是苹果,它的颜色、形状、大小这些特征,在朴素贝叶斯看来,彼此没有牵连。

这种“各扫门前雪”的假定,在专业上就叫类条件独立。也就是说,当我们判断某个属性值对确定一个物品属于哪一类有什么影响的时候,朴素贝叶斯觉得这个影响和其他属性值一点关系都没有,就只看这一个属性自己的“表现”,然后依据这个,再结合贝叶斯定理算出概率,完成分类任务。 

朴素贝叶斯分类,或简单贝叶斯分类的工作过程如下: 
(1)假设有样本数据集D={X1, X2,…,Xn}, 属性变量集为A={A1, A2, A3,…,Ad},每个数据样本用一个d维的特征向量X={x1, x2, x3,…,xd}表示,类变量为Y有m个类别,记为Y={y1, y2,y 3,…,ym}。

(2)Y的先验概率表示为Pprior=P(Y)。 预测样本X的类别,就是求在已知X的条件下,类别是Y的概率,即后验概率,表示为Ppost=P(Y|X)。

☀先验概率,也就是 P_prior指什么?

想象一下我们有一堆水果,里面分成了苹果、香蕉、橙子这些类别。那先验概率P(Y),就是在我们还没去仔细看每个水果具体长什么样(也就是没考虑具体的特征情况)的时候,单纯从整体上看,某个类别出现的概率。就好比在一堆水果里,我们只知道有多少个是苹果,有多少个是香蕉,有多少个是橙子,然后算出苹果占总水果个数的比例,这个比例就是苹果这个类别的先验概率,其他类别同理。

☀后验概率,也就是 P_post 等于 P(Y|X)指什么?

现在假如我们拿到了一个水果,这个水果有它自己的一些特点,比如它是红色的、圆圆的、个头挺大,这些特点就是样本X代表的特征。这时候我们想知道这个有这些特点的水果它属于哪个类别,比如它是苹果、还是香蕉或者橙子,那就要去求在已经知道它有这些特点(也就是已知X的条件下),它属于某个类别Y的概率,这个概率就是后验概率P(Y|X)。简单说,就是依据这个水果呈现出来的样子,去倒推它最有可能属于哪个类别所对应的概率大小。  

(3)根据贝叶斯定理 

由于朴素贝叶斯假定各个特征变量之间是相互独立,在给定类别为y的情况下,上式可以进一步表示为下式:

 ①公式符号定义:X是一个维的特征向量,表示为X={x1, x2, x3,…,xd},它代表了一个样本的所有特征。Y是类别变量,y是的一个具体取值,代表某一个类别。∏是连乘符号,就像是求和符号∑一样,这里表示从i=1到i=d的所有项相乘。

②条件概率的理解:P(X|Y=y)是在类别Y为y的条件下,样本具有特征向量X的概率。例如,在判断一封邮件是否是垃圾邮件(Y是邮件类别,y表示垃圾邮件这个类别),X可能是邮件中包含的一些特征,如是否包含特定关键词、发件人地址是否陌生等,P(X|Y=y)就是在邮件是垃圾邮件的情况下,出现这些特征组合的概率。

 由以上两式可以计算出后验概率为:

 P(Y)是先验概率,即在没有考虑样本X的情况下,事件Y发生的概率。

这部分体现了在给定类别Y下,各个特征xi的条件概率的乘积,这通常与朴素贝叶斯分类器相关,假设各个特征之间相互独立。

P(X)是样本X出现的概率。

这个公式用于根据先验概率、特征的条件概率和样本概率来计算后验概率,在分类问题(如文本分类、图像分类等)中有着广泛的应用。例如在垃圾邮件分类中,可以是邮件是否为垃圾邮件的类别,是邮件中的词汇特征等。通过计算后验概率来判断邮件属于垃圾邮件还是正常邮件的可能性。

由此,可以得到一个样本数据属于类别yi的计算公式如下:

 这个公式可由上一个公式得出。

至此,朴素贝叶斯分类的基本公式已讲解完毕,下次将针对贝叶斯分类的应用具体来展开。

相关文章:

一文讲明白朴素贝叶斯算法及其计算公式(入门普及)

1、贝叶斯算法 贝叶斯定理由英国数学家托马斯贝叶斯 ( Thomas Bayes) 提出的,用来描述两个条件概率之间的关系。通常,事件A在事件B 发生的条件下与事件 B 在事件 A 发生的条件下,它们两者的概率并不相同,但是它们两者之间存在一定…...

实际开发中,常见pdf|word|excel等文件的预览和下载

实际开发中,常见pdf|word|excel等文件的预览和下载 背景相关类型数据之间的转换1、File转Blob2、File转ArrayBuffer3、Blob转ArrayBuffer4、Blob转File5、ArrayBuffer转Blob6、ArrayBuffer转File 根据Blob/File类型生成可预览的Base64地址基于Blob类型的各种文件的下载各种类型…...

Python自学 - 递归函数

1 Python自学 - 递归函数 递归函数是一种在函数体内调用自己的函数,就像“左脚踩着右脚,再右脚踩着左脚… 嗯,你就可以上天了!”。递归函数虽然不能上天,但在处理某些场景时非常好用, 一种典型的场景就是遍…...

Spark-Streaming有状态计算

一、上下文 《Spark-Streaming初识》中的NetworkWordCount示例只能统计每个微批下的单词的数量,那么如何才能统计从开始加载数据到当下的所有数量呢?下面我们就来通过官方例子学习下Spark-Streaming有状态计算。 二、官方例子 所属包:org.…...

Markdown如何导出Html文件Markdown文件

Markdown如何导出Html文件Markdown文件 前言语法详解小结其他文章快来试试吧☺️ Markdown 导出 HTML 👈点击这里也可查看 前言 Markdown的源文件以md为后缀。Markdown是HTML语法的简化版本,它本身不带有任何样式信息。我们所看到的Markdown网页(如&…...

使用Python进行图像裁剪和直方图分析

一、简介 在数字图像处理领域,裁剪和分析图像的直方图是两个非常基本且重要的操作。本文将通过一个简单的Python项目,展示如何使用skimage和matplotlib库来裁剪图像并分析其RGB通道的直方图。 二、环境准备 在开始之前,请确保你已经安装了以…...

企业内管信息化系统

本文结尾处获取源码。 本文结尾处获取源码。 本文结尾处获取源码。 一、相关技术 后端:Java、JavaWeb / Springboot。前端:Vue、HTML / CSS / Javascript 等。数据库:MySQL 二、相关软件(列出的软件其一均可运行) I…...

【python因果库实战15】因果生存分析4

这里写目录标题 加权标准化生存分析总结个体层面的生存曲线 加权标准化生存分析 我们还可以将加权与标准化结合起来,使用 WeightedStandardizedSurvival 模块。在这里,我们将逆倾向得分加权模型(根据基线协变量重新加权人群)与加…...

Linux 线程详解

目录 一、线程概述 二、线程创建 三、线程终止 四、线程回收 五、线程取消 六、线程分离 七、线程安全 一、线程概述 线程是进程内的一个执行单元,是进程内可调度的实体。一个进程可以包含多个线程,这些线程共享进程的资源,如内存空…...

云架构:考量与框架

云架构:考量与框架 引言 在当今的数字化环境中,云计算已成为现代商业运营的基石。一个设计良好的云架构框架为可扩展、安全和弹性的系统奠定了基础。本文将深入探讨云架构的核心要素,讨论重要的考量因素、设计指南,以及最佳实践…...

SD下载、安装、使用、卸载-Stable Diffusion整合包v4.10发布!

目录 前言概述 SD安装1、安装软件2、启动3、配置4、运行5、测试 导入SD模型【决定画风】常用模型下载安装模型 SD卸载SD文生图提示词提示词使用技巧提示词的高级使用技巧强调关键词 前言 我向来不喜欢搞一些没有用的概念,所以直接整理可能用到的东西。 sd简单的说…...

java 发送邮件

前期准备 pom文件中引入 JavaMail API 和 JavaBean Activation FrameWork,得到两个jar包:mail.jar 和 activation.jar 发送简单邮件(只有邮件正文,普通文本) package com.zbttest.email;import com.sun.mail.util.Ma…...

聚类系列 (二)——HDBSCAN算法详解

在进行组会汇报的时候,为了引出本研究动机(论文尚未发表,暂不介绍),需要对DBSCAN、OPTICS、和HDBSCAN算法等进行详细介绍。在查询相关资料的时候,发现网络上对于DBSCAN算法的介绍非常多与细致,但…...

AngularJS HTML DOM

关于《AngularJS HTML DOM》的文章,我找到了一些有用的信息。这篇文章主要介绍了AngularJS如何通过特定的指令与HTML DOM元素进行交互。以下是一些关键点: ng-disabled 指令:这个指令用于将应用程序数据绑定到HTML的disabled属性。例如&#…...

C语言延时实现

C语言延时实现 在C语言中,delay 函数通过空循环实现延时,而不是像其他高级语言(如Python)直接使用 sleep 函数。这种实现方式是基于单片机的特性和C语言的底层操作。下面详细解释为什么这种空循环可以实现延时,以及它…...

OSI模型的网络层中产生拥塞的主要原因?

( 1 )缓冲区容量有限;( 1.5 分) ( 2 )传输线路的带宽有限;( 1.5 分) ( 3 )网络结点的处理能力有限;( 1 分…...

机器学习周报-ModernTCN文献阅读

文章目录 摘要Abstract 0 提升有效感受野(ERF)1 相关知识1.1 标准卷积1.2 深度分离卷积(Depthwise Convolution,DWConv)1.3 逐点卷积(Pointwise Convolution,PWConv)1.4 组卷积(Grou…...

什么是网关路由

1.认识网关 网关(Gateway)和路由(Router)是两个相关但不同的概念。 一、网关(Gateway) 定义 网关是一个网络节点,它充当了不同网络之间的连接点。可以将其看作是一个网络的 “大门”&#xf…...

信号的产生、处理

一、信号的概念 信号是linux系统提供的一种,向指定进程发送特定事件的方式。收到信号的进程,要对信号做识别和处理。信号的产生是异步的,进程在工作过程中随时可能收到信号。 信号的种类分为以下这么多种(用指令kill -l查看&…...

在Linux中,zabbix如何监控脑裂?

在Linux中,zabbix监控脑裂主要涉及对高可用(HA)系统中可能发生的节点间通信中断或不一致状态的监控。脑裂问题通常发生在具有冗余节点的高可用系统中,如集群、HA系统或分布式数据库系统,当节点之间失去通信时&#xff…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

flow_controllers

关键点: 流控制器类型: 同步(Sync):发布操作会阻塞,直到数据被确认发送。异步(Async):发布操作非阻塞,数据发送由后台线程处理。纯同步(PureSync…...

【若依】框架项目部署笔记

参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作: 压缩包下载:http://download.redis.io/releases 1. 上传压缩包,并进入压缩包所在目录,解压到目标…...