贝叶斯定理

文章目录

条件概率

条件概率指两个事件的发生存在一定的关系。一个事件作为先前条件下,另一个事件发生的概率。

如:

两个程序员一起编软件,软件规模有10000行。程序员甲写了6000行代码,程序员乙写了4000行。程序员甲的BUG率是千行10个BUG,也就是1%。程序员乙的BUG率是千行5个BUG,也就是0.5%。

上述中包含三个事件:

  • 事件A:代码行是程序员甲编写的,概率为P(A)
  • 事件B:代码行是程序员乙编写的,概率为P(B)
  • 事件Y:代码行中包含BUG,概率为P(Y)

"程序员甲编写的代码行中包含BUG的概率" 就是一个条件概率,概率为P(Y|A)。根据已知得P(Y|A) = 1%。

有的时候会将上面的概率与 "代码是程序员甲编写的,并且包含BUG的概率" P ( A ⋂ Y ) P( A \bigcap Y ) P(A⋂Y) 搞混。

P ( Y ∣ A ) P(Y | A) P(Y∣A) 和 P ( A ⋂ Y ) P( A \bigcap Y ) P(A⋂Y) 的区别和关系

P ( Y ∣ A ) P(Y | A) P(Y∣A) 和 P ( A ⋂ Y ) P( A \bigcap Y ) P(A⋂Y) 的核心区别在于在计算Y的概率时,是否缩小样本空间。

  • P ( A ⋂ Y ) P( A \bigcap Y ) P(A⋂Y)不缩小样本空间,比如例子中的样本空间是10000。
  • P ( Y ∣ A ) P(Y | A) P(Y∣A)需要缩小样本空间,首先将样本空间缩小到原样本空间乘以P(A),然后在缩小后的样本空间中计算Y的概率。例子中原样本空间是 10000,首先将样本空间缩小成 10000 * P(A) = 6000,然后基于6000这个样本空间再去计算Y的概率则P(Y|A) = 1%。

现在探讨一下 P(A)、P(Y|A)、 P ( A ⋂ Y ) P( A \bigcap Y ) P(A⋂Y)三者的关系。设总样本空间为S则:
P ( A ⋂ Y ) = S ∗ P ( A ) ∗ P ( Y ∣ A ) S P( A \bigcap Y ) = \frac{S * P(A) * P(Y|A)}{S} P(A⋂Y)=SS∗P(A)∗P(Y∣A)

S可以约掉
P ( A ⋂ Y ) = P ( A ) ∗ P ( Y ∣ A ) P( A \bigcap Y ) = P(A) * P(Y|A) P(A⋂Y)=P(A)∗P(Y∣A)

贝叶斯定理

先在脑子里种下一颗种子"事件A是原因、事件Y是结果" ,P(Y|A)是"事件A造成事件Y的概率"。在例子中代表程序员甲造成BUG的概率(1%)。

既然:
P ( A ⋂ Y ) = P ( A ) ∗ P ( Y ∣ A ) P( A \bigcap Y ) = P(A) * P(Y|A) P(A⋂Y)=P(A)∗P(Y∣A)

那么同理
P ( A ⋂ Y ) = P ( Y ) ∗ P ( A ∣ Y ) P( A \bigcap Y ) = P(Y) * P(A|Y) P(A⋂Y)=P(Y)∗P(A∣Y)


P ( A ) ∗ P ( Y ∣ A ) = P ( Y ) ∗ P ( A ∣ Y ) P(A) * P(Y|A)= P(Y) * P(A|Y) P(A)∗P(Y∣A)=P(Y)∗P(A∣Y)
= > P ( A ∣ Y ) = P ( A ) ∗ P ( Y ∣ A ) P ( Y ) 1 ◯ => P(A|Y) = \frac{P(A) * P(Y|A)}{ P(Y) } \textcircled{1} =>P(A∣Y)=P(Y)P(A)∗P(Y∣A)1◯
= > P ( A ∣ Y ) = P ( A ⋂ Y ) P ( Y ) 2 ◯ => P(A|Y) = \frac{P( A \bigcap Y )}{ P(Y) }\textcircled{2} =>P(A∣Y)=P(Y)P(A⋂Y)2◯
= > P ( A ∣ Y ) = P ( A ⋂ Y ) P ( A ⋂ Y ) + P ( A ‾ ⋂ Y ) 3 ◯ => P(A|Y) = \frac{P( A \bigcap Y )}{ P( A \bigcap Y ) + P( \overline A \bigcap Y ) }\textcircled{3} =>P(A∣Y)=P(A⋂Y)+P(A⋂Y)P(A⋂Y)3◯
1 ◯ \textcircled{1} 1◯ 为贝叶斯定理, 2 ◯ \textcircled{2} 2◯ 3 ◯ \textcircled{3} 3◯ 与 1 ◯ \textcircled{1} 1◯是等价的。

贝叶斯定理的含义

还记得刚才种下的种子么?P(Y|A)是"事件A造成事件Y的概率 ",属于原因推结果;那么P(A|Y)就是"如果事件Y发生,那么它是由事件A造成的概率是多大",属于结果推原因。

现在求发现一行代码中包含BUG,则这行代码是程序员甲写的概率有多大。

我们通过 1 ◯ \textcircled{1} 1◯求解。

  • P(A)的值已知为 60%
  • P(Y|A)的值已知为 1%
  • P(Y)的值未知,但可算$P(Y) = P ( A ⋂ Y ) + P ( A ‾ ⋂ Y ) P( A \bigcap Y ) + P( \overline A \bigcap Y ) P(A⋂Y)+P(A⋂Y) = 6000 ∗ 0.1 10000 + 4000 ∗ 0.5 10000 \frac{6000 * 0.1}{10000} + \frac{4000 * 0.5}{10000} 100006000∗0.1+100004000∗0.5 = 0.008
  • P(A|Y) = 0.6 ∗ 0.01 0.008 \frac{0.6 * 0.01}{0.008} 0.0080.6∗0.01=75%
    则发现BUG代码是由程序员甲编写的概率是75%
相关推荐
lili-felicity3 小时前
CANN优化LLaMA大语言模型推理:KV-Cache与FlashAttention深度实践
人工智能·语言模型·llama
程序猿追3 小时前
深度解码昇腾 AI 算力引擎:CANN Runtime 核心架构与技术演进
人工智能·架构
金融RPA机器人丨实在智能3 小时前
Android Studio开发App项目进入AI深水区:实在智能Agent引领无代码交互革命
android·人工智能·ai·android studio
lili-felicity3 小时前
CANN异步推理实战:从Stream管理到流水线优化
大数据·人工智能
做人不要太理性3 小时前
CANN Runtime 运行时组件深度解析:任务下沉执行、异构内存规划与全栈维测诊断机制
人工智能·神经网络·魔珐星云
不爱学英文的码字机器3 小时前
破壁者:CANN ops-nn 仓库与昇腾 AI 算子优化的工程哲学
人工智能
晚霞的不甘3 小时前
CANN 编译器深度解析:TBE 自定义算子开发实战
人工智能·架构·开源·音视频
愚公搬代码3 小时前
【愚公系列】《AI短视频创作一本通》016-AI短视频的生成(AI短视频运镜方法)
人工智能·音视频
哈__3 小时前
CANN内存管理与资源优化
人工智能·pytorch
极新3 小时前
智启新篇,智创未来,“2026智造新IP:AI驱动品牌增长新周期”峰会暨北京电子商务协会第五届第三次会员代表大会成功举办
人工智能·网络协议·tcp/ip