Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement advanced early stopping in train() #24

Open
ummel opened this issue Apr 13, 2022 · 2 comments
Open

Implement advanced early stopping in train() #24

ummel opened this issue Apr 13, 2022 · 2 comments
Assignees
Labels
enhancement New feature or request

Comments

@ummel
Copy link
Owner

ummel commented Apr 13, 2022

It appears a min_delta parameter was recently added to lightGBM to allow early stopping if the score does not improve by some minimum value (in addition to the current stopping criterion provided by early_stopping_rounds) -- discussion here. This would be useful, since nrounds could be set quite high without risk of excessive runtime.

However, as of today, there is no mention of min_delta in the lightGBM parameter documentation or the R package API. But it is documented in the Python API under callbacks.

@ummel ummel added the enhancement New feature or request label Apr 13, 2022
@ummel ummel self-assigned this Apr 13, 2022
@ummel ummel changed the title Implement min_delta argument in lightgbm Implement min_delta argument in lightgbm (early stopping callback) Jul 19, 2022
@ummel
Copy link
Owner Author

ummel commented Jul 24, 2022

This would help stop lightgbm training earlier than currently (current method is: early_stopping_rounds = 1L) without any significant loss of accuracy.

@ummel
Copy link
Owner Author

ummel commented Aug 17, 2022

This is a new feature in LightGBM and may not be totally ready, yet. But the idea here is that a model should stop "growing" (adding iterations/trees) when the prediction performance on the hold-out "test" set is no longer increasing my some minimum delta; i.e. at some point, the real-world significance of further improvement is effectively zero. At present, we can't do this -- instead, LightGBM keeps adding trees to the model until the hold-out performance stops improving at all. So LightGBM will keep building out the model even if the improvement is 0.00001%, for example (so num_iterations = 5000 can be really expensive). Obviously, that is a big waste of computation. Implementing more aggressive early stopping could save a lot of time. Wouldn't be surprised if it cuts compute time by 1/3 in many cases.

@ummel ummel changed the title Implement min_delta argument in lightgbm (early stopping callback) Implement advanced early stopping in train() Aug 17, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant