Bayes理论相关应用之——Bayes定理

2024-01-10 20:08

本文主要是介绍Bayes理论相关应用之——Bayes定理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题导入:一个故事引出的一个小问题。


场景描述:面前有两只木桶,编号为C1,C2(之所以用C,是因为木桶的英文为Cask).两只木桶中有数目不等的黑色球和白色球,数目分别是:C1中有70个黑球,30个白球;C2中有50个黑球,50个白球。黑球用B(即Black)表示,白球用W(即White)表示。

问题描述:随机地从两只木桶中取出一个球,发现该球是白色球,问:该白色球来自C1的概率有多大?


要解决该文题,先熟悉几个概念,这几个概念会在解决上述问题时用到。

1.先验概率(Priori Probability),即不需要进行实验就可得到的概率,如上述问题中,从“随机地从两只木桶中取出一个球”这句话可知,C1和C2被选中的概率均为0.5,即P(C1)=P(C2)=0.5;从C1中随机拿出一个球,该球为黑色球的概率为0.7,即P(B)=70/(70+30)=0.7.(注明:此时,已经规定必须从C1中取球,故此时P(C1)=1,其实,此时准确的数学描述应该将P(B)写成P(B|C1)形式)

2.全概率,如上述问题中,如果问“随机地选择一个木桶,且取出的球是黑球的概率是多少?”,该问题的解便是:P(B)=P(B|C1)+P(B|C2),该解的描述是:取出的黑球包括两种情况,或者从C1中取出,即P(B|C1),或者从C2中取出,即P(B|C2),这两种情况统统属于问题描述,故将P(B|C1)与P(B|C2)相加。

3.后验概率,后验概率是指在得到"结果"的信息后重新修正的概率,如我们对求解问题“该白色球来自C1的概率有多大?”做数学形式的描述为:求解P(C1|W),该求解思路是在基于已获得先验概率的基础上进行的,如何求解P(C1|W)是要说明的重点内容。


分析:我们已知先验概率,如P(C1)、P(C2),P(B|C1)、P(B|C2),我们要求P(C1|W),如何通过先验概率求解后验概率呢?


引入一个重要定理:Bayes定理。

贝叶斯定理的形式:P(AB)=P(A|B)*P(B)=P(B|A)*P(A)

Bayes定理的图形证明:



P(AB)=P(A|B)*P(B)变形为P(A|B)=P(AB)/P(B),在文氏图中的意义就是B发生的前提下,A发生的概率P(A|B)就等于B中AB占比。

P(AB)=P(B|A)*P(A)变形为P(A|B)=P(A∩B)/P(A),在文氏图中的意义就是A发生的前提下,B发生的概率P(B|A)就等于A中A∩B占比。

通过P(AB)建立P(A|B)*P(B)与P(B|A)*P(A) 的联立关系,即P(AB)=P(A|B)*P(B)=P(B|A)*P(A)

P(A|B)*P(B)=P(B|A)*P(A)可知,可以通过先验概率计算得到后验概率,如P(A|B)=(P(B|A)*P(A))/P(B),该思想即为Bayes定理的核心思想。


回到问题:如何求解P(C1|W)。

建立P(C1|W)与其他概率(先验或者后验概率)的等式关系。

P(C1|W)*P(W)=P(W|C1)*P(C1)

P(C1|W)=(P(W|C1)*P(C1))/P(W)

通过分析可知P(W|C1)=30/(30+70)=0.3,P(C1)=0.5,P(W)=P(W|C1)+P(W|C2)=0.3+0.5=0.8.

P(C1|W)=(P(W|C1)*P(C1))/P(W)=0.3*0.5/0.8=0.1875.




这篇关于Bayes理论相关应用之——Bayes定理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/591924

相关文章

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

python中列表应用和扩展性实用详解

《python中列表应用和扩展性实用详解》文章介绍了Python列表的核心特性:有序数据集合,用[]定义,元素类型可不同,支持迭代、循环、切片,可执行增删改查、排序、推导式及嵌套操作,是常用的数据处理... 目录1、列表定义2、格式3、列表是可迭代对象4、列表的常见操作总结1、列表定义是处理一组有序项目的

C#中的Converter的具体应用

《C#中的Converter的具体应用》C#中的Converter提供了一种灵活的类型转换机制,本文详细介绍了Converter的基本概念、使用场景,具有一定的参考价值,感兴趣的可以了解一下... 目录Converter的基本概念1. Converter委托2. 使用场景布尔型转换示例示例1:简单的字符串到

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例

《PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例》词嵌入解决NLP维度灾难,捕捉语义关系,PyTorch的nn.Embedding模块提供灵活实现,支持参数配置、预训练及变长... 目录一、词嵌入(Word Embedding)简介为什么需要词嵌入?二、PyTorch中的nn.Em

Spring Boot3.0新特性全面解析与应用实战

《SpringBoot3.0新特性全面解析与应用实战》SpringBoot3.0作为Spring生态系统的一个重要里程碑,带来了众多令人兴奋的新特性和改进,本文将深入解析SpringBoot3.0的... 目录核心变化概览Java版本要求提升迁移至Jakarta EE重要新特性详解1. Native Ima

Redis中Stream详解及应用小结

《Redis中Stream详解及应用小结》RedisStreams是Redis5.0引入的新功能,提供了一种类似于传统消息队列的机制,但具有更高的灵活性和可扩展性,本文给大家介绍Redis中Strea... 目录1. Redis Stream 概述2. Redis Stream 的基本操作2.1. XADD

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应