Press "Enter" to skip to content

XGBoost:权威指南(第2部分)

从零开始用Python实现XGBoost算法

Image by StockSnap from Pixabay

在之前的文章中,我们讨论了XGBoost算法,并展示了其伪代码实现。在本文中,我们将从零开始用Python实现该算法。

所提供的代码是对XGBoost算法的简洁且轻量级的实现(仅约300行代码),旨在展示其核心功能。因此,它并没有针对速度或内存使用进行优化,并且不包括XGBoost库提供的完整选项(请参阅https://xgboost.readthedocs.io/以获取有关库功能的更多详细信息)。具体来说:

  1. 该代码是纯Python编写的,而XGBoost库的核心是用C++编写的(其Python类仅是C++实现的薄包装器)。
  2. 它不包括各种优化,这些优化使XGBoost能够处理大量数据,例如加权分位数草图、离线树学习以及数据的并行和分布式处理。这些优化将在系列的下一篇文章中详细讨论。
  3. 当前的实现仅支持回归和二分类任务,而XGBoost库还支持多类别分类和排名问题。
  4. 我们的实现仅支持XGBoost库中存在的一小部分超参数。具体而言,它支持以下超参数:
  • n_estimators(默认值=100):集成中回归树的数量(也是增强迭代的次数)。
  • max_depth(默认值=6):每棵树的最大深度(层级数)。
  • learning_rate(默认值=0.3):应用于树的步长收缩。
  • reg_lambda(默认值=1):应用于叶子节点权重的L2正则化项。
  • gamma(默认值=0):要分割给定节点所需的最小损失减少。

为了保持一致性,我保留了这些超参数的名称和默认值,就像它们在XGBoost库中定义的那样。

Leave a Reply

Your email address will not be published. Required fields are marked *