High-level R interface to train a LightGBM model. Unlike lgb.train, this function is focused on compatibility with other statistics and machine learning interfaces in R. This focus on compatibility means that this interface may experience more frequent breaking API changes than lgb.train. For efficiency-sensitive applications, or for applications where breaking API changes across releases is very expensive, use lgb.train.

  label = NULL,
  weights = NULL,
  params = list(),
  nrounds = 100L,
  verbose = 1L,
  eval_freq = 1L,
  early_stopping_rounds = NULL,
  init_model = NULL,
  callbacks = list(),
  serializable = TRUE,
  objective = "auto",
  init_score = NULL,
  num_threads = NULL,



a lgb.Dataset object, used for training. Some functions, such as lgb.cv, may allow you to pass other types of data like matrix and then separately supply label as a keyword argument.


Vector of labels, used if data is not an lgb.Dataset


Sample / observation weights for rows in the input data. If NULL, will assume that all observations / rows have the same importance / weight.

Changed from 'weight', in version 4.0.0


a list of parameters. See the "Parameters" section of the documentation for a list of parameters and valid values.


number of training rounds


verbosity for output, if <= 0 and valids has been provided, also will disable the printing of evaluation during training


evaluation output frequency, only effective when verbose > 0 and valids has been provided


int. Activates early stopping. When this parameter is non-null, training will stop if the evaluation of any metric on any validation set fails to improve for early_stopping_rounds consecutive boosting rounds. If training stops early, the returned model will have attribute best_iter set to the iteration number of the best iteration.


path of model file or lgb.Booster object, will continue training from this model


List of callback functions that are applied at each iteration.


whether to make the resulting objects serializable through functions such as save or saveRDS (see section "Model serialization").


Optimization objective (e.g. `"regression"`, `"binary"`, etc.). For a list of accepted objectives, see the "objective" item of the "Parameters" section of the documentation.

If passing "auto" and data is not of type lgb.Dataset, the objective will be determined according to what is passed for label:

  • If passing a factor with two variables, will use objective "binary".

  • If passing a factor with more than two variables, will use objective "multiclass" (note that parameter num_class in this case will also be determined automatically from label).

  • Otherwise (or if passing lgb.Dataset as input), will use objective "regression".

New in version 4.0.0


initial score is the base prediction lightgbm will boost from

New in version 4.0.0


Number of parallel threads to use. For best speed, this should be set to the number of physical cores in the CPU - in a typical x86-64 machine, this corresponds to half the number of maximum threads.

Be aware that using too many threads can result in speed degradation in smaller datasets (see the parameters documentation for more details).

If passing zero, will use the default number of threads configured for OpenMP (typically controlled through an environment variable OMP_NUM_THREADS).

If passing NULL (the default), will try to use the number of physical cores in the system, but be aware that getting the number of cores detected correctly requires package RhpcBLASctl to be installed.

This parameter gets overriden by num_threads and its aliases under params if passed there.

New in version 4.0.0


Additional arguments passed to lgb.train. For example

  • valids: a list of lgb.Dataset objects, used for validation

  • obj: objective function, can be character or custom objective function. Examples include regression, regression_l1, huber, binary, lambdarank, multiclass, multiclass

  • eval: evaluation function, can be (a list of) character or custom eval function

  • record: Boolean, TRUE will record iteration message to booster$record_evals

  • colnames: feature names, if not null, will use this to overwrite the names in dataset

  • categorical_feature: categorical features. This can either be a character vector of feature names or an integer vector with the indices of the features (e.g. c(1L, 10L) to say "the first and tenth columns").

  • reset_data: Boolean, setting it to TRUE (not the default value) will transform the booster model into a predictor model which frees up memory and the original datasets


a trained lgb.Booster

Early Stopping

"early stopping" refers to stopping the training process if the model's performance on a given validation set does not improve for several consecutive iterations.

If multiple arguments are given to eval, their order will be preserved. If you enable early stopping by setting early_stopping_rounds in params, by default all metrics will be considered for early stopping.

If you want to only consider the first metric for early stopping, pass first_metric_only = TRUE in params. Note that if you also specify metric in params, that metric will be considered the "first" one. If you omit metric, a default metric will be used based on your choice for the parameter obj (keyword argument) or objective (passed into params).