贝叶斯算法理论

目录

  • 贝叶斯
    • 贝叶斯要解决的问题:
    • Why贝叶斯
    • 贝叶斯公式
    • 实例——拼写纠正
    • 模型比较理论
    • 垃圾邮件过滤实例

贝叶斯

贝叶斯要解决的问题:

  1. **正向概率:**假设袋子里面有N个白球,M个黑球,你伸手进去摸一把,摸出黑球的概率是多大
  2. **逆向概率:**如果我们事先并不知道袋子里面黑白球的比例,而是闭着眼睛摸出一个(或好几个)球,观察这些取出来的球的颜色之后,那么我们可以就此对袋子里面的黑白球的比例作出什么样的推测

Why贝叶斯

  • 现实世界本身就是不确定的,人类的观察能力是有局限性的
  • 我们日常所观察到的只是事物表面上的结果,因此我们需要提供一个猜测

贝叶斯公式

P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ) P(A|B) = \dfrac{P(B|A)P(A)}{P(B)} P(AB)=P(B)P(BA)P(A)

实例——拼写纠正

问题是:我们看到用户输入了一个不在字典中的单词,我们需要去猜测:“这个家伙到底真正想输入的单词是什么呢?”
P ( 我们猜测他想输入的单词 ∣ 他实际输入的单词 ) P(我们猜测他想输入的单词|他实际输入的单词) P(我们猜测他想输入的单词他实际输入的单词)

  • 用户实际输入的单词记为D(D代表Data,即观测数据)

猜测1: P ( h 1 ∣ D ) P(h1|D) P(h1∣D)

猜测2: P ( h 2 ∣ D ) P(h2|D) P(h2∣D)

猜测3: P ( h 3 ∣ D ) P(h3|D) P(h3∣D)

……

统一为: P ( h ∣ D ) P(h|D) P(hD)

即,
P ( h ∣ D ) = P ( h ) P ( D ∣ h ) P ( D ) P(h|D) = \dfrac{P(h)P(D|h)}{P(D)} P(hD)=P(D)P(h)P(Dh)
对于不同的具体猜测 h 1 h 2 h 3 … … h1 h2 h3 …… h1h2h3……,P(D)都是一样的,所以在比较P(h1|D)和P(h2|D)的时候我们可以忽略这个常数。

P ( h ∣ D ) ∝ P ( h ) ∗ P ( D ∣ h ) P(h|D)\propto P(h)*P(D|h) P(hD)P(h)P(Dh)对于给定观测数据,一个猜测是好是坏,取决于“这个猜测本身独立的可能性大小(先验概率,prior)”和“这个猜测生成我们观测到的数据的可能性大小。”

  • 贝叶斯方法计算: P ( h ) ∗ P ( D ∣ h ) P(h)*P(D|h) P(h)P(Dh),P(h)是特定猜测的先验概率

比如用户输入tlp,那到底是top还是tip?这个时候,当最大似然不能作出决定性的判断时,先验概率就可以插手进来给出指示——“既然你无法决定,那么我告诉你,一般来说top出现的程度要高许多,所以更可能他想打的是top

模型比较理论

  • 最大似然:最符合观测数据的(即P(D|h)最大的)最有优势
  • 奥卡姆剃刀:P(h)较大的模型有较大的优势

掷一个硬币,观察到的是“正”,根据最大似然估计的精神,我们应该猜测这枚硬币掷出“正”的概率是1,因为这个才是能最大化P(D|h)的那个猜测

如果平面上有N个点,近似构成一条直线,但绝不精确地位于一条直线上。这时我们既可以用直线来拟合(模型1),也可以用二阶多项式(模型2)拟合,也可以用三阶多项式(模型3),特别地,用 N − 1 N-1 N1阶多项式便能够保证肯定能完美通过N个数据点。那么,这些可能的模型之中到底哪个是最靠谱的呢?

奥卡姆剃刀:越是高价的多项式越是不常见的(越是高阶去拟合,拟合效果肯定越好,但是这只是在训练集上,在测试集上往往达不到很好的效果,也就是常见的鲁棒性差)

垃圾邮件过滤实例

问题:给定一封邮件,判定它是否属于垃圾邮件。D来表示这封邮件,注意D由N个单词组成。我们用h+来表示垃圾邮件,h-表示正常邮件

P ( h + ∣ D ) = P ( h + ) ∗ P ( D ∣ h + ) P ( D ) P(h+|D) = \dfrac{P(h+)*P(D|h+)}{P(D)} P(h+D)=P(D)P(h+)P(Dh+)

P ( h − ∣ D ) = P ( h − ) ∗ P ( D ∣ h − ) P ( D ) P(h-|D) = \dfrac{P(h-)*P(D|h-)}{P(D)} P(hD)=P(D)P(h)P(Dh)

  • 先验概率:P(h+)和P(h-)这两个先验概率都是很容易求出来的,只需要计算一个邮件库里面垃圾邮件和正常邮件的比例就行了。

D里面含有N个单词d1,d2,d3,……,P(D|h+) = P(d1,d2,…,dn|h+)。

P(D|h+) = P(d1,d2,…,dn|h+)就是说在垃圾邮件当中出现跟我们目前这封邮件一模一样的一封邮件的概率是多大!

P ( d 1 , d 2 , . . . , d n ∣ h + ) P(d1,d2,...,dn|h+) P(d1,d2,...,dnh+)扩展为: P ( d 1 ∣ h + ) ∗ P ( d 2 ∣ d 1 , h + ) ∗ P ( d 3 ∣ d 2 , d 1 , h + ) ∗ . . . P(d1|h+)*P(d2|d1,h+)*P(d3|d2,d1,h+)*... P(d1∣h+)P(d2∣d1,h+)P(d3∣d2,d1,h+)...

  • P ( d 1 ∣ h + ) ∗ P ( d 2 ∣ d 1 , h + ) ∗ P ( d 3 ∣ d 2 , d 1 , h + ) ∗ . . . P(d1|h+)*P(d2|d1,h+)*P(d3|d2,d1,h+)*... P(d1∣h+)P(d2∣d1,h+)P(d3∣d2,d1,h+)...。假设di与di-1是完全条件无关的(朴素贝叶斯假设特征之间是独立的。互不影响)。简化为 P ( d 1 ∣ h + ) ∗ P ( d 2 ∣ h + ) ∗ P ( d 3 ∣ h + ) . . . P(d1|h+)*P(d2|h+)*P(d3|h+)... P(d1∣h+)P(d2∣h+)P(d3∣h+)...
  • 对于 P ( d 1 ∣ h + ) ∗ P ( d 2 ∣ h + ) ∗ P ( d 3 ∣ h + ) . . . P(d1|h+)*P(d2|h+)*P(d3|h+)... P(d1∣h+)P(d2∣h+)P(d3∣h+)...只要统计di这个单词在垃圾邮件中出现的频率即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/47832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自监督学习在言语障碍及老年语音识别中的应用

近几十年来针对正常言语的自动语音识别(ASR)技术取得了快速进展,但准确识别言语障碍(dysarthric)和老年言语仍然是一项极具挑战性的任务。言语障碍是一种由多种运动控制疾病引起的常见言语障碍类型,包括脑瘫…

175道Docker面试题(上)

目录 1、什么是docker? 2、Docker与普通虚拟机的对比: 3、Docker常用命令: 4、Docker镜像是什么? 5、Docker容器是什么? 6、Docker容器有几种状态? 7、Dockerfile中最常见的指令是什么? …

DP学习——状态模式

学而时习之,温故而知新。 状态模式 角色 2个角色,引用类,状态行为类。 和策略模式很相似 状态行为封装成很多独立的状态行为类——就是把不同的状态及其要执行的方法单独封装起来。 而策略模式类似,是不同的算法封装成一个个…

php 根据位置的经纬度计算距离

在开发中,我们要经常和位置打交道,要计算附近的位置、距离什么的。如下: 一.sql语句 SELECT houseID,title,location,chamber,room,toward,area,rent,is_verify,look_type,look_time, traffic,block_name,images,tag,create_time,update_time, location->&g…

RKNN执行bash ./build-linux_RK3566_RK3568.sh 报错

目录 错误信息: 原因:如题提示/3rdparty/mpp/Linux/aarch64/librockchip_mpp.so: file format not recognized; treating as linker script是因为librockchip_mpp.so这个文件夹指向了一个空文件夹 解决方法: 错误信息: /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../..…

【人工智能】使用Python的dlib库实现人脸识别技术

🔥 个人主页:空白诗 文章目录 一、引言二、传统人脸识别技术1. 基于几何特征的方法2. 基于模板匹配的方法3. 基于统计学习的方法 三、深度学习在脸识别中的应用1. 卷积神经网络(CNN)2. FaceNet和ArcFace 四、使用Python和dlib库实…

Python @staticmethod、super().__init__()和self

最近在看代码,由于之前没有系统学习过Python,就有些知识点不是很清楚,这里整理一下,方便以后查阅。 Python中的staticmethod\super.init和self Python 装饰器staticmethod和classmethod的作用与区别作用区别代码演示 super() 函数…

【STM32 HAL库】DMA+串口

DMA 直接存储器访问 DMA传输,将数据从一个地址空间复制到另一个地址空间。-----“数据搬运工”。 DMA传输无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场,它是通过硬件为RAM和IO设备开辟一条直接传输数据的通道&#xff0c…

opencv 优势

OpenCV(开源计算机视觉库)是一个广泛使用的计算机视觉和机器学习软件框架。它最初由Intel开发,后来由Itseez公司维护,最终于2015年成为非营利组织OpenCV.org的一部分。OpenCV的目的是实现一个易于使用且高效的计算机视觉框架,支持实时视觉应用。 以下是关于OpenCV的一些关…

浅谈断言之XML断言

浅谈断言之XML断言 XML断言是JMeter的一个组件,用于验证请求的响应数据是否符合XML结构。这对于测试返回XML格式数据的Web服务特别有用。 如何添加XML断言? 要在JMeter测试计划中添加XML断言,遵循以下步骤: 打开测试计划&…

CentOS 6.8 中部署 Spring Boot 应用程序

在CentOS 6.8的系统中本来想通过docker或者宝塔免费来快速部署,结果发现CentOS6.8版本比较老,装docker或宝塔面板都非常费劲,算了就用传统的方式来安装吧。 在 CentOS 6.8 中通过传统的方式部署 Spring Boot 应用程序主要涉及以下几个步骤&a…

Flutter 插件之 easy_refresh(下拉刷新、上拉加载)

今天给大家较少一下日常开发中最常见的一个功能,就是 下拉刷新、上拉加载,这个在我们使用分页功能是最常见的。 此前我我也写了一篇关于 下拉刷新、上拉加载。 Flutter 下拉刷新、上拉加载flutter_easyrefresh的使用https://blog.csdn.net/WangQingLei0307/article/details/…

Logback 配置文件加载步骤

Logback的初始化过程有多个步骤,确保在不同情况下都能找到并加载适当的配置文件。以下是详细的步骤描述: Logback 配置文件加载步骤 检查系统属性 logback.configurationFile Logback 首先检查系统属性 logback.configurationFile 是否设置。如果设置了…

学习记录--Bert、Albert、RoBerta

目录 Bert 1:输入 2:Bert结构 3:模型预训练 Albert 1:SOP任务 2:embedding因式分解 3:参数共享 RoBerta 参考: BERT原理和结构详解_bert结构-CSDN博客 [LLM] 自然语言处理 --- ALBER…

实现一个自己的OpenFeign 远程调用验证协议--Springboot 自定义拦截器验证请求合法性--xunznux

Springboot 如何实现一个自定义的拦截器处理系统发出的请求以及接收到的请求(实现一个用于feign远程调用验证的简单协议) 文章目录 Springboot 如何实现一个自定义的拦截器处理系统发出的请求以及接收到的请求(实现一个用于feign远程调用验证…

某企业网络及服务器规划与设计

目录 1. 项目需求与设计... 5 1.1 项目需求... 5 1.2 组建企业网络内部网的流程... 5 1) 构思阶段... 5 2) 方案设计阶段... 6 3) 工程实施阶段... 6 4) 测试验收... 6 5) 管理维护... 7 1.3 技术可行性分析... 7 1.4 网络组网规则... 8 1.5 网络拓扑... 8 2. 项目所…

【UE5】在Widget中显示3D网格体

效果 步骤 1. 新建一个工程并添加第三人称游戏资源包 2. 添加一个控件蓝图,这里命名为“WBP_3DOverlay”,用于显示3D网格体 打开“WBP_3DOverlay”,添加一个画布面板和一个背景模糊控件,这里模糊强度设置为10 3. 打开第三人称角色…

connect的非阻塞模式

本文参考:connect 函数在阻塞和非阻塞模式下的行为 一般情况下,在使用connect连接服务端时,需要等待一会儿才会函数才会返回,导致程序阻塞。为了降低阻塞的影响,我们可能会单独开个线程处理connect请求,例…

Spark-第一周

一、spark是什么 Spark是一种快速、通用、可扩展的大数据分析引擎 2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache顶级项目。 目前,Spark生态系统已经发展成为一个包含多个…

常见的数据集格式

常见的数据集格式有三种,分别为voc(xml)、coco(json)、yolo(txt)。 1 VOC VOC数据集由五个部分构成:JPEGImages,Annotations,ImageSets,SegmentationClass以及SegmentationObject. . └── VOC #根目…