首页 > 解决方案 > LightGBM - sklearnAPI 与训练和数据结构 API 以及 lgb.cv 与 gridsearchcv/randomisedsearchcv

问题描述

  1. lightgbm 的 sklearnAPI(LGBMModel, LGBMClassifier etc) 和默认 API(lgb.Dataset, lgb.cv, lgb.train) 有什么区别?我应该更喜欢使用哪一个?

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

标签: pythonscikit-learndata-sciencelightgbm

解决方案


  1. 这个答案在这里得到了很好的介绍

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

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

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


推荐阅读