第1章 绪论 1
1.1 机器学习简介 2
1.1.1 什么是机器学习 2
1.1.2 机器学习常用术语 3
1.2 Python简介 9
1.2.1 Python的优势 10
1.2.2 scikit-learn和TensorFlow 11
1.3 前期准备 13
1.3.1 训练、交叉验证与测试 13
1.3.2 简易数据预处理 14
1.4 本章小结 15
第2章 经典传统机器学习算法简介 17
2.1 朴素贝叶斯 17
2.1.1 条件独立性假设 18
2.1.2 贝叶斯思维 19
2.1.3 模型算法 20
2.1.4 实例演示 23
2.1.5 参数估计 25
2.1.6 朴素贝叶斯的改进 28
2.2 决策树 33
2.2.1 决策的方法 33
2.2.2 决策树的生成 34
2.2.3 决策树的剪枝 39
2.2.4 实例演示 40
2.2.5 决策树的三大算法 40
2.2.6 数据集的划分 45
2.2.7 决策树与回归 48
2.3 支持向量机 50
2.3.1 分离超平面与几何间隔 50
2.3.2 感知机与SVM的原始形式 58
2.3.3 梯度下降法 62
2.3.4 核技巧 70
2.3.5 实例演示 75
2.4 Logistic回归 75
2.5 本章小结 76
第3章 神经网络入门 77
3.1 神经网络的结构 78
3.2 前向传导算法 80
3.2.1 算法概述 81
3.2.2 算法内涵 83
3.2.3 激活函数 85
3.2.4 损失函数 90
3.3 反向传播算法 92
3.3.1 算法概述 92
3.3.2 损失函数的选择 94
3.4 参数的更新 98
3.4.1 Vanilla Update 99
3.4.2 Momentum Update 99
3.4.3 Nesterov Momentum Update 100
3.4.4 AdaGrad 100
3.4.5 RMSProp 101
3.4.6 Adam 101
3.5 TensorFlow模型的基本框架 101
3.5.1 TensorFlow的组成单元与基本思想 102
3.5.2 TensorFlow模型的基本元素 104
3.5.3 TensorFlow元素的整合方法 114
3.5.4 TensorFlow模型的save & load 125
3.6 朴素神经网络的实现与评估 130
3.7 本章小结 138
第4章 从传统算法走向神经网络 139
4.1 朴素贝叶斯的线性形式 139
4.2 决策树生成算法的本质 145
4.2.1 第1隐藏层→决策超平面 147
4.2.2 第2隐藏层→决策路径 148
4.2.3 输出层→叶节点 150
4.2.4 具体实现 151
4.3 模型转换的实际意义 158
4.3.1 利用Softmax来赋予概率意义 159
4.3.2 利用Tanh+Softmax来“软化”模型 160
4.3.3 通过微调来缓解“条件独立性假设” 165
4.3.4 通过微调来丰富超平面的选择 165
4.3.5 模型逆转换的可能性 171
4.4 模型转换的局限性 172
4.5 本章小结 172
第5章 神经网络进阶 174
5.1 层结构内部的额外工作 175
5.1.1 Dropout 175
5.1.2 Batch Normalization 176
5.1.3 具体实现 180
5.2 “浅”与“深”的结合 181
5.2.1 离散型特征的处理方式 181
5.2.2 Wide and Deep模型概述 183
5.2.3 Wide and Deep的具体实现 185
5.2.4 WnD的重要思想与优缺点 194
5.3 神经网络中的“决策树” 195
5.3.1 DNDF结构概述 195
5.3.2 DNDF的具体实现 199
5.3.3 DNDF的应用场景 210
5.3.4 DNDF的结构内涵 213
5.4 神经网络中的剪枝 216
5.4.1 Surgery算法概述 216
5.4.2 Surgery算法改进 218
5.4.3 软剪枝的具体实现 221
5.4.4 软剪枝的算法内涵 223
5.5 AdvancedNN的结构设计 237
5.5.1 AdvancedNN的实现补足 237
5.5.2 WnD与DNDF 239
5.5.3 DNDF与剪枝 241
5.5.4 剪枝与Dropout 242
5.5.5 没有免费的午餐 242
5.6 AdvancedNN的实际性能 243
5.7 本章小结 251
第6章 半自动化机器学习框架 253
6.1 数据的准备 254
6.1.1 数据预处理的流程 254
6.1.2 数据准备的流程 256
6.2 数据的转换 264
6.2.1 数据的数值化 264
6.2.2 冗余特征的去除 266
6.2.3 缺失值处理 269
6.2.4 连续型特征的数据预处理 272
6.2.5 特殊类型数据的处理 274
6.3 AutoBase的实现补足 277
6.4 AutoMeta的实现 281
6.5 训练过程的监控 288
6.5.1 监控训练过程的原理 288
6.5.2 监控训练的实现思路 292
6.5.3 监控训练的具体代码 293
6.6 本章小结 299
第7章 工程化机器学习框架 301
7.1 输出信息的管理 301
7.2 多次实验的管理 309
7.2.1 多次实验的框架 312
7.2.2 多次实验的初始化 314
7.2.3 多次实验中的数据划分 316
7.2.4 多次实验中的模型评估 318
7.2.5 多次实验的收尾工作 321
7.3 参数搜索的管理 321
7.3.1 参数搜索的框架 322
7.3.2 随机搜索与网格搜索 329
7.3.3 参数的选取 334
7.3.4 参数搜索的收尾工作 335
7.3.5 具体的搜索方案 335
7.4 DistAdvanced的性能 337
7.5 本章小结 344
附录A SVM的TensorFlow实现 345
附录B numba的基本应用 352
附录C 装饰器的基本应用 359
附录D 可视化 363
附录E 模型的评估指标 370
附录F 实现补足 377