随着互联网、物联网、云计算等技术的不断发展,许多领域都产生了大量的数据。利用机器学习技术分析海量数据,可以从数据中发现隐含的、有价值的规律和模式,进而用于预测并采取相应动作。在上述背景下,本书从理论、技术和应用三个层面入手,全面讲解如何利用机器学习技术解决实际问题。 本书共分26章,内容包括机器学习解决问题流程、问题分析与建模、数据探索与准备、特征工程、模型训练与评价、模型部署与应用、回归模型、支持向量机、决策树、集成学习、K近邻算法、贝叶斯方法、聚类算法、关联规则学习、神经网络基础、正则化、深度学习中的优化、卷积神经网络、循环神经网络、自编码器、基于深度学习的语音分离方法、基于深度学习的图像去水印方法、基于LSTM的云环境工作负载预测方法、基于QoS的服务组合问题、基于强化学习的投资组合方法、基于GAN模型的大数据系统参数优化方法。 本书内容全面、示例丰富,适合机器学习初学者以及想要全面掌握机器学习技术的算法开发人员,也适合高等院校和培训机构人工智能相关专业的师生教学参考。
本书创作团队核心成员长期从事机器学习方面的理论研究和工程实践,通过项目实战,积累了大量解决问题的方法和经验,并通过本书将自己的经验整理出来,以满足广大读者希望使用机器学习来解决实际问题的需要。
近年来,随着云计算、大数据和人工智能等技术的飞速发展,机器学习逐渐成为学术界和产业界关注的热点方向。机器学习主要关注如何指导学习算法从已有的经验中进行学习,这与计算机科学领域经典的、确定性的算法设计思路完全不同,后者强调由人给出针对具体问题的、明确的计算规则。机器学习方法特别适合解决难以用规则描述其解决方案的复杂问题。随着云计算、大数据处理技术的不断完善,机器学习方法已经解决了许多的实际问题。
目前有很多介绍机器学习理论与方法的经典书籍,但调研表明,目前市场上介绍如何采用机器学习方法解决实际应用问题的书籍很少。本书创作团队核心成员自2015年起就一直从事机器学习方面的理论研究和工程实践,通过项目实战,我们遇到了很多问题,积累了大量解决问题的方法和经验,认为有必要将自己的经验和认识整理出来,以满足广大读者希望使用机器学习技术解决实际问题的需求,这也正是书名《实战机器学习》的由来。
本书读者
本书适合不同层次的读者阅读。建议读者根据自己的兴趣和目的有选择地阅读:
希望快速了解机器学习基本概念、分类和发展趋势的读者,可以重点阅读第1、2章和附录部分;
已经掌握机器学习基本概念,想系统学习各种方法和技术的读者,可以重点阅读第3章~第20章;
想利用机器学习技术解决各类实际计算问题的读者,可以重点阅读第21章~第26章。
源码下载与技术支持
本书配套的资源,请用微信扫描右边的二维码获取,可按扫描出来的页面提示把下载链接转到自己的邮箱中下载。如果学习本书过程中发现问题,请联系booksaga@163.com,邮件主题为实战机器学习。
本书作者与致谢
感谢本书创作团队核心成员曹蓉、杨瑾、陈浚豪、黄宇、宋雨菲、张晶、王方正、张政同、王一杰、陈嘉瑞、任笑、宋金秋、魏守鑫、杨大为、崔少辉、程勇志、雷世伟等同学的辛勤努力。感谢西安电子科技大学计算机科学与技术学院各位领导和老师的宝贵意见。
机器学习方面的理论材料比较丰富,而关于如何采用机器学习解决实际问题的相关资料数量非常有限,加之作者水平有限,时间紧迫,书中难免存在不当之处,恳请读者批评指正。建议和意见请发电子邮箱booksaga@163.com,邮件主题写实战机器学习。
作 者
2021年6月
鲍亮,西安电子科技大学副教授,西安电子科技大学博士。主要研究方向为软件体系结构、面向服务的计算和云计算等,主持并完成科研课题多项,发表学术论文20余篇。
崔江涛,西安电子科技大学计算机科学与技术学院教授、博士生导师。西安电子科技大学计算机学院博士。2018年入选陕西省高等学校教学名师,2020年入选陕西省特支计划领军人才。享受国务院政府特殊津贴,入选第八届教育部科学技术委员会学部委员。
李倩,西安交通大学讲师,西安交通大学博士。主要研究方向为行为金融学和组合投资等,主持并完成科研课题多项,发表学术论文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开发平台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 数据分析 23
2.2.1 描述统计分析 24
2.2.2 相关分析 24
2.2.3 回归分析 25
2.2.4 分类分析 25
2.2.5 聚类分析 26
2.3 问题建模 27
2.4 心脏病UCI数据集案例 27
2.4.1 问题描述 28
2.4.2 问题分析 28
2.4.3 数据分析 29
2.4.4 问题建模 30
2.5 本章小结 31
第3章 数据探索与准备 32
3.1 ETL技术 32
3.1.1 ETL工作方式 32
3.1.2 ETL实现模式 33
3.1.3 ETL发展历程 34
3.1.4 主流ETL工具 37
3.2 数据清洗 40
3.2.1 数据缺失处理 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 数据预处理 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 模型调优 71
5.3.1 超参数调优 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 将模型封装成可执行脚本 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 如何进行持续更新 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 函数间隔 111
8.2.2 对偶问题 112
8.2.3 软间隔SVM 113
8.2.4 KKT条件 114
8.2.5 支持向量 115
8.2.6 核函数 115
8.2.7 SMO 117
8.2.8 合页损失函数 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 基尼系数 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 贝叶斯网络 165
12.4.1 贝叶斯网络概念 166
12.4.2 贝叶斯网络学习 167
12.4.3 贝叶斯网络推理 168
12.4.4 贝叶斯网络的应用 169
12.5 贝叶斯优化 169
12.5.1 贝叶斯优化框架 170
12.5.2 概率代理模型 170
12.5.3 采集函数 172
12.5.4 贝叶斯优化的应用 173
12.6 贝叶斯优化迭代过程示例 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章 关联规则学习 188
14.1 关联规则学习概述 188
14.2 频繁项集 188
14.3 Apriori算法 189
14.4 FP-growth算法 193
14.5 本章小结 196
第15章 神经网络基础 197
15.1 神经网络概述 197
15.2 神经网络原理 198
15.2.1 神经元 198
15.2.2 损失函数 199
15.2.3 激活函数 201
15.2.4 正向传播 202
15.2.5 反向传播 203
15.3 前馈神经网络 204
15.3.1 前馈神经网络概述 204
15.3.2 MNIST数据集多分类应用 205
15.4 本章小结 206
第16章 正则化 207
16.1 正则化概述 207
16.2 数据集增强 207
16.3 提前终止 208
16.4 Dropout 208
16.5 Batch Normalization 211
16.6 本章小结 213
第17章 深度学习中的优化 214
17.1 优化技术概述 214
17.2 优化原理 215
17.2.1 标准化 215
17.2.2 梯度下降 219
17.2.3 参数初始化 221
17.3 自适应优化方法 223
17.4 参数初始化方法 224
17.5 本章小结 225
第18章 卷积神经网络 226
18.1 卷积神经网络概述 226
18.2 卷积神经网络原理 226
18.2.1 局部连接 227
18.2.2 权值共享 228
18.2.3 池化层 229
18.3 卷积神经网络的新方法 230
18.3.1 1D/2D/3D卷积 230
18.3.2 11卷积 231
18.3.3 空洞卷积 231
18.3.4 全卷积神经网络 231
18.4 卷积神经网络的应用 232
18.4.1 卷积神经网络的发展 232
18.4.2 MNIST数据集分类示例 234
18.5 本章小结 234
第19章 循环神经网络 235
19.1 循环神经网络概述 235
19.2 循环神经网络原理 236
19.2.1 展开计算图 236
19.2.2 循环神经网络 237
19.2.3 长期依赖 239
19.2.4 LSTM 240
19.2.5 GRU 241
19.2.6 双向RNN 242
19.2.7 深度循环网络 243
19.2.8 基于编码?解码的序列到序列架构 244
19.3 各种RNN的优缺点及应用场景 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 与神经网络融合的编码器 256
20.3 自编码器优缺点及应用场景 257
20.4 自编码器应用 258
20.5 本章小结 259
第21章 基于深度学习的语音分离方法 260
21.1 问题背景 260
21.2 问题定义 261
21.3 相关工作 262
21.4 VoiceFilter的实现方法 263
21.4.1 说话人编码器 264
21.4.2 声谱掩码网络 269
21.4.3 实验效果 273
21.5 本章小结 274
第22章 基于深度学习的图像去水印方法 276
22.1 图像去水印的研究背景 276
22.2 图像修复问题的定义 277
22.3 图像修复的相关工作 278
22.3.1 传统修复方法 279
22.3.2 基于深度学习的修复方法 279
22.3.3 修复效果评价指标 280
22.3.4 常用数据集 281
22.4 方法实现 282
22.4.1 基于内容编码器的生成网络模型 282
22.4.2 损失函数设计 286
22.4.3 算法步骤 288
22.4.4 实验结果展示 289
22.5 本章小结 290
第23章 基于LSTM的云环境工作负载预测方法 291
23.1 工作负载预测的研究背景 291
23.2 工作负载预测问题的定义 292
23.3 工作负载预测的相关工作 293
23.3.1 循环神经网络 293
23.3.2 门控循环单元 294
23.4 基于LSTM的工作负载预测 295
23.4.1 负载数据预处理 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 基于元启发式算法的方法 305
24.3.3 基于强化学习的方法 306
24.4 Q-learning算法 306
24.5 Q-learning算法的实现 308
24.5.1 状态集设计 308
24.5.2 动作集设计 309
24.5.3 回报函数设计 310
24.5.4 Q-learning算法步骤 310
24.5.5 实验结果展示 313
24.6 本章小结 315
第25章 基于强化学习的投资组合方法 316
25.1 投资组合问题的研究背景 316
25.2 投资组合指数增强问题的定义 319
25.2.1 符号定义 319
25.2.2 基本假设 319
25.2.3 问题描述 319
25.2.4 个股收益率和指数收益率 320
25.2.5 目标函数 320
25.2.6 约束条件 321
25.2.7 问题的完整定义 321
25.3 投资组合问题的研究方法 322
25.3.1 基于统计模型的方法 322
25.3.2 启发式算法 322
25.3.3 基于学习的算法 322
25.4 深度确定性策略梯度算法 323
25.5 投资组合问题的实现方法 326
25.5.1 数据探索与准备 326
25.5.2 模型训练与评价 328
25.5.3 实验结果及分析 333
25.6 本章小结 334
第26章 基于GAN模型的大数据系统参数优化方法 335
26.1 大数据系统参数优化的研究背景 335
26.2 大数据系统参数优化问题的定义 336
26.3 大数据系统参数优化的方法 337
26.3.1 基于模型的大数据系统参数优化方法 337
26.3.2 基于评估的大数据系统参数优化方法 338
26.3.3 基于搜索的大数据系统参数优化方法 338
26.3.4 基于学习的大数据系统参数优化方法 343
26.3.5 大数据系统参数优化问题的流程 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 数据集 377
参考文献 381