XGBoost详细说明

塔瓦什·阿格瓦尔

在上一篇文章中 提升算法详细说明 我们详细讨论了增强算法并在那里工作。

在这篇文章中,让我们讨论一下提升类别中的另一种流行算法:XGBoost。

XGBoost

XGBoost(极端梯度增强)是最流行的梯度增强算法之一。它是使用梯度提升框架的基于决策树的集成机器学习算法。

注意: 该梯度提升树算法与梯度提升算法相同,只是我们在每次迭代中拟合的模型都是决策树。

XGBoost算法是对Gradient Boosting树算法的改进,涉及浅决策树上的Gradient Boosting。因此,在了解XGBoost之前,让我们首先总结一下Gradient Boosting树算法。

  1. 初始化粗略的初始函数\(F_0 \)
  2. 对于t = 0到T-1(其中T是迭代次数或模型数)
    • 计算损失函数\(L(y_i,F_t(x_i))\)
    • 计算所有数据点的新目标值,负梯度\(-\ frac {\ partial L(y,F_t)} {\ partial F_t} \)
    • 在上述数据点上拟合浅决策树,以得到\(J_ {t} \)终端节点,表示为\(R_ {j} \),j = 1至\(J_ {t} \)
    • 对于每个终端节点,j = 1到\(J_ {t} \)
      • 找到\(\ alpha_j \)使其最小化\(\ sum_ {x_i ϵ R_j} L(y_i,F_t(x_i)+ \ alpha_j \)
      • 所有这些\(\ alpha_j \)构成了增量树\(h_ {t + 1} \)。
    • 执行\(F_ {t + 1} = F_t + \ lambda_th_ {t + 1} \)
  3. 最终模型是\(F_T \)

注意: 梯度增强树算法与梯度增强算法几乎相同,但稍有修改。在这里,我们在每次迭代中拟合的模型是决策树。

\(\ alpha_j \)是终端节点/叶的值。此处的停止标准是梯度接近零(或正好为零)。

XGBoost使用正则化的模型公式来控制过度拟合,从而使其表现更好。它也被称为规则增强技术。

Ridge和Lasso回归 如果目标函数是损失函数和正则化函数之和,则XGBoost算法目标函数构成所有预测变量/树的损失函数和正则化项的总和。

$$ \ text {目标功能:训练损失+正规化} $$

渐变增强和XGBoost之间的主要区别在于XGBoost在其目标函数中包含了正则化参数以控制过度拟合。

$$ \ text {目标函数} = \ sum ^ n_ {i = 1} L(y_i,F_t(x_i))+ \ sum ^ T_ {t = 1} \ Omega(h_t)$$

由于一次学习所有树木并不容易,因此,我们没有使用梯度提升来优化目标函数,而是使用了加性训练。

加性策略 是我们修复所学知识并一次添加一棵树的地方。例如:

$$ F_0(x_i)= 0; \\
F_1(x_i)= F_0(x_i)+ h_1(x_i); \\
F_2(x_i)= F_1(x_i)+ h_2(x_i)$$

等等 。 。 。 。 。 。 。

在此,\(F_t(x_i)\)表示\(t ^ {th} \)迭代对\(i ^ {th} \)实例的预测。我们贪婪地在模型中添加\(h_t \)以最小化目标函数。

\(F_t(x_i)\)是我们在第t轮需要计算的。

$$ \ text {目标函数} ^ t = \ sum ^ n_ {i = 1} L(y_i,F_ {t-1}(x_i)+ h_t(x_i))+ \ sum ^ T_ {t = 1} \欧米茄(h_t)$$

上面显示的目标函数可以使用泰勒级数展开式近似。

# Importing packages
from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris

# Loading dataset
data = load_iris()

X = data.data
y = data.target

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

# Training model
xgbClassifier = XGBClassifier()
xgbClassifier.fit(X_train, y_train)

xgbClassifier.predict(X_test)

xgbClassifier.score(X_test, y_test)

XGBoost算法的优点

  • 并行计算: 默认情况下,当我们运行xgboost时,它将使用您笔记本电脑/机器的所有内核,从而使其能够进行并行计算。单个树中的并行化,其中树的每个独立分支都需要分别进行训练。
  • 正则化: xgboost的最大优点是它使用正则化并控制模型的过拟合和简单性,从而提供了更好的性能。
  • 启用交叉验证: XGBoost通过内部交叉验证功能启用
  • 缺失值: XGBoost旨在内部处理缺失值。缺失值的处理方式是,如果缺失值存在任何趋势,则模型会捕获该趋势。
  • 灵活性: XGBoost id不仅限于回归,分类和排名问题,它还支持用户定义的目标函数。此外,它还支持用户定义的评估指标。

概要

在这篇文章中,我们了解了最流行的Gradient Boosting算法之一,即XGBoost,它的优点包括:

  • 并行运算
  • 正则化
  • 启用交叉验证
  • 缺失值
  • 灵活性

除了CatBoost,LightGBM之外,还有其他一些增强算法,我们将在以后的文章中介绍这些算法。

作者信息

塔瓦什·阿格瓦尔

网站: http://tavishaggarwal.com

塔瓦什·阿格瓦尔是一名数据科学家 在海得拉巴工作,在解决电子商务,金融,医疗保健等不同领域的实际业务问题方面拥有丰富的经验。 他对技术充满热情,并且热爱团队合作。