新書推薦:
《
易经今解:释疑·解惑·见微
》
售價:NT$
403.0
《
东欧史(全二册)-“中间地带”的困境
》
售價:NT$
1010.0
《
虚拟资本:金融怎样挪用我们的未来
》
售價:NT$
352.0
《
刻意练习不生气
》
售價:NT$
179.0
《
大宋理财:青苗法与王安石的金融帝国(全彩插图本)
》
售價:NT$
500.0
《
安全感是内心长出的盔甲
》
售價:NT$
305.0
《
快人一步:系统性能提高之道
》
售價:NT$
505.0
《
我们为什么会做梦:让梦不再神秘的新科学
》
售價:NT$
352.0
|
編輯推薦: |
本书从机器学习基础出发,详解XGBoost模型构建和优化过程,并借助实例分析,引入XGBoost工业化应用的高级方法和技巧,实用性强,便于自学。
|
內容簡介: |
XGBoost是一种经过行业验证的开源软件库,为快速高效地处理数十亿数据点提供了梯度提升框架。首先,本书在介绍机器学习和XGBoost在scikit-learn中的应用后,逐步深入梯度提升背后的理论知识。读者将学习决策树,并分析在机器学习环境中的装袋技术,同时学习拓展到XGBoost的超参数;并将从零开始构建梯度提升模型,将梯度提升扩展到大数据领域,同时通过计时器的使用了解速度限制。接着,本书重点探讨XGBoost的细节,着重于速度提升和通过数学推导导出参数。通过详细案例研究,读者将练习使用scikit-learn及原始的Python API构建和微调XGBoost分类器与回归器;并学习如何利用XGBoost的超参数来提高评分、纠正缺失值、缩放不平衡数据集,并微调备选基学习器。最后,读者将学习应用高级XGBoost技术,如构建非相关的集成模型、堆叠模型,并使用稀疏矩阵、定制转换器和管道为行业部署准备模型。
本书适合作为高等学校计算机专业、软件工程专业的高年级本科生及研究生教材,同时适合有一定机器学习基础的数据科学家、机器学习工程师和研究人员阅读,可为解决复杂的机器学习问题提供实用指导。
|
目錄:
|
第一部分 装袋和提升
第1章 机器学习概览 2
1.1 XGBoost概览 2
1.2 数据整理 3
1.2.1 数据集1:自行车租赁数据集 3
1.2.2 理解数据 5
1.2.3 纠正空值 7
1.3 回归预测 12
1.3.1 预测自行车租赁数量 12
1.3.2 保存数据以备将来使用 12
1.3.3 声明预测列和目标列 13
1.3.4 理解回归 13
1.3.5 访问 scikit-learn 14
1.3.6 关闭警告信息 14
1.3.7 线性回归建模 14
1.3.8 XGBoost 16
1.3.9 XGBRegressor 16
1.3.10 交叉验证 17
1.4 分类预测 20
1.4.1 什么是分类? 20
1.4.2 数据集2:人口普查数据集 21
1.4.3 XGBoost分类器 26
1.5 总结 27
第2章 深入浅出决策树 28
2.1 介绍XGBoost决策树 28
2.2 探索决策树 29
2.2.1 第一个决策树模型 29
2.2.2 决策树内部结构 30
2.3 对比方差和偏差 32
2.4 调整决策树超参数 35
2.4.1 决策树回归器 35
2.4.2 一般超参数 37
2.4.3 综合微调超参数 43
2.5 实例:预测心脏病 43
2.5.1 心脏病数据集 43
2.5.2 决策树分类器 45
2.5.3 选择超参数 46
2.5.4 缩小范围 46
2.5.5 feature_importances_ 47
2.6 总结 49
第3章 随机森林与装袋法 50
3.1 装袋集成 50
3.1.1 集成方法 50
3.1.2 自助聚合 51
3.2 探索随机森林 52
3.2.1 随机森林分类器 52
3.2.2 随机森林回归器 54
3.3 随机森林超参数 55
3.3.1 oob_score 55
3.3.2 n_estimators 56
3.3.3 warm_start 57
3.3.4 自助法 58
3.3.5 冗长度 59
3.3.6 决策树超参数 59
3.4 实例:突破随机森林边界 59
3.4.1 准备数据集 60
3.4.2 n_estimators 60
3.4.3 cross_val_score 61
3.4.4 微调超参数 61
3.4.5 随机森林的缺点 65
3.5 总结 66
第4章 从梯度提升到XGBoost 67
4.1 从装袋到提升 67
4.1.1 AdaBoost简介 68
4.1.2 有所区别的梯度提升算法 68
4.2 梯度提升的工作原理 69
4.2.1 残差 69
4.2.2 学习如何从零开始构建梯度提升模型 70
4.2.3 在 scikit-learn 中构建梯度提升模型 73
4.3 修改梯度提升超参数 74
4.3.1 learning_rate 74
4.3.2 基学习器 76
4.3.3 subsample 77
4.3.4 RandomizedSearchCV 78
4.3.5 XGBoost 80
4.4 接近大数据——梯度提升与XGBoost的比较 80
4.4.1 介绍系外行星数据集 81
4.4.2 预处理系外行星数据集 82
4.4.3 构建梯度提升分类器 83
4.4.4 时间模块 83
4.4.5 比较速度 84
4.5 总结 86
第二部分 XGBoost
第5章 XGBoost揭秘 88
5.1 设计XGBoost 88
5.1.1 背景描述 88
5.1.2 设计特点 89
5.2 分析 XGBoost 参数 91
5.3 构建XGBoost模型 94
5.3.1 鸢尾花数据集 95
5.3.2 糖尿病数据集 97
5.4 案例:寻找希格斯玻色子 99
5.4.1 物理学背景 99
5.4.2 Kaggle竞赛 100
5.4.3 XGBoost和希格斯玻色子挑战赛 100
5.4.4 数据 100
5.4.5 评分 103
5.4.6 权重 104
5.4.7 模型 105
5.5 总结 107
第6章 XGBoost 超参数 108
6.1 准备数据和基础模型 108
6.1.1 心脏病数据集 108
6.1.2 XGBClassifier 110
6.1.3 StratifiedKFold 111
6.1.4 基线模型 112
6.1.5 结合 GridSearchCV 和 RandomizedSearchCV 112
6.2 优化 XGBoost 超参数 113
6.3 应用提前停止 117
6.3.1 什么是提前停止? 118
6.3.2 eval_set 和 eval_metric 118
6.3.3 early_stopping_rounds 120
6.4 组合超参数 121
6.4.1 一次一个超参数 121
6.4.2 超参数调整 124
6.5 总结 126
第7章 用XGBoost发现系外行星 127
7.1 寻找系外行星 127
7.1.1 背景描述 128
7.1.2 系外行星数据集 128
7.1.3 绘制数据图表 129
7.1.4 准备数据 132
7.1.5 初始化 XGBClassifier 133
7.2 分析混淆矩阵 134
7.2.1 confusion_matrix 134
7.2.2 classification_report 135
7.2.3 备选评分方法 137
7.3 重采样不平衡数据 139
7.3.1 重采样 139
7.3.2 欠采样 139
7.3.3 过采样 141
7.4 调整和缩放 XGBClassifier 143
7.4.1 调整权重 144
7.4.2 调整 XGBClassifier 145
7.4.3 巩固成果 151
7.4.4 分析结果 153
7.5 总结 154
第三部分 XGBoost进阶
第8章 XGBoost的备选基学习器 156
8.1 备选基学习器概览 156
8.1.1 gblinear 157
8.1.2 DART 157
8.1.3 XGBoost随机森林 158
8.2 应用 gblinear 158
8.2.1 将 gblinear 应用于糖尿病数据集 158
8.2.2 线性数据集 164
8.2.3 gblinear 分析 166
8.3 比较DART 166
8.3.1 DART与XGBRegressor 166
8.3.2 使用XGBClassifier的DART 167
8.3.3 DART超参数 168
8.3.4 修改DART超参数 170
8.3.5 DART分析 171
8.4 寻找 XGBoost 随机森林 172
8.4.1 将随机森林作为基学习器使用 172
8.4.2 作为XGBoost模型的随机森林 173
8.4.3 分析XGBoost随机森林 175
8.5 总结 175
第9章 XGBoost Kaggle 大师 176
9.1 探索Kaggle竞赛 176
9.1.1 Kaggle竞赛中的XGBoost 176
9.1.2 Kaggle竞赛的结构 177
9.1.3 保留集(hold-out set) 178
9.2 工程新列 180
9.2.1 什么是特征工程? 180
9.2.2 Uber和Lyft的数据集 180
9.3 构建非相关集成 187
9.3.1 模型范围 188
9.3.2 相关性 190
9.3.3 机器学习集成中的相关性 191
9.3.4 VotingClassifier 集成 194
9.4 堆叠模型 195
9.4.1 什么是堆叠? 195
9.4.2 scikit-learn 中的堆叠 195
9.5 总结 196
第10章 XGBoost模型部署 197
10.1 混合数据编码 197
10.1.1 加载数据 197
10.1.2 清除空值 199
10.1.3 独热编码 201
10.1.4 将一个独热编码矩阵和数值列合并 202
10.2 自定义 scikit-learn 转换器 204
10.2.1 定制转换器 204
10.2.2 预处理管道 209
10.3 完成一个 XGBoost 模型 210
10.3.1 第一个 XGBoost 模型 210
10.3.2 微调 XGBoost 超参数 211
10.3.3 测试模型 215
10.4 构建机器学习管道 216
10.5 总结 218
附 录 本书相关网址 219
|
內容試閱:
|
各章主要内容
第1章“机器学习概览”在机器学习的总体背景下,在与XGBoost比较结果之前,通过介绍线性回归和逻辑回归展示了XGBoost。同时介绍了pandas,通过将分类列转换和以多种方式清除空值来预处理原始数据。
第2章“深入浅出决策树”详细讨论了XGBoost使用的决策树超参数,并通过图形和统计分析方差和偏差,强调了过拟合的重要性,这也是本书一直涉及的主题。
第3章“随机森林与装袋法”对随机森林和XGBoost进行了一般性的分析比较,着重探讨了装袋方法。另外,还详细介绍了与随机森林共享的额外XGBoost超参数,例如n_estimators和subsample。
第4章“从梯度提升到XGBoost”介绍了提升算法的基础知识,使用scikit-learn从零开始构建一个提升模型,并调整新的XGBoost超参数(如eta),同时比较梯度提升和XGBoost的运行时间,突出XGBoost的惊人速度。
第5章“XGBoost揭秘”分析了XGBoost算法的数学推导过程,介绍了一个历史相关的案例研究,其中,作为赢得希格斯玻色子Kaggle比赛的模型,XGBoost扮演了重要角色。本章讨论了标准XGBoost参数,生成了基本模型,并介绍了原始的Python API。
第6章“XGBoost超参数”介绍了所有必要的XGBoost超参数,总结了之前树集成的超参数,并使用原始的网格搜索功能来微调XGBoost模型以优化模型评分。
第7章“用XGBoost发现系外行星”提供了一个完整的实例,尝试使用XGBoost发现系外行星。利用混淆矩阵和分类报告分析不平衡数据集的缺陷,涉及不同的评分指标和重要的XGBoost超参数scale_pos_weight。
第8章“XGBoost的备选基学习器”,介绍了全系列的XGBoost提升器,包括用于回归和分类的gbtree、DART和gblinear。同时还介绍了被作为基学习器的随机森林,以及作为 XGBoost 备选模型的新类XGBRFRegressor和 XGBRFClassifier。
第9章“XGBoost Kaggle 大师”介绍了 XGBoost Kaggle竞赛的获胜者所使用的技巧,包括高级特征工程、构建非相关的机器集成,以及堆叠技术等。
第10章“XGBoost模型部署”,通过使用定制的转换器来处理混合数据和机器学习管道,在精调XGBoost模型的基础上,将原始数据转换成XGBoost机器学习预测结果,用于对传入的数据进行预测。
如何充分利用本书
读者应该熟练掌握Python中的切片列表、编写自定义函数以及使用点操作符等知识,还应具有矩阵中访问行列的线性代数的一般知识。若了解pandas和机器学习,无疑会更好,但不是必需的,因为所有的代码和概念都会随着学习进程不断加以解释。
本书使用了Anaconda发行版中的Jupyter Notebook及最新版本的Python。建议使用Anaconda,因为其中包含了所有主要的数据科学库。在开始之前,有必要更新Anaconda。下面的部分提供了详细的操作步骤,以便将您的编程环境设置得与本书相同。
建立编程环境
表0.1列举了本书所使用的主要软件。
表0.1 本书所使用的主要软件
本书所用软件 操作系统需求
Anaconda:Jupyter Notebook/sklearn 0.23 Windows、macOS X、Linux(各操作系统版本不限)
Anaconda:Python 3.7 Windows、macOS X、Linux(各操作系统版本不限)
XGBoost 1.2 Windows、macOS X、Linux(各操作系统版本不限)
下面详细介绍如何安装软件。
Anaconda
本书需要使用Jupyter Notebook、scikit-learn(sklearn)和Python等数据科学库,建议使用Anaconda安装它们。
以下是在2020年安装Anaconda的步骤:
(1)用浏览器打开Anaconda下载页面。
(2)在下载界面上单击Download按钮,如图0.1所示,这并不会立即开始下载,但会提供各种选项(见第(3)步)。
图0.1 准备下载Anaconda
(3)根据操作系统选择安装程序,如图0.2所示。推荐使用64-Bit Graphical Installer(64位图形化安装程序),这适用于Windows和macOS系统。确保选择Python 3.7中的版本,因为本书始终使用的是 3.7版本。
图0.2 Anaconda安装程序
(4)下载开始后,按照计算机上的提示继续完成安装。
Mac用户注意事项
如果您遇到You cannot install Anaconda 3 in this location(无法在此位置安装Anaconda 3)的错误,不要惊慌,只需单击突出显示的Install for me only,Continue按钮将作为一个选项出现,如图0.3所示。
图0.3 Mac用户如遇警告,只需单击Install for me only然后继续
使用Jupyter Notebook
现在已经成功安装了Anaconda,可以打开一个Jupyter Notebook来使用Python。
以下是打开Jupyter Notebook的步骤:
(1)在计算机上单击Anaconda-Navigator。
(2)单击Jupyter Notebook下的Launch按钮,如图0.4所示。
图0.4 Anaconda主界面
这将在浏览器窗口中打开一个Jupyter Notebook。虽然Jupyter Notebook出现在浏览器中会让使用更便捷,但它们实际上并非在线运行,而是在本地计算机上运行。谷歌Colab Notebook是一个可接受的在线替代方案,但本书只使用Jupyter Notebook。
(3)在 Jupyter Notebook右侧选择New→Python 3菜单项,如图0.5所示。将进入图0.6所示界面。
图0.5 Jupyter Notebook主界面
图0.6 Jupyter Notebook的内部
现在已经准备好运行Python代码。可在单元格中输入Python代码,如print (‘hello xgboost!’),然后按Shift Enter键来运行代码即可。
Jupyter Notebook故障排除
如果在运行或安装 Jupyter Notebook时遇到问题,可访问 Jupyter 官方故障排除指南。
XGBoost
在撰写本书时,XGBoost 尚未包含在 Anaconda 中,因此必须单独安装。
以下是在计算机上安装XGBoost的步骤。
(1)访问XGBoost下载页面,如图0.7所示。
图0.7 Anaconda安装XGBoost的建议
(2)复制图0.7中的第一行代码,如图0.8所示。
图0.8 包安装
(3)打开计算机上的终端。
如果不知道终端的位置,搜索Mac版的Terminal和Windows版的Windows Terminal。
(4)将以下代码粘贴到终端中,按Enter键,然后按照提示进行操作:
conda install -c conda-forge xgboost
(5)根据前一部分所概述的步骤,在新的 Jupyter Notebook 中验证安装是否成功。接下来输入import xgboost并按Shift Enter键。应该看到图0.9所示内容。
图0.9 在Jupyter Notebook中成功导入XGBoost
如果没有收到任何错误提示,表示已经具备了运行本书代码所需的全部技术条件。
提示
如果在尝试设置编程环境时遇到错误,可返回之前的步骤,或考虑查看Anaconda 错误文档。之前使用过Anaconda的用户可在终端中输入conda update conda来更新Anaconda。如果在更新 XGBoost 时遇到问题,可参阅XGBoost的官方文档。
软件版本
通过在Jupyter Notebook中运行以下代码,可以查看各软件的版本:
import platform; print(platform.platform())
import sys; print(”Python”, sys.version)
import numpy; print(”Numpy”, numpy.__version__)
import scipy; print(”SciPy”, scipy.__version__)
import sklearn; print(”Scikit-Learn”, sklearn.__version__)
import xgboost; print(”XGBoost”, xgboost.__version__)
本书中示例代码所使用的版本如下:
Darwin-19.6.0-x86_64-i386-64bit
Python 3.7.7 (default, Mar 26 2020, 10:32:53)
[Clang 4.0.1 (tags/RELEASE_401/final)]
Numpy 1.19.1
SciPy 1.5.2
Scikit-Learn 0.23.2
XGBoost 1.2.0
如果版本不同也没有关系。软件一直在更新,当有新版本发布时使用更新版本可能会得到更好的结果。然而,如果正在使用较旧版本的软件,建议在终端中运行conda update conda,使用Anaconda进行更新。如果之前安装了旧版本的XGBoost,并将其与Anaconda进行合并,那么也可以运行conda update xgboost进行更新。
|
|