Ошибка в данных $ update_params (params = params): [LightGBM] [Fatal] Невозможно изменить max_bin после созданного дескриптора набора данных

Я загрузил пакет lightgbm на RStudio и попытался запустить с ним модель. Скрипт основан на Retip.

Функция такая:

> fit.lightgbm
function (training, testing) 
{
  train <- as.matrix(training)
  test <- as.matrix(testing)
  coltrain <- ncol(train)
  coltest <- ncol(test)
  dtrain <- lightgbm::lgb.Dataset(train[, 2:coltrain], label = train[, 
                                                                     1])
  lightgbm::lgb.Dataset.construct(dtrain)
  dtest <- lightgbm::lgb.Dataset.create.valid(dtrain, test[,2:coltest], label = test[, 1])
  valids <- list(test = dtest)
  params <- list(objective = "regression", metric = "rmse")
  modelcv <- lightgbm::lgb.cv(params, dtrain, nrounds = 5000, 
                              nfold = 10, valids, verbose = 1, early_stopping_rounds = 1000, 
                              record = TRUE, eval_freq = 1L, stratified = TRUE, max_depth = 4, 
                              max_leaf = 20, max_bin = 50)
  best.iter <- modelcv$best_iter
  params <- list(objective = "regression_l2", metric = "rmse")
  model <- lightgbm::lgb.train(params, dtrain, nrounds = best.iter, 
                               valids, verbose = 0, early_stopping_rounds = 1000, record = TRUE, 
                               eval_freq = 1L, max_depth = 4, max_leaf = 20, max_bin = 50)
  print(paste0("End training"))
  return(model)
}

Однако когда я пытаюсь запустить функцию, как в Retip

lightgbm <- fit.lightgbm(training,testing)

Это фатальная ошибка:

Error in data$update_params(params = params) : 
  [LightGBM] [Fatal] Cannot change max_bin after constructed Dataset handle. 

Только при изменении max_bin на max_bin = 255 ошибки нет.

Перебрал документацию:

Как правильно настроить гиперпараметры для классификации LightGBM? # 1339

[Python] странное поведение max_bin # 1053

Есть идеи \ предложения, что делать?

См. также:  Указатель на функцию как член класса
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. TaL

    Это было размещено на странице https://github.com/microsoft/LightGBM/issues/4019 и получил там ответ.

    Построение объекта Dataset в LightGBM обрабатывает некоторые важные шаги предварительной обработки (см. этот предыдущий answer), которые происходят до обучения, и ни один из набора данных параметры можно изменить после построения.

    Передача max_bin=50 в lgb.Dataset() вместо lgb.cv() / lgb.train() в исходном коде сообщения приведет к успешному обучению без этой ошибки.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: