産品特色
編輯推薦
概率推理是機器學習的核心方法之一,本書旨在嚮程序員,特彆是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.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
概率編程實戰 下載 mobi epub pdf txt 電子書 格式