概率编程实战

概率编程实战
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2017-04
版次: 1
ISBN: 9787115448743
定价: 89.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 368页
正文语种: 简体中文
分类: 自然科学
39人买过
  • 概率推理是不确定性条件下做出决策的重要方法,在许多领域都已经得到了广泛的应用。概率编程充分结合了概率推理模型和现代计算机编程语言,使这一方法的实施更加简便,现已在许多领域(包括炙手可热的机器学习)中崭露头角,各种概率编程系统也如雨后春笋般出现。



    本书的作者Avi Pfeffer正是主流概率编程系统Figaro的首席开发者,他以详尽的实例、清晰易懂的解说引领读者进入这一过去令人望而生畏的领域。通读本书,可以发现概率编程并非“疯狂科学家”们的专利,无需艰深的数学知识,就可以构思出解决许多实际问题的概率模型,进而利用现代概率编程系统的强大功能解题。



    本书既可以作为概率编程的入门读物,也可以帮助已经有一定基础的读者熟悉Figaro这一概率编程利器。 Avi Pfeffer是概率编程的先驱,Figaro概率编程语言的首席设计者和开发者。在Charles River Analytics公司,Avi Pfeffer致力于Figaro在多个问题上的应用,包括恶意软件分析、汽车健康监控、气象模型建立和工程系统评估。在闲暇时,Avi Pfeffer是一位歌手、作曲家和音乐制作人。他和妻子及三个孩子在马萨诸塞州坎布里奇生活。 第1部分 概率编程和Figaro简介



    第1章 概率编程简介 3

    1.1 什么是概率编程 4

    1.1.1 我们如何做出主观判断 4

    1.1.2 概率推理系统帮助决策 5

    1.1.3 概率推理系统有3种方式推理 7

    1.1.4 概率编程系统:用编程语言表达的概率推理系统 11

    1.2 为什么使用概率编程 14

    1.2.1 更好的概率推理 14

    1.2.2 更好的模拟语言 15

    1.3 Figaro简介:一种概率编程语言 16

    1.4 小结 23

    1.5 练习 24



    第2章 Figaro快速教程 25

    2.1 Figaro简介 25

    2.2 创建模型和运行推理:重回Hello World 27

    2.2.1 构建第一个模型 28

    2.2.2 运行推理和回答查询 29

    2.2.3 构建模型和生成观测值 29

    2.2.4 理解模型的构建方法 31

    2.2.5 理解重复的元素:何时相同,何时不同 32

    2.3 使用基本构件:原子元素 33

    2.3.1 离散原子元素 34

    2.3.2 连续原子元素 35

    2.4 使用复合元素组合原子元素 37

    2.4.1 If 38

    2.4.2 Dist 39

    2.4.3 原子元素的复合版本 39

    2.5 用Apply和Chain构建更复杂的模型 40

    2.5.1 Apply 41

    2.5.2 Chain 43

    2.6 使用条件和约束指定证据 46

    2.6.1 观测值 46

    2.6.2 条件 47

    2.6.3 约束 48

    2.7 小结 50

    2.8 练习 51



    第3章 创建一个概率编程应用程序 53

    3.1 把握全局 53

    3.2 运行代码 56

    3.3 探索垃圾邮件过滤应用的架构 59

    3.3.1 推理组件架构 59

    3.3.2 学习组件架构 62

    3.4 设计电子邮件模型 64

    3.4.1 选择元素 64

    3.4.2 定义依赖关系 67

    3.4.3 定义函数形式 68

    3.4.4 使用数值参数 71

    3.4.5 使用辅助知识 73

    3.5 构建推理组件 74

    3.6 创建学习组件 78

    3.7 小结 81

    3.8 练习 82



    第2部分 编写概率程序



    第4章 概率模型和概率程序 85

    4.1 概率模型定义 86

    4.1.1 将一般知识表达为可能世界上的某种概率分布 86

    4.1.2 进一步探索概率分布 88

    4.2 使用概率模型回答查询 90

    4.2.1 根据证据调节以产生后验概率分布 90

    4.2.2 回答查询 92

    4.2.3 使用概率推理 94

    4.3 概率模型的组成部分 94

    4.3.1 变量 95

    4.3.2 依赖性 96

    4.3.3 函数形式 101

    4.3.4 数值参数 104

    4.4 生成过程 105

    4.5 使用连续变量的模型 110

    4.5.1 使用beta-二项式模型 110

    4.5.2 连续变量的表示 111

    4.6 小结 114

    4.7 练习 114



    第5章 用贝叶斯和马尔科夫网络建立依赖性模型 116

    5.1 建立依赖性模型 117

    5.1.1 有向依赖性 117

    5.1.2 无向依赖性 122

    5.1.3 直接和间接依赖性 124

    5.2 使用贝叶斯网络 126

    5.2.1 贝叶斯网络定义 126

    5.2.2 贝叶斯网络如何定义概率分布 127

    5.2.3 用贝叶斯网络进行推理 128

    5.3 探索贝叶斯网络的一个示例 131

    5.3.1 设计一个计算机系统诊断模型 131

    5.3.2 用计算机系统诊断模型进行推理 135

    5.4 使用概率编程扩展贝叶斯网络:预测产品的成功 140

    5.4.1 设计产品成功预测模型 140

    5.4.2 用产品成功预测模型进行推理 145

    5.5 使用马尔科夫网络 147

    5.5.1 马尔科夫网络定义 147

    5.5.2 表示马尔科夫网络并用其进行推理 150

    5.6 小结 153

    5.7 练习 153



    第6章 使用Scala和Figaro集合构建模型 156

    6.1 使用Scala集合 157

    6.1.1 为依赖于单一变量的多个变量建立模型 157

    6.1.2 创建层次化模型 160

    6.1.3 建立同时依赖两个变量的模型 162

    6.2 使用Figaro集合 165

    6.2.1 理解Figaro集合的用途 165

    6.2.2 用Figaro集合重新实现层次化模型 166

    6.2.3 结合使用Scala和Figaro集合 168

    6.3 建立对象数量未知情况的模型 171

    6.3.1 开放宇宙中对象数量未知的情况 171

    6.3.2 可变大小数组 172

    6.3.3 可变大小数组上的操作 172

    6.3.4 示例:预测数量未知的新产品销售额 173

    6.4 处理无限过程 174

    6.4.1 Process特征 175

    6.4.2 示例:一个健康时空过程 176

    6.4.3 使用过程 178

    6.5 小结 179

    6.6 练习 180



    第7章 面向对象概率建模 182

    7.1 使用面向对象概率模型 183

    7.1.1 理解面向对象建模的元素 183

    7.1.2 重温打印机模型 185

    7.1.3 关于多台打印机的推理 189

    7.2 用关系扩展OO概率模型 192

    7.2.1 描述通用类级模型 192

    7.2.2 描述某种情况 195

    7.2.3 用Figaro表现社会化媒体模型 198

    7.3 建立关系和类型不确定性的模型 200

    7.3.1 元素集合和引用 200

    7.3.2 具有关系不确定性的社会化媒体模型 202

    7.3.3 具有类型不确定性的打印机模型 205

    7.4 小结 207

    7.5 练习 207 



    第8章 动态系统建模 209

    8.1 动态概率模型 210

    8.2 动态模型类型 211

    8.2.1 马尔科夫链 211

    8.2.2 隐含马尔科夫模型 214

    8.2.3 动态贝叶斯网络 216

    8.2.4 结构随时间改变的模型 220

    8.3 建立永续系统的模型 224

    8.3.1 理解Figaro的宇宙概念 224

    8.3.2 使用宇宙建立持续运行系统的模型 225

    8.3.3 运行一个监控应用 227

    8.4 小结 229

    8.5 练习 230



    第3部分 推 理



    第9章 概率推理三原则 235

    9.1 链式法则:从条件概率分布构建联合分布 237

    9.2 全概率公式:从联合分布获得简单查询结果 240

    9.3 贝叶斯法则:从结果推断原因 243

    9.3.1 理解、原因、结果和推理 243

    9.3.2 实践中的贝叶斯法则 245

    9.4 贝叶斯建模 247

    9.4.1 估算硬币的偏差 248

    9.4.2 预测下一次掷币结果 252

    9.5 小结 256

    9.6 练习 256



    第10章 因子分解推理算法 258

    10.1 因子 259

    10.1.1 什么是因子 259

    10.1.2 用链式法则分解概率分布 261

    10.1.3 使用全概率公式,定义包含因子的查询 263

    10.2 变量消除算法 267

    10.2.1 VE的图形解释 267

    10.2.2 VE代数运算 271

    10.3 VE的使用 273

    10.3.1 Figaro特有的VE考虑因素 273

    10.3.2 设计模型支持高效的VE 275

    10.3.3 VE的应用 278

    10.4 置信传播 281

    10.4.1 BP基本原理 282

    10.4.2 Loopy BP的属性 282

    10.5 BP的使用 284

    10.5.1 Figaro特有的BP考虑因素 284

    10.5.2 设计模型以支持高效的BP 285

    10.5.3 BP的应用 287

    10.6 小结 288

    10.7 练习 288



    第11章 抽样算法 291

    11.1 抽样的原理 292

    11.1.1 前向抽样 293

    11.1.2 拒绝抽样 297

    11.2 重要性抽样 299

    11.2.1 重要性抽样的工作方式 300

    11.2.2 在Figaro中使用重要性抽样 303

    11.2.3 让重要性抽样为您工作 304

    11.2.4 重要性抽样的应用 305

    11.3 马尔科夫链蒙特卡洛抽样 307

    11.3.1 MCMC的工作方式 308

    11.3.2 Figaro的MCMC算法:Metropolis-Hastings算法 311

    11.4 让MH更好地工作 314

    11.4.1 自定义提议 316

    11.4.2 避免硬条件 319

    11.4.3 MH的应用 320

    11.5 小结 321

    11.6 练习 322



    第12章 处理其他推理任务 324

    12.1 计算联合分布 325

    12.2 计算最可能的解释 326

    12.2.1 在Figaro中计算和查询MPE 329

    12.2.2 MPE查询算法的使用 331

    12.2.3 探索MPE算法的应用 336

    12.3 计算证据的概率 337

    12.3.1 观察用于证据概率计算的证据 338

    12.3.2 运行证据概率算法 339

    12.4 小结 341

    12.5 练习 341



    第13章 动态推理和参数学习 342

    13.1 监控动态系统的状态 342

    13.1.1 监控机制 344

    13.1.2 粒子过滤算法 345

    13.1.3 过滤的应用 348

    13.2 学习模型参数 349

    13.2.1 贝叶斯学习 349

    13.2.2 最大似然和MAP学习 353

    13.3 进一步应用Figaro 360

    13.4 小结 361

    13.5 练习 361



    附录A 获取和安装Scala和Figaro 364

    A.1 使用sbt 364

    A.2 在没有sbt的情况下安装和运行Figaro 365

    A.3 从源代码编译 366

    附录B 概率编程系统简况 367
  • 内容简介:
    概率推理是不确定性条件下做出决策的重要方法,在许多领域都已经得到了广泛的应用。概率编程充分结合了概率推理模型和现代计算机编程语言,使这一方法的实施更加简便,现已在许多领域(包括炙手可热的机器学习)中崭露头角,各种概率编程系统也如雨后春笋般出现。



    本书的作者Avi Pfeffer正是主流概率编程系统Figaro的首席开发者,他以详尽的实例、清晰易懂的解说引领读者进入这一过去令人望而生畏的领域。通读本书,可以发现概率编程并非“疯狂科学家”们的专利,无需艰深的数学知识,就可以构思出解决许多实际问题的概率模型,进而利用现代概率编程系统的强大功能解题。



    本书既可以作为概率编程的入门读物,也可以帮助已经有一定基础的读者熟悉Figaro这一概率编程利器。
  • 作者简介:
    Avi Pfeffer是概率编程的先驱,Figaro概率编程语言的首席设计者和开发者。在Charles River Analytics公司,Avi Pfeffer致力于Figaro在多个问题上的应用,包括恶意软件分析、汽车健康监控、气象模型建立和工程系统评估。在闲暇时,Avi Pfeffer是一位歌手、作曲家和音乐制作人。他和妻子及三个孩子在马萨诸塞州坎布里奇生活。
  • 目录:
    第1部分 概率编程和Figaro简介



    第1章 概率编程简介 3

    1.1 什么是概率编程 4

    1.1.1 我们如何做出主观判断 4

    1.1.2 概率推理系统帮助决策 5

    1.1.3 概率推理系统有3种方式推理 7

    1.1.4 概率编程系统:用编程语言表达的概率推理系统 11

    1.2 为什么使用概率编程 14

    1.2.1 更好的概率推理 14

    1.2.2 更好的模拟语言 15

    1.3 Figaro简介:一种概率编程语言 16

    1.4 小结 23

    1.5 练习 24



    第2章 Figaro快速教程 25

    2.1 Figaro简介 25

    2.2 创建模型和运行推理:重回Hello World 27

    2.2.1 构建第一个模型 28

    2.2.2 运行推理和回答查询 29

    2.2.3 构建模型和生成观测值 29

    2.2.4 理解模型的构建方法 31

    2.2.5 理解重复的元素:何时相同,何时不同 32

    2.3 使用基本构件:原子元素 33

    2.3.1 离散原子元素 34

    2.3.2 连续原子元素 35

    2.4 使用复合元素组合原子元素 37

    2.4.1 If 38

    2.4.2 Dist 39

    2.4.3 原子元素的复合版本 39

    2.5 用Apply和Chain构建更复杂的模型 40

    2.5.1 Apply 41

    2.5.2 Chain 43

    2.6 使用条件和约束指定证据 46

    2.6.1 观测值 46

    2.6.2 条件 47

    2.6.3 约束 48

    2.7 小结 50

    2.8 练习 51



    第3章 创建一个概率编程应用程序 53

    3.1 把握全局 53

    3.2 运行代码 56

    3.3 探索垃圾邮件过滤应用的架构 59

    3.3.1 推理组件架构 59

    3.3.2 学习组件架构 62

    3.4 设计电子邮件模型 64

    3.4.1 选择元素 64

    3.4.2 定义依赖关系 67

    3.4.3 定义函数形式 68

    3.4.4 使用数值参数 71

    3.4.5 使用辅助知识 73

    3.5 构建推理组件 74

    3.6 创建学习组件 78

    3.7 小结 81

    3.8 练习 82



    第2部分 编写概率程序



    第4章 概率模型和概率程序 85

    4.1 概率模型定义 86

    4.1.1 将一般知识表达为可能世界上的某种概率分布 86

    4.1.2 进一步探索概率分布 88

    4.2 使用概率模型回答查询 90

    4.2.1 根据证据调节以产生后验概率分布 90

    4.2.2 回答查询 92

    4.2.3 使用概率推理 94

    4.3 概率模型的组成部分 94

    4.3.1 变量 95

    4.3.2 依赖性 96

    4.3.3 函数形式 101

    4.3.4 数值参数 104

    4.4 生成过程 105

    4.5 使用连续变量的模型 110

    4.5.1 使用beta-二项式模型 110

    4.5.2 连续变量的表示 111

    4.6 小结 114

    4.7 练习 114



    第5章 用贝叶斯和马尔科夫网络建立依赖性模型 116

    5.1 建立依赖性模型 117

    5.1.1 有向依赖性 117

    5.1.2 无向依赖性 122

    5.1.3 直接和间接依赖性 124

    5.2 使用贝叶斯网络 126

    5.2.1 贝叶斯网络定义 126

    5.2.2 贝叶斯网络如何定义概率分布 127

    5.2.3 用贝叶斯网络进行推理 128

    5.3 探索贝叶斯网络的一个示例 131

    5.3.1 设计一个计算机系统诊断模型 131

    5.3.2 用计算机系统诊断模型进行推理 135

    5.4 使用概率编程扩展贝叶斯网络:预测产品的成功 140

    5.4.1 设计产品成功预测模型 140

    5.4.2 用产品成功预测模型进行推理 145

    5.5 使用马尔科夫网络 147

    5.5.1 马尔科夫网络定义 147

    5.5.2 表示马尔科夫网络并用其进行推理 150

    5.6 小结 153

    5.7 练习 153



    第6章 使用Scala和Figaro集合构建模型 156

    6.1 使用Scala集合 157

    6.1.1 为依赖于单一变量的多个变量建立模型 157

    6.1.2 创建层次化模型 160

    6.1.3 建立同时依赖两个变量的模型 162

    6.2 使用Figaro集合 165

    6.2.1 理解Figaro集合的用途 165

    6.2.2 用Figaro集合重新实现层次化模型 166

    6.2.3 结合使用Scala和Figaro集合 168

    6.3 建立对象数量未知情况的模型 171

    6.3.1 开放宇宙中对象数量未知的情况 171

    6.3.2 可变大小数组 172

    6.3.3 可变大小数组上的操作 172

    6.3.4 示例:预测数量未知的新产品销售额 173

    6.4 处理无限过程 174

    6.4.1 Process特征 175

    6.4.2 示例:一个健康时空过程 176

    6.4.3 使用过程 178

    6.5 小结 179

    6.6 练习 180



    第7章 面向对象概率建模 182

    7.1 使用面向对象概率模型 183

    7.1.1 理解面向对象建模的元素 183

    7.1.2 重温打印机模型 185

    7.1.3 关于多台打印机的推理 189

    7.2 用关系扩展OO概率模型 192

    7.2.1 描述通用类级模型 192

    7.2.2 描述某种情况 195

    7.2.3 用Figaro表现社会化媒体模型 198

    7.3 建立关系和类型不确定性的模型 200

    7.3.1 元素集合和引用 200

    7.3.2 具有关系不确定性的社会化媒体模型 202

    7.3.3 具有类型不确定性的打印机模型 205

    7.4 小结 207

    7.5 练习 207 



    第8章 动态系统建模 209

    8.1 动态概率模型 210

    8.2 动态模型类型 211

    8.2.1 马尔科夫链 211

    8.2.2 隐含马尔科夫模型 214

    8.2.3 动态贝叶斯网络 216

    8.2.4 结构随时间改变的模型 220

    8.3 建立永续系统的模型 224

    8.3.1 理解Figaro的宇宙概念 224

    8.3.2 使用宇宙建立持续运行系统的模型 225

    8.3.3 运行一个监控应用 227

    8.4 小结 229

    8.5 练习 230



    第3部分 推 理



    第9章 概率推理三原则 235

    9.1 链式法则:从条件概率分布构建联合分布 237

    9.2 全概率公式:从联合分布获得简单查询结果 240

    9.3 贝叶斯法则:从结果推断原因 243

    9.3.1 理解、原因、结果和推理 243

    9.3.2 实践中的贝叶斯法则 245

    9.4 贝叶斯建模 247

    9.4.1 估算硬币的偏差 248

    9.4.2 预测下一次掷币结果 252

    9.5 小结 256

    9.6 练习 256



    第10章 因子分解推理算法 258

    10.1 因子 259

    10.1.1 什么是因子 259

    10.1.2 用链式法则分解概率分布 261

    10.1.3 使用全概率公式,定义包含因子的查询 263

    10.2 变量消除算法 267

    10.2.1 VE的图形解释 267

    10.2.2 VE代数运算 271

    10.3 VE的使用 273

    10.3.1 Figaro特有的VE考虑因素 273

    10.3.2 设计模型支持高效的VE 275

    10.3.3 VE的应用 278

    10.4 置信传播 281

    10.4.1 BP基本原理 282

    10.4.2 Loopy BP的属性 282

    10.5 BP的使用 284

    10.5.1 Figaro特有的BP考虑因素 284

    10.5.2 设计模型以支持高效的BP 285

    10.5.3 BP的应用 287

    10.6 小结 288

    10.7 练习 288



    第11章 抽样算法 291

    11.1 抽样的原理 292

    11.1.1 前向抽样 293

    11.1.2 拒绝抽样 297

    11.2 重要性抽样 299

    11.2.1 重要性抽样的工作方式 300

    11.2.2 在Figaro中使用重要性抽样 303

    11.2.3 让重要性抽样为您工作 304

    11.2.4 重要性抽样的应用 305

    11.3 马尔科夫链蒙特卡洛抽样 307

    11.3.1 MCMC的工作方式 308

    11.3.2 Figaro的MCMC算法:Metropolis-Hastings算法 311

    11.4 让MH更好地工作 314

    11.4.1 自定义提议 316

    11.4.2 避免硬条件 319

    11.4.3 MH的应用 320

    11.5 小结 321

    11.6 练习 322



    第12章 处理其他推理任务 324

    12.1 计算联合分布 325

    12.2 计算最可能的解释 326

    12.2.1 在Figaro中计算和查询MPE 329

    12.2.2 MPE查询算法的使用 331

    12.2.3 探索MPE算法的应用 336

    12.3 计算证据的概率 337

    12.3.1 观察用于证据概率计算的证据 338

    12.3.2 运行证据概率算法 339

    12.4 小结 341

    12.5 练习 341



    第13章 动态推理和参数学习 342

    13.1 监控动态系统的状态 342

    13.1.1 监控机制 344

    13.1.2 粒子过滤算法 345

    13.1.3 过滤的应用 348

    13.2 学习模型参数 349

    13.2.1 贝叶斯学习 349

    13.2.2 最大似然和MAP学习 353

    13.3 进一步应用Figaro 360

    13.4 小结 361

    13.5 练习 361



    附录A 获取和安装Scala和Figaro 364

    A.1 使用sbt 364

    A.2 在没有sbt的情况下安装和运行Figaro 365

    A.3 从源代码编译 366

    附录B 概率编程系统简况 367
查看详情
相关图书 / 更多
概率编程实战
概率论(第二版) 何书元
何书元 编著
概率编程实战
概率论与数理统计
欧启通
概率编程实战
概率论与数理统计
郭冰阳 编
概率编程实战
概率论与数理统计作业集
主编 宋国杰 陈亚丽 郑琴
概率编程实战
概率论与数理统计习题全解与学习指导(第2版)
杨筱菡 王勇智
概率编程实战
概率论与数理统计练习与提高
王元媛
概率编程实战
概率统计同步练习与提高
石志岩 主编
概率编程实战
概率论与数理统计(第2版)
殷羽 编
概率编程实战
概率论与数理统计基础教程
主编 纪楠 副主编 袁书娟 关树明 参编 韩冰 李言 王立亚
概率编程实战
概率论与数理统计
哈金才 马少娟 李海燕 主编
概率编程实战
概率论与数理统计
林娟
概率编程实战
概率论与数理统计
作者
您可能感兴趣 / 更多