隨著互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、云計算等技術(shù)的不斷發(fā)展,許多領(lǐng)域都產(chǎn)生了大量的數(shù)據(jù)。利用機器學(xué)習(xí)技術(shù)分析海量數(shù)據(jù),可以從數(shù)據(jù)中發(fā)現(xiàn)隱含的、有價值的規(guī)律和模式,進而用于預(yù)測并采取相應(yīng)動作。在上述背景下,本書從理論、技術(shù)和應(yīng)用三個層面入手,全面講解如何利用機器學(xué)習(xí)技術(shù)解決實際問題。 本書共分26章,內(nèi)容包括機器學(xué)習(xí)解決問題流程、問題分析與建模、數(shù)據(jù)探索與準備、特征工程、模型訓(xùn)練與評價、模型部署與應(yīng)用、回歸模型、支持向量機、決策樹、集成學(xué)習(xí)、K近鄰算法、貝葉斯方法、聚類算法、關(guān)聯(lián)規(guī)則學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)基礎(chǔ)、正則化、深度學(xué)習(xí)中的優(yōu)化、卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)、自編碼器、基于深度學(xué)習(xí)的語音分離方法、基于深度學(xué)習(xí)的圖像去水印方法、基于LSTM的云環(huán)境工作負載預(yù)測方法、基于QoS的服務(wù)組合問題、基于強化學(xué)習(xí)的投資組合方法、基于GAN模型的大數(shù)據(jù)系統(tǒng)參數(shù)優(yōu)化方法。 本書內(nèi)容全面、示例豐富,適合機器學(xué)習(xí)初學(xué)者以及想要全面掌握機器學(xué)習(xí)技術(shù)的算法開發(fā)人員,也適合高等院校和培訓(xùn)機構(gòu)人工智能相關(guān)專業(yè)的師生教學(xué)參考。
本書創(chuàng)作團隊核心成員長期從事機器學(xué)習(xí)方面的理論研究和工程實踐,通過項目實戰(zhàn),積累了大量解決問題的方法和經(jīng)驗,并通過本書將自己的經(jīng)驗整理出來,以滿足廣大讀者希望使用機器學(xué)習(xí)來解決實際問題的需要。
近年來,隨著云計算、大數(shù)據(jù)和人工智能等技術(shù)的飛速發(fā)展,機器學(xué)習(xí)逐漸成為學(xué)術(shù)界和產(chǎn)業(yè)界關(guān)注的熱點方向。機器學(xué)習(xí)主要關(guān)注如何指導(dǎo)學(xué)習(xí)算法從已有的經(jīng)驗中進行學(xué)習(xí),這與計算機科學(xué)領(lǐng)域經(jīng)典的、確定性的算法設(shè)計思路完全不同,后者強調(diào)由人給出針對具體問題的、明確的計算規(guī)則。機器學(xué)習(xí)方法特別適合解決難以用規(guī)則描述其解決方案的復(fù)雜問題。隨著云計算、大數(shù)據(jù)處理技術(shù)的不斷完善,機器學(xué)習(xí)方法已經(jīng)解決了許多的實際問題。
目前有很多介紹機器學(xué)習(xí)理論與方法的經(jīng)典書籍,但調(diào)研表明,目前市場上介紹如何采用機器學(xué)習(xí)方法解決實際應(yīng)用問題的書籍很少。本書創(chuàng)作團隊核心成員自2015年起就一直從事機器學(xué)習(xí)方面的理論研究和工程實踐,通過項目實戰(zhàn),我們遇到了很多問題,積累了大量解決問題的方法和經(jīng)驗,認為有必要將自己的經(jīng)驗和認識整理出來,以滿足廣大讀者希望使用機器學(xué)習(xí)技術(shù)解決實際問題的需求,這也正是書名《實戰(zhàn)機器學(xué)習(xí)》的由來。
本書讀者
本書適合不同層次的讀者閱讀。建議讀者根據(jù)自己的興趣和目的有選擇地閱讀:
希望快速了解機器學(xué)習(xí)基本概念、分類和發(fā)展趨勢的讀者,可以重點閱讀第1、2章和附錄部分;
已經(jīng)掌握機器學(xué)習(xí)基本概念,想系統(tǒng)學(xué)習(xí)各種方法和技術(shù)的讀者,可以重點閱讀第3章~第20章;
想利用機器學(xué)習(xí)技術(shù)解決各類實際計算問題的讀者,可以重點閱讀第21章~第26章。
源碼下載與技術(shù)支持
本書配套的資源,請用微信掃描右邊的二維碼獲取,可按掃描出來的頁面提示把下載鏈接轉(zhuǎn)到自己的郵箱中下載。如果學(xué)習(xí)本書過程中發(fā)現(xiàn)問題,請聯(lián)系booksaga@163.com,郵件主題為實戰(zhàn)機器學(xué)習(xí)。
本書作者與致謝
感謝本書創(chuàng)作團隊核心成員曹蓉、楊瑾、陳浚豪、黃宇、宋雨菲、張晶、王方正、張政同、王一杰、陳嘉瑞、任笑、宋金秋、魏守鑫、楊大為、崔少輝、程勇志、雷世偉等同學(xué)的辛勤努力。感謝西安電子科技大學(xué)計算機科學(xué)與技術(shù)學(xué)院各位領(lǐng)導(dǎo)和老師的寶貴意見。
機器學(xué)習(xí)方面的理論材料比較豐富,而關(guān)于如何采用機器學(xué)習(xí)解決實際問題的相關(guān)資料數(shù)量非常有限,加之作者水平有限,時間緊迫,書中難免存在不當(dāng)之處,懇請讀者批評指正。建議和意見請發(fā)電子郵箱booksaga@163.com,郵件主題寫實戰(zhàn)機器學(xué)習(xí)。
作 者
2021年6月
鮑亮,西安電子科技大學(xué)副教授,西安電子科技大學(xué)博士。主要研究方向為軟件體系結(jié)構(gòu)、面向服務(wù)的計算和云計算等,主持并完成科研課題多項,發(fā)表學(xué)術(shù)論文20余篇。
崔江濤,西安電子科技大學(xué)計算機科學(xué)與技術(shù)學(xué)院教授、博士生導(dǎo)師。西安電子科技大學(xué)計算機學(xué)院博士。2018年入選陜西省高等學(xué)校教學(xué)名師,2020年入選陜西省特支計劃領(lǐng)軍人才。享受國務(wù)院政府特殊津貼,入選第八屆教育部科學(xué)技術(shù)委員會學(xué)部委員。
李倩,西安交通大學(xué)講師,西安交通大學(xué)博士。主要研究方向為行為金融學(xué)和組合投資等,主持并完成科研課題多項,發(fā)表學(xué)術(shù)論文10余篇。
第1章 機器學(xué)習(xí)解決問題流程 1
1.1 機器學(xué)習(xí)基礎(chǔ) 1
1.1.1 機器學(xué)習(xí)定義 1
1.1.2 機器學(xué)習(xí)流派 3
1.1.3 機器學(xué)習(xí)簡史 7
1.2 機器學(xué)習(xí)解決實際問題的流程 8
1.3 機器學(xué)習(xí)平臺介紹 10
1.3.1 阿里PAI 10
1.3.2 第四范式先知(Sage EE) 11
1.3.3 騰訊智能鈦機器學(xué)習(xí)(TI-ML) 12
1.3.4 中科院EasyML 13
1.3.5 百度機器學(xué)習(xí)BML 14
1.3.6 華為AI開發(fā)平臺ModelArts 15
1.3.7 微軟Azure機器學(xué)習(xí)服務(wù) 15
1.3.8 谷歌Cloud AutoML平臺 16
1.3.9 亞馬遜SageMaker 17
1.4 本章小結(jié) 18
第2章 問題分析與建模 19
2.1 問題分析 19
2.1.1 明確和理解問題 19
2.1.2 拆解和定位問題 21
2.2 數(shù)據(jù)分析 23
2.2.1 描述統(tǒng)計分析 24
2.2.2 相關(guān)分析 24
2.2.3 回歸分析 25
2.2.4 分類分析 25
2.2.5 聚類分析 26
2.3 問題建模 27
2.4 心臟病UCI數(shù)據(jù)集案例 27
2.4.1 問題描述 28
2.4.2 問題分析 28
2.4.3 數(shù)據(jù)分析 29
2.4.4 問題建模 30
2.5 本章小結(jié) 31
第3章 數(shù)據(jù)探索與準備 32
3.1 ETL技術(shù) 32
3.1.1 ETL工作方式 32
3.1.2 ETL實現(xiàn)模式 33
3.1.3 ETL發(fā)展歷程 34
3.1.4 主流ETL工具 37
3.2 數(shù)據(jù)清洗 40
3.2.1 數(shù)據(jù)缺失處理 40
3.2.2 異常值處理 41
3.3 采樣 42
3.3.1 拒絕采樣 42
3.3.2 重要性采樣 43
3.3.3 馬爾可夫鏈蒙特卡洛采樣 44
3.4 本章小結(jié) 46
第4章 特征工程 47
4.1 數(shù)據(jù)預(yù)處理 47
4.1.1 特征縮放 47
4.1.2 特征編碼 48
4.2 特征選擇 53
4.2.1 過濾式選擇Filter 53
4.2.2 包裹式選擇Wrapper 59
4.2.3 嵌入式選擇Embedded 61
4.3 降維 63
4.3.1 主成分分析PCA 63
4.3.2 線性判別分析 65
4.4 本章小結(jié) 66
第5章 模型訓(xùn)練與評價 67
5.1 模型選擇 67
5.1.1 基礎(chǔ)知識 67
5.1.2 模型選擇的要素 68
5.2 模型訓(xùn)練 68
5.2.1 留出法 69
5.2.2 交叉驗證法 70
5.2.3 自助法 71
5.3 模型調(diào)優(yōu) 71
5.3.1 超參數(shù)調(diào)優(yōu) 71
5.3.2 神經(jīng)架構(gòu)搜索 73
5.3.3 元學(xué)習(xí) 76
5.4 模型評價 78
5.4.1 分類問題 78
5.4.2 回歸問題 81
5.4.3 聚類問題 82
5.5 本章小結(jié) 83
第6章 模型部署與應(yīng)用 84
6.1 機器學(xué)習(xí)模型格式 84
6.1.1 scikit-learn 84
6.1.2 TensorFlow 85
6.1.3 PyTorch 86
6.2 機器學(xué)習(xí)模型部署 87
6.2.1 模型在平臺內(nèi)應(yīng)用 87
6.2.2 將模型封裝成可執(zhí)行腳本 88
6.2.3 基于容器和微服務(wù)的模型部署方式 89
6.2.4 模型部署方式對比 92
6.3 模型對外訪問接口 93
6.3.1 REST架構(gòu) 93
6.3.2 RPC架構(gòu) 94
6.3.3 gRPC架構(gòu) 95
6.3.4 模型對外接口對比 96
6.4 模型更新 96
6.4.1 如何更新模型 97
6.4.2 如何進行持續(xù)更新 97
6.5 本章小結(jié) 99
第7章 回歸模型 100
7.1 線性回歸 100
7.1.1 線性回歸原理 100
7.1.2 多項式回歸 101
7.1.3 線性回歸案例 101
7.2 正則線性模型 103
7.2.1 正則線性模型原理 103
7.2.2 L1、L2正則化對比 103
7.3 邏輯回歸 105
7.3.1 邏輯回歸原理 106
7.3.2 邏輯回歸案例 109
7.4 本章小結(jié) 109
第8章 支持向量機 110
8.1 緒論 110
8.2 支持向量機原理 111
8.2.1 函數(shù)間隔 111
8.2.2 對偶問題 112
8.2.3 軟間隔SVM 113
8.2.4 KKT條件 114
8.2.5 支持向量 115
8.2.6 核函數(shù) 115
8.2.7 SMO 117
8.2.8 合頁損失函數(shù) 117
8.3 SVR回歸方法 117
8.4 SVM預(yù)測示例 119
8.5 本章小結(jié) 120
第9章 決策樹 121
9.1 緒論 121
9.2 決策樹基本概念 121
9.2.1 特征選擇 122
9.2.2 信息增益 122
9.2.3 信息增益率 123
9.2.4 基尼系數(shù) 124
9.3 ID3算法 124
9.4 C4.5算法 125
9.4.1 決策樹生成 125
9.4.2 決策樹剪枝 126
9.5 CART算法 127
9.5.1 決策樹生成 128
9.5.2 決策樹剪枝 129
9.6 決策樹應(yīng)用 130
9.7 本章小結(jié) 130
第10章 集成學(xué)習(xí) 131
10.1 bagging與隨機森林 131
10.1.1 bagging 131
10.1.2 隨機森林 132
10.1.3 隨機森林的應(yīng)用 132
10.1.4 隨機森林的推廣 135
10.2 boosting 136
10.2.1 Adaboost 136
10.2.2 前向分步算法 142
10.2.3 三大框架 147
10.3 stacking與blending 154
10.4 本章小結(jié) 156
第11章 K近鄰算法 157
11.1 KNN算法 157
11.2 距離的表示 158
11.3 KD樹 159
11.4 KNN心臟病預(yù)測實例 160
11.5 本章小結(jié) 161
第12章 貝葉斯方法 162
12.1 貝葉斯方法概述 162
12.2 貝葉斯決策論 163
12.3 樸素貝葉斯分類器 165
12.4 貝葉斯網(wǎng)絡(luò) 165
12.4.1 貝葉斯網(wǎng)絡(luò)概念 166
12.4.2 貝葉斯網(wǎng)絡(luò)學(xué)習(xí) 167
12.4.3 貝葉斯網(wǎng)絡(luò)推理 168
12.4.4 貝葉斯網(wǎng)絡(luò)的應(yīng)用 169
12.5 貝葉斯優(yōu)化 169
12.5.1 貝葉斯優(yōu)化框架 170
12.5.2 概率代理模型 170
12.5.3 采集函數(shù) 172
12.5.4 貝葉斯優(yōu)化的應(yīng)用 173
12.6 貝葉斯優(yōu)化迭代過程示例 174
12.7 本章小結(jié) 177
第13章 聚類算法 178
13.1 聚類的評價指標 178
13.2 距離計算 179
13.3 聚類算法 180
13.3.1 基于層次的算法 180
13.3.2 基于分割的算法 181
13.3.3 基于密度的算法 185
13.4 本章小結(jié) 187
第14章 關(guān)聯(lián)規(guī)則學(xué)習(xí) 188
14.1 關(guān)聯(lián)規(guī)則學(xué)習(xí)概述 188
14.2 頻繁項集 188
14.3 Apriori算法 189
14.4 FP-growth算法 193
14.5 本章小結(jié) 196
第15章 神經(jīng)網(wǎng)絡(luò)基礎(chǔ) 197
15.1 神經(jīng)網(wǎng)絡(luò)概述 197
15.2 神經(jīng)網(wǎng)絡(luò)原理 198
15.2.1 神經(jīng)元 198
15.2.2 損失函數(shù) 199
15.2.3 激活函數(shù) 201
15.2.4 正向傳播 202
15.2.5 反向傳播 203
15.3 前饋神經(jīng)網(wǎng)絡(luò) 204
15.3.1 前饋神經(jīng)網(wǎng)絡(luò)概述 204
15.3.2 MNIST數(shù)據(jù)集多分類應(yīng)用 205
15.4 本章小結(jié) 206
第16章 正則化 207
16.1 正則化概述 207
16.2 數(shù)據(jù)集增強 207
16.3 提前終止 208
16.4 Dropout 208
16.5 Batch Normalization 211
16.6 本章小結(jié) 213
第17章 深度學(xué)習(xí)中的優(yōu)化 214
17.1 優(yōu)化技術(shù)概述 214
17.2 優(yōu)化原理 215
17.2.1 標準化 215
17.2.2 梯度下降 219
17.2.3 參數(shù)初始化 221
17.3 自適應(yīng)優(yōu)化方法 223
17.4 參數(shù)初始化方法 224
17.5 本章小結(jié) 225
第18章 卷積神經(jīng)網(wǎng)絡(luò) 226
18.1 卷積神經(jīng)網(wǎng)絡(luò)概述 226
18.2 卷積神經(jīng)網(wǎng)絡(luò)原理 226
18.2.1 局部連接 227
18.2.2 權(quán)值共享 228
18.2.3 池化層 229
18.3 卷積神經(jīng)網(wǎng)絡(luò)的新方法 230
18.3.1 1D/2D/3D卷積 230
18.3.2 11卷積 231
18.3.3 空洞卷積 231
18.3.4 全卷積神經(jīng)網(wǎng)絡(luò) 231
18.4 卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用 232
18.4.1 卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展 232
18.4.2 MNIST數(shù)據(jù)集分類示例 234
18.5 本章小結(jié) 234
第19章 循環(huán)神經(jīng)網(wǎng)絡(luò) 235
19.1 循環(huán)神經(jīng)網(wǎng)絡(luò)概述 235
19.2 循環(huán)神經(jīng)網(wǎng)絡(luò)原理 236
19.2.1 展開計算圖 236
19.2.2 循環(huán)神經(jīng)網(wǎng)絡(luò) 237
19.2.3 長期依賴 239
19.2.4 LSTM 240
19.2.5 GRU 241
19.2.6 雙向RNN 242
19.2.7 深度循環(huán)網(wǎng)絡(luò) 243
19.2.8 基于編碼?解碼的序列到序列架構(gòu) 244
19.3 各種RNN的優(yōu)缺點及應(yīng)用場景 245
19.4 時間序列預(yù)測問題示例 246
19.5 本章小結(jié) 248
第20章 自編碼器 249
20.1 緒論 249
20.2 自編碼器原理 250
20.2.1 經(jīng)典自編碼器 250
20.2.2 去噪自編碼器 251
20.2.3 稀疏自編碼器 252
20.2.4 變分自編碼器 253
20.2.5 堆疊自編碼器 254
20.2.6 與神經(jīng)網(wǎng)絡(luò)融合的編碼器 256
20.3 自編碼器優(yōu)缺點及應(yīng)用場景 257
20.4 自編碼器應(yīng)用 258
20.5 本章小結(jié) 259
第21章 基于深度學(xué)習(xí)的語音分離方法 260
21.1 問題背景 260
21.2 問題定義 261
21.3 相關(guān)工作 262
21.4 VoiceFilter的實現(xiàn)方法 263
21.4.1 說話人編碼器 264
21.4.2 聲譜掩碼網(wǎng)絡(luò) 269
21.4.3 實驗效果 273
21.5 本章小結(jié) 274
第22章 基于深度學(xué)習(xí)的圖像去水印方法 276
22.1 圖像去水印的研究背景 276
22.2 圖像修復(fù)問題的定義 277
22.3 圖像修復(fù)的相關(guān)工作 278
22.3.1 傳統(tǒng)修復(fù)方法 279
22.3.2 基于深度學(xué)習(xí)的修復(fù)方法 279
22.3.3 修復(fù)效果評價指標 280
22.3.4 常用數(shù)據(jù)集 281
22.4 方法實現(xiàn) 282
22.4.1 基于內(nèi)容編碼器的生成網(wǎng)絡(luò)模型 282
22.4.2 損失函數(shù)設(shè)計 286
22.4.3 算法步驟 288
22.4.4 實驗結(jié)果展示 289
22.5 本章小結(jié) 290
第23章 基于LSTM的云環(huán)境工作負載預(yù)測方法 291
23.1 工作負載預(yù)測的研究背景 291
23.2 工作負載預(yù)測問題的定義 292
23.3 工作負載預(yù)測的相關(guān)工作 293
23.3.1 循環(huán)神經(jīng)網(wǎng)絡(luò) 293
23.3.2 門控循環(huán)單元 294
23.4 基于LSTM的工作負載預(yù)測 295
23.4.1 負載數(shù)據(jù)預(yù)處理 295
23.4.2 LSTM預(yù)測模型 296
23.4.3 實驗結(jié)果與分析 297
23.5 本章小結(jié) 300
第24章 基于QoS的服務(wù)組合問題 301
24.1 服務(wù)組合問題的研究背景 301
24.2 半自動服務(wù)組合問題的定義 302
24.3 服務(wù)組合問題的相關(guān)工作 305
24.3.1 求解解的方法 305
24.3.2 基于元啟發(fā)式算法的方法 305
24.3.3 基于強化學(xué)習(xí)的方法 306
24.4 Q-learning算法 306
24.5 Q-learning算法的實現(xiàn) 308
24.5.1 狀態(tài)集設(shè)計 308
24.5.2 動作集設(shè)計 309
24.5.3 回報函數(shù)設(shè)計 310
24.5.4 Q-learning算法步驟 310
24.5.5 實驗結(jié)果展示 313
24.6 本章小結(jié) 315
第25章 基于強化學(xué)習(xí)的投資組合方法 316
25.1 投資組合問題的研究背景 316
25.2 投資組合指數(shù)增強問題的定義 319
25.2.1 符號定義 319
25.2.2 基本假設(shè) 319
25.2.3 問題描述 319
25.2.4 個股收益率和指數(shù)收益率 320
25.2.5 目標函數(shù) 320
25.2.6 約束條件 321
25.2.7 問題的完整定義 321
25.3 投資組合問題的研究方法 322
25.3.1 基于統(tǒng)計模型的方法 322
25.3.2 啟發(fā)式算法 322
25.3.3 基于學(xué)習(xí)的算法 322
25.4 深度確定性策略梯度算法 323
25.5 投資組合問題的實現(xiàn)方法 326
25.5.1 數(shù)據(jù)探索與準備 326
25.5.2 模型訓(xùn)練與評價 328
25.5.3 實驗結(jié)果及分析 333
25.6 本章小結(jié) 334
第26章 基于GAN模型的大數(shù)據(jù)系統(tǒng)參數(shù)優(yōu)化方法 335
26.1 大數(shù)據(jù)系統(tǒng)參數(shù)優(yōu)化的研究背景 335
26.2 大數(shù)據(jù)系統(tǒng)參數(shù)優(yōu)化問題的定義 336
26.3 大數(shù)據(jù)系統(tǒng)參數(shù)優(yōu)化的方法 337
26.3.1 基于模型的大數(shù)據(jù)系統(tǒng)參數(shù)優(yōu)化方法 337
26.3.2 基于評估的大數(shù)據(jù)系統(tǒng)參數(shù)優(yōu)化方法 338
26.3.3 基于搜索的大數(shù)據(jù)系統(tǒng)參數(shù)優(yōu)化方法 338
26.3.4 基于學(xué)習(xí)的大數(shù)據(jù)系統(tǒng)參數(shù)優(yōu)化方法 343
26.3.5 大數(shù)據(jù)系統(tǒng)參數(shù)優(yōu)化問題的流程 346
26.4 ACTGAN方法 347
26.4.1 動機 347
26.4.2 原理 348
26.4.3 具體過程 349
26.4.4 實驗結(jié)果 352
26.5 本章小結(jié) 354
26.5.1 總結(jié) 354
26.5.2 展望 354
附錄1 名詞及解釋 355
附錄2 數(shù)據(jù)集 377
參考文獻 381