LightGBM vs Sklearn LightGBM- Mistake in Implementation- Exact same parameters giving different results
A kind soul from Github was able to answer this.
The answer is this:
for the parameters consistency problem, you can try to use a new lgb_train before lgb.train, like
lgb_train = lgb.Dataset(x_train, y_train)
best_gbm = lgb.train(params=best, train_set=lgb_train, num_boost_round=num_boost_round)

lgb_train is lazy-inited, and only inited one-time, so it will be constructed in the cv part. And some parameters (like min_child_samples) in that part may change the lgb_train. Therefore, lgb_train may is inited by different parameters. (So it is better to use a new lgb.train in cv part as well.)