LightGBM - sklearnAPI 与训练和数据结构API以及lgb.cv与gridsearchcv/randomisedsearchcv的比较

5
  1. lightgbm的sklearnAPI(LGBMModel、LGBMClassifier等)和默认API(lgb.Dataset、lgb.cv、lgb.train)有什么区别?哪个更好用?

  2. 在使用lightgbm时,是更好使用lgb.cv还是sklearn的gridsearchcv/randomisedsearchcv?

1个回答

6
  1. 这个答案已经在这里得到了很好的解答。

  2. 根据Will Koehrsen的笔记本,sklearn交叉验证API不包括早停选项。因此,如果您希望使用早停轮次(如果您想在给定的估计器数量内停止训练时停止训练非常有用),最好使用LightGBM交叉验证(lgb.cv)函数。

    此外,来自Mikhail Lisyovi的答案的摘录:“从技术上讲,lightbgm.cv()只允许您在具有固定模型参数的k-fold拆分上评估性能。对于超参数调整,您需要在循环中运行它,提供不同的参数并记录平均性能以选择最佳参数集。循环完成后。此接口与sklearn不同,后者为您提供完整功能,在CV循环中进行超参数优化。个人而言,我建议使用lightgbm的sklearn-API。它只是本地lightgbm.train()功能的包装器,因此不会更慢。但它允许您使用完整的sklearn工具包堆栈,这使您的生活 MUCH 更容易。”

因此,您最终使用的方法取决于问题的上下文以及哪些因素对您更重要 - early_stopping_rounds还是超参数优化的易用性。


1
关于早停用法的一个补充是,实际上sklearn v0.20.3已经将fit参数作为cross_validate函数的一个参数之一:https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_validate.html。因此,如果您有一个保留集,可以直接使用它。如果您想在CV拆分中使用保留折叠进行早停,那么您可以自己编写循环迭代CV迭代器(例如`KFold`)。然后,您可以按照自己喜欢的方式进行拟合和评估。 - Mischa Lisovyi
感谢 @MykhailoLisovyi 的回复。 - Sift

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接