隨著互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、云計算等技術的不斷發(fā)展,許多領域都產生了大量的數(shù)據(jù)。利用機器學習技術分析海量數(shù)據(jù),可以從數(shù)據(jù)中發(fā)現(xiàn)隱含的、有價值的規(guī)律和模式,進而用于預測并采取相應動作。在上述背景下,本書從理論、技術和應用三個層面入手,全面講解如何利用機器學習技術解決實際問題。 本書共分26章,內容包括機器學習解決問題流程、問題分析與建模、數(shù)據(jù)探索與準備、特征工程、模型訓練與評價、模型部署與應用、回歸模型、支持向量機、決策樹、集成學習、K近鄰算法、貝葉斯方法、聚類算法、關聯(lián)規(guī)則學習、神經網(wǎng)絡基礎、正則化、深度學習中的優(yōu)化、卷積神經網(wǎng)絡、循環(huán)神經網(wǎng)絡、自編碼器、基于深度學習的語音分離方法、基于深度學習的圖像去水印方法、基于LSTM的云環(huán)境工作負載預測方法、基于QoS的服務組合問題、基于強化學習的投資組合方法、基于GAN模型的大數(shù)據(jù)系統(tǒng)參數(shù)優(yōu)化方法。 本書內容全面、示例豐富,適合機器學習初學者以及想要全面掌握機器學習技術的算法開發(fā)人員,也適合高等院校和培訓機構人工智能相關專業(yè)的師生教學參考。
本書創(chuàng)作團隊核心成員長期從事機器學習方面的理論研究和工程實踐,通過項目實戰(zhàn),積累了大量解決問題的方法和經驗,并通過本書將自己的經驗整理出來,以滿足廣大讀者希望使用機器學習來解決實際問題的需要。
近年來,隨著云計算、大數(shù)據(jù)和人工智能等技術的飛速發(fā)展,機器學習逐漸成為學術界和產業(yè)界關注的熱點方向。機器學習主要關注如何指導學習算法從已有的經驗中進行學習,這與計算機科學領域經典的、確定性的算法設計思路完全不同,后者強調由人給出針對具體問題的、明確的計算規(guī)則。機器學習方法特別適合解決難以用規(guī)則描述其解決方案的復雜問題。隨著云計算、大數(shù)據(jù)處理技術的不斷完善,機器學習方法已經解決了許多的實際問題。
目前有很多介紹機器學習理論與方法的經典書籍,但調研表明,目前市場上介紹如何采用機器學習方法解決實際應用問題的書籍很少。本書創(chuàng)作團隊核心成員自2015年起就一直從事機器學習方面的理論研究和工程實踐,通過項目實戰(zhàn),我們遇到了很多問題,積累了大量解決問題的方法和經驗,認為有必要將自己的經驗和認識整理出來,以滿足廣大讀者希望使用機器學習技術解決實際問題的需求,這也正是書名《實戰(zhàn)機器學習》的由來。
本書讀者
本書適合不同層次的讀者閱讀。建議讀者根據(jù)自己的興趣和目的有選擇地閱讀:
希望快速了解機器學習基本概念、分類和發(fā)展趨勢的讀者,可以重點閱讀第1、2章和附錄部分;
已經掌握機器學習基本概念,想系統(tǒng)學習各種方法和技術的讀者,可以重點閱讀第3章~第20章;
想利用機器學習技術解決各類實際計算問題的讀者,可以重點閱讀第21章~第26章。
源碼下載與技術支持
本書配套的資源,請用微信掃描右邊的二維碼獲取,可按掃描出來的頁面提示把下載鏈接轉到自己的郵箱中下載。如果學習本書過程中發(fā)現(xiàn)問題,請聯(lián)系booksaga@163.com,郵件主題為實戰(zhàn)機器學習。
本書作者與致謝
感謝本書創(chuàng)作團隊核心成員曹蓉、楊瑾、陳浚豪、黃宇、宋雨菲、張晶、王方正、張政同、王一杰、陳嘉瑞、任笑、宋金秋、魏守鑫、楊大為、崔少輝、程勇志、雷世偉等同學的辛勤努力。感謝西安電子科技大學計算機科學與技術學院各位領導和老師的寶貴意見。
機器學習方面的理論材料比較豐富,而關于如何采用機器學習解決實際問題的相關資料數(shù)量非常有限,加之作者水平有限,時間緊迫,書中難免存在不當之處,懇請讀者批評指正。建議和意見請發(fā)電子郵箱booksaga@163.com,郵件主題寫實戰(zhàn)機器學習。
作 者
2021年6月
鮑亮,西安電子科技大學副教授,西安電子科技大學博士。主要研究方向為軟件體系結構、面向服務的計算和云計算等,主持并完成科研課題多項,發(fā)表學術論文20余篇。
崔江濤,西安電子科技大學計算機科學與技術學院教授、博士生導師。西安電子科技大學計算機學院博士。2018年入選陜西省高等學校教學名師,2020年入選陜西省特支計劃領軍人才。享受國務院政府特殊津貼,入選第八屆教育部科學技術委員會學部委員。
李倩,西安交通大學講師,西安交通大學博士。主要研究方向為行為金融學和組合投資等,主持并完成科研課題多項,發(fā)表學術論文10余篇。
第1章 機器學習解決問題流程 1
1.1 機器學習基礎 1
1.1.1 機器學習定義 1
1.1.2 機器學習流派 3
1.1.3 機器學習簡史 7
1.2 機器學習解決實際問題的流程 8
1.3 機器學習平臺介紹 10
1.3.1 阿里PAI 10
1.3.2 第四范式先知(Sage EE) 11
1.3.3 騰訊智能鈦機器學習(TI-ML) 12
1.3.4 中科院EasyML 13
1.3.5 百度機器學習BML 14
1.3.6 華為AI開發(fā)平臺ModelArts 15
1.3.7 微軟Azure機器學習服務 15
1.3.8 谷歌Cloud AutoML平臺 16
1.3.9 亞馬遜SageMaker 17
1.4 本章小結 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 相關分析 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 本章小結 31
第3章 數(shù)據(jù)探索與準備 32
3.1 ETL技術 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 本章小結 46
第4章 特征工程 47
4.1 數(shù)據(jù)預處理 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 本章小結 66
第5章 模型訓練與評價 67
5.1 模型選擇 67
5.1.1 基礎知識 67
5.1.2 模型選擇的要素 68
5.2 模型訓練 68
5.2.1 留出法 69
5.2.2 交叉驗證法 70
5.2.3 自助法 71
5.3 模型調優(yōu) 71
5.3.1 超參數(shù)調優(yōu) 71
5.3.2 神經架構搜索 73
5.3.3 元學習 76
5.4 模型評價 78
5.4.1 分類問題 78
5.4.2 回歸問題 81
5.4.3 聚類問題 82
5.5 本章小結 83
第6章 模型部署與應用 84
6.1 機器學習模型格式 84
6.1.1 scikit-learn 84
6.1.2 TensorFlow 85
6.1.3 PyTorch 86
6.2 機器學習模型部署 87
6.2.1 模型在平臺內應用 87
6.2.2 將模型封裝成可執(zhí)行腳本 88
6.2.3 基于容器和微服務的模型部署方式 89
6.2.4 模型部署方式對比 92
6.3 模型對外訪問接口 93
6.3.1 REST架構 93
6.3.2 RPC架構 94
6.3.3 gRPC架構 95
6.3.4 模型對外接口對比 96
6.4 模型更新 96
6.4.1 如何更新模型 97
6.4.2 如何進行持續(xù)更新 97
6.5 本章小結 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 本章小結 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預測示例 119
8.5 本章小結 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 決策樹應用 130
9.7 本章小結 130
第10章 集成學習 131
10.1 bagging與隨機森林 131
10.1.1 bagging 131
10.1.2 隨機森林 132
10.1.3 隨機森林的應用 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 本章小結 156
第11章 K近鄰算法 157
11.1 KNN算法 157
11.2 距離的表示 158
11.3 KD樹 159
11.4 KNN心臟病預測實例 160
11.5 本章小結 161
第12章 貝葉斯方法 162
12.1 貝葉斯方法概述 162
12.2 貝葉斯決策論 163
12.3 樸素貝葉斯分類器 165
12.4 貝葉斯網(wǎng)絡 165
12.4.1 貝葉斯網(wǎng)絡概念 166
12.4.2 貝葉斯網(wǎng)絡學習 167
12.4.3 貝葉斯網(wǎng)絡推理 168
12.4.4 貝葉斯網(wǎ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)化的應用 173
12.6 貝葉斯優(yōu)化迭代過程示例 174
12.7 本章小結 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 本章小結 187
第14章 關聯(lián)規(guī)則學習 188
14.1 關聯(lián)規(guī)則學習概述 188
14.2 頻繁項集 188
14.3 Apriori算法 189
14.4 FP-growth算法 193
14.5 本章小結 196
第15章 神經網(wǎng)絡基礎 197
15.1 神經網(wǎng)絡概述 197
15.2 神經網(wǎng)絡原理 198
15.2.1 神經元 198
15.2.2 損失函數(shù) 199
15.2.3 激活函數(shù) 201
15.2.4 正向傳播 202
15.2.5 反向傳播 203
15.3 前饋神經網(wǎng)絡 204
15.3.1 前饋神經網(wǎng)絡概述 204
15.3.2 MNIST數(shù)據(jù)集多分類應用 205
15.4 本章小結 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 本章小結 213
第17章 深度學習中的優(yōu)化 214
17.1 優(yōu)化技術概述 214
17.2 優(yōu)化原理 215
17.2.1 標準化 215
17.2.2 梯度下降 219
17.2.3 參數(shù)初始化 221
17.3 自適應優(yōu)化方法 223
17.4 參數(shù)初始化方法 224
17.5 本章小結 225
第18章 卷積神經網(wǎng)絡 226
18.1 卷積神經網(wǎng)絡概述 226
18.2 卷積神經網(wǎng)絡原理 226
18.2.1 局部連接 227
18.2.2 權值共享 228
18.2.3 池化層 229
18.3 卷積神經網(wǎng)絡的新方法 230
18.3.1 1D/2D/3D卷積 230
18.3.2 11卷積 231
18.3.3 空洞卷積 231
18.3.4 全卷積神經網(wǎng)絡 231
18.4 卷積神經網(wǎng)絡的應用 232
18.4.1 卷積神經網(wǎng)絡的發(fā)展 232
18.4.2 MNIST數(shù)據(jù)集分類示例 234
18.5 本章小結 234
第19章 循環(huán)神經網(wǎng)絡 235
19.1 循環(huán)神經網(wǎng)絡概述 235
19.2 循環(huán)神經網(wǎng)絡原理 236
19.2.1 展開計算圖 236
19.2.2 循環(huán)神經網(wǎng)絡 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)絡 243
19.2.8 基于編碼?解碼的序列到序列架構 244
19.3 各種RNN的優(yōu)缺點及應用場景 245
19.4 時間序列預測問題示例 246
19.5 本章小結 248
第20章 自編碼器 249
20.1 緒論 249
20.2 自編碼器原理 250
20.2.1 經典自編碼器 250
20.2.2 去噪自編碼器 251
20.2.3 稀疏自編碼器 252
20.2.4 變分自編碼器 253
20.2.5 堆疊自編碼器 254
20.2.6 與神經網(wǎng)絡融合的編碼器 256
20.3 自編碼器優(yōu)缺點及應用場景 257
20.4 自編碼器應用 258
20.5 本章小結 259
第21章 基于深度學習的語音分離方法 260
21.1 問題背景 260
21.2 問題定義 261
21.3 相關工作 262
21.4 VoiceFilter的實現(xiàn)方法 263
21.4.1 說話人編碼器 264
21.4.2 聲譜掩碼網(wǎng)絡 269
21.4.3 實驗效果 273
21.5 本章小結 274
第22章 基于深度學習的圖像去水印方法 276
22.1 圖像去水印的研究背景 276
22.2 圖像修復問題的定義 277
22.3 圖像修復的相關工作 278
22.3.1 傳統(tǒng)修復方法 279
22.3.2 基于深度學習的修復方法 279
22.3.3 修復效果評價指標 280
22.3.4 常用數(shù)據(jù)集 281
22.4 方法實現(xiàn) 282
22.4.1 基于內容編碼器的生成網(wǎng)絡模型 282
22.4.2 損失函數(shù)設計 286
22.4.3 算法步驟 288
22.4.4 實驗結果展示 289
22.5 本章小結 290
第23章 基于LSTM的云環(huán)境工作負載預測方法 291
23.1 工作負載預測的研究背景 291
23.2 工作負載預測問題的定義 292
23.3 工作負載預測的相關工作 293
23.3.1 循環(huán)神經網(wǎng)絡 293
23.3.2 門控循環(huán)單元 294
23.4 基于LSTM的工作負載預測 295
23.4.1 負載數(shù)據(jù)預處理 295
23.4.2 LSTM預測模型 296
23.4.3 實驗結果與分析 297
23.5 本章小結 300
第24章 基于QoS的服務組合問題 301
24.1 服務組合問題的研究背景 301
24.2 半自動服務組合問題的定義 302
24.3 服務組合問題的相關工作 305
24.3.1 求解解的方法 305
24.3.2 基于元啟發(fā)式算法的方法 305
24.3.3 基于強化學習的方法 306
24.4 Q-learning算法 306
24.5 Q-learning算法的實現(xiàn) 308
24.5.1 狀態(tài)集設計 308
24.5.2 動作集設計 309
24.5.3 回報函數(shù)設計 310
24.5.4 Q-learning算法步驟 310
24.5.5 實驗結果展示 313
24.6 本章小結 315
第25章 基于強化學習的投資組合方法 316
25.1 投資組合問題的研究背景 316
25.2 投資組合指數(shù)增強問題的定義 319
25.2.1 符號定義 319
25.2.2 基本假設 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 基于學習的算法 322
25.4 深度確定性策略梯度算法 323
25.5 投資組合問題的實現(xiàn)方法 326
25.5.1 數(shù)據(jù)探索與準備 326
25.5.2 模型訓練與評價 328
25.5.3 實驗結果及分析 333
25.6 本章小結 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 基于學習的大數(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 實驗結果 352
26.5 本章小結 354
26.5.1 總結 354
26.5.2 展望 354
附錄1 名詞及解釋 355
附錄2 數(shù)據(jù)集 377
參考文獻 381