图书前言

各章主要内容

第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进行更新。