
本书以通俗易懂的风格介绍了机器学习和深度学习技术,只涉及了基本的数学知识。本书由两位机器学习和深度学习领域的专家编写,书中的案例涵盖了银行、保险、电子商务、零售和医疗等多个行业。本书讲述如何在当今的智能设备和应用程序中使用机器学习和深度学习技术。本书提供了对书中涉及的数据集、代码和示例项目的下载。
l 机器学习和深度学习的概念
l 随机森林和提升方法
l Python编程与统计学基础
l 人工神经网络
l 回归与逻辑回归
l TensorFlow与Keras
l 决策树
l 深度学习超参数
l 模型选择与交叉验证
l 卷积神经网络(CNN)
l 聚类分析
l 循环神经网络(RNN)和长短期记忆网络(LSTM)
前 言
目前,市面上有关机器学习的图书主要包括两类,分别是面向学术研究的介绍机器学习理论方面的图书和代码手册类的图书。面向学术研究的机器学习理论的图书介绍了在机器学习算法中涉及的数学推导与公式,但对数据的实际应用涉及得很少。对于没有良好的统计或数学方面理论基础的读者来说,很难理解该类图书的内容。这些涉及机器学习原理的图书介绍了数据科学从业人员所面临的现实挑战,却极少谈到机器学习方面的实践。代码手册类图书主要包含代码和相关文档,缺少编码的原因和执行具体任务的逻辑方面的内容。机器学习的学术研究和它如何在工业界使用之间是有一段距离的。因此,我们需要一本书能以机器学习理论为基础并包含与其相关的在工业界的实践,而且在这些实际案例中有符合逻辑的讲解。本书的宗旨是弥补上述两类图书的空白(学术研究与工业界应用之间的空白)。
我们准备写一本让普通读者容易读懂的书。任何初学机器学习的读者都可以从本书开始学习。本书每章的内容分为三部分,第一部分通过类比、实例及可视化的方式来介绍该章涉及的内容,第二部分利用数学公式以一种学术风格来帮助加深理解,第三部分结合数据介绍真实的案例并通过编写代码来解决问题,从而更深入地理解相关概念。
本书以通俗易懂的方式编写,向普通读者解释机器学习与深度学习的概念。作为本书的作者,我们保证无论你是否有学术和编码的背景,都能从第1章学习到最后一章。有时读者可能会觉得解释这些概念用了太多的示例。这是因为本书严格遵循了Python的规则,即:
● 明了胜于晦涩
● 简洁胜于复杂
● 复杂胜于凌乱
● 间隔胜于紧凑
本书的主要内容
(1) Python基础和统计
(2) 基本的机器学习模型
(3) 高级的机器学习模型
(4) 必要的深度学习模型
在开始学习机器学习前,必须要学习Python基础知识和统计方法。本书涵盖了Python基础知识,让较少接触编程和统计学的读者与其他读者站在同一起跑线上。
本书讨论了基本的机器学习算法。基本的机器学习算法分为线性回归、逻辑回归、决策树及聚类分析算法。这些方法并不复杂,易于创建、解释及可视化。对于这些主题,本书将以理论和实践相结合的方式给你带来轻松的阅读体验。
本书深入介绍了一些高级机器学习方法,如随机森林、Boosting(提升方法)及神经网络。你将学会使用这些模型,以及深入了解这些模型中必要的超参数。你还将学习如何在工业界的实际应用中创建和验证这些模型。
本书还将介绍深度学习的概念。与讲解机器学习时使用的框架不同,在介绍深度学习时使用的框架是TensorFlow和Keras。通过在TensorFlow和Keras框架中对深度学习中概念的实践,你将学会使用CNN、RNN和LSTM等深度学习模型。
我们旨在编写一本工作手册,使你可以掌握利用Python语言实现机器学习和深度学习的技能。为了达到阅读本书的最佳效果,建议读者能在阅读本书时动手编写并运行相应的代码。
本书的主要特点
● 深入详尽地涵盖了机器学习和深度学习的概念。
● 作者是具备多年工作经验的该领域的工业界专家。
● 涵盖了原理、工业界的最佳实践,以及专业人员在综合应用这些模型时所遇到的问题。
● 书中实例来源于真实的工业界案例,如银行、保险、电子商务、医疗服务及自动驾驶。
● 即使是较少接触统计、数学和编程的读者,也很容易阅读本书。
● 利用可视化和类比的讲解方法,让复杂的概念变得简单易懂。
● 不需要参考或阅读其他资源即可学习本书的内容。
● 提供了数据集、代码及项目实例的下载链接。
完成本书学习后,你将具备的能力
● 使用Python进行数据处理。
● 使用Python中的统计方法和生成报告进行数据探索。
● 掌握线性回归和逻辑回归模型的创建和验证,并能使用这些模型进行预测。
● 掌握基于树的模型的创建和验证,如决策树和随机森林。
● 理解模型创建的实际应用,如特征工程和模型选择。
● 掌握高级机器学习算法的专业知识,如Boosting和人工神经网络方法。
● 使用TensorFlow和Keras工具编程。
● 在创建深度学习模型时处理超参数。
● 理解计算机视觉并使用CNN模型对数据分类。
● 序列模型的创建和验证,如RNN和LSTM。
目标读者
● 任何想要学习机器学习和深度学习的人
● 数据科学的爱好者和从业人员
● 具有数学或统计学背景的本科生和研究生
● 希望进入数据科学领域的报表分析师
● 希望利用机器学习和深度学习方法创建预测模型的人
● 希望利用机器学习和深度学习方法进行数据可视化的专业人员
● 计算机视觉的爱好者
● 深度学习的爱好者
● 计算机科学工程专业的学生
预备知识
● 本书是机器学习的启蒙内容。没有严格的预备知识。
● 任何具备学士学位的读者都可以阅读本书。
● 具备高中数学知识基础即可阅读本书。
● 不需要具备高级的统计知识。
● 不需要具备高级的编程知识。
书中的实例
本书涵盖了大量的实例和案例研究。具有代表性的案例如下:
● 航空旅客的案例研究——预测一家航空公司的旅客数量
● 客户流失的案例研究——基于客户的使用情况预测一个电信公司的客户流失情况
● 客服中心客户调查案例研究——预测客户对客服中心的满意度
● 金县(King County)房屋价格预测案例——基于房屋特征预测金县的房屋价格
● 皮马印第安人糖尿病案例研究——基于诊断指标预测患者患糖尿病的概率
● 银行贷款案例研究——提供贷款前预测风险客户
● 零售业顾客细分的案例研究——基于零售业公司的顾客购买行为实现顾客细分
● 交通事故预测——基于传感器数据预测致命的交通事故
● 基于美国人口普查数据的收入预测——基于人口普查数据预测高收入人群
● 通过输入带数字的图片实现图片中的数字识别
● 通过输入目标图像实现目标检测
● 根据输入的单词序列预测下一个单词
● 机器翻译——将英语翻译成目标语言
软件和硬件的准备
软件下载链接
● Anaconda:从https://www.anaconda.com/distribution/网站下载Anaconda
软件版本
● Python 3.7及以上版本
● TensorFlow 2.0及以上版本
源码和数据集的下载
源码、数据集和参考文献请扫描封底二维码下载。
更新和勘误
GitHub地址:https://github.com/venkatareddykonasani/ML_DL_py_TF_errata。
第1章 机器学习与深度学习概述 1
1.1 人工智能与机器学习的历史 2
1.2 机器学习项目的基础 3
1.3 机器学习算法与传统计算机程序 4
1.4 深度学习的工作原理 4
1.5 机器学习与深度学习的应用 5
1.5.1 日常生活中的应用 5
1.5.2 机器学习在制造业中的应用 5
1.5.3 机器人技术的应用 6
1.5.4 银行与金融领域的应用 6
1.5.5 深度学习的应用 7
1.6 本书的组织结构 7
1.7 预备知识 —— 数学基础 9
1.8 术语 9
1.9 机器学习 —— 扩展视野 10
1.9.1 人工智能发展现状 10
1.9.2 人工智能未来的影响力 11
1.9.3 与人工智能相关的伦理、社会和
法律问题 12
1.10 Python及其作为机器学习语言的
潜力 13
1.11 关于TensorFlow 13
1.12 本章小结 13
第2章 Python编程与统计学基础 15
2.1 认识Python 15
2.1.1 为什么使用Python 16
2.1.2 Python的版本 16
2.1.3 Python IDE 17
2.1.4 安装Python 18
2.2 Python编程入门 20
2.2.1 使用Spyder IDE 20
2.2.2 第一个代码示例 21
2.2.3 错误和错误信息 23
2.2.4 命名约定 24
2.2.5 使用print输出消息 25
2.3 Python中的数据类型 25
2.3.1 数值 25
2.3.2 字符串 26
2.3.3 列表 27
2.3.4 字典 28
2.4 Python中的包 30
2.4.1 NumPy 32
2.4.2 Pandas 33
2.4.3 Matplotlib 34
2.4.4 ScikitLearn 35
2.4.5 nltk 35
2.4.6 TensorFlow 35
2.5 Python中的条件语句和循环
语句 35
2.6 数据处理与使用Pandas深入
分析数据 37
2.6.1 数据导入和数据集的基本信息 38
2.6.2 子集和数据筛选器 41
2.6.3 Pandas中实用的函数 45
2.7 基本的描述性统计 47
2.7.1 平均值 48
2.7.2 中位数 49
2.7.3 方差和标准差 50
2.8 数据探索 52
2.8.1 探索数值型连续变量 53
2.8.2 探索离散变量和分类变量 61
2.8.3 探索其他类型的变量 63
2.9 本章小结 65
2.10 本章习题 65
第3章 回归与逻辑回归 67
3.1 什么是回归 67
3.2 构建回归模型 70
3.2.1 获取回归系数 70
3.2.2 回归线示例 74
3.3 R-squared 77
3.4 多元回归 80
3.5 回归中的多重共线性 83
3.5.1 什么是多重共线性 85
3.5.2 多重共线性的检测 87
3.5.3 计算VIF 88
3.6 回归中各变量的影响力 93
3.6.1 P-value 93
3.6.2 P -value的理论 96
3.7 构建多元回归模型的步骤 97
3.8 逻辑回归模型 97
3.9 构建逻辑回归模型 102
3.10 逻辑回归线的准确率 104
3.11 多元逻辑回归线 107
3.12 逻辑回归中的多重共线性 111
3.13 变量的个体影响力 113
3.14 构建逻辑回归模型的步骤 116
3.15 比较线性回归模型与逻辑
回归模型 116
3.16 本章小结 117
3.17 本章习题 118
第4章 决策树 119
4.1 什么是决策树 119
4.2 划分准则:熵和信息增益 123
4.2.1 熵:不纯度的度量 124
4.2.2 信息增益 125
4.2.3 基尼系数:与熵类似的方法 127
4.3 决策树算法 128
4.4 实例研究:基于客服中心的
数据对客户分类(细分) 132
4.4.1 研究目标和数据探索 132
4.4.2 使用Python构建模型 135
4.4.3 绘制决策树 136
4.4.4 理解树的输出 137
4.4.5 验证树的准确率 142
4.5 过拟合的问题 143
4.5.1 巨大的决策树 143
4.5.2 训练数据和测试数据 145
4.5.3 过拟合 146
4.6 决策树的剪枝 149
4.7 欠拟合的挑战 152
4.8 使用二分搜索法设置剪枝参数 152
4.9 其他剪枝参数 154
4.9.1 叶子节点的最大数量 154
4.9.2 min_samples_in_leaf_node参数 155
4.10 构建决策树模型的步骤 156
4.11 本章小结 156
4.12 本章习题 157
第5章 模型选择和交叉验证 159
5.1 构建模型的步骤 159
5.2 模型验证指标:回归 161
5.3 实例:华盛顿金县的房屋销售 162
5.3.1 研究目标和数据 162
5.3.2 构建和验证模型 165
5.4 模型验证指标:分类 167
5.4.1 混淆矩阵和准确率 167
5.4.2 不均衡分类的度量 169
5.5 权衡偏差与方差 189
5.5.1 过拟合的问题:方差 189
5.5.2 欠拟合问题:偏差 190
5.5.3 权衡偏差与方差 190
5.5.4 案例研究:皮马印第安人糖尿病
预测 192
5.6 交叉验证 195
5.6.1 交叉验证:一个示例 195
5.6.2 K-折交叉验证 197
5.6.3 训练集-验证集-留出交叉验证
方法 199
5.7 特征工程的技巧和诀窍 201
5.7.1 什么是特征工程 202
5.7.2 创建哑变量或独热编码 205
5.7.3 处理经度和纬度 214
5.7.4 处理日期类型的变量 219
5.7.5 数据转换 225
5.8 处理类的不均衡 229
5.9 本章小结 234
5.10 本章习题 234
第6章 聚类分析 235
6.1 无监督学习 235
6.1.1 聚类分析 236
6.1.2 案例研究:批发客户数据的
客户细分 237
6.2 距离的度量 241
6.2.1 欧几里得距离 242
6.2.2 距离矩阵 243
6.3 K-means聚类算法 244
6.3.1 聚类算法的步骤 245
6.3.2 K-means算法:图解 247
6.3.3 K-means聚类算法:输出 248
6.4 构建K-means聚类模型 248
6.5 聚类簇数量的选取 254
6.6 本章小结 257
6.7 本章习题 257
第7章 随机森林和Boosting 259
7.1 集成模型 259
7.1.1 群体智慧 259
7.1.2 构建集成模型的方法 261
7.2 Bagging 261
7.2.1 自助采样法 262
7.2.2 Bagging算法 262
7.3 随机森林 263
7.3.1 随机森林算法 264
7.3.2 随机森林中的超参数 265
7.4 案例研究:交通事故预测 265
7.4.1 研究背景和目标 266
7.4.2 数据探索 266
7.4.3 构建模型和验证模型 268
7.5 Boosting算法 271
7.6 AdaBoosting算法 271
7.7 Gradient Boosting算法 273
7.7.1 Gradient Boosting算法 273
7.7.2 Gradient Boosting算法在
决策树上的应用 273
7.7.3 Boosting算法中的超参数 274
7.7.4 Gradient Boosting算法的图解 275
7.8 案例研究:基于人口普查数据的
收入预测 278
7.8.1 研究背景和目标 279
7.8.2 数据探索 280
7.8.3 数据清洗和特征工程 283
7.8.4 构建模型与验证模型 286
7.9 本章小结 289
7.10 本章习题 289
第8章 人工神经网络 291
8.1 逻辑回归的网络图 291
8.2 决策边界的概念 293
8.3 多决策边界问题 299
8.4 多决策边界问题的解决方案 302
8.5 直观理解神经网络 309
8.6 神经网络算法 312
8.6.1 神经网络算法:非技术方式 313
8.6.2 神经网络算法:数学公式 315
8.6.3 神经网络算法:示例 316
8.7 梯度下降的概念 319
8.7.1 梯度下降在回归模型中的应用 320
8.7.2 学习率 321
8.7.3 梯度下降在回归模型中的编码 321
8.7.4 一题多解 323
8.8 案例研究:手写数字识别 324
8.8.1 研究背景和目标 324
8.8.2 数据 326
8.8.3 构建模型 329
8.8.4 模型预测与验证模型 334
8.9 深度神经网络 336
8.10 本章小结 337
8.11 本章习题 337
第9章 TensorFlow和Keras 339
9.1 深度神经网络 339
9.2 深度学习框架 340
9.2.1 什么是TensorFlow 341
9.2.2 计算图 341
9.2.3 Python Notebook 343
9.2.4 安装TensorFlow 348
9.3 TensorFlow中的关键术语 349
9.4 使用TensorFlow构建模型 352
9.4.1 使用TensorFlow构建回归
模型 352
9.4.2 使用TensorFlow构建逻辑回归
模型 355
9.5 Keras 357
9.5.1 什么是 Keras 357
9.5.2 使用Keras 358
9.5.3 在Keras中应用MNIST数据集的
示例 358
9.6 本章小结 361
第10章 深度学习中的超参数 363
10.1 正则化 363
10.1.1 回归模型中的正则化 364
10.1.2 L1正则化与L2正则化 368
10.1.3 在神经网络中应用正则化 368
10.1.4 L1正则化和L2正则化的
编码 375
10.1.5 在L1正则化和L2正则化中
应用数据标准化 377
10.2 随机丢弃正则化 377
10.3 早停法 381
10.4 损失函数 384
10.5 激活函数 386
10.5.1 Sigmoid函数 386
10.5.2 Tanh函数 387
10.5.3 ReLU函数 390
10.5.4 Softmax函数 393
10.5.5 激活函数的编码 393
10.6 学习率 395
10.6.1 学习率的应用示例 397
10.6.2 设置学习率的代码 401
10.6.3 动量 405
10.7 优化器 407
10.7.1 SGD—Stochastic Gradient
Descent 407
10.7.2 小批量梯度下降法(Mini-Batch
Gradient Descent) 408
10.8 本章小结 410
第11章 卷积神经网络 411
11.1 用于图像的人工神经网络 412
11.1.1 空间依赖性 412
11.1.2 ANNs中自由参数的数量 414
11.2 卷积核 414
11.2.1 卷积核的工作原理 415
11.2.2 利用卷积核执行特征检测 417
11.2.3 卷积核中的权重 422
11.3 卷积层 422
11.3.1 在Keras中使用卷积层 423
11.3.2 彩色图像的卷积核 425
11.3.3 零填充 429
11.3.4 跨步卷积(stride) 435
11.4 池化层 437
11.4.1 池化的工作原理 437
11.4.2 为什么进行池化 437
11.5 CNN模型的架构 440
11.5.1 CNN模型中的权重 441
11.5.2 CNN模型的编码 443
11.6 案例研究:从图像中识别
手势 447
11.6.1 项目背景和研究目标 447
11.6.2 数据 448
11.6.3 构建模型和验证模型 450
11.7 规划理想的CNN模型 455
11.7.1 卷积层和池化层的数量 455
11.7.2 卷积层中卷积核的数量 456
11.7.3 批量归一化(Batch
Normalization) 464
11.7.4 选择优化器 471
11.8 构建CNN模型的步骤 475
11.9 本章小结 475
11.10 本章习题 476
第12章 RNN与LSTM 477
12.1 横截面数据和序列数据 477
12.1.1 横截面数据 477
12.1.2 序列数据 477
12.2 在序列数据上构建模型 478
12.2.1 在序列数据上使用ANN
模型 478
12.2.2 在序列数据上使用CNN
模型 479
12.2.3 处理序列数据的ANN
(Sequential ANN ) 479
12.3 案例研究:单词预测 481
12.3.1 研究目标和数据 481
12.3.2 数据预处理 484
12.3.3 构建模型 487
12.3.4 预测 490
12.4 RNN模型 491
12.4.1 时间反向传播 492
12.4.2 计算参数的数量:一个
示例 494
12.4.3 构建RNN模型的示例代码 496
12.4.4 使用RNN模型预测单词 498
12.5 使用RNN模型处理长序列 501
12.5.1 案例研究: 预测组成下一个
单词的字符 501
12.5.2 梯度消失问题 511
12.6 长短期记忆模型 512
12.6.1 LSTM的控制门 513
12.6.2 直观理解LSTM 518
12.6.3 应用LSTM的案例研究 519
12.7 序列到序列模型 523
12.8 案例研究:语言翻译 529
12.8.1 研究目标和数据 529
12.8.2 数据预处理 530
12.8.3 编码和解码 532
12.8.4 构建模型 533
12.8.5 用模型做预测 534
12.9 本章小结 538
12.10 本章习题 538
第13章 参考文献(在线资源) 539
"机器学习和深度学习已经成为从业人员在人工智能时代必备的技术,被广泛应用于图像识别、自然语言理解、推荐系统、语音识别等多个领域,并取得了丰硕的成果。目前,很多高校的人工智能、软件工程、计算机应用等专业均已开设了机器学习和深度学习的课程,此外,为便于让学生掌握一些大数据的分析和可视化技术,有一些非计算机专业也开设了与机器学习相关的课程。同时,企业中的一些软件开发人员也想学习相关行业中机器学习和深度学习技术应用的真实案例,而不用过多关注机器学习和深度学习中的一些数学知识。但是,在市面上能够同时满足上述需求的参考书并不多,而《机器学习和深度学习:原理、算法、实战(使用Python和TensorFlow)》恰好是一本能满足高校学生及相关从业人员需求的机器学习和深度学习的参考书。
本书的作者是两位资深的行业专家并且拥有多年的企业培训经验,他们以案例式的编写方式由浅入深地讲解了机器学习和深度学习技术,让读者能够快速掌握机器学习和深度学习的原理及相关应用。在本书的翻译过程中,我们翻阅了大量资料,力求为读者献上-部贴近实际应用且通俗易懂的机器学习与深度学习方面的参考书。"
"Venkata Reddy Konasani 是一位数据科学领域的培训讲师。他拥有10年的数据分析和数据科学方面的经验,并且有6年培训讲师经验。他擅长构建信用风险模型,擅长营销分析及社交媒体分析。
目前,Venkata为Oracle、IBM、CTS及美国银行等公司定期举办数据科学方面的培训。他组织了逾100次关于机器学习和深度学习主题的企业培训。
Venkata是Statifer.com(数据科学在线学习公司)的联合创始人。他毕业于孟买印度理工学院,获得应用统计和信息学硕士学位,目前居住在印度的维杰亚瓦达。
Shailendra Kadre在印度的班加罗尔从事管理和信息技术顾问工作。他拥有在多个领域逾20年的工作经验,包括数字转型、机器学习、预售、信息技术项目和产品领域。他在这些领域出色地担任了许多关键的领导角色。他曾就职于多家全球性的一流公司,如惠普有限公司、塔塔咨询服务公司和马衡达信息技术有限公司等。Shailendra是 Going Corporate: A Geek’s Guide 一书的作者,也是Practical Business Analytics Using SAS: A Hands-on Guide一书的合著者。
他毕业于德里印度理工学院,获得设计工程专业硕士学位。他与妻子Meenakshi、女儿Neha和儿子Vivek在班加罗尔生活。
"