機器學習極簡入門
內容描述
本書從機器學習的基本原理入手,以常見模型為驅動,配以精心設計的實踐案例,為大家呈現了機器學習理論知識和應用方法。書中運用 Python 語言及 scikit-learn 庫實現了幾大常見機器學習模型的訓練程序和預測程序,讓讀者能夠理論聯系實際,在學習、工作中應用機器學習。
本書適合打算入門機器學習的人閱讀。
目錄大綱
第 一部分 緒論
第 1章 為什麼要學原理和公式推導 2
1.1 學模型就要學公式推導嗎 2
1.2 學習原理的必要性 3
第 2章 學習機器學習原理,改變看待世界的方式 6
2.1 破除迷信 6
2.2 追本溯源 7
2.3 精進看待世界的方法 8
第3章 如何學習機器學習 10
3.1 以模型為驅動,了解機器學習的本質 10
3.2 反復學習,從記憶到掌握 10
3.3 數學需要多精深 11
3.4 基本的數學概念 12
3.5 學機器學習,編程是必須的嗎 13
3.6 日常學習小提示 14
第二部分 基本原理
第4章 機器是如何學習的 16
4.1 機器學習的基本原理 17
4.2 有監督學習與無監督學習 18
4.2.1 有監督學習 19
4.2.2 無監督學習 19
4.3 機器學習的三要素:數據、模型和算法 20
4.3.1 數據 20
4.3.2 模型 22
4.3.3 算法 24
第5章 模型的獲取和改進 26
5.1 獲取模型的過程 26
5.2 訓練集、驗證集和測試集 27
5.3 訓練的過程 27
第6章 模型的質量和評價指標 30
6.1 分類模型評價指標:精確率、召回率和F1分數 30
6.2 指標對應的是模型和數據集 31
6.3 模型的偏差和過擬合 32
第7章 最常用的優化算法——梯度下降法 34
7.1 學習目標 34
7.2 凸函數 35
7.3 梯度下降法 37
7.4 梯度下降法的超參數 38
7.5 梯度下降的難點 39
第三部分 有監督學習(基礎)
第8章 線性回歸 42
8.1 第 一個機器學習模型 42
8.1.1 從數據反推公式 42
8.1.2 綜合利用訓練數據,擬合線性回歸函數 44
8.1.3 線性回歸的目標函數 44
8.1.4 線性=直線? 45
8.1.5 用線性回歸模型擬合非線性關係 46
8.2 梯度下降法求解目標函數 47
8.2.1 確定目標函數的凸性 48
8.2.2 斜率、導數和偏微分 49
8.2.3 使用梯度下降法求解目標函數 51
8.2.4 通用線性回歸模型的目標函數求解 52
8.2.5 線性回歸的超參數 54
8.3 編寫線性回歸訓練/預測程序 55
第9章 樸素貝葉斯分類器 57
9.1 分類與回歸 57
9.2 貝葉斯定理 58
9.2.1 貝葉斯公式 58
9.2.2 常見的貝葉斯公式 59
9.3 用樸素貝葉斯算法進行分類 61
9.3.1 樸素貝葉斯算法 61
9.3.2 一款極簡單的樸素貝葉斯分類器 62
9.4 條件概率的參數 66
9.4.1 兩個學派 67
9.4.2 極大似然估計法 69
9.4.3 正態分佈的極大似然估計 70
9.4.4 用代碼實現樸素貝葉斯模型 72
第 10章 邏輯回歸 74
10.1 非線性邏輯回歸函數的由來 75
10.1.1 指數增長 75
10.1.2 邏輯函數 76
10.1.3 追本溯源的理論學習 79
10.1.4 線性與非線性 80
10.2 用來做分類的回歸模型 81
10.2.1 邏輯回歸的模型函數 81
10.2.2 邏輯回歸的目標函數 82
10.3 實例及代碼實現 85
10.4 處理多分類問題 88
第 11章 決策樹 91
11.1 什麼是決策樹 91
11.1.1 直觀理解決策樹 91
11.1.2 構建決策樹 93
11.2 幾種常用算法 93
11.2.1 ID3 93
11.2.2 C4.5 94
11.2.3 CART 96
11.3 決策樹告訴你去哪兒聚餐 98
11.3.1 訓練數據 98
11.3.2 特徵選取 98
11.3.3 用ID3算法構造分類樹 100
11.3.4 後剪枝優化決策樹 103
11.3.5 用決策樹對餐館進行分類 104
第四部分 有監督學習(進階)
第 12章 SVM 108
12.1 線性可分和超平面 108
12.1.1 二分類問題 108
12.1.2 特徵的向量空間模型 108
12.1.3 線性可分 109
12.1.4 超平面 110
12.2 線性可分SVM 111
12.3 直觀理解拉格朗日乘子法 115
12.3.1 可視化函數及其約束條件 116
12.3.2 拉格朗日乘子法 118
12.4 對偶學習算法 124
12.4.1 對偶問題 124
12.4.2 強對偶性及求解對偶問題 126
12.4.3 通過對偶問題求解主問題 126
12.5 求解線性可分SVM 的目標函數 127
12.5.1 目標函數 127
12.5.2 線性可分SVM的對偶問題 128
12.5.3 使用對偶算法求解線性可分SVM的步驟 128
12.5.4 SMO 算法 133
12.6 線性SVM,間隔由硬到軟 134
12.6.1 從線性可分SVM到線性SVM 134
12.6.2 對偶法最優化線性SVM 主問題 138
12.6.3 線性SVM 的支持向量 140
12.7 非線性SVM 和核函數 142
12.7.1 非線性分類問題 142
12.7.2 非線性SVM 144
12.7.3 核函數 145
12.7.4 數據歸一化 149
第 13章 SVR 151
13.1 嚴格的線性回歸 151
13.2 寬容的SVR 152
13.2.1 模型函數 152
13.2.2 原理 152
13.2.3 SVR 的兩個鬆弛變量 153
13.3 SVR 的主問題和對偶問題 154
13.4 支持向量與求解線性模型參數 156
13.5 SVR 的核技巧 157
第 14章 直觀認識 SVM 和 SVR 159
14.1 SVM 實例 159
14.1.1 線性可分SVM 159
14.1.2 線性SVM 162
14.1.3 完全線性不可分的數據 164
14.1.4 核函數的作用 166
14.1.5 RBF 核函數的威力 169
14.1.6 其他核函數 170
14.2 SVR 實例 171
第 15章 HMM 174
15.1 一些基本概念 174
15.2 數學中的HMM 176
15.3 HMM 的3個基本問題 178
15.4 一個例子 179
15.5 HMM 3個基本問題的計算 181
15.5.1 概率計算問題 181
15.5.2 預測算法 184
15.5.3 學習算法 185
15.6 HMM實例 186
第 16章 CRF 189
16.1 概率無向圖模型 189
16.1.1 勢函數和團 190
16.1.2 Hammersley-Clifford定理 190
16.1.3 性質 190
16.2 CRF 192
16.3 線性鏈CRF 193
16.3.1 線性鏈CRF的形式化表示 195
16.3.2 線型鏈CRF的3個基本問題 197
第五部分 無監督學習
第 17章 從有監督到無監督:由KNN引出K-means 202
17.1 發展趨勢 204
17.2 KNN算法 205
17.2.1 KNN算法原理 205
17.2.2 有監督學習算法KNN與無監督學習算法K-means 205
17.2.3 KNN的K 206
第 18章 K-means——最簡單的聚類算法 208
18.1 常用的幾種距離計算方法 208
18.2 K-means 210
18.3 實例 214
第 19章 譜聚類——無須指定簇數量的聚類 217
19.1 算法實現 217
19.2 算法原理 219
19.3 實例 224
第 20章 EM算法——估計含有隱變量的概率模型的參數 226
20.1 含有隱變量的概率模型 226
20.2 EM算法基本思想 227
20.2.1 近似極大化 227
20.2.2 真正的目標 229
20.3 EM算法的推導過程 230
20.3.1 優化目標 230
20.3.2 應用EM算法 230
20.4 EM算法步驟 233
第 21章 GMM 235
21.1 將“混”在一起的樣本各歸其源 235
21.1.1 個體與集體 235
21.1.2 已知每個簇的原始分佈 237
21.1.3 已知分佈條件下的樣本歸屬 238
21.1.4 學習概率密度函數參數 239
21.1.5 同分佈的混合模型 241
21.2 用EM算法求解GMM 242
21.2.1 高斯分佈 242
21.2.2 GMM 246
21.2.3 用EM算法學習GMM的參數 248
21.2.4 GMM實例 250
第 22章 PCA 253
22.1 利用數學工具提取主要特徵 253
22.1.1 氾濫成災的特徵維度 253
22.1.2 降低數據維度 255
22.1.3 PCA的原則 256
22.1.4 PCA的優化目標 257
22.2 用SVD實現PCA 262
22.2.1 PCA優化算法 262
22.2.2 PCA的作用 263
22.2.3 SVD 264
22.2.4 用SVD實現PCA 266
22.2.5 直接用SVD降維 266
22.2.6 SVD&PCA實例 267
第六部分 機器學習應用
第 23章 認識聊天機器人 272
23.1 聊天機器人的基本類型 272
23.2 世界上第 一款聊天機器人 273
23.3 聊天機器人簡史 274
23.4 聊天機器人的實現技術 276
第 24章 開發一款問題解決型機器人 278
24.1 回答問題的基礎三步 278
24.2 多輪對話的上下文管理 278
24.3 分層結構 279
24.4 極簡版系統架構 280
24.5 開發流程 283
第 25章 聊天機器人的語言理解 285
25.1 收集語料 286
25.2 標註數據 286
25.3 劃分數據集 287
25.4 構建向量空間模型 288
25.5 訓練模型 290
25.6 測試模型 292
第 26章 應用聚類模型獲得聊天機器人語料 293
26.1 從用戶日誌中挖掘訓練語料 293
26.2 語料對標註的影響 294
26.3 分析用戶日誌 294
26.4 對用戶日誌語料進行聚類 295
第七部分 從機器學習到深度學習
第 27章 人工智能和神經網絡 298
27.1 人工智能、機器學習和深度學習 298
27.2 什麼是神經網絡 300
27.3 神經網絡的訓練 302
第 28章 深度學習的興起和發展 305
28.1 神經網絡的歷史沿革 305
28.2 認識深度學習 307
28.3 不同種類的深度學習網絡 307
28.3.1 CNN 307
28.3.2 RNN 309
28.3.3 LSTM 310
第 29章 深度學習的願景、問題和應用 313
29.1 深度學習的願景 313
29.2 深度學習的現實 314
29.3 機器學習與深度學習 314
29.4 深度學習的落地點 315
29.4.1 語音處理 315
29.4.2 圖像處理 316
29.4.3 自然語言處理 317
29.5 深度學習的局限 317
作者介紹
李燁,微軟算法工程師,擅長科普寫作(筆名葉濛濛),曾就職於易安信和太陽微系統公司。
具有十幾年軟件開發經驗,自2010年開始從事大數據平台和人工智能產品研發,在人工智能技術的應用與產品開發上頗有心得。