目录
第 1章 做预测的两类核心算法 1
1.1 为什么这两类算法如此有用 1
1.2 什么是惩罚线性回归方法 5
1.3 什么是集成方法 7
1.4 算法的选择 8
1.5 构建预测模型的步骤 10
1.5.1 构造一个机器学习问题 12
1.5.2 特征提取和特征工程 13
1.5.3 确定训练好的模型的性能 14
1.6 各章内容及其依赖关系 14
1.7 小结 16
第 2章 通过理解数据来了解问题 17
2.1 剖析一个新问题 17
2.1.1 属性和标签的不同类型决定模型的选择 19
2.1.2 新数据集的注意事项 20
2.2 分类问题:用声呐发现未爆炸的水雷 21
2.2.1 岩石与水雷数据集的物理特性 21
2.2.2 岩石与水雷数据集的统计概要 24
2.2.3 用分位数图展示异常点 26
2.2.4 类别属性的统计特征 28
2.2.5 用Python pandas对岩石与水雷数据集进行统计分析 28
2.3 对岩石与水雷数据集属性进行可视化 31
2.3.1 用平行坐标图进行可视化 31
2.3.2 对属性和标签间关系进行可视化 33
2.3.3 用热图对属性和标签的相关性进行可视化 40
2.3.4 对岩石与水雷数据集探究过程的小结 41
2.4 以因素变量进行实数值预测:鲍鱼的年龄 41
2.4.1 回归问题的平行坐标图——鲍鱼年龄问题的属性关系可视化 47
2.4.2 将相关性热图用于回归问题——鲍鱼年龄问题的属性对相关性的可视化 50
2.5 用实数值属性进行实数值预测:评估红酒口感 52
2.6 多类别分类问题:玻璃分类 59
2.7 用PySpark理解大规模数据集 63
2.8 小结 67
第3章 构建预测模型:平衡性能、复杂度和大数据 69
3.1 基本问题:理解函数逼近 69
3.1.1 使用训练数据 70
3.1.2 评估预测模型的性能 72
3.2 影响算法选择及性能的因素——复杂度及数据 72
3.2.1 简单问题和复杂问题的比较 73
3.2.2 简单模型和复杂模型的比较 75
3.2.3 影响预测算法性能的因素 79
3.2.4 选择算法:线性或者非线性 79
3.3 评测预测模型的性能 80
3.3.1 不同类型问题的性能评测 80
3.3.2 模拟部署后模型的性能 94
3.4 模型与数据的均衡 95
3.4.1 通过权衡问题复杂度、模型复杂度和数据集规模来选择模型 96
3.4.2 使用前向逐步回归来控制过拟合 97
3.4.3 评估并理解预测模型 102
3.4.4 通过惩罚回归系数来控制过拟合——岭回归 104
3.5 在超大规模数据集上用PySpark训练惩罚回归模型 113
3.6 小结 116
第4章 惩罚线性回归 117
4.1 为什么惩罚线性回归方法如此有用 117
4.1.1 模型训练足够快 118
4.1.2 有变量的重要性信息 118
4.1.3 部署时评估足够快 118
4.1.4 性能可靠 118
4.1.5 稀疏解 119
4.1.6 问题可能需要线性模型 119
4.1.7 使用集成方法的时机 119
4.2 惩罚线性回归:对线性回归进行正则化以获得最优性能 119
训练线性模型:最小化误差等 121
4.3 求解惩罚线性回归问题 126
4.3.1 理解最小角度回归及其与前向步进回归的关系 126
4.3.2 使用Glmnet:快速且通用 136
4.4 将线性回归扩展到分类问题 141
4.4.1 用惩罚回归求解分类问题 141
4.4.2 多类别分类问题的求解 145
4.4.3 理解基扩展:用线性方法求解非线性问题 145
4.4.4 将非数值属性引入线性方法 147
4.5 小结 150
第5章 用惩罚线性回归方法构建预测模型 153
5.1 惩罚线性回归的Python包 153
5.2 多变量回归:预测红酒口感 154
5.2.1 构建并测试预测红酒口感的模型 155
5.2.2 部署前在整个数据集上进行训练 158
5.3 二元分类:用惩罚线性回归探测未爆炸水雷 165
5.4 多类别分类:犯罪现场玻璃样本分类 184
5.5 用PySpark实现线性回归和分类 187
5.6 用PySpark预测红酒口感 188
5.7 用PySpark实现逻辑斯蒂回归:岩石与水雷 193
5.8 将类别变量引入PySpark模型:预测鲍鱼年龄 198
5.9 具有元参数优化的多类别逻辑斯蒂回归 202
5.10 小结 205
第6章 集成方法 207
6.1 二元决策树 207
6.1.1 如何用二元决策树进行预测 210
6.1.2 如何训练二元决策树 210
6.1.3 决策树的训练等同于分割点的选择 213
6.1.4 二元决策树的过拟合 217
6.1.5 针对分类问题和类别特征所做的修改 220
6.2 自举汇聚:投票法 221
6.2.1 投票法如何工作 221
6.2.2 投票法小结 232
6.3 梯度提升法 232
6.3.1 梯度提升法的基本原理 232
6.3.2 获取梯度提升法的最佳性能 236
6.3.3 针对多变量问题的梯度提升法 239
6.3.4 梯度提升法小结 243
6.4 随机森林法 243
6.4.1 随机森林法:投票法加随机属性子集 246
6.4.2 影响随机森林法性能的因素 246
6.4.3 随机森林法小结 248
6.5 小结 248
第7章 用Python构建集成模型 251
7.1 用Python集成方法包求解回归问题 251
7.1.1 用梯度提升法预测红酒口感 251
7.1.2 构建随机森林模型预测红酒口感 257
7.2 将非数值属性引入Python集成模型 265
7.2.1 用Python将鲍鱼性别属性编码引入梯度提升法 265
7.2.2 用梯度提升法评估性能和编码变量的重要性 267
7.2.3 用Python将鲍鱼性别属性编码引入随机森林回归 269
7.2.4 评估性能和编码变量的重要性 272
7.3 用Python集成方法求解二元分类问题 273
7.3.1 用Python梯度提升法探测未爆炸水雷 273
7.3.2 测定梯度提升分类器的性能 276
7.3.3 用Python随机森林法探测未爆炸水雷 278
7.3.4 构建随机森林模型探测未爆炸水雷 279
7.3.5 测定随机森林分类器的性能 283
7.4 用Python集成方法求解多类别分类问题 285
7.4.1 处理类别不均衡问题 286
7.4.2 用梯度提升法对玻璃进行分类 286
7.4.3 测定梯度提升模型在玻璃分类问题上的性能 291
7.4.4 用随机森林法对玻璃进行分类 292
7.4.5 测定随机森林模型在玻璃分类问题上的性能 296
7.5 用PySpark集成方法包求解回归问题 297
7.5.1 用PySpark集成方法预测红酒口感 298
7.5.2 用PySpark集成方法预测鲍鱼年龄 303
7.5.3 用PySpark集成方法区分岩石与水雷 308
7.5.4 用PySpark集成方法识别玻璃类型 312
7.6 小结 314