新書推薦:
《
干戈之影:商代的战争观念、武装者与武器装备
》
售價:HK$
74.8
《
镶嵌之美:古希腊罗马的马赛克艺术
》
售價:HK$
305.8
《
后希腊化哲学:从斯多亚学派到奥利金的发展研究
》
售價:HK$
76.8
《
别纠结啦:不被情绪牵着走的通透生活指南(“当代一休”小池龙之介治愈新作!附赠精美书签!)
》
售價:HK$
64.9
《
第二人生:找到重新定义人生的智慧
》
售價:HK$
96.8
《
唐朝三百年
》
售價:HK$
107.8
《
反操纵心理学:夺回人生主导权 拒绝被操纵
》
售價:HK$
54.8
《
同工异曲:跨文化阅读的启示(修订版)
》
售價:HK$
43.8
編輯推薦:
概率推理是机器学习的核心方法之一,本书旨在向程序员,特别是Scala开发人员揭开概率建模的神秘面纱,以帮助程序员们高效地使用概率编程系统。 借助概率编程系统,通过应用特定的算法,你的程序可以确定不同结论的概率。这意味着你可以预测未来事件,如销售趋势、计算机系统故障、试验结果和其他许多重要的关注点。 本书的主要内容 ● 概率建模入门 ● 用Figaro 编写概率程序 ● 构建贝叶斯网络 ● 预测产品生命周期 ● 决策算法 本书使用的Figaro概率编程语言是Scala库,这使得概率编程模型更容易与Java虚拟机应用集成。同时,Figaro具备了目前概率编程系统中非常广泛的表现特征和推理算法。Figaro还是一个开源GitHub项目,全新版本号为3.3。
內容簡介:
概率推理是不确定性条件下做出决策的重要方法,在许多领域都已经得到了广泛的应用。概率编程充分结合了概率推理模型和现代计算机编程语言,使这一方法的实施更加简便,现已在许多领域(包括炙手可热的机器学习)中崭露头角,各种概率编程系统也如雨后春笋般出现。 本书的作者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.3Figaro简介:一种概率编程语言 16
1.4小结 23
1.5练习 24
第2章Figaro快速教程 25
2.1Figaro简介 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.1If 38
2.4.2Dist 39
2.4.3原子元素的复合版本 39
2.5用Apply和Chain构建更复杂的模型 40
2.5.1Apply 41
2.5.2Chain 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.1Process特征 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.1VE的图形解释 267
10.2.2VE代数运算 271
10.3VE的使用 273
10.3.1Figaro特有的VE考虑因素 273
10.3.2设计模型支持高效的VE 275
10.3.3VE的应用 278
10.4置信传播 281
10.4.1BP基本原理 282
10.4.2Loopy BP的属性 282
10.5BP的使用 284
10.5.1Figaro特有的BP考虑因素 284
10.5.2设计模型以支持高效的BP 285
10.5.3BP的应用 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.1MCMC的工作方式 308
11.3.2Figaro的MCMC算法:Metropolis-Hastings算法 311
11.4让MH更好地工作 314
11.4.1自定义提议 316
11.4.2避免硬条件 319
11.4.3MH的应用 320
11.5小结 321
11.6练习 322
第12章处理其他推理任务 324
12.1计算联合分布 325
12.2计算最可能的解释 326
12.2.1在Figaro中计算和查询MPE 329
12.2.2MPE查询算法的使用 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