本書從機器學(xué)習(xí)的基本原理入手,以常見模型為驅(qū)動,配以精心設(shè)計的實踐案例,為大家呈現(xiàn)了機器學(xué)習(xí)理論知識和應(yīng)用方法。書中運用 Python 語言及 scikit-learn 庫實現(xiàn)了幾大常見機器學(xué)習(xí)模型的訓(xùn)練程序和預(yù)測程序,讓讀者能夠理論聯(lián)系實際,在學(xué)習(xí)、工作中應(yīng)用機器學(xué)習(xí)。
本書適合打算入門機器學(xué)習(xí)的人閱讀。
李燁,微軟算法工程師,擅長科普寫作(筆名葉蒙蒙),曾就職于易安信和太陽微系統(tǒng)公司。具有十幾年軟件開發(fā)經(jīng)驗,自2010年開始從事大數(shù)據(jù)平臺和人工智能產(chǎn)品研發(fā),在人工智能技術(shù)的應(yīng)用與產(chǎn)品開發(fā)上頗有心得。
第 一部分 緒論
第 1章 為什么要學(xué)原理和公式推導(dǎo) 2
1.1 學(xué)模型就要學(xué)公式推導(dǎo)嗎 2
1.2 學(xué)習(xí)原理的必要性 3
第 2章 學(xué)習(xí)機器學(xué)習(xí)原理,改變看待世界的方式 6
2.1 破除迷信 6
2.2 追本溯源 7
2.3 精進看待世界的方法 8
第3章 如何學(xué)習(xí)機器學(xué)習(xí) 10
3.1 以模型為驅(qū)動,了解機器學(xué)習(xí)的本質(zhì) 10
3.2 反復(fù)學(xué)習(xí),從記憶到掌握 10
3.3 數(shù)學(xué)需要多精深 11
3.4 基本的數(shù)學(xué)概念 12
3.5 學(xué)機器學(xué)習(xí),編程是必須的嗎 13
3.6 日常學(xué)習(xí)小提示 14
第二部分 基本原理
第4章 機器是如何學(xué)習(xí)的 16
4.1 機器學(xué)習(xí)的基本原理 17
4.2 有監(jiān)督學(xué)習(xí)與無監(jiān)督學(xué)習(xí) 18
4.2.1 有監(jiān)督學(xué)習(xí) 19
4.2.2 無監(jiān)督學(xué)習(xí) 19
4.3 機器學(xué)習(xí)的三要素:數(shù)據(jù)、模型和算法 20
4.3.1 數(shù)據(jù) 20
4.3.2 模型 22
4.3.3 算法 24
第5章 模型的獲取和改進 26
5.1 獲取模型的過程 26
5.2 訓(xùn)練集、驗證集和測試集 27
5.3 訓(xùn)練的過程 27
第6章 模型的質(zhì)量和評價指標 30
6.1 分類模型評價指標:精確率、召回率和F1分數(shù) 30
6.2 指標對應(yīng)的是模型和數(shù)據(jù)集 31
6.3 模型的偏差和過擬合 32
第7章 常用的優(yōu)化算法梯度下降法 34
7.1 學(xué)習(xí)目標 34
7.2 凸函數(shù) 35
7.3 梯度下降法 37
7.4 梯度下降法的超參數(shù) 38
7.5 梯度下降的難點 39
第三部分 有監(jiān)督學(xué)習(xí)(基礎(chǔ))
第8章 線性回歸 42
8.1 第 一個機器學(xué)習(xí)模型 42
8.1.1 從數(shù)據(jù)反推公式 42
8.1.2 綜合利用訓(xùn)練數(shù)據(jù),擬合線性回歸函數(shù) 44
8.1.3 線性回歸的目標函數(shù) 44
8.1.4 線性=直線? 45
8.1.5 用線性回歸模型擬合非線性關(guān)系 46
8.2 梯度下降法求解目標函數(shù) 47
8.2.1 確定目標函數(shù)的凸性 48
8.2.2 斜率、導(dǎo)數(shù)和偏微分 49
8.2.3 使用梯度下降法求解目標函數(shù) 51
8.2.4 通用線性回歸模型的目標函數(shù)求解 52
8.2.5 線性回歸的超參數(shù) 54
8.3 編寫線性回歸訓(xùn)練/預(yù)測程序 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 條件概率的參數(shù) 66
9.4.1 兩個學(xué)派 67
9.4.2 極大似然估計法 69
9.4.3 正態(tài)分布的極大似然估計 70
9.4.4 用代碼實現(xiàn)樸素貝葉斯模型 72
第 10章 邏輯回歸 74
10.1 非線性邏輯回歸函數(shù)的由來 75
10.1.1 指數(shù)增長 75
10.1.2 邏輯函數(shù) 76
10.1.3 追本溯源的理論學(xué)習(xí) 79
10.1.4 線性與非線性 80
10.2 用來做分類的回歸模型 81
10.2.1 邏輯回歸的模型函數(shù) 81
10.2.2 邏輯回歸的目標函數(shù) 82
10.3 實例及代碼實現(xiàn) 85
10.4 處理多分類問題 88
第 11章 決策樹 91
11.1 什么是決策樹 91
11.1.1 直觀理解決策樹 91
11.1.2 構(gòu)建決策樹 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 訓(xùn)練數(shù)據(jù) 98
11.3.2 特征選取 98
11.3.3 用ID3算法構(gòu)造分類樹 100
11.3.4 后剪枝優(yōu)化決策樹 103
11.3.5 用決策樹對餐館進行分類 104
第四部分 有監(jiān)督學(xué)習(xí)(進階)
第 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 可視化函數(shù)及其約束條件 116
12.3.2 拉格朗日乘子法 118
12.4 對偶學(xué)習(xí)算法 124
12.4.1 對偶問題 124
12.4.2 強對偶性及求解對偶問題 126
12.4.3 通過對偶問題求解主問題 126
12.5 求解線性可分SVM 的目標函數(shù) 127
12.5.1 目標函數(shù) 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 和核函數(shù) 142
12.7.1 非線性分類問題 142
12.7.2 非線性SVM 144
12.7.3 核函數(shù) 145
12.7.4 數(shù)據(jù)歸一化 149
第 13章 SVR 151
13.1 嚴格的線性回歸 151
13.2 寬容的SVR 152
13.2.1 模型函數(shù) 152
13.2.2 原理 152
13.2.3 SVR 的兩個松弛變量 153
13.3 SVR 的主問題和對偶問題 154
13.4 支持向量與求解線性模型參數(shù) 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 完全線性不可分的數(shù)據(jù) 164
14.1.4 核函數(shù)的作用 166
14.1.5 RBF 核函數(shù)的威力 169
14.1.6 其他核函數(shù) 170
14.2 SVR 實例 171
第 15章 HMM 174
15.1 一些基本概念 174
15.2 數(shù)學(xué)中的HMM 176
15.3 HMM 的3個基本問題 178
15.4 一個例子 179
15.5 HMM 3個基本問題的計算 181
15.5.1 概率計算問題 181
15.5.2 預(yù)測算法 184
15.5.3 學(xué)習(xí)算法 185
15.6 HMM實例 186
第 16章 CRF 189
16.1 概率無向圖模型 189
16.1.1 勢函數(shù)和團 190
16.1.2 Hammersley-Clifford定理 190
16.1.3 性質(zhì) 190
16.2 CRF 192
16.3 線性鏈CRF 193
16.3.1 線性鏈CRF的形式化表示 195
16.3.2 線型鏈CRF的3個基本問題 197
第五部分 無監(jiān)督學(xué)習(xí)
第 17章 從有監(jiān)督到無監(jiān)督:由KNN引出K-means 202
17.1 發(fā)展趨勢 204
17.2 KNN算法 205
17.2.1 KNN算法原理 205
17.2.2 有監(jiān)督學(xué)習(xí)算法KNN與無監(jiān)督學(xué)習(xí)算法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章 譜聚類無須指定簇數(shù)量的聚類 217
19.1 算法實現(xiàn) 217
19.2 算法原理 219
19.3 實例 224
第 20章 EM算法估計含有隱變量的概率模型的參數(shù) 226
20.1 含有隱變量的概率模型 226
20.2 EM算法基本思想 227
20.2.1 近似極大化 227
20.2.2 真正的目標 229
20.3 EM算法的推導(dǎo)過程 230
20.3.1 優(yōu)化目標 230
20.3.2 應(yīng)用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 學(xué)習(xí)概率密度函數(shù)參數(shù) 239
21.1.5 同分布的混合模型 241
21.2 用EM算法求解GMM 242
21.2.1 高斯分布 242
21.2.2 GMM 246
21.2.3 用EM算法學(xué)習(xí)GMM的參數(shù) 248
21.2.4 GMM實例 250
第 22章 PCA 253
22.1 利用數(shù)學(xué)工具提取主要特征 253
22.1.1 泛濫成災(zāi)的特征維度 253
22.1.2 降低數(shù)據(jù)維度 255
22.1.3 PCA的原則 256
22.1.4 PCA的優(yōu)化目標 257
22.2 用SVD實現(xiàn)PCA 262
22.2.1 PCA優(yōu)化算法 262
22.2.2 PCA的作用 263
22.2.3 SVD 264
22.2.4 用SVD實現(xiàn)PCA 266
22.2.5 直接用SVD降維 266
22.2.6 SVD&PCA實例 267
第六部分 機器學(xué)習(xí)應(yīng)用
第 23章 認識聊天機器人 272
23.1 聊天機器人的基本類型 272
23.2 世界上第 一款聊天機器人 273
23.3 聊天機器人簡史 274
23.4 聊天機器人的實現(xiàn)技術(shù) 276
第 24章 開發(fā)一款問題解決型機器人 278
24.1 回答問題的基礎(chǔ)三步 278
24.2 多輪對話的上下文管理 278
24.3 分層結(jié)構(gòu) 279
24.4 極簡版系統(tǒng)架構(gòu) 280
24.5 開發(fā)流程 283
第 25章 聊天機器人的語言理解 285
25.1 收集語料 286
25.2 標注數(shù)據(jù) 286
25.3 劃分數(shù)據(jù)集 287
25.4 構(gòu)建向量空間模型 288
25.5 訓(xùn)練模型 290
25.6 測試模型 292
第 26章 應(yīng)用聚類模型獲得聊天機器人語料 293
26.1 從用戶日志中挖掘訓(xùn)練語料 293
26.2 語料對標注的影響 294
26.3 分析用戶日志 294
26.4 對用戶日志語料進行聚類 295
第七部分 從機器學(xué)習(xí)到深度學(xué)習(xí)
第 27章 人工智能和神經(jīng)網(wǎng)絡(luò) 298
27.1 人工智能、機器學(xué)習(xí)和深度學(xué)習(xí) 298
27.2 什么是神經(jīng)網(wǎng)絡(luò) 300
27.3 神經(jīng)網(wǎng)絡(luò)的訓(xùn)練 302
第 28章 深度學(xué)習(xí)的興起和發(fā)展 305
28.1 神經(jīng)網(wǎng)絡(luò)的歷史沿革 305
28.2 認識深度學(xué)習(xí) 307
28.3 不同種類的深度學(xué)習(xí)網(wǎng)絡(luò) 307
28.3.1 CNN 307
28.3.2 RNN 309
28.3.3 LSTM 310
第 29章 深度學(xué)習(xí)的愿景、問題和應(yīng)用 313
29.1 深度學(xué)習(xí)的愿景 313
29.2 深度學(xué)習(xí)的現(xiàn)實 314
29.3 機器學(xué)習(xí)與深度學(xué)習(xí) 314
29.4 深度學(xué)習(xí)的落地點 315
29.4.1 語音處理 315
29.4.2 圖像處理 316
29.4.3 自然語言處理 317
29.5 深度學(xué)習(xí)的局限 317