首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在lightgbm中调优参数max_bin?

如何在lightgbm中调优参数max_bin?
EN

Stack Overflow用户
提问于 2018-03-13 10:49:08
回答 2查看 6.4K关注 0票数 0

我运行了一个基本的lightgbm示例来测试max_bin如何影响模型:

代码语言:javascript
运行
复制
require(lightgbm)
data(agaricus.train, package = "lightgbm")
data(agaricus.test, package = "lightgbm")
train <- agaricus.train
test <- agaricus.test

dtrain <- lgb.Dataset(data = train$data, label = train$label, free_raw_data = FALSE)
dtest <- lgb.Dataset(data = test$data, label = test$label, free_raw_data = FALSE)

valids <- list(train = dtrain, test = dtest)

set.seed(100)
bst <- lgb.train(data = dtrain,
             num_leaves = 31,
             learning_rate = 0.05,
             nrounds = 20,
             valids = valids,
             nthread = 2,
             max_bin = 32,
             objective = "binary")

我尝试将max_bin设置为32和255,这两个测试给出了相同的输出:

代码语言:javascript
运行
复制
[LightGBM] [Info] Number of positive: 3140, number of negative: 3373
[LightGBM] [Info] Total Bins 128
[LightGBM] [Info] Number of data: 6513, number of used features: 107
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1]:    train's binary_logloss:0.644852 test's binary_logloss:0.644853 
 ......
[20]:   train's binary_logloss:0.204922 test's binary_logloss:0.204929 

为什么max_bin对模型的训练没有影响?

EN

回答 2

Stack Overflow用户

发布于 2021-03-10 06:56:08

您需要在创建Dataset时设置max_bin。创建Dataset时,将计算额外的统计信息。我不知道R实现的细节,但在Python语言中,您可以将它作为params={"max_bin":32}传递。

票数 0
EN

Stack Overflow用户

发布于 2021-05-08 20:21:18

入库是一种在离散视图(直方图)中表示数据的技术。Lightgbm使用基于直方图的算法来找到最佳分割点,同时创建一个弱学习器。因此,每个连续的数字特征(例如,视频的观看次数)应该被分成离散的存储箱。

此外,在这个GitHub库中,您可以找到一些全面的实验,它们完全解释了更改max_bin对CPU和GPU的影响。

如果您定义了max_bin 255,这意味着我们每个特性最多可以有255个唯一值。然后,较小的max_bin会导致更快的速度,而较大的值会提高准确性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49247533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档