与随机森林不同,梯度提升树可能会过拟合。因此,对于 你可以使用神经网络应用正则化和早停法, 验证数据集。
例如,下图显示了训练的损失和准确率曲线 和验证集。注意曲线的发散程度 这表明存在高度的过拟合。
<ph type="x-smartling-placeholder"></ph> 图 29损失与决策树数量。 。
<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.
用法和限制
梯度提升树有一些优缺点。
优点
- 与决策树一样,它们本身也支持数值和分类 特征,通常不需要特征预处理。
- 梯度提升树具有默认的超参数,通常可以提供 结果。不过,调整这些超参数 改进模型。
- 梯度提升树模型通常规模较小(节点数不多 内存)和快速运行(通常仅需一个或几微秒 / 样本)。
缺点
- 决策树必须依序训练,这可能会减慢训练速度 。然而,训练速度在一定程度上抵消了 决策树更小。
- 与随机森林一样,梯度提升树也无法在内部学习和重复使用 表示。每个决策树(以及每个决策树的每个分支) 必须重新学习数据集模式。在某些数据集中,尤其是具有 非结构化数据(例如图片、文本),这会导致梯度提升 以呈现出比其他方法更差的结果。