首页 > 图书中心 >图书详情
Python贝叶斯建模与计算
作者:[阿根廷] 奥斯瓦尔多·A. 马丁(Osvaldo A. Martin),[美]拉万·库马尔(Ravin Kumar)[美]劳俊鹏(Junpeng Lao)著 郭涛 译
丛书名:数据科学与大数据技术
定价:98元
印次:1-1
ISBN:9787302654858
出版日期:2024.03.01
印刷日期:2024.03.01
《Python贝叶斯建模与计算》旨在帮助贝叶斯初学者成为中级从业者。本书使用了PyMC3、TensorFlow Probability和Arviz等多个软件库的实践方法,重点是应用统计学的实践方法,并参考了基础数学理论。 本书首先回顾了贝叶斯推断的概念。第2章介绍了贝叶斯模型探索性分析的现代方法。基于这两个基本原理,接下来的章节介绍了各种模型,包括线性回归、样条、时间序列和贝叶斯加性回归树。其后几章讨论的主题包括:逼近贝叶斯计算,通过端到端案例研究展示如何在不同环境中应用贝叶斯建模,以及概率编程语言内部构件。最后一章深入讲述数学理论或扩展对某些主题的讨论,作为本书其余部分的参考。 《Python贝叶斯建模与计算》由PyMC3、ArviZ、Bambi和TensorFlowProbability等软件库的贡献者撰写。
more >前 言 贝叶斯统计这个名字取自长老会牧师兼业余数学家托马斯·贝叶斯(Thomas Bayes,1702—1761),他最先推导出了贝叶斯定理,该定理于其逝世后的1763年发表。但真正开发贝叶斯方法的第一人是Pierre-Simon Laplace(1749—1827),因此将其称为拉普拉斯统计也许更合理。尽管如此,我们将遵循斯蒂格勒的同名法则,在本书的其余部分使用传统的贝叶斯方法命名。从贝叶斯和拉普拉斯(以及许多其他人)的开创性时代至今,发生了很多事情,特别是开发了很多新想法,其中大部分是由计算机技术推动和/或实现的。本书旨在提供一个关于此主题的现代视角,涵盖从基础知识到使用现代贝叶斯工作流和工具等各方面内容。 本书旨在帮助贝叶斯初学者成为中级从业者。这并不代表你读完本书后会自动达到中等水平,但希望本书能够引导你朝富有成效的方向发展。如果你通读这本书,认真做练习,把书中的想法应用于自己的问题,并继续向他人学习,那么将更容易进步。 要特别指出,本书面向对应用贝叶斯模型解决数据分析问题感兴趣的贝叶斯从业者。通常,学术界和工业界是有区别的。但本书没有做这样的区分,因为无论是大学生还是就职于公司的机器学习工程师,都能从本书中受益。 我们的目标是:阅读本书后,你不仅能够熟悉贝叶斯推断,而且能轻松地对贝叶斯模型进行探索性分析,包括模型比较、模型诊断、模型评估和结果交流等。我们计划从现代计算的角度讲授这些内容。对我们来说,如果采用计算方法,贝叶斯统计会更易于理解和应用。例如,我们更关注实证检查假设被推翻的原因,而不试图从理论上证明假设是正确的。这也意味着我们会使用许多可视化的表达手段。通读后,建模方法的其他含义将会逐步变得清晰。 如本书标题所表明的,书中使用Python编程语言。更具体地说,本书将主要使用PYMC3[138]和TensorFlow Probability(TFP)[47]作为模型构建和推断的主要概率编程语言(PPL),并使用ArviZ作为探索性分析贝叶斯模型的主要软件库[91]。本书并未对所有Python PPL进行详尽评述和比较,因为选择较多而且发展迅速。反之,我们专注于贝叶斯分析的实践方面。编程语言和软件库只是用于达到目的的手段。 虽然本书选择的编程语言是Python及少量软件库,但书中涵盖的统计和建模概念基本与编程语言和软件库无关,可以应用于许多计算机编程语言,如R、Julia和Scala等。因此,虽不了解Python但掌握上述编程语言的读者,也可以从本书中受益。当然,如果能够在自身熟悉的编程语言中找到等效的软件库或代码进行实践则最好。此外,我们鼓励将本书中的Python示例代码转换为其他编程语言或框架。有意者请与我们联系。 知识准备 为使本书帮助初学者向中级从业者转变,希望读者能事先接触乃至掌握贝叶斯统计的基本概念(如先验、似然和后验),以及一些基本统计概念(如随机变量、概率分布、期望等)。对于技艺生疏的读者,第11章回顾了基本统计概念。有关这些概念的更深入解释,参见Understanding Advanced Statistical Methods[158]和Introduction to Probability[21]。后者更具理论性,但两者都比较重视应用。 如果你因实践或训练对统计学有很好的理解,但从未接触过贝叶斯统计学,也可以将本书作为对该主题的入门读物,只是开始几章(主要是前两章)的节奏会有点快,可能需要通读数次。 我们希望你能够熟悉一些数学概念,如积分、导数和对数的性质等,写作水平最好能够达到技术高中或者科学、技术、工程和数学专业的大学第一学年以上的水平。若需要复习这些数学概念,推荐3Blue1Brown的系列视频。这里不要求做过多数学练习,但要求使用代码和交互式计算环境来理解和解决问题。本书中出现数学公式是为了帮助你更好地理解贝叶斯统计建模。 本书假定读者具备一定的计算机编程能力。使用Python语言时,还会使用一些专门的软件库,特别是概率编程语言。在阅读本书之前,至少利用概率编程语言拟合一个模型,对你会有帮助,但也不是必须的。关于如何设置本书所需要的计算环境或Python参考,可以阅读GitHub中的README.md,了解如何设置编码环境。 阅读方法 我们将使用模拟模型来解释一些重要概念,而不会让数据模糊了主要概念;然后使用真实数据集来近似一些实践中会面临的真实问题,如采样问题、重参数化、先验/后验校准等。鼓励你阅读本书时,在交互式编程环境中运行这些模型。 强烈建议你阅读并使用各种软件库的在线文档。尽管我们已经尽最大努力使本书涵盖海量信息,从而自成一体,但在网上还有大量关于这些工具的文档,参考这些文档有助于学习本书,并帮助你独立使用这些工具。 第1章回顾、简介贝叶斯推断中的基本和核心概念。该章中的概念将在本书其余部分被反复提及和应用。 第2章介绍了贝叶斯探索性分析(Exploratory Analysis of Bayesian)模型。介绍了许多属于贝叶斯工作流但并非推断本身的概念。该章中的概念将在本书其余部分被反复应用和提及。 第3章开始介绍特定模型架构。介绍了线性回归(Linear Regression)模型,并为接下来的5章奠定了基础。第3章还全面介绍了本书使用的主要概率编程语言:PyMC3和TFP。 第4章扩展了线性回归模型,并讨论了更高级的主题,如鲁棒回归、分层模型和模型重参数化。本章使用PyMC3和TFP。 第5章介绍了基函数,并着重介绍了线性模型的扩展——样条,使我们能够构建更灵活的模型。本章使用PyMC3。 第6章侧重于时间序列模型,包括从时间序列建模为回归模型,以及更复杂的模型[如ARIMA和线性高斯状态空间(Gaussian State Space)模型]等内容。本章使用TFP。 第7章介绍了名为贝叶斯加性回归树的非参数模型。本章讨论了这个模型的可解释性和变量的重要性。本章使用PyMC3。 第8章聚焦于逼近贝叶斯计算(Approximate Bayesian Computation,ABC)框架,该框架有助于解决没有明确似然函数的问题。本章使用PyMC3。 第9章概述了端到端的贝叶斯工作流。本章展示了商业应用中的观测性研究和科研环境中的试验性研究。本章使用PyMC3。 第10章深入探讨了概率编程语言,展示了各种不同的概率编程语言。 第11章为阅读其他章节提供辅助,各主题之间相关度不高,因此可以有选择地阅读。 强调内容 本书对文本突出强调的方式是用粗体。粗体文本表示强调新概念或概念的重点。当提到特定代码时,也会突出显示,如pymc3.sample。 代码 书中的代码块用阴影框标记,左侧带有行号,并使用章节编号后跟代码块编号进行引用,如代码清单0.1所示。 代码清单0.1 1 for i in range(3): 2 print(i**2) 0 1 4 每次看到代码块时都会想查看运行结果。结果通常体现为一张图、一个数字、一份代码输出或一个表格。反之,书中大部分图都有相关的代码,有时会省略一些代码以节省篇幅,但你可以在GitHub库(https://github.com/BayesianModelingandComputationInPython)中访问完整代码。该库还包括一些用于练习的附加材料。其中的笔记还可能包含其他图、代码或输出,这些内容未出现在书中但用于开发书中所见模型。GitHub中还包含说明,指导如何根据已有设备创建标准计算环境。 方框 本书使用方框简要提及重要的统计、数学或(Python)编程概念。书中还会提供参考资料,供你继续学习相应主题。 中心极限定理(Central Limit Theorem) 在概率论中,中心极限定理规定:在某些情况下,添加独立随机变量时,即使原始变量本身不呈正态分布,但它们的适当归一化总和也会趋于正态分布。 设X1,X2,X3,…独立同分布,平均值为μ,标准差为σ。当n →∞时,有: Introduction to Probability [21]一书介绍了许多概率基础理论,可用于实践。 代码导入 在本书中,导入Python包时使用代码清单0.2所示的约定。 代码清单0.2 1 # 基本的 2 import numpy as np 3 from scipy import stats 4 import pandas as pd 5 from patsy import bs, dmatrix 6 import matplotlib.pyplot as plt 7 8 # 贝叶斯模型探索性分析 9 import arviz as az 10 11 # 概率编程语言 12 import bambi as bmb 13 import pymc3 as pm 14 import tensorflow_probability as tfp 15 16 tfd = tfp.distributions 17 18 # 计算后端 19 import theano 20 import theano.tensor as tt 21 import tensorflow as tf 本书还会使用ArviZ样式:az.style.use("arviz-grayscale")。 由于本书是黑白印刷,本书中的彩图为方便读者阅读,以彩插形式放在封底二维码,读者可自行下载。 与本书互动 本书的受众不是贝叶斯读者,而是贝叶斯从业者。我们将提供材料,帮助练习贝叶斯推断和贝叶斯模型探索性分析。由于利用计算和代码是现代贝叶斯从业者所需要的核心技能,因此将提供示例,以供你在多次尝试中建立思维。对于本书代码,我们期望你阅读、执行、修改,并再次执行多次。我们只能在本书中展示有限示例,但你可以使用计算机自己制作无数的示例。通过这种方式,你不仅可以学习统计概念,还可以学习如何使用计算机将这些概念应用于实践。 计算机还将使你摆脱印刷文本的限制,例如缺乏颜色、缺乏动画和并排比较。现代贝叶斯从业者利用监视器和快速可计算“双重检查”提供的灵活性,本书专门创建了示例以允许相同级别的交互性。每章的末尾都设有练习,用于测试学习和实践成果。练习按难易程度标记为简单(E)、中等(M)和困难(H),可根据需要酌情解答。 本书参考文献可下载封底二维码获取。 致谢 感谢我们的朋友和同事,他们牺牲了大量时间和精力来阅读早期书稿,提出了建设性的反馈,帮助我们改进了本书,也帮助我们修复了书中的许多错误。非常感谢: Oriol Abril-Pla、Alex Andorra、Paul Anzel、Dan Becker、Tomás Capretto、Allen Downey、Christopher Fonnesbeck、Meenal Jhajharia、Will Kurt、Asael Matamoros、Kevin Murphy以及Aki Vehtari。
more >