超参数#

可解释增强机器 (EBMs) 通常使用默认设置就能获得不错的性能,但超参数调优仍可能适度提高模型精度。默认参数旨在平衡计算效率与模型精度。对于某些参数,我们清楚地知道应该朝哪个方向调整才能改进模型。对于这些参数,不建议进行超参数调优,而应该根据您能承担的模型拟合时间来设置它们。

下面的参数按调优重要性排序,最重要的超参数在顶部,最不重要的在底部。

max_leaves#

默认值:3(分类)2(回归)

超参数:[2, 3]

指导:具有类别特征或具有许多急剧转变的连续特征的数据集通常从 max_leaves 为 3 中获益。具有平滑连续特征的数据集在 max_leaves 设置为 2 时表现更好。max_leaves 参数仅适用于主效应。

smoothing_rounds#

默认值:75(分类)500(回归)

超参数:[0, 25, 50, 75, 100, 150, 200, 350, 500, 750, 1000, 1500, 2000, 4000]

指导:分类似乎倾向于围绕 75 的、依赖于数据集的 smoothing_rounds 值。回归似乎倾向于更多 smoothing_rounds。回归默认的 500 smoothing_rounds 是根据拟合时间选择的,然而即使更高的值似乎也能提高模型性能。

learning_rate#

默认值:0.015(分类),0.04(回归)

超参数:[0.0025, 0.005, 0.01, 0.015, 0.02, 0.03, 0.04, 0.05, 0.1, 0.2]

指导:传统的观点是较低的学习率通常更好,但我们发现对于 EBMs 来说,这种关系更为复杂。一般来说,回归似乎更喜欢较高的学习率,二分类似乎更喜欢较低的学习率,而多分类则介于两者之间。

interactions#

默认值:0.9

理想值:在可解释性限制内越多越好。

超参数:[0.0, 0.9, 0.95, 0.99, 100, 250, 1000]

指导:通常,应根据可解释性考虑来选择此参数,因为交互项过多会降低模型的可解释性。一个合理的策略是最初包含比期望更多的交互项,然后在拟合后进行后处理时删除不太重要的交互项。请参阅 remove_terms 函数。在模型性能方面,引入更多交互项倾向于提高模型精度。值在 0 到小于 1 之间被解释为特征数量的百分比。例如,一个包含 100 个特征的数据集,interactions 值为 0.7,将自动检测并使用 70 个交互项。值等于或大于 1 表示要检测的精确交互项数量,例如,1 将创建一个交互项,50 将创建 50 个。

inner_bags#

默认值:0

警告:将此值设置为 20 通常会将拟合时间增加 20 倍。

理想值:20(超过此值回报递减)

超参数:[0] 或者如果计算资源允许 [0, 20]

指导:默认的 inner_bags 值 0 会禁用内部装袋(inner bagging)。将此参数设置为 1 或其他较低的值通常会使模型变差,因为模型拟合将仅使用数据子集,但没有进行足够的内部装袋来补偿。将内部装袋数量增加到 20 可以提高模型精度,但代价是显著增加拟合时间。如果计算时间不是限制,我们建议尝试 0 和 20,而不是介于两者之间的其他值。

interaction_smoothing_rounds#

默认值:75(分类)100(回归)

超参数:[0, 25, 50, 75, 100, 200, 500, 1000]

指导:interaction_smoothing_rounds 对模型精度的影响似乎很小。100 是一个不错的默认选择,但在优化模型时可能值得尝试其他值。

min_hessian#

默认值:1e-4(分类)0.0(回归)

超参数:[0.0, 1e-6, 1e-4, 1e-2]

指导:对于 RMSE 回归,小于 min_samples_leaf 值的 min_hessian 没有影响。对于分类,只要 min_hessian 是一个较小的数值,它的影响就微乎其微。

min_samples_leaf#

默认值:4

超参数:[2, 3, 4, 5, 10, 20, 50]

指导:默认值通常效果很好,但尝试稍高的值可能会增强在某些数据集上的泛化能力。对于较小的数据集,较低的值可能更好。在较大的数据集上,此参数的影响似乎很小。

validation_size#

默认值:0.15

超参数:[0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4]

指导:用于验证的理想数据量取决于数据集,应在可能的情况下进行调优。

early_stopping_rounds#

默认值:100

理想值:200(超过此值回报递减)

超参数:[100, 200]

指导:设置 200 个 early_stopping_rounds 会得到比默认值 100 稍好的模型,但在某些情况下需要显著更多的拟合时间。early_stopping_rounds 超过 200 似乎对模型改进不大。

early_stopping_tolerance#

默认值:1e-5

超参数:[0.0, 1e-5]

指导:出于拟合时间考虑,early_stopping_tolerance 默认设置为 1e-5,然而将 early_stopping_tolerance 设置为 0.0,甚至负值,有时会产生稍高的精度。EBMs 是一种装袋(bagged)集成模型,因此对每个单独的袋子稍微过拟合可能是有益的,因为在集成中将模型平均后,平均过程会降低过拟合带来的方差。对 early_stopping_tolerance 使用负值允许单个模型过拟合。

max_bins#

默认值:1024

理想值:1024(超过此值回报递减)

超参数:[1024]

指导:增加 max_bins 值可以通过更精细地离散化特征来提高模型精度。大于 1024 的值似乎对模型性能的改变非常小,尽管对于非常大的数据集可能有益。将 max_bins 设置为 1024 通常能在模型性能、内存需求和拟合时间之间取得良好的平衡。

max_interaction_bins#

默认值:64

超参数:[64]

指导:对于 max_interaction_bins,从模型性能角度来说,通常越多越好,然而超过 64 个分箱后,拟合时间会显著增加,但收益却很小。因此,我们推荐将 64 作为默认值。如果您的拟合时间可以接受,将 max_interaction_bins 设置为 256 或更高可能稍微改进模型。

greedy_ratio#

默认值:10.0

超参数:[0.0, 1.0, 2.0, 5.0, 10.0, 20.0]

指导:greedy_ratio 值高于 5.0 时,模型性能似乎相似。

cyclic_progress#

默认值:0.0

超参数:[0.0, 1.0]

指导:通常,通过将其设置为 0.0 来关闭 cyclic_progress 会稍好一些,尽管如果 greedy_ratio 接近 1,拟合时间可能会更长。

outer_bags#

默认值:14

理想值:14(超过此值回报递减)

超参数:[14]

指导:将外部装袋数量增加到 14 以上没有明显的好处。在少于 14 个核心的机器上,减少 outer_bags 到 14 以下可能会改善拟合时间。在许多数据集上,将 outer_bags 设置为 8 是合理的,并且可以改善拟合时间。

max_rounds#

默认值:25000

理想值:1000000000(早期停止应该在此之前很久就停止)

超参数:[1000000000]

指导:max_rounds 参数作为一种限制,用于防止在改进趋于平缓的数据集上进行过度训练。在拟合时间合理的情况下,将此参数设置得足够高,以避免过早的早期停止。