LightGBM - sklearnAPI vs 训练和数据结构 API and lgb.cv vs gridsearchcv/randomisedsearchcv

LightGBM - sklearnAPI vs training and data structure API and lgb.cv vs gridsearchcv/randomisedsearchcv

  1. sklearnAPI(LGBMModel、LGBMClassifier 等)和默认 API(lgb.Dataset、lgb.cv、lgb.train) 的 lightgbm?我应该更喜欢使用哪一个?

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

  1. 这个答案已经被很好地涵盖了here

  2. 基于 Will Koehrsen 的 notebook,sklearn 交叉验证 API 不包括提前停止的选项。因此,如果您希望使用早停回合(如果您想在给定数量的估计器的验证分数没有提高时停止训练,这将非常有用),最好使用 LightGBM 交叉验证(lgb.cv) 函数。

    此外,摘自 Mikhail Lisyovi 的 answer -“从技术上讲,lightbgm.cv() 允许您仅评估具有固定模型参数的 k 折拆分的性能。对于超参数调整您将需要 运行 在循环中提供不同的参数并重新编码平均性能以选择最佳参数集。循环完成后。此接口与 sklearn 不同,它为您提供了进行超参数优化的完整功能在 CV 循环中。就个人而言,我建议使用 lightgbm 的 sklearn-API。它只是对原生 lightgbm.train() 功能的包装,因此它并不慢。但它允许你使用全套 sklearn 工具包,这会让您的生活变得更加轻松。"

因此,您最终使用哪种方法取决于问题的上下文以及哪些因素对您更重要 - early_stopping_rounds 或对不同参数进行超参数优化的难易程度。