超参数#
可解释的提升机(EBMs)通常在使用默认设置时表现良好,然而超参数调优可能会在一定程度上提高模型的准确性。默认参数旨在平衡计算效率与模型准确性。对于某些参数,我们清楚地知道应该朝哪个方向调整以改进模型。对于这些参数,不建议进行超参数调优,您应根据您能承受的模型拟合时间来设置它们。
以下参数按调优重要性排序,最重要的超参数在顶部,最不重要的在底部。
最大叶子数#
默认值:3(分类) 2(回归)
超参数: [2, 3]
指导:具有分类特征或具有许多急剧变化的连续特征的数据集通常受益于将max_leaves设置为3。具有平滑连续特征的数据集在将max_leaves设置为2时往往表现更好。max_leaves参数仅适用于主效应。
平滑轮次#
默认值:75(分类) 500(回归)
超参数: [0, 25, 50, 75, 100, 150, 200, 350, 500, 750, 1000, 1500, 2000, 4000]
指导:分类似乎更倾向于一个依赖于数据集的smoothing_rounds值,大约在75左右。回归似乎更喜欢更多的smoothing_rounds。回归的默认smoothing_rounds值为500,这是基于拟合时间选择的,然而更高的值似乎可以提高模型性能。
学习率#
默认值: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来说,这种关系更为复杂。一般来说,回归似乎更喜欢较高的学习率,二元分类似乎更喜欢较低的学习率,而多分类则介于两者之间。
交互#
默认值: 0.9
理想:在可解释性限制内尽可能多。
超参数: [0.0, 0.9, 0.95, 0.99, 100, 250, 1000]
指导:通常,应根据可解释性考虑选择此参数,因为过多的交互会使模型的可解释性降低。一个合理的策略是初始时包含比预期更多的交互,然后在拟合后的后处理中删除不太重要的交互。请参阅remove_terms函数。就模型性能而言,引入更多的交互往往会提高模型的准确性。0到小于1之间的值被解释为特征数量的百分比。例如,一个有100个特征且交互值为0.7的数据集将自动检测并使用70个交互。1或更高的值表示要检测的确切交互数量,例如1将创建一个交互项,50将创建50个。
内部包#
默认值: 0
警告:将此值设置为20通常会使拟合时间增加20倍。
理想值:20(超过此点后收益递减)
超参数: [0] 或者如果你能承受 [0, 20]
指导:默认的inner_bags值为0会禁用内部装袋。将此参数设置为1或其他较低的值通常会使模型变差,因为模型拟合将只使用数据的一个子集,而没有进行足够的内部装袋来补偿。将内部装袋的数量增加到20可以提高模型的准确性,但代价是显著增加拟合时间。如果计算时间不是限制因素,我们建议尝试0和20,但不建议尝试介于两者之间的其他值。
交互平滑轮次#
默认值:75(分类) 100(回归)
超参数: [0, 25, 50, 75, 100, 200, 500, 1000]
指导:interaction_smoothing_rounds 对模型准确性的影响似乎较小。100 是一个很好的默认选择,但在优化模型时,可能值得尝试其他值。
最小海森矩阵#
默认值:1e-4(分类) 0.0(回归)
超参数: [0.0, 1e-6, 1e-4, 1e-2]
指导:对于RMSE回归,min_hessian低于min_samples_leaf值时没有影响。对于分类,只要min_hessian是一个较小的数字,影响就很小。
min_samples_leaf#
默认值: 4
超参数: [2, 3, 4, 5, 10, 20, 50]
指导:默认值通常效果良好,然而尝试稍微高一些的值可能会在某些数据集上增强泛化能力。对于较小的数据集,较低的值可能更好。在较大的数据集上,此参数似乎影响不大。
验证集大小#
默认值: 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]
指导:将early_stopping_rounds设置为200比默认的100会稍微改善模型,但在某些情况下需要显著更多的时间来拟合。超过200的early_stopping_rounds似乎不会显著改善模型。
early_stopping_tolerance#
默认值: 1e-5
超参数: [0.0, 1e-5]
指导:由于拟合时间的考虑,early_stopping_tolerance 默认设置为 1e-5,然而将 early_stopping_tolerance 设置为 0.0,甚至有时设置为负值,可能会略微提高准确性。EBMs 是一种袋装集成模型,因此稍微过拟合每个单独的袋子可能是有益的,因为在集成中模型被平均后,过拟合导致的方差会减少。使用负值的 early_stopping_tolerance 允许单个模型过拟合。
最大分箱数#
默认值: 1024
理想值:1024(超过此点后收益递减)
超参数: [1024]
指导:增加max_bins值可以通过使特征的离散化更精细来提高模型的准确性。尽管对于非常大的数据集可能会有好处,但超过1024的值似乎对模型性能的改变非常小。将max_bins设置为1024通常在模型性能、内存需求和拟合时间之间提供了一个良好的平衡。
最大交互分箱数#
默认值: 64
超参数: [64]
指导:对于max_interaction_bins,通常在模型性能方面越多越好,然而当超过64个分箱时,拟合时间会显著增加,而带来的好处却很少。因此,我们建议默认使用64。但如果你的拟合时间可以接受,将max_interaction_bins设置为256甚至更多可能会略微提高模型性能。
贪婪比率#
默认值: 10.0
超参数: [0.0, 1.0, 2.0, 5.0, 10.0, 20.0]
指导:greedy_ratio 值超过 5.0 时,似乎会导致相似的模型性能。
循环进度#
默认值: 0.0
超参数: [0.0, 1.0]
指导:通常,通过将cyclic_progress设置为0.0来关闭它稍微更好,尽管如果greedy_ratio接近1,可能需要更多时间来拟合。
外部包#
默认值: 14
理想值:14(超过此点后收益递减)
超参数: [14]
指导:将外部袋数增加到14以上没有明显的益处。在少于14核的机器上,将outer_bags减少到14以下可能会改善拟合时间。在许多数据集上,将outer_bags设置为8是合理的,并且可以改善拟合时间。
最大轮次#
默认值: 25000
理想值: 1000000000 (早停应该在此之前很久就停止)
超参数: [1000000000]
指导:max_rounds参数用作限制,以防止在数据集上过度训练,其中改进逐渐减少。如果拟合时间合理,请将此参数设置得足够高,以避免过早停止。