最近,我正在学习LightGBM软件包,并希望调整它的参数。
我想尝试所有可以在LightGBM中调整的参数。
一个问题是:当我使用函数lightgbm(data, label = NULL, weight = NULL, params = list(), nrounds = 10, verbose = 1)
构建模型时,能否将weight
和nrounds
和many other parameters
放入列表对象并馈入params
参数?
以下是我使用的代码:
# input data for lgb.Dataset()
data_lgb <- lgb.Dataset(
data = X_tr,
label = y_tr
)
# can I put all parameters to be tuned into this list?
params_list <- list(weight = NULL, nrounds = 20, verbose = 1, learning_rate = 0.1)
# build lightgbm model using only: data_lgb and params_list
lgb_model <- lightgbm(data_lgb, params = params_list)
我可以使用上面的代码吗?
我问是因为我有一个庞大的训练数据集(200万行和700个特征)。如果将lgb.Dataset()放入lightgbm(例如lightgbm(data = lgb.Dataset(data = X_tr,label = y_tr), params = params_list)
)中,则需要花费多个时间来建立多个模型。因此,我首先获得用于lightgbm的数据集,对于每个模型,该数据集都是恒定的,我所做的只能集中于不同的参数。
但是,我不确定总共可以在params_list
中放入多少个参数?例如weight
参数可以在params_list
中吗?当我查看帮助?lightgbm
时,我注意到weight
参数和许多其他parameters
不在params_list
之外。
您能帮我弄清楚:总共可以在params_list
中输入哪些参数?那就是仅使用data
自变量和params
自变量(其他参数放入params列表对象中)构建最终模型,是否可行?
谢谢。
答案 0 :(得分:1)
Lightgbm
有许多可以调整的参数。请阅读文档。
我正在粘贴其中一个模型脚本的一部分,以显示该过程。应该给你一个很好的提示。
nthread <- as.integer(future::availableCores())
seed <- 1000
EARLY_STOPPING <- 50
nrounds <- 1000
param <- list(objective = "regression"
metric = "rmse",
max_depth = 3,
num_leaves = 5,
learning_rate = 0.1,
nthread = nthread,
bagging_fraction = 0.7,
feature_fraction = 0.7,
bagging_freq = 5,
bagging_seed = seed,
verbosity = -1,
min_data_in_leaf = 5)
dtrain <- lgb.Dataset(data = as.matrix(train_X),
label = train_y)
dval <- lgb.Dataset(data = as.matrix(val_X),
label = val_y)
valids <- list(val = dval)
bst <- lgb.train(param,
data = dtrain,
nrounds = nrounds,
data_random_seed = seed,
early_stopping_rounds = EARLY_STOPPING,
valids = valids)