描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302660927
目前,关于集成学习著作比较少,主要是周志华教授团队编写的EnsembleMethods Foundations and Algorithms。不过,该书的出版时间较早(2012年出版英文,2020年出版了中文译著),未涉及近10年来集成学习的前沿理论和技术;另外该书主要偏向前沿理论,缺少算法实现和案例配套。
《集成学习实战》的引进可谓恰逢其时,填补了集成学习领域著作方面的不足。本书图文并茂地对深奥的集成学习理论和方法进行描述,并结合大量的案例和应用程序,引导读者边思考边实践,从而逐步加深对集成学习的理解,并将这些新方法、新理论和新思想用于自己的研究。本书梳理了集成学习近20年来的前沿理论和技术,主要从集成学习基础知识、集成方式和集成学习数据集制作、特征提取和可解释性三个方面进行了专题讨论,还讨论集成学习理论以及与概率机器学习和深度学习的结合策略。本书包含大量的图、案例以及Python代码实现,读者可以一边阅读一边动手实践。本书面向计算机、人工智能和大数据专业的高年级本科生和研究生,也面向对机器学习与集成学习感兴趣的研究人员和企业工程师。
集成学习通过自动对比多个模型的输出,将输出结合起来,融合成强大的集成模型,得出最优结果。集成学习发挥“集体智慧”,结果更准确,克服了单一模型的局限性。这种创新方法能够综合多个视角的响应;即使在没有大规模数据集的情况下,也能给出可靠的预测结果。
《集成学习实战》呈现同时应用多种机器学习方法的实用技巧。每章都列举一个独特案例(如医学诊断、情感分析等),展示一个功能完备的集成方法。本书不探讨深奥的数学知识,所讲内容浅显易懂,代码丰富,供你轻松进行实验!
主要内容
● Bagging法、提升法和梯度提升法
● 分类、回归和检索方法
● 集成方法的模型和决策可解释性
● 特征工程和集成多样性
第I部分 集成学习基础知识
第1章 集成方法:炒作还是福音· 3
1.1 集成方法:集体智慧 4
1.2 关注集成学习原因 6
1.3 单个模型中的拟合度与复杂性 8
1.3.1 决策树回归 8
1.3.2 支持向量回归 12
1.4 第一个集成模型 15
1.5 集成方法的术语和分类 19
1.6 小结 21
第II部分 基本集成方法
第2章 同质并行集成:Bagging法和随机森林 25
2.1 并行集成 26
2.2 Bagging法:Bootstrap结合算法 27
2.2.1 直觉:重采样和模型结合 28
2.2.2 实现Bagging法 31
2.2.3 使用scikit-learn实现Bagging法 33
2.2.4 使用并行化进行更快的训练 35
2.3 随机森林 36
2.3.1 随机决策树 36
2.3.2 使用scikit-learn实现随机森林 38
2.3.3 特征重要性 39
2.4 更多同质并行集成· 40
2.4.1 Pasting 40
2.4.2 随机子空间和random patch法 41
2.4.3 极度随机树 42
2.5 案例研究:乳腺癌诊断 43
2.5.1 加载和预处理 43
2.5.2 Bagging法、随机森林和极度随机树 44
2.5.3 随机森林中的特征重要性 47
2.6 小结 50
第3章 异质并行集成:结合强学习器 53
3.1 异质集成的基础估计器 54
3.1.1 拟合基础估计器 55
3.1.2 基础估计器的单个预测 58
3.2 通过加权结合预测 60
3.2.1 多数投票 62
3.2.2 准确率加权 63
3.2.3 熵加权法 65
3.2.4 Dempster-Shafer结合 67
3.3 通过元学习结合预测 69
3.3.1 Stacking 70
3.3.2 通过交叉验证进行Stacking 74
3.4 案例研究:情感分析 77
3.4.1 预处理 78
3.4.2 降低维度 81
3.4.3 blending分类器 82
3.5 小结 85
第4章 顺序集成:自适应提升 87
4.1 弱学习器的顺序集成 88
4.2 AdaBoost:自适应提升 90
4.2.1 直觉法:使用加权样本进行学习 90
4.2.2 实现AdaBoost 93
4.2.3 使用scikit-learn的AdaBoost 99
4.3 AdaBoost在实践中的应用 101
4.3.1 学习率· 102
4.3.2 早停和剪枝 104
4.4 案例研究:手写数字分类 106
4.4.1 利用 t-SNE降维 107
4.4.2 提升 109
4.5 LogitBoost:使用逻辑损失进行提升 112
4.5.1 逻辑损失函数与指数损失函数 112
4.5.2 将回归作为分类的弱学习算法 113
4.5.3 实现LogitBoost 113
4.6 小结 116
第5章 顺序集成:梯度提升 117
5.1 用梯度下降实现最小化 118
5.1.1 举例说明梯度下降 119
5.1.2 在损失函数上进行梯度下降训练 125
5.2 梯度提升:梯度下降 提升 128
5.2.1 直觉:使用残差学习 128
5.2.2 实现梯度提升 132
5.2.3 使用scikit-learn进行梯度提升 136
5.2.4 基于直方图的梯度提升 138
5.3 LightGBM:梯度提升框架 140
5.3.1 为何将LightGBM称为“轻量级” 140
5.3.2 利用LightGBM进行梯度提升 142
5.4 LightGBM在实践中的应用 143
5.4.1 学习率 143
5.4.2 早停 146
5.4.3 自定义损失函数 148
5.5 案例研究:文档检索 151
5.5.1 LETOR数据集 151
5.5.2 使用LightGBM进行文档检索 153
5.6 小结 156
第6章 顺序集成:牛顿提升 157
6.1 最小化牛顿法 158
6.1.1 举例说明牛顿法 160
6.1.2 训练过程中的损失函数的牛顿下降· 165
6.2 牛顿提升:牛顿法 Boosting 167
6.2.1 直觉:使用加权残差进行学习 167
6.2.2 直觉:使用正则化损失函数进行学习 170
6.2.3 实现牛顿提升 173
6.3 XGBoost:牛顿提升框架 177
6.3.1 XGBoost的“极端”之处在哪里? 178
6.3.2 XGBoost的牛顿提升 179
6.4 XGBoost实践 181
6.4.1 学习率 181
6.4.2 早停 184
6.5 案例研究:文档检索 185
6.5.1 LETOR数据集 185
6.5.2 使用XGBoost进行文档检索 186
6.6 小结 188
第III部分 集成之外:将集成方法应用于你的数据
第7章 学习连续和计数标签 193
7.1 回归的简要回顾 194
7.1.1 连续标签的线性回归 194
7.1.2 用于计数标签的泊松回归 200
7.1.3 用于分类标签的逻辑回归 203
7.1.4 广义线性模型 204
7.1.5 非线性回归 205
7.2 回归的并行集成 208
7.2.1 随机森林和极度随机树 209
7.2.2 结合回归模型 212
7.2.3 Stacking回归模型 213
7.3 用于回归的顺序集成 214
7.3.1 用于回归的损失和似然函数 216
7.3.2 LightGBM和XGBoost的梯度提升 218
7.4 案例研究:需求预测 221
7.4.1 UCI自行车共享数据集 222
7.4.2 GLM和Stacking· 224
7.4.3 随机森林和极度随机树 227
7.4.4 XGBoost和LightGBM 228
7.5 小结 231
第8章 学习分类特征 233
8.1 编码分类特征 234
8.1.1 分类特征的类型 235
8.1.2 有序编码和独热编码 235
8.1.3 使用目标统计信息进行编码 238
8.1.4 类别编码器包 244
8.2 CatBoost:有序提升框架 247
8.2.1 有序目标统计和有序提升 247
8.2.2 无意识决策树 249
8.2.3 CatBoost实践 250
8.3 案例研究:收入预测 253
8.3.1 adult数据集 254
8.3.2 创建预处理和建模流程 256
8.3.3 类别编码和集成 259
8.3.4 有序编码和CatBoost提升 261
8.4 编码高基数字符串特征 263
8.5 小结 267
第9章 集成学习可解释性 269
9.1 可解释性的含义 270
9.1.1 黑盒与白盒模型 270
9.1.2 决策树(和决策规则) 273
9.1.3 广义线性模型 276
9.2 案例研究:数据驱动的营销 278
9.2.1 银行营销数据集 279
9.2.2 训练集成 281
9.2.3 树集成中的特征重要性 282
9.3 全局可解释性的黑盒方法 283
9.3.1 排列特征重要性 284
9.3.2 部分依赖图 286
9.3.3 全局代理模型· 289
9.4 适用于局部可解释性的黑盒方法 292
9.4.1 借助LIME的局部代理模型 292
9.4.2 借助SHAP的局部可解释性 296
9.5 白盒集成:训练解释性 302
9.5.1 可解释性提升机 303
9.5.2 EBM实践 306
9.6 小结 309
结语 311
曾几何时,我还是一名研究生,仿佛在茫茫大海中漂泊,船上没有舵手,研究方向不尽如人意,前途未卜。后来,我偶然看到了一篇题为“支持向量机:是炒作还是福音?”的文章。彼时是21世纪初,支持向量机(Support Vector Machine,SVM)无疑是当时最重要的机器学习技术。
在这篇文章中,作者(其中一位后来成为我的博士生导师)采用了一种相当简化的方法来解释SVM这一相当复杂的主题,将直觉和几何与理论、应用交织在一起。这篇文章给我留下了深刻印象,一下子激发了我对机器学习的热情,并使我对了解这些方法在实现中的工作原理产生了强烈的迷恋。事实上,本书第1章的标题就是向那篇文章致敬,因为它对我的人生产生了十分深刻的影响。
与当时的SVM一样,集成方法如今也被广泛认为是最重要的机器学习技术。但很多人没有意识到的是,在过去几十年里,一些集成方法一直被认为是最先进的:20世纪90年代的Bagging法,21世纪最初的随机森林和提升法,21世纪10年代的梯度提升法,以及21世纪20年代的XGBoost。最佳机器学习模型在不断变化,集成方法似乎确实值得炒作。
在过去10年中,我有幸花费了大量时间训练各种类型的集成模型,将它们应用于工业领域,并撰写了相关的学术研究论文。在本书中,我尽可能多地展示了这些集成方法:一些是你肯定听说过的,还有一些你应该真正了解的新方法。
本书绝不仅是一本按部就班、代码剪贴的教程(虽然你也可以这样使用它)。网络上有很多这样的优秀教程,可以让你立即开始处理数据集。相反,我在介绍每一种新方法时,都会采用一种身临其境的方式,这种方式的灵感来源于我读过的第一篇机器学习论文,在我担任研究生讲师期间,我在大学课堂上对这篇论文进行了改进。
我始终认为,要深入理解一个技术主题,就必须将其剥离、拆解,并尝试重新结合。在本书中,我也采用了同样的做法:将拆解集成方法,并重新创建它们。将对它们进行调整,看看它们是如何变化的。这样,就能看到它们的真正魅力!
希望本书能揭开这些技术和算法细节的神秘面纱,让你进入集成思维模式,无论是为你的课程项目、Kaggle竞赛还是用于生产应用。
现在是学习集成方法的最佳时机。本书涵盖的模型可分为三大类:
■ 基础集成方法——经典的、人们耳熟能详的方法,包括历史悠久的集成技术,如Bagging法、随机森林和AdaBoost等。
■ 最先进的集成方法——现代集成时代经过实践验证的强大方法,构成了许多实际生产中的预测、推荐和搜索系统的核心。
■ 新兴的集成方法——刚刚问世的最新方法,用于应对新需求和新兴优先事项,如可解释性(explainability)和解释性(interpretability)。
每章都将采用三管齐下的方法,介绍不同的集成技术。首先,你将一步步地直观了解每种集成方法的原理。其次,你将自己实现每种集成方法的基本版本,以充分理解算法的核心和关键。最后,你将学习如何实际应用鲁棒的集成库和工具。
大多数章节还提供了来自现实世界数据的案例研究,这些数据来自手写数字预测、推荐系统、情感分析、需求预测等应用领域。这些案例适当地解决了几个实际应用中的问题,包括预处理和特征工程、超参数选择、高效训练技术和有效的模型评估。
读者对象
本书面向广泛的读者群体:
■ 对使用集成方法在实际应用中获得最佳数据感兴趣的数据科学家。
■ 正在构建、评估和部署基于集成方法的生产就绪型应用程序和流程的MLOps和DataOps工程师。
■ 希望将本书作为学习资料或补充教科书的数据科学和机器学习专业的学生。
■ Kaggler和数据科学爱好者,可将本书作为学习集成方法无尽建模可能性的切入点。
本书不是机器学习和数据科学的入门读物。本书假定你已经掌握了一些机器学习的基础知识,并且至少使用过一种基本的学习技术(如决策树)。
此外,本书还假定你掌握Python的基础知识。本书中的示例、可视化和章节案例研究均使用Python和Jupyter Notebook。了解其他常用的Python软件包,如NumPy(用于数学计算)、pandas(用于数据处理)和Matplotlib(用于可视化),也是有用的,但并非必要。实际上,你可通过示例和案例研究来学习如何使用这些包。
本书结构
本书分3个部分,共9章。第Ⅰ部分是集成方法的简单介绍,第Ⅱ部分介绍并解释几种基本的集成方法,第Ⅲ部分涵盖高级主题。
第Ⅰ部分“集成学习基础知识”介绍集成方法以及为什么要学习集成方法。该部分还包含本书其余部分所涉及的集成方法的路线图。
■ 第1章讨论集成方法和基本集成术语,介绍拟合度与复杂性的权衡(或更正式的说法是偏差-方差权衡)。你将在该章构建第一个集成模型。
第Ⅱ部分“基本集成方法”涵盖几个重要的集成方法系列,其中许多被认为是“基本”集成方法,并广泛应用于实际中。在该部分的每一章中,你将学习如何从零开始实现不同的集成方法,了解它们的工作原理,并将它们应用于实际问题中。
■ 第2章开始介绍并行集成方法,确切地说,是同质并行集成。涵盖的集成方法包括Bagging法、随机森林(random forest)、Pasting、随机子空间(random subspace)、random patch法和极度随机树(Extra Tree)。
■ 第3章继续介绍更多并行集成方法,但本章的重点是异质并行集成方法。涵盖的集成方法包括通过多数投票结合基础模型、加权结合、使用Dempster-Shafer进行预测融合,以及通过Stacking进行元学习。
■ 第4章介绍另一种集成方法——顺序适应性集成,特别是将许多弱模型提升为一个强大模型的基本概念:介绍了AdaBoost和LogitBoost等集成方法。
■ 第5章以提升的基本概念为基础,介绍另一种基本的顺序集成方法——梯度提升(它将梯度下降与提升相结合)。该章将讨论如何使用scikit-learn和LightGBM训练梯度提升集成。
■ 第6章将继续探讨顺序集成方法,介绍牛顿提升(Newton boosting,是梯度提升的一种高效扩展),将牛顿下降与提升相结合。该章将讨论如何使用XGBoost训练牛顿提升集成。
第Ⅲ部分“集成之外:将集成方法应用于你的数据”将展示如何将集成方法应用于许多情况,包括具有连续值标签和计数值标签的数据集以及具有分类特征的数据集。还将讨论如何解释你的集成并说明其预测结果。
■ 第7章将介绍如何针对不同类型的回归问题和广义线性模型(训练标签为连续值或计数值)进行集成训练。内容包括线性回归、泊松回归、Γ回归和Tweedie回归的并行和顺序集成方法。
■ 第8章指出使用非数字特征(特别是分类特征)进行学习时面临的挑战,并介绍一些编码方案,有助于为这类数据训练有效的集成模型。该章还讨论两个重要的实际问题:数据泄露和预测偏移。最后,将讨论如何通过有序编码和CatBoost来解决这些问题。
■ 第9章从集成方法的角度阐述可解释人工智能这一新兴且非常重要的课题。该章介绍可解释性的概念及其重要性。还讨论几种常见的黑盒可解释方法,包括排列特征重要性、部分依赖图、代理方法、局部解释模型、Shapley值和SHapley加性解释。此外,还介绍白盒集成方法、可解释性提升机和InterpretML包。
■ 结语为旅程画上了句号,并提供更多可供进一步探索和阅读的主题。
虽然本书的大部分章节都可独立阅读,但第7~9章是在本书第Ⅱ部分的基础上编写的。
关于代码
本书中的所有代码和示例都是用Python 3编写的。代码编排在Jupyter Notebook中,可扫封底二维码下载。
本书包含许多源代码示例,这些示例既有以编号形式列出的,也有与普通文本并列的。这两种情况下,源代码的格式都是等宽字体,以使其与普通文本区分开来。许多情况下,原始源代码都经过重新格式化,添加了换行符,并重新调整了缩进,以适应书中可用的页面空间。
评论
还没有评论。