2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

概率编程语言与贝叶斯方法实践

  • 2014-07-18
  • 本文字数:1495 字

    阅读完需:约 5 分钟

近日,机器学习爱好者 Cameron Davidson-Pilon 在 GitHub 上发布了《概率编程和贝叶斯方法实践》一书,该书以动手编程和理解为首要任务,数学原理次之的理念,以概率编程的角度为读者介绍贝叶斯方法。该书为入门书籍,主要面向数学基础较弱以及不关心其数学原理的读者,对于经过严格数学训练的读者,建议结合其他有数学分析的相关图书阅读。该书源代码构成的项目在GitHub 上获得了高达5900+ 个星标,被fork 1100 多次,目前有765 次更新以及74 位贡献者。全书使用Python 脚本语言作为示例语言,采用非常新颖的IPython Notebook 形式发布,全部代码都可以随时执行并立即得到效果。《概率编程和贝叶斯方法实践》一书之所以选择PyMC 作为概率编程语言,主要考虑到两个原因,一是PyMC 缺乏入门教材,官方文档假设读者对贝叶斯和概率编程都很了解;二是鉴于近年来Python 语言在学术界的流行程度,PyMC 可能很快就成为一个核心模块。

贝叶斯方法是进行逻辑推理的一种非常自然的方法,但是对于广大读者来说,它的出现,通常附带着大量的数学公式和推导过程,让人望而却步。现有介绍贝叶斯推理的图书,通常会用两三个章节来讲解概率论基础,然后才能告诉我们什么是贝叶斯推理。非常不幸的是,由于大多数贝叶斯模型与生俱来的数学复杂性,读者接触到的只能是一些简单的,人为构造的虚假简化示例。这很容易给读者一种贝叶斯方法没什么了不起的感觉。实际上,这些错误的感觉只是那些图书作者的一面之词。

在目睹了近年来贝叶斯方法在机器学习领域的贡献,该书作者决定亲自来撰写一本通俗易懂而且可用性非常强的贝叶斯方法入门图书。他投入了大量的时间精力,研究如何将贝叶斯方法的数学基础和实践联系在一起。最后他发现,最大的问题在于,当前的资料中,贝叶斯相关数学知识和概率编程之间缺乏紧密的联系。因此本书的目标就在于弥补这一缺失。

如果说贝叶斯推理是我们最终的目标,那么用数学工具进行分析只是通向它的一个途径。现在的计算能力如此便宜,我们完全可以从另外一个完全不同的途径——概率编程来达到推理的目的。概率编程对于我们来讲更加实用,因为它不需要每一步都去考虑那些复杂的数学公式,这样我们就把拦在贝叶斯推理前面的数学巨石轻而易举的绕过了。

全书内容分为引言和六个章节,第一章介绍贝叶斯方法的原则以及概率编程初步;第二章介绍PyMC;第三章介绍马尔科夫蒙特卡洛方法(MCMC);第四章介绍大数定律;第五章介绍损失函数;第六章也是最重要的一张,介绍先验知识。另外还有两个补充章节,介绍贝叶斯方法在机器学习领域的应用以及PyMC 的更多细节。纵观全书,作者给出了非常多的真实数据来让读者深入了解贝叶斯方法。比如第一章中的通过用户一天发送的短信息数量来推测用户行为的变化;第二章中的AB 测试、谎言测试以及航天飞机事故分析;第三章中的贝叶斯后验概率和马尔科夫蒙特卡洛,以及数据聚类;第四章中的reddit 内容分享网站评论的按质量排序;第五章中的猜商品价格和Kaggle 竞赛题;第六章中的贝叶斯老虎机问题和股票分析等等。

值得一提的地方,此书的全部内容是开源的,意味着任何感兴趣的读者都可以自己做出贡献,只要通过GitHub 提交即可。在首页的最后,作者呼吁大家参与到图书的编写当中,并提供了一些入手的线索,比如对于马尔科夫蒙特卡洛方法、最大后验概率、贝叶斯网络、概率分布等内容的介绍、相关Python 代码的编写、对例子做出更生动的解释以及文字上的纠错等等。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 [email protected] 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-07-18 02:4611239
用户头像

发布了 268 篇内容, 共 130.3 次阅读, 收获喜欢 24 次。

关注

评论

发布
暂无评论
发现更多内容

网络编程(三)数据链路相关知识

Albert Edison

Linux 网络编程 计算机网络 8月月更 数据链路

在线XML转Excel工具

入门小站

工具

阿里云解决方案架构师张平:云原生数字化安全生产的体系建设

阿里巴巴云原生

阿里云 云原生 安全 数字化

什么是研发效能?研发效能定义及核心价值

laofo

DevOps cicd 研发效能 持续交付 工程效率

数据库知识点总结

乌龟哥哥

8月月更

企业架构是当代的屠龙之术吗?

涛哥 数字产品和业务架构

企业架构

开源一夏 | 见微知著,带你认认数据分析的大门,站在门口感受一下预测的魅力

迷彩

开源 数据分析 预测模型 签约计划第三季 8月月更

三种插件开发模式,带你玩废tinymce

Five

tinymce 签约计划第三季 8月月更

【ZK简明教程】(1)零知识证明的背景和系统结构

比特之心

区块链 零知识证明 密码学 签约计划第三季

记一次 ClickHouse 性能测试

劼哥stone

Kubernetes LIST请求服务调优

CTO技术共享

开源 签约计划第三季 8月月更

RocketMQ高性能设计之数据存储设计

急需上岸的小谢

8月月更

开源一夏|OpenHarmony跳转拨号界面

坚果

开源 OpenHarmony 8月月更

Linux部署hadoop2.7.7集群

程序员欣宸

hadoop 8月月更

11 个需要避免的 React 错误用法

Geek_z9ygea

JavaScript typescript React

KubeSphere 新版本3.3.0解读

CTO技术共享

开源 签约计划第三季 8月月更

急如闪电快如风,彩虹女神跃长空,Go语言高性能Web框架Iris项目实战-初始化项目ep00

刘悦的技术博客

Go golang 框架 go语言 Go 语言

Kafka基础知识

阿泽🧸

kafka 8月月更

C++学习------cfenv头文件的作用与源码分析

桑榆

签约计划第三季

前端食堂技术周刊第 48 期:ESLint 新配置系统、Vue3 中文文档正式上线、Astro 1.0、小程序新渲染引擎

童欧巴

SpringBoot 实战:国际化组件 MessageSource 与 Nacos 组合实现动态配置能力

看山

源码 nacos springboot MessageSources

面试突击74:properties和yml有什么区别?

王磊

Java 常见面试题

《Effective Java》第54条:返回零长度的数组或者集合,而不是null

okokabcd

Java

对 Service Mesh 望而却步?可能都没理解这一点

baiyutang

架构 微服务 签约计划第三季 servicemes

云原生(十七) | Kubernetes篇之深入了解Deployment

Lansonli

云原生 8月月更

在线文字图标logo文章封面图生成工具

入门小站

工具

[极致用户体验] 你的 Link Button 能让用户选择新页面打开吗?

HullQin

CSS JavaScript html 前端 8月月更

IPv6报文头深度解析

穿过生命散发芬芳

ipv6 8月月更

头脑风暴:组合总和 Ⅳ

HelloWorld杰少

8月月更

深入浅出sychronized与Lock的实现原理

清风

后端 原理 并发 lock sychronized

极狐 GitLab 冷知识:如何美化 issue 内容

郭旭东

极狐GitLab JIHULAB 101

概率编程语言与贝叶斯方法实践_语言 & 开发_张天雷_InfoQ精选文章