Releases: microsoft/LightGBM
v4.5.0
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
- [docs] update GitHub Actions badges in README @StrikerRUS (#6570)
- [docs] Update badge for Link checks workflow @StrikerRUS (#6568)
- [python-package] [docs] Expand class docs for Dataset @Plenitude-ai (#6558)
- [docs] fix link to multiple OpenMP issue description @StrikerRUS (#6562)
- [docs] Add NuGet version badge @StrikerRUS (#6549)
- [docs] remove link to Roadmap (fixes #6556) @jameslamb (#6557)
- [docs] remove outdated docs from the repo @StrikerRUS (#6552)
- [docs] Add conda downloads badge @StrikerRUS (#6546)
- [docs] update and simplify installation docs @jameslamb (#6536)
- [doc] fix documentation for quantized training @shiyu1994 (#6528)
- [docs] fix FAQ markdown @StrikerRUS (#6521)
- [docs] [R-package] update cran-comments.md @jameslamb (#6499)
- [docs] remove pmml redirect, simplify some other docs @jameslamb (#6490)
🧰 Maintenance
- release v4.5.0 @jameslamb (#6538)
- [ci] modify CodeQL settings @jameslamb (#6563)
- [ci] revert clang-18 LD_LIBRARY_PATH workaround @jameslamb (#6559)
- [ci] [R-package] help linker find libstdc++.so.1 in clang18 job (fixes #6553) @jameslamb (#6554)
- [ci] update codeowners @jameslamb (#6542)
- [ci] [R-package] use --no-xattrs when re-tarring CRAN-style package @jameslamb (#6540)
- [ci] [R-package] add CI jobs covering more CRAN "additional checks", fix R_NO_REMAP warnings (fixes #6369) @jameslamb (#6523)
- [ci] [R-package] add arm64 macOS R-package CI job (fixes #6481) @jameslamb (#6494)
- [ci] restore aarch64 linux builds (fixes #6509) @jameslamb (#6527)
- [test][python] fix pandas DeprecationWarning about
is_sparse
function @StrikerRUS (#6532) - fix cpp casting errors "Comparison of narrow type with wide type in loop condition" @StrikerRUS (#6533)
- [python-package] avoid overwriting dependencies via 'build-python.sh install' @jameslamb (#6526)
- [tests][python] fix nan in pandas bool column @StrikerRUS (#6530)
- Remove template parameters from copy constructor @hgminh95 (#6514)
- [ci] prevent
lgb.model
andlgb.pkl
files being left behind after testing @nicklamiller (#6518) - [ci] [R-package] run 'R CMD check' as a foreground task @jameslamb (#6508)
- [CMake] Use CMAKE_MSVC_RUNTIME_LIBRARY to apply /MT @hcho3 (#6484)
- [ci] resolve shellcheck errors in .ci/check_python_dists.sh @Kunal-Singh-Dadhwal (#6503)
- [ci] skip aarch64 linux job @jameslamb (#6517)
- [R-package] Use
Rf_
-prefixed versions of protect/unprotect @david-cortes (#6502) - [ci] reduce repetition of BUILD_DIRECTORY in CI scripts @jameslamb (#6497)
- [ci] remove OpenMP / MKL workaround in CI jobs @jameslamb (#6496)
- [ci] [docs] fix link-checks job @jameslamb (#6495)
- [python-package] Change build settings to set strict-config to false @Jorricks (#6493)
- [ci] remove unnecessary package installations in CI @jameslamb (#6488)
- chore: update dataset_loader.cpp @eltociear (#6483)
- bump development version to 4.4.0.99 @jameslamb (#6485)
v4.4.0
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()
tolgb.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
- release v4.4.0 @jameslamb (#6439)
- [python-package] add a few type hints in LGBMModel.fit() @jameslamb (#6470)
- [python-package] clarify max_depth warning and limit when it is emitted @jameslamb (#6402)
- [ci] upgrade linters to latest version @jameslamb (#6472)
- [ci] [R-package] add new linters from {lintr} 3.1.1 @jameslamb (#6471)
- [python-package] make LGBMDeprecationWarning inherit from FutureWarning @jameslamb (#6447)
- [ci] further simplify CI configurations @jameslamb (#6463)
- [ci] fix CUDA 11.8 builds (fixes #6466) @jameslamb (#6465)
- [ci] simplify CI configurations, parallelize compilation, test CUDA on Ubuntu 22.04 @jameslamb (#6458)
- [ci]: Bump actions/checkout from 1 to 4 in the ci-dependencies group @dependabot (#6453)
- [cmake] switch to FindCUDAToolkit @characat0 (#6457)
- [R-package] [python-package] deprecate Dataset arguments to cv() and train() @jameslamb (#6446)
- [ci] Add dependabot configuration @borchero (#6449)
- [python-package] upgrade to scikit-build-core 0.9.3 @jameslamb (#6263)
- deprecate HDFS support @jameslamb (#6443)
- [c++] remove uses of '..' in headers @jameslamb (#6409)
- [R-package] always name the shared library 'lightgbm', not 'lib_lightgbm' @jameslamb (#6432)
- [R-package] [ci] Manually install 'Matrix' (fixes #6433) @jameslamb (#6434)
- [ci] Skip Arrow tests on AppVeyor, use Intel macOS runners, upgrade to XCode 14.3 on macOS jobs, disable MacOS MPI jobs @borchero (#6425)
- [ci] raise floors on CI dependencies @jameslamb (#6375)
- [ci] make shell scripts stricter @jameslamb (#6266)
- [python-package] prevent build-python.sh from modifying already-installed dependencies @jameslamb (#6403)
- [ci] reduce hard-coding of host architecture @jameslamb (#6395)
- [c++] remove unused variable 'need_connect_cnt' @jameslamb (#6410)
- [ci] clean source directory at the beginning of every Azure DevOps build @jameslamb (#6416)
- [ci] Fix Azure Pipeline Agents @shiyu1994 (#6407)
- [ci] [R-package] re-enable r-sanitizers jobs (fixes #6367) @jameslamb (#6374)
- [ci] prevent trailing whitespace, ensure files end with newline @jameslamb (#6373)
- [ci] [docs] update some docs and CI dependencies @jameslamb (#6346)
- [ci] [python-package] remove unused flake8 configuration @jameslamb (#6372)
- [ci] put ceiling on graphviz in Python 3.7 jobs @jameslamb (#6370)
- [ci] Fix R 3.6 tests, dask tests, compatibility with dask>=2024.3.1 @borchero (#6357)
- [ci] [python-package] check for untyped definitions with mypy @jameslamb (#6339)
- [ci] ignore ruff-format changes in git blame (fixes #6304) @jameslamb (#6345)
- [c++] remove unnecessary include in CLI @jameslamb (#6342)
- [ci] [python-package] enable ruff-format on all Python code @jameslamb (#6336)
- [python-package] remove unused type alias @jameslamb (#6341)
- [ci] [python-package] enforce 'pylint' checks (fixes #4308) @jameslamb (#6334)
- [ci] [python-package] enable ruff-format on tests and examples @jameslamb (#6317)
- [python-package] fix mypy error about pyarrow data @jameslamb (#6333)
- [ci] remove unnecessary workarounds in R-package macOS jobs @jameslamb (#6331)
- [ci] remove workflow_dispatch from no-response configuration @jameslamb (#6330)
- [ci] fix no-response permissions @jameslamb (#6323)
- [ci] enable ruff-format on some files, add pre-commit config @jameslamb (#6308)
- [ci] ensure shell script exit codes are in range 0-255 @jameslamb (#6305)
- [ci] fix installation of clang-18 (fixes #6306) @jameslamb (#6307)
- [ci] [R-package] pin to older setup-pandoc for R 3.6 jobs (fixes #6298) @jameslamb (#6299)
- bump development version to 4.3.0.99 @jameslamb (#6287)
v4.3.0
Changes
💡 New Features
- [CUDA] Add arch=8.9 to CUDA_ARCHS for RTX 40XX @DmitryUlyanov (#6272)
🔨 Breaking
- [cmake] [c++] require CMake 3.18+ @jameslamb (#6260)
- [R-package] remove readRDS.lgb.Booster() and saveRDS.lgb.Booster() @jameslamb (#6246)
🚀 Efficiency Improvement
- [R-package] Remove non-beneficial parallelization @david-cortes (#6209)
🐛 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
- [docs] Add LightGBMLSS to README @StatMixedML (#6254)
- [ci] [docs] add Oliver to CODEOWNERS @jameslamb (#6247)
- Fix small typo and grammar in docs @arunstar (#6245)
🧰 Maintenance
- [ci] fix conda env creation in 'regular' CI job (fixes #6282) @jameslamb (#6283)
- [R-package] [ci] switch vignettes from 'rmarkdown' to 'markdown' @jameslamb (#6258)
- [python-package] fix mypy error about pandas categorical features @jameslamb (#6253)
- [ci] update issue-locking workflow @jameslamb (#6256)
- [ci] upgrade to GoogleTest v1.14.0 (fixes #5976) @jameslamb (#5981)
- [ci] [R-package] speed up valgrind job @jameslamb (#6237)
- bump development version to 4.2.0.99 @jameslamb (#6241)
v4.2.0
✨ 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
- [R-package] Fix inefficiency in retrieving pointers @david-cortes (#6208)
- [CUDA] CUDA Quantized Training (fixes #5606) @shiyu1994 (#5933)
🐛 Bug Fixes
- fix errors from MSVC '/permissive-' mode (fixes #6230) @Zhaojun-Liu (#6232)
- [R-package] [c++] add tighter multithreading control, avoid global OpenMP side effects (fixes #4705, fixes #5102) @jameslamb (#6226)
- [python-package] take shallow copy of dataframe in predict (fixes #6195) @jmoralez (#6218)
- Fix null handling for Arrow data @borchero (#6227)
- [R-package] use safer pattern for error formatting (fixes #6212) @jameslamb (#6216)
- [python-package] fix libpath.py @shiyu1994 (#6192)
- set explicit number of threads in every OpenMP
parallel
region @jameslamb (#6135) - ignore unknown parameters when loading from model file @jmoralez (#6126)
- [python-package] [R-package] include more params in model text representation (fixes #6010) @jameslamb (#6077)
- [fix] fix quantized training (fixes #5982) (fixes #5994) @shiyu1994 (#6092)
- [python-package] Fix misdetected objective after multiple calls to
LGBMClassifier.fit
@david-cortes (#6002)
📖 Documentation
- [docs] remove links to Laurae++ site @jameslamb (#6193)
- [docs] reduce redirects in docs links @jameslamb (#6181)
- [docs] fix broken links @jameslamb (#6161)
🧰 Maintenance
- release v4.2.0 @jameslamb (#6191)
- [ci] [R-package] allow more possibly-lost warnings from valgrind @jameslamb (#6233)
- [ci] Upgrade Azure VMSS to use Mariner Linux @shiyu1994 (#6222)
- Add msvc conformance check @Zhaojun-Liu (#6234)
- [python-package] Add tests for passing Arrow arrays with empty chunks @borchero (#6210)
- [R-package] change CRAN maintainer @jameslamb (#6224)
- [CUDA] fix typo in error message @jameslamb (#6207)
- [python-package] ignore mypy errors related to ctypes string buffers @jameslamb (#6198)
- [python-package] consolidate pandas-to-numpy conversion code @jameslamb (#6156)
- [R-package] standardize naming of internal functions @jameslamb (#6179)
- [R-package] remove unreachable code @jameslamb (#6180)
- allow new files in include/LightGBM @jameslamb (#6177)
- [R-package] Use
cat()
instead ofprint()
for metrics and callbacks @david-cortes (#6171) - [ci] resolve warning in tests @jameslamb (#6154)
- [ci] use
mamba
instead ofconda
in macOS and Linux CI jobs @borchero (#6140) - factor out uses of omp_get_num_threads() and omp_get_max_threads() outside of OpenMP wrapper @jameslamb (#6133)
- remove unnecessary allocations in HistogramSumReducer @jameslamb (#6132)
- [ci] [R-package] enforce more {lintr} checks @jameslamb (#6130)
- fix compiler warnings for CPP tests @jameslamb (#6124)
- [ci] [R-package] test against R 4.3 on Windows @jameslamb (#6061)
- [python-package] reorganize early stopping callback @jameslamb (#6114)
- [python-package] simplify Dataset._compare_params_for_warning() @jameslamb (#6120)
- [ci] fix sh-compatibility issue in build-cran-package.sh @jameslamb (#6118)
- [python-package] remove unnecessary allocations in ctypes code @jameslamb (#6111)
- [python-package] fix mypy errors in Dataset construction @jameslamb (#6106)
- [ci] ensure correct R version is used on GitHub Actions (fixes #5640) @jameslamb (#6107)
- [python-package] fix mypy error about eval result tuples @jameslamb (#6105)
- [python-package] fix mypy error from Dataset.pandas_categorical @jameslamb (#6098)
- [ci] Fix typo in dependencies @borchero (#6100)
- [python-package] fix mypy errors related to eval result parsing in callbacks @jameslamb (#6096)
- [python-package] mark EarlyStopException as part of public API @jameslamb (#6095)
- [python-package] fix mypy errors related to eval result tuples @jameslamb (#6097)
- update to fmt 10.1.1, fast_double_parser 0.7.0 @jameslamb (#6074)
v4.1.0
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 tolightgbm()
@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
- [python-package] [docs] Update key format of eval_hist in docstring example @Alnusjaponica (#5980)
- [docs] add vaex-ml to list of external repositories @jameslamb (#6085)
- [ci] [docs] fix broken ACM links @jameslamb (#6083)
- [docs] Fix typo in README @kyleengel (#6071)
- [docs] fix broken links @jameslamb (#6059)
- Fix Python Dockerfile @GyuminJack (#5984)
🧰 Maintenance
- Release v4.1.0 @jameslamb (#6076)
- Remove superfluous todo from gitignore @borchero (#6081)
- [python-package] simplify processing of pandas data @jameslamb (#6066)
- [ci] [R-package] test against R 4.3 on Linux and macOS @jameslamb (#6075)
- reduce verbosity of some log messages @jameslamb (#6073)
- [python-package] remove CVBooster._append() @jameslamb (#6057)
- [python-package] use dataclass for CallbackEnv @jameslamb (#6048)
- [ci] [python-package] add more linting checks @jameslamb (#6049)
- [ci] prevent lock-threads from locking issues with label 'feature request' @jameslamb (#6047)
- [ci] add bot to lock inactive issues and PRs @jameslamb (#6037)
- [ci] fix GPG key download for R Linux jobs (fixes #6038) @jameslamb (#6039)
- [ci] enforce dask version to be >=2023.5.0 in some builds (fixes #6030) @shiyu1994 (#6032)
- [ci] [R-package] use {lintr} 3.1 @jameslamb (#5997)
- [python-package] replace np.find_common_type with np.result_type @jmoralez (#5999)
- [ci] simplify CODEOWNERS @jameslamb (#5998)
- [R-package] consolidate testing constants in helpers file @jameslamb (#5992)
- [R-package] remove unused internal variables @jameslamb (#5991)
- [ci] use newer h5py in AppVeyor jobs (fixes #5995) @jameslamb (#5996)
- [python-package] make _InnerPredictor construction stricter @jameslamb (#5961)
Note
This release of the R package was not submitted to CRAN, due to the issues documented in #5987.
v4.0.0
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... justpip 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!)
- now uses
- R package:
- efficient support for more data types in prediction, like
dgCMatrix
anddsparseMatrix
(thanks @david-cortes!) - much more idomatic interface... e.g. support for
saveRDS()
andreadRDS()
forBooster
,print()
andsummary()
methods forDataset
(thanks @david-cortes!) - various bug fixes related to multiple competing ways to provide parameters
- support for R 4.2, 4.3
- efficient support for more data types in prediction, like
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 newerpip
, see pypa/pip#11358)- see https://github.com/microsoft/LightGBM/blob/master/python-package/README.rst for new patterns
- see pypa/pip#11358 and #5061 for background
- dropped support for installation with
MSBUild.exe
... that now requires compilinglib_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 = ...)
inpredict()
, for consistency with base R and most other machine learning projects
💡 New Features
- [python-package] add 'pandas' extra @jameslamb (#5937)
- [CUDA] Add more CUDA Regression Metrics @Xuweijia-buaa (#5924)
- [python-package] adding max_category_values parameter to create_tree_digraph method (fixes #5687) @moziada (#5818)
- [c++] support building with Ninja on Linux @jameslamb (#5910)
- add CMakeLists options to disable building CLI, installing headers @jameslamb (#5880)
- Add quantized training (CPU part) @shiyu1994 (#5800)
- [CUDA] Add quantile regression objective for new CUDA version @shiyu1994 (#5605)
- [CUDA] Add quantile metric for new CUDA version (contribute to #5163) @shiyu1994 (#5665)
- [python-package] add Booster.set_leaf_output method @jmoralez (#5712)
- feature: Add serialization of reference dataset @svotaw (#5427)
- [R-package] Accept factor labels and use their levels @david-cortes (#5341)
- [CUDA] Add binary logloss metric for new CUDA version @shiyu1994 (#5635)
- [CUDA] Add binary logloss metric for new CUDA version @shiyu1994 (#5635)
- Decouple Boosting Types (fixes #3128) @lyf-00 (#4827)
- [CUDA] Add L2 metric for new CUDA version @shiyu1994 (#5633)
- [CUDA] Add rmse metric for new CUDA version @shiyu1994 (#5611)
- Build integrated OpenCL Linux wheels @jgiannuzzi (#5252)
- [CUDA] Add Poisson regression objective for cuda_exp and refactor objective functions for cuda_exp @shiyu1994 (#5486)
- [CUDA] Add multiclass_ova objective for cuda_exp @shiyu1994 (#5491)
- [python-package] add install option to enable printing of time costs @Remy-Luciani (#5497)
- [python-package][R-package] load parameters from model file (fixes #2613) @jmoralez (#5424)
- [CUDA] Add multiclass objective for cuda_exp @shiyu1994 (#5473)
- [CUDA] Add feature interaction constraint for cuda_exp (fix #4785) @shiyu1994 (#5474)
- [CUDA] Add rank_xendcg objective for cuda_exp @shiyu1994 (#5472)
- [CUDA] Add fair regression objective for cuda_exp @shiyu1994 (#5469)
- [CUDA] Add lambdarank objective for cuda_exp @shiyu1994 (#5453)
- [CUDA] Add Huber regression objective for cuda_exp @shiyu1994 (#5462)
- [CUDA] Add L1 regression objective for cuda_exp @shiyu1994 (#5457)
- [CUDA] L2 regression objective for cuda_exp @shiyu1994 (#5452)
- [CUDA] Add binary objective for cuda_exp @shiyu1994 (#5425)
- [R-package] Add remainder of prediction funtions @david-cortes (#5312)
- [python-package] support saving and loading CVBooster (fixes #3556) @nyanp (#5160)
- feature: Add true streaming APIs to reduce client-side memory usage @svotaw (#5299)
- [python-package] highlight the path a sample takes through a tree in
plot_tree
andcreate_tree_digraph
(fixes #4784) @jmoralez (#5119) - reproducible parameter alias resolution for wrappers (fixes #5304) @jmoralez (#5338)
- [CUDA] Initial work for boosting and evaluation with CUDA @shiyu1994 (#5279)
- [python-package] add validate_features argument to refit @jmoralez (#5331)
- [python-package] check feature names in predict with dataframe (fixes #812) @jmoralez (#4909)
- [R-package] Add sparse feature contribution predictions @david-cortes (#5108)
- [python-package][R-package] allow using feature names when retrieving number of bins @jmoralez (#5116)
- [R-package] Keep row names in output from
predict
@david-cortes (#4977) - [python] make
reset_parameter
callback pickleable @StrikerRUS (#5109) - [python] make
record_evaluation
callback pickleable @StrikerRUS (#5107) - [python] make
log_evaluation
callback pickleable @StrikerRUS (#5101) - [python] allow to register any custom logger (fixes #4783) @RustingSword (#4880)
- Load initial scores with binary data files in CLI version @shiyu1994 (#4807)
- [R-package] Rename
weight
->weights
@david-cortes (#4975) - [CUDA] New CUDA version Part 1 @shiyu1994 (#4630)
- [python] make
early_stopping
callback pickleable @Yard1 (#5012) - [c-api][python-package][R-package] expose feature num bin @jmoralez (#5048)
- [python-package] [R-package] propagate the best iteration of cvbooster into the individual boosters @jmoralez (#5066)
- [python-package] add support for pandas nullable types @jmoralez (#4927)
- [R-package] Promote objective and init_score to top-level arguments in
lightgbm()
@david-cortes (#4976) - [python] Start supporting Python 3.10 @StrikerRUS (#4893)
- [python-package] support customizing Dataset creation in Booster.refit() (fixes #3038) @TremaMiguel (#4894)
- [dask] add support for custom objective functions (fixes #3934) @jameslamb (#4920)
- [R-package] added argument eval_train_metric to lgb.cv() (fixes #4911) @mayer79 (#4918)
- Add support for Visual Studio 2022 @StrikerRUS (#4889)
- Add C API function that returns all parameter names with their aliases @StrikerRUS (#4829)
- [python][sklearn] respect parameters for predictions in
init()
andset_params()
methods @StrikerRUS (#4822) - Add customized parser support @chjinche (#4782)
- [R-package] Add
print()
andsummary()
methods for Booster @david-cortes (#4686) - Add 'nrounds' as an alias for 'num_iterations' (fixes #4743) @mikemahoney218 (#4746)
- [python-package] early stopping min_delta (fixes #2526) @jmoralez (#4580)
- [python][sklearn] respect objective aliases @StrikerRUS (#4758)
- [python][sklearn] add
n_estimators_
andn_iter_
post-fit attributes @StrikerRUS (#4753)
🔨 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...
v3.3.5
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
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
- prefer 'vsnprintf' to 'vsprintf' @jameslamb (#5561)
📖 Documentation
None
🧰 Maintenance
- [ci] test against R 4.2.2 @jameslamb (#5621)
v3.3.3
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
- Check existence of inet_pton for win32 in CMakeLists.txt (fixes #5019) @shiyu1994 (#5159)
- [ci] [R-package] use R 4.2.1 in Windows CI jobs (fixes #4881) @jameslamb (#5503)
- [R-package] fix test on non-ASCII features in non-UTF8 locales @jameslamb (#5526)
📖 Documentation
None
🧰 Maintenance
- [ci] run Appveyor checks on PRs targeting release/ branches @jameslamb (#5528)
- [ci] run CI on pull requests targeting release/ branches @jameslamb (#5527)
- [ci] [R-package] ensure that MSVC jobs fail when tests fail (fixes #5439) @jameslamb (#5448)
v3.3.2
Changes
🐛 Bug Fixes
- [R-package] Apply patch for R4.2 on Windows @shiyu1994 (#4923)
📖 Documentation
- [docs] [R-package] update cran-comments for v3.3.1 release @jameslamb (#4738)
🧰 Maintenance
- [ci] Temporary pin dask version at CI @StrikerRUS (#4770)