R: 我可以将权重参数传递给 LightGBM 中的 params = list() 吗?
R: Can I pass the weight parameter into the params = list() in LightGBM
最近在学习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 列表对象)构建,如上所示,是否可行?
谢谢。
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)
最近在学习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 列表对象)构建,如上所示,是否可行?
谢谢。
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)