Skip to content

Releases: microsoft/LightGBM

v4.5.0

25 Jul 22:10
3f7e608
Compare
Choose a tag to compare

Changes

💡 New Features

  • [python-package] Add feature_names_in_ attribute for scikit-learn estimators (fixes #6279) @nicklamiller (#6310)
  • [R-package]: add num_trees_per_iter, num_trees, and num_iter methods @mayer79 (#6500)

🔨 Breaking

  • [c++] remove HDFS support (fixes #6436) @jameslamb (#6534)
  • [ci] [python-package] run macOS x86_64 tests on macOS 12 (Monterey), stop manually setting macOS wheel tags @jameslamb (#6487)

🚀 Efficiency Improvement

🐛 Bug Fixes

  • [python-package] Correctly recognize LGBMClassifier(num_class=2, objective="multiclass") as multiclass classification @RektPunk (#6524)
  • [cmake] Some improvements to handling of OpenMP on macOS @barracuda156 (#6489)
  • [python-package] respect 'verbose' setting when using custom objective function (fixes #6014) @jameslamb (#6428)
  • cmake: add missing lib_lightgbm_swig.so to lightgbmlib.jar on linux @shuttie (#6515)

📖 Documentation

🧰 Maintenance

v4.4.0

15 Jun 04:08
271d1ff
Compare
Choose a tag to compare

Changes

💡 New Features

  • [ci] [python-package] add arm64 macOS wheels @jameslamb (#6391)
  • [python-package] Add support for NumPy 2.0, test against nightly versions of dependencies (fixes #6454) @jameslamb (#6467)
  • [R-package] expose start_iteration to dump/save/lgb.model.dt.tree @mayer79 (#6398)
  • [python-package] Allow to pass early stopping min delta in params @borchero (#6274)
  • [python-package] Allow to pass Arrow table with boolean columns to dataset @borchero (#6353)
  • [c++][fix] Support Quantized Training with Categorical Features on CPU @shiyu1994 (#6301)

🔨 Breaking

  • [python-package] remove uses of deprecated NumPy random number generation APIs, require 'numpy>=1.17.0' @jameslamb (#6468)
  • [python-package] drop Python 3.6 support, add Python 3.12 @jameslamb (#6459)
  • [cmake] [c++] use .dylib extension unconditionally on macOS @jameslamb (#6418)
  • ENH more stable gradient of CrossEntropy @lorentzenchr (#6327)
  • [R-package] Rename slice() to lgb.slice.Dataset() @david-cortes (#6293)

🚀 Efficiency Improvement

  • [R-package] Use ALTREP system to return C++-allocated arrays @david-cortes (#6213)
  • [R-package] Speed-up lgb.importance() @mayer79 (#6364)
  • Fix single row prediction performance in a multi-threaded environment @Ten0 (#6024)

🐛 Bug Fixes

  • [R-package] ensure use of interaction_constraints does not lead to features being ignored @mayer79 (#6377)
  • [R-package] skip integer categorical feature check when building dataset subset (fixes #6412) @jmoralez (#6442)
  • [cmake] always target Windows SDK v10.x when using Visual Studio generators (fixes #6448) @jameslamb (#6451)
  • upgrade CMake in dockerfile-cli (fixes #6420) @narumiruna (#6426)
  • remove unnecessary omp single that cause deadlock (fixes #6273) @morokosi (#6394)
  • [python-package] allow use of early_stopping_round<=0 to turn off early stopping (fixes #6401) @ddelzell (#6406)
  • [c++] Fix memory leak in Arrow table implementation @borchero (#6314)
  • Fix calculation of number of bins in FindGroup @CVPaul (#6019)

📖 Documentation

  • [docs] ensure pkgdown site index accurately reflects R-package public API (fixes #6444) @jameslamb (#6445)
  • [docs] document how to use a custom objective function via the C API @parsiad (#6396)
  • [docs] [ci] encourage use of cmake --build @jameslamb (#6368)
  • [docs] remove language about CUDA version being experimental (fixes #6340) @jameslamb (#6371)

🧰 Maintenance

v4.3.0

26 Jan 02:11
252828f
Compare
Choose a tag to compare

Changes

💡 New Features

🔨 Breaking

🚀 Efficiency Improvement

🐛 Bug Fixes

  • [R-package] [ci] remove unnecessary include in linear_tree_learner (fixes #6264) @jameslamb (#6265)
  • [cmake] [CUDA] ignore CUDA-specific source files in non-CUDA builds (fixes #6267) @sabjohnso (#6268)
  • [c++] include OpenMP-control files in MSBuild solution file (fixes #6238) @jameslamb (#6251)
  • [cmake] [swig] use CMake's built-in file-copying mechanisms instead of 'cp' @jameslamb (#6259)

📖 Documentation

🧰 Maintenance

v4.2.0

21 Dec 18:58
0a9a6bb
Compare
Choose a tag to compare

✨ v4.2.0 of the R package is now available on CRAN (link), the first major release of the R package in 2+ years.

✨ The Python package now accepts Apache Arrow Tables and Arrays (thanks @borchero!)

🔧 A critical bug in quantized training support is fixed

Changes

💡 New Features

  • [python-package] Allow to pass Arrow table for prediction @borchero (#6168)
  • [python-package] Allow to pass Arrow table and array as init scores @borchero (#6167)
  • [python-package] Allow to pass Arrow array as groups @borchero (#6166)
  • [python-package] Allow to pass Arrow array as weights @borchero (#6164)
  • [python-package] Accept numpy generators as random_state @david-cortes (#6174)
  • [python-package] Allow to pass Arrow array as labels @borchero (#6163)
  • [python-package] Allow to pass Arrow table as training data @borchero (#6034)

🔨 Breaking

  • [python-package] fix access to Dataset metadata in scikit-learn custom metrics and objectives @jameslamb (#6108)
  • [CUDA] drop CUDA 10 support, start supporting CUDA 12 (fixes #5789) @jameslamb (#6099)

🚀 Efficiency Improvement

🐛 Bug Fixes

📖 Documentation

🧰 Maintenance

v4.1.0

12 Sep 01:51
501ce1c
Compare
Choose a tag to compare

Changes

💡 New Features

🐛 Bug Fixes

  • Fix updates in random forest model using GOSS data sample strategy @mjmckp (#6017)
  • [R-package] Fix misdetected objective when passing lgb.Dataset instance to lightgbm() @david-cortes (#6005)
  • [python-package] make it possible to build wheels without internet connection (fixes #5979) @jameslamb (#6042)
  • fix percentile computation for regression objectives @zachary62 (#5848)
  • [CUDA] Set GPU device ID in threads @shiyu1994 (#6028)
  • [R-package] Fix error when passing categorical features to lightgbm() (fixes #6000) @david-cortes (#6003)
  • [R-package] limit number of threads used in tests and examples (fixes #5987) @jameslamb (#5988)

📖 Documentation

🧰 Maintenance


Note

This release of the R package was not submitted to CRAN, due to the issues documented in #5987.

v4.0.0

13 Jul 18:43
d73c6b5
Compare
Choose a tag to compare

Changes

This release contains all previously-unreleased changes since v3.3.1 over 1.5 years ago (link).

Summary of improvements:

  • totally-rewritten CUDA implementation, and more operations in the CUDA implementation performed on the GPU
  • quantized training can be used for greatly improved training speeds on CPU (paper link)
  • support for C++17
  • Python package:
    • now uses scikit-build-core (link) as its build backend
    • manylinux_2_28 Linux wheels now support GPU (OpenCL-based, not CUDA) build automatically... just pip install lightgbm then pass {"device": "gpu"} in params (thanks @jgiannuzzi!)
    • much more use of inline type hints, exported with py.typed so any code using LightGBM can benefit
    • support for Python 3.10, 3.11
    • support for pandas nullable types
    • configurable threshold (lgb.early_stopping(..., min_delta=n)) for how much eval metrics must improve to be considered "improved" for early stopping
    • custom objective functions in Dask
    • scikit-learn is no longer a required dependency
    • all callbacks are now pickleable (for better interoperability with e.g. ray, Dask) (thanks @Yard1!)
  • R package:
    • efficient support for more data types in prediction, like dgCMatrix and dsparseMatrix (thanks @david-cortes!)
    • much more idomatic interface... e.g. support for saveRDS() and readRDS() for Booster, print() and summary() methods for Dataset (thanks @david-cortes!)
    • various bug fixes related to multiple competing ways to provide parameters
    • support for R 4.2, 4.3

Summary of breaking changes:

  • Python package:
    • dropped most testing, promise of support for Python 3.6 (although it should still technically be installable)
    • dropped support for macOS Mojave (10.14)
    • made many functions and class attributes private, including significantly reducing what is pulled in by from lightgbm import *
    • removed setup.py, pip install --install-option support
    • remove support for pip install --install-option (to work with newer pip, see pypa/pip#11358)
    • dropped support for installation with MSBUild.exe ... that now requires compiling lib_lightgbm.dll separately and then building a wheel that bundles it
  • R package:
    • dropped support for Solaris
    • removed most support for passing parameters through ...
    • removed lgb.unloader()
    • switched to predict(newdata, type = ...) in predict(), for consistency with base R and most other machine learning projects

💡 New Features

🔨 Breaking

  • [python-package] make Booster and Dataset 'handle' attributes private (fixes #5313) @jameslamb (#5947)
  • [python-package] remove hard dependency on 'scikit-learn', fix minimal runtime dependencies @jameslamb (#5942)
  • [python-package] [ci] switch to PEP 517 / 518 builds (remove setup.py) (fixes #5061) @jameslamb (#5759)
  • [ci] [python-package] replace 'python setup.py' with a shell script @jameslamb (#5837)
  • [R-package] use C++17 in the CRAN package @jameslamb (#5690)
  • [python-package] make some Booster and Dataset attributes private @jameslamb (#5723)
  • [CUDA] consolidate CUDA versions @jameslamb (#5677)
  • [python-package] make public API members explicit with module-level all variables @jameslamb (#5655)
  • [ci] migrate CI from macOS 10.15 to 11 (fixes #5391) @StrikerRUS (#5396)
  • [ci] switch to manylinux_2_28 for Linux artifacts (fixes #5514, fixes #5589) @jameslamb (#5580)
  • fix: Adjust LGBM_DatasetCreateFromSampledColumn to handle distributed data @svotaw (#5344)
  • [python-package] allow custom weighing in fobj for scikit-learn API (closes #5027) @jmoralez (#5211)
  • [R-package] Use type argument to control prediction types @david-cortes (#5133)
  • [python-package] Use scikit-learn interpretation of negative n_jobs and change default to number of cores @david-cortes (#5105)
  • [python-package] remove Booster.set_attr() and Booster.attr() @jameslamb (#5272)
  • remove support for Solaris (fixes #5216) @jameslamb (#5226)
  • [R-package] stop automatically calculating eval metrics on training data in lightgbm() @jameslamb (#5209)
  • [R-package] remove lgb.unloader() @jameslamb (#5204)
  • [python-package] remove 'fobj' in favor of passing custom objective func...
Read more

v3.3.5

24 Jan 03:15
Compare
Choose a tag to compare

Changes

This is a special release, put up to prevent the R package from being archived on CRAN.

See #5661 and #5662 for context.

This release only contains the changes, relative to v3.3.4, necessary to prevent removal of the R package from CRAN.

💡 New Features

None

🔨 Breaking

None

🚀 Efficiency Improvement

None

🐛 Bug Fixes

  • [ci] [R-package] fix clang 15 warning about unqualified calls (fixes #5661) @jameslamb (#662)

📖 Documentation

None

🧰 Maintenance

None

v3.3.4

04 Jan 22:08
Compare
Choose a tag to compare

Changes

This is a special release, put up to prevent the R package from being archived on CRAN.

See #5618 and #5619 for context.

This release only contains the changes, relative to v3.3.3, necessary to prevent removal of the R package from CRAN.

💡 New Features

None

🔨 Breaking

None

🚀 Efficiency Improvement

None

🐛 Bug Fixes

📖 Documentation

None

🧰 Maintenance

v3.3.3

10 Oct 18:03
Compare
Choose a tag to compare

Changes

This is a special release, put up to prevent the R package from being archived on CRAN.

See #5502 and #5525 for context.

This release only contains the changes, relevant to v3.3.2, necessary to prevent removal of the R package from CRAN.

💡 New Features

  • [PARTIALLY: only for R-package] Add support for Visual Studio 2022 @StrikerRUS (#4889)

🔨 Breaking

None

🚀 Efficiency Improvement

None

🐛 Bug Fixes

📖 Documentation

None

🧰 Maintenance

v3.3.2

07 Jan 14:53
Compare
Choose a tag to compare

Changes

🐛 Bug Fixes

📖 Documentation

  • [docs] [R-package] update cran-comments for v3.3.1 release @jameslamb (#4738)

🧰 Maintenance