为了提高XGBoost模型的性能,应该调优哪个超参数?
计算机/软件
0 242
2
该提问暂无详细描述
收藏
2021-01-19 04:32 更新 天明 •  893
共 1 个回答
高赞 时间
0

XGBoost确实令人困惑,因为超参数在不同的api中有不同的名称。不过,我要说的是,你可以对三个主要的超参数进行微调,以消除一些额外的性能。

树的数量:

命令行接口:num_round Python API: num_boost_round Scikit-learn API: n_estimators R包:nrounds

学习率:

命令行接口:eta Python API: learning_rates(一个列表) Scikit-learn API: learning_rate

树的最大深度:

命令行接口:max_depth Python API:不确定如何调优 Scikit-learn API: max_depth R包:max_depth

这些超参数基本上控制了模型的复杂性,这意味着它们与偏差和方差有关。

你的主要目标应该是尽可能地降低复杂性,同时在验证过程中保留大部分性能。这意味着在不破坏模型的前提下,你可以得到最少的树和最小的深度。

随着时间的推移,你会发现,越简单的模型就越能防止过度拟合。你越减少树的数量,就越应该提高学习速率,以确保算法收敛。

一些api还支持回调和提早停止,它们作为防止过拟合的另一种措施。如果你真的担心过拟合,也可以引入一些正规化。根据我的经验,这是很少必要的。

收藏
2021-01-19 04:46 更新 Lisa •  1167