序
各章主要内容
第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进行更新。