目錄
第 1章 概述 1
1.1 符號和定義 1
1.1.1 數據結構 1
1.1.2 大寫西格瑪記法 3
1.2 什么是機器學習 3
1.2.1 監(jiān)督學習 4
1.2.2 無監(jiān)督學習 5
1.2.3 半監(jiān)督學習 6
1.2.4 強化學習 6
1.3 數據和機器學習術語 6
1.3.1 直接和間接使用的數據 7
1.3.2 原始數據和規(guī)整數據 7
1.3.3 訓練集和留出集 8
1.3.4 基線 9
1.3.5 機器學習流水線 9
1.3.6 參數與超參數 10
1.3.7 分類與回歸 10
1.3.8 基于模型學習與基于實例學習 11
1.3.9 淺層學習與深度學習的比較 11
1.3.10 訓練與評分 11
1.4 何時使用機器學習 11
1.4.1 如果問題太復雜,無法進行編程 12
1.4.2 如果問題不斷變化 12
1.4.3 如果它是一個感知問題 13
1.4.4 如果它是一種未曾研究過的現象 13
1.4.5 如果問題的目標簡單 14
1.4.6 如果它有成本效益 14
1.5 何時不使用機器學習 14
1.6 什么是機器學習工程 15
1.7 機器學習項目生命周期 16
1.8 小結 17
第 2章 項目開始前 19
2.1 機器學習項目的優(yōu)先級排序 19
2.1.1 機器學習的影響 19
2.1.2 機器學習的成本 20
2.2 估計機器學習項目的復雜度 21
2.2.1 未知因素 21
2.2.2 簡化問題 21
2.2.3 非線性進展 22
2.3 確定機器學習項目的目標 22
2.3.1 模型能做什么 22
2.3.2 成功模型的屬性 23
2.4 構建機器學習團隊 24
2.4.1 兩種文化 24
2.4.2 機器學習團隊的成員 25
2.5 機器學習項目為何失敗 26
2.5.1 缺乏有經驗的人才 26
2.5.2 缺乏領導層的支持 26
2.5.3 數據基礎設施缺失 27
2.5.4 數據標簽的挑戰(zhàn) 27
2.5.5 谷倉式組織和缺乏協作 28
2.5.6 技術上不可行的項目 28
2.5.7 技術團隊和業(yè)務團隊之間缺乏協調 28
2.6 小結 29
第3章 數據收集和準備 31
3.1 關于數據的問題 31
3.1.1 數據是否可獲得 31
3.1.2 數據是否相當大 32
3.1.3 數據是否可用 34
3.1.4 數據是否可理解 35
3.1.5 數據是否可靠 36
3.2 數據的常見問題 37
3.2.1 高成本 37
3.2.2 質量差 39
3.2.3 噪聲 39
3.2.4 偏差 40
3.2.5 預測能力低 45
3.2.6 過時的樣本 45
3.2.7 離群值 46
3.2.8 數據泄露 47
3.3 什么是好數據 48
3.3.1 好數據是有信息的 48
3.3.2 好數據有好的覆蓋面 48
3.3.3 好數據反映真實的輸入 48
3.3.4 好數據沒有偏差 49
3.3.5 好數據不是反饋環(huán)路的結果 49
3.3.6 好數據有一致的標簽 49
3.3.7 好數據足夠大 49
3.3.8 好數據總結 50
3.4 處理交互數據 50
3.5 數據泄露的原因 51
3.5.1 目標是一個特征的函數 51
3.5.2 特征隱藏目標 52
3.5.3 特征來自未來 52
3.6 數據劃分 53
3.7 處理缺失的屬性 55
3.7.1 數據填補技術 55
3.7.2 填補過程中的泄露問題 57
3.8 數據增強 57
3.8.1 圖像的數據增強 57
3.8.2 文本的數據增強 59
3.9 處理不平衡的數據 60
3.9.1 過采樣 60
3.9.2 欠采樣 62
3.9.3 混合策略 62
3.10 數據采樣策略 63
3.10.1 簡單隨機采樣 63
3.10.2 系統采樣 64
3.10.3 分層采樣 64
3.11 存儲數據 64
3.11.1 數據格式 65
3.11.2 數據存儲級別 66
3.11.3 數據版本化 68
3.11.4 文檔和元數據 69
3.11.5 數據生命周期 70
3.12 數據處理最佳實踐 70
3.12.1 可重復性 70
3.12.2 數據第 一,算法第二 70
3.13 小結 71
第4章 特征工程 73
4.1 為什么要進行特征工程 73
4.2 如何進行特征工程 74
4.2.1 文本的特征工程 74
4.2.2 為什么詞袋有用 77
4.2.3 將分類特征轉換為數字 78
4.2.4 特征哈?!?0
4.2.5 主題建?!?1
4.2.6 時間序列的特征 85
4.2.7 發(fā)揮你的創(chuàng)造力 88
4.3 疊加特征 88
4.3.1 疊加特征向量 88
4.3.2 疊加單個特征 89
4.4 好特征的屬性 90
4.4.1 高預測能力 90
4.4.2 快速計算能力 90
4.4.3 可靠性 91
4.4.4 不相關 91
4.4.5 其他屬性 91
4.5 特征選擇 92
4.5.1 切除長尾 92
4.5.2 Boruta 93
4.5.3 L1正則化 95
4.5.4 特定任務的特征選擇 95
4.6 合成特征 96
4.6.1 特征離散化 96
4.6.2 從關系數據中合成特征 97
4.6.3 通過數據合成特征 99
4.6.4 通過其他特征合成特征 99
4.7 從數據中學習特征 100
4.7.1 單詞嵌入 100
4.7.2 文檔嵌入 102
4.7.3 任何東西的嵌入 103
4.7.4 選擇嵌入維度 104
4.8 降維 104
4.8.1 用PCA快速降維 104
4.8.2 用于可視化的降維 105
4.9 縮放特征 105
4.9.1 歸一化 105
4.9.2 標準化 106
4.10 特征工程中的數據泄露問題 107
4.10.1 可能出現的問題 107
4.10.2 解決方案 107
4.11 存儲特征和編寫文檔 108
4.11.1 模式文件 108
4.11.2 特征商店 109
4.12 特征工程最佳實踐 112
4.12.1 生成許多簡單的特征 112
4.12.2 復用遺留系統 112
4.12.3 在需要時使用ID作為特征 112
4.12.4 但在可能時要減少基數 113
4.12.5 謹慎使用計數 113
4.12.6 必要時進行特征選擇 114
4.12.7 認真測試代碼 114
4.12.8 保持代碼、模型和數據的同步性 115
4.12.9 隔離特征提取代碼 115
4.12.10 將模型和特征提取器序列化在一起 115
4.12.11 記錄特征的值 115
4.13 小結 115
第5章 監(jiān)督模型訓練(第 一部分) 117
5.1 開始模型工作之前 117
5.1.1 驗證模式一致性 117
5.1.2 定義可實現的表現水平 118
5.1.3 選擇表現指標 118
5.1.4 選擇正確的基線 118
5.1.5 將數據分成三個集 121
5.1.6 監(jiān)督學習的前提條件 122
5.2 為機器學習表示標簽 122
5.2.1 多類分類 122
5.2.2 多標簽分類 123
5.3 選擇學習算法 124
5.3.1 學習算法的主要屬性 124
5.3.2 算法抽查 125
5.4 建立流水線 126
5.5 評估模型表現 127
5.5.1 回歸的表現指標 128
5.5.2 分類的表現指標 128
5.5.3 排名的表現指標 134
5.6 超參數調整 137
5.6.1 網格搜索 137
5.6.2 隨機搜索 138
5.6.3 由粗到精搜索 139
5.6.4 其他技術 140
5.6.5 交叉驗證 140
5.7 淺層模型訓練 141
5.7.1 淺層模型訓練策略 141
5.7.2 保存和恢復模型 142
5.8 偏差-方差折中 143
5.8.1 欠擬合 143
5.8.2 過擬合 143
5.8.3 折中 145
5.9 正則化 146
5.9.1 L1和L2正則化 147
5.9.2 其他形式的正則化 147
5.10 小結 148
第6章 監(jiān)督模型訓練(第二部分) 150
6.1 深度模型訓練策略 150
6.1.1 神經網絡訓練策略 151
6.1.2 表現指標和成本函數 151
6.1.3 參數初始化策略 153
6.1.4 優(yōu)化算法 154
6.1.5 學習率衰減安排表 158
6.1.6 正則化 159
6.1.7 網絡規(guī)模搜索和超參數調整 160
6.1.8 處理多個輸入 162
6.1.9 處理多個輸出 162
6.1.10 遷移學習 163
6.2 堆疊模型 165
6.2.1 集成學習的類型 165
6.2.2 模型堆疊的一種算法 166
6.2.3 模型堆疊中的數據泄露問題 167
6.3 應對分布偏移 167
6.3.1 分布偏移的類型 167
6.3.2 對抗驗證 168
6.4 處理不平衡數據集 168
6.4.1 類權重 169
6.4.2 重采樣數據集的集成 169
6.4.3 其他技術 170
6.5 模型校準 170
6.5.1 良好校準的模型 171
6.5.2 校準技術 172
6.6 故障排除與誤差分析 172
6.6.1 模范行為不良的原因 173
6.6.2 迭代模型的細化 173
6.6.3 誤差分析 174
6.6.4 復雜系統的誤差分析 175
6.6.5 使用切片指標 177
6.6.6 修復錯誤的標簽 177
6.6.7 尋找其他的樣本來標記 177
6.6.8 深度學習的故障排除 178
6.7 最佳實踐 179
6.7.1 提供一個好模型 180
6.7.2 信任流行的開源實現方式 180
6.7.3 優(yōu)化業(yè)務特定的表現指標 180
6.7.4 從頭開始升級 180
6.7.5 避免修正級聯 181
6.7.6 謹慎使用模型級聯 181
6.7.7 編寫高效的代碼、編譯和并行化 182
6.7.8 對較新和較舊數據都進行測試 183
6.7.9 更多的數據勝過更聰明的算法 183
6.7.10 新數據勝過巧妙的特征 184
6.7.11 擁抱微小進步 184
6.7.12 促進可重復性 184
6.8 小結 185
第7章 模型評估 187
7.1 離線和在線評估 188
7.2 A/B測試 190
7.2.1 G檢驗 190
7.2.2 Z檢驗 193
7.2.3 結語和警告 195
7.3 多臂老虎機 195
7.4 模型表現的統計界限 198
7.4.1 分類誤差的統計區(qū)間 199
7.4.2 自舉法統計區(qū)間 199
7.4.3 回歸的自舉法預測區(qū)間 201
7.5 評估測試集的充分性 201
7.5.1 神經元覆蓋率 201
7.5.2 突變測試 202
7.6 模型屬性的評估 202
7.6.1 健壯性 203
7.6.2 公平性 203
7.7 小結 204
第8章 模型部署 206
8.1 靜態(tài)部署 206
8.2 在用戶設備上動態(tài)部署 207
8.2.1 模型參數的部署 207
8.2.2 序列化對象的部署 208
8.2.3 部署到瀏覽器上 208
8.2.4 優(yōu)點和缺點 208
8.3 在服務器上動態(tài)部署 209
8.3.1 在虛擬機上部署 209
8.3.2 在容器中部署 210
8.3.3 無服務器部署 211
8.3.4 模型流 212
8.4 部署策略 214
8.4.1 單一部署 214
8.4.2 靜默部署 215
8.4.3 金絲雀部署 215
8.4.4 多臂老虎機 216
8.5 自動部署、版本管理和元數據 216
8.5.1 模型附帶資產 216
8.5.2 版本同步 216
8.5.3 模型版本元數據 217
8.6 模型部署最佳實踐 217
8.6.1 算法效率 218
8.6.2 深度模型的部署 221
8.6.3 緩存 221
8.6.4 模型和代碼的交付格式 222
8.6.5 從一個簡單的模型開始 224
8.6.6 對外測試 225
8.7 小結 225
第9章 模型服務、監(jiān)測和維護 227
9.1 模型服務運行時的屬性 227
9.1.1 安全性和正確性 227
9.1.2 部署的方便性 228
9.1.3 模型有效性的保證 228
9.1.4 易于恢復 229
9.1.5 避免訓練/服務偏離 229
9.1.6 避免隱藏反饋環(huán)路 229
9.2 模型服務模式 230
9.2.1 批量模式服務 230
9.2.2 對人按需服務 231
9.2.3 對機器按需服務 232
9.3 現實世界中的模型服務 233
9.3.1 為錯誤做好準備 233
9.3.2 處理錯誤 234
9.3.3 做好準備,應對變化 236
9.3.4 做好準備,應對人性 237
9.4 模型監(jiān)測 238
9.4.1 什么會出問題 238
9.4.2 監(jiān)測的內容和方法 239
9.4.3 記錄什么日志 241
9.4.4 監(jiān)測濫用情況 242
9.5 模型維護 243
9.5.1 何時更新 243
9.5.2 如何更新 244
9.6 小結 246
第 10章 結論 249
10.1 學習收獲 249
10.2 后續(xù)閱讀 253
10.3 致謝 253