过拟合、正则化和早停法

与随机森林不同,梯度提升树可能会过拟合。因此,对于 你可以使用神经网络应用正则化和早停法, 验证数据集。

例如,下图显示了训练的损失和准确率曲线 和验证集。注意曲线的发散程度 这表明存在高度的过拟合。

训练损失和验证损失与
  决策树。训练损失会随着
  决策树。不过,验证损失只会
  直到大约 40 个决策树。我们拥有 40 多个决策树,
  验证损失实际上会增加。有 400 个决策树,
  训练损失与验证损失之间的差距是
  非常庞大。

<ph type="x-smartling-placeholder"></ph> 图 29损失与决策树数量。

 

训练准确率和验证准确率与
  决策树。训练准确率会随着
  的决策树增加,在 400 分时达到近 1.0 的峰值
  决策树。验证准确率提高到约 0.86 至 40
  然后逐渐降低到 0.83 左右,决策树为 400
  数据。

<ph type="x-smartling-placeholder"></ph> 图 30.准确率与决策树数量。

 

梯度提升树的常见正则化参数包括:

  • 树的最大深度。
  • 收缩率。
  • 在每个节点上测试的属性比率。
  • L1 和 L2 系数。

请注意,决策树的增长速度通常比随机森林浅得多 模型。默认情况下,TF-DF 中的梯度提升树会增大到深度 6。 由于树是浅层的,因此每个叶的样本数下限为 影响很小,通常不会进行调整。

训练的 样本量很小。因此,训练梯度提升树很常见 或是在使用模型之前 已知不会过拟合。

用法示例

在上一章中,我们基于一个小型数据集训练了随机森林。在本课中, 我们只需将随机森林模型替换为使用梯度提升的 树模型:

model = tfdf.keras.GradientBoostedTreesModel()

# Part of the training dataset will be used as validation (and removed
# from training).
model.fit(tf_train_dataset)

# The user provides the validation dataset.
model.fit(tf_train_dataset, validation_data=tf_valid_dataset)

# Disable early stopping and the validation dataset. All the examples are
# used for training.
model.fit(
   tf_train_dataset,
   validation_ratio=0.0,
   early_stopping="NONE")
# Note: When "validation_ratio=0", early stopping is automatically disabled,
# so early_stopping="NONE" is redundant here.

用法和限制

梯度提升树有一些优缺点。

优点

  • 与决策树一样,它们本身也支持数值和分类 特征,通常不需要特征预处理。
  • 梯度提升树具有默认的超参数,通常可以提供 结果。不过,调整这些超参数 改进模型。
  • 梯度提升树模型通常规模较小(节点数不多 内存)和快速运行(通常仅需一个或几微秒 / 样本)。

缺点

  • 决策树必须依序训练,这可能会减慢训练速度 。然而,训练速度在一定程度上抵消了 决策树更小。
  • 与随机森林一样,梯度提升树也无法在内部学习和重复使用 表示。每个决策树(以及每个决策树的每个分支) 必须重新学习数据集模式。在某些数据集中,尤其是具有 非结构化数据(例如图片、文本),这会导致梯度提升 以呈现出比其他方法更差的结果。