概率编程实战:用 Python 把挑战者号事故算成一道贝叶斯推断题
概率编程实战:用 Python 把挑战者号事故算成一道贝叶斯推断题
【免费下载链接】Probabilistic-Programming-and-Bayesian-Methods-for-Hackersaka "Bayesian Methods for Hackers": An introduction to Bayesian methods + probabilistic programming with a computation/understanding-first, mathematics-second point of view. All in pure Python ;)项目地址: https://gitcode.com/gh_mirrors/pr/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers
1986年1月28日,挑战者号航天飞机在低温中发射,73秒后解体。事后调查指向 O 型环密封件:33 次测试中的 7 次失败全部集中在低温段。“低温下,失效概率到底有多大?”这道题的答案是贝叶斯推断,把它写成代码的工具叫概率编程——开源项目 Probabilistic-Programming-and-Bayesian-Methods-for-Hackers(俗称 "Bayesian Methods for Hackers")用纯 Python 从头带你做完。你不用手推积分,只需把模型描述出来,采样交给计算机。
33 次测试、7 次失败:你会怎么算温度与 O 型环的关系
挑战者号的 O 型环数据一共 33 条记录、7 次失败,全部发生在低温段。频率论的惯常做法是拟合一条回归线,给出斜率的点估计和一个 p 值,再把发射温度代进去,得到一个孤立的数字。问题在于:样本只有三十多个点,低温段更稀疏,点估计本身“有多可信”没有被表达出来。贝叶斯的做法把参数当成有分布的量:先写下你对斜率的先验信念,再用伯努利似然描述“给定温度时,失败与否如何被生成”,两者结合得到后验分布。先验不需要很强,一条温和的高斯分布就够,它只负责在数据稀少时拉住估计,不扭曲数据已有的信号。于是“发射温度下的失效概率”不再是一个数,而是一条分布,你可以直接问它落在哪个区间。
🐍 把模型写成 Python 代码:项目替你做了什么
打开 Chapter2_MorePyMC/ 里的 notebook,整个模型只有十几行:先验一行,伯努利似然一行,采样调用一行。数据就在同目录的data/challenger_data.csv,依赖列在仓库根目录的requirements.txt,一行pip install -r requirements.txt装完。跑完采样,你拿到的是参数的完整后验:温度效应多大、区间多宽,直接可读。
概率编程示例:PyMC 贝叶斯模型截图,先验作为父变量控制数据生成过程
🔢 从后验分布读出决策:区间,而不是孤立的点
频率论最后给你“斜率是否显著”的判断,贝叶斯后验给你一条完整的分布曲线。假设模型算出发射温度下失效概率的后验大部分质量压在较高区域,那么“发射”与“推迟”两种选择的代价一目了然,决策直接从统计结果读出,不需要再经过 p 值换算一次。换句话说,“95% 可信区间”不再是教科书里的推导,而是你手里那条分布的两个分位数。
同一套写法能复用到哪:作弊率、A/B 测试与聚类
仓库按章节组织,每个章节都是一个可运行的 notebook,换掉数据和分布即可复用。第二章还做了作弊者频率与 A/B 测试;Chapter3_MCMC/ 解释采样器为什么走随机游走,并做高斯混合聚类;第六章专门讨论先验怎么选、换先验会如何改变结论。模型结构长什么样,看这张图:变量之间的依赖关系画成网络,先验指向生成过程,观测挂在末端。
第一步:克隆仓库,打开第一个 notebook
两条命令,从空目录到跑起来的第一个贝叶斯模型:
git clone https://gitcode.com/gh_mirrors/pr/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers jupyter notebook Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/Chapter1_Introduction/Ch1_Introduction_PyMC_current.ipynb【免费下载链接】Probabilistic-Programming-and-Bayesian-Methods-for-Hackersaka "Bayesian Methods for Hackers": An introduction to Bayesian methods + probabilistic programming with a computation/understanding-first, mathematics-second point of view. All in pure Python ;)项目地址: https://gitcode.com/gh_mirrors/pr/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考