Fitting Linear Functions inside Tree leaves (Feature Request)
- Dominant language
- C++
- Stars
- 28.8k
- Forks
- 8.9k
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 54
Description
I was wondering if it where possible to develop an new booster, that instead of taking the mean of values inside a leaf instead fitted a linear function. In cases of lower numbers a features its possible that a piece-wise linear model will perform better than a tree based one. Requiring less leaves and trees to model smoothly changing functions. In certain cases this could produce higher accuracy predictions. An additional benefit is that it would allow extrapolation which may be important in certain use cases.
I have found two implementations of this
LinXGBoost: Is written in purely python and describes itself as an extension to XGBoost, However in the paper it mentions it hasn't been written with performance in mind.
[https://github.com/ldv1/LinXGBoost](https://github.com/ldv1/LinXGBoost)
[https://arxiv.org/pdf/1710.03634.pdf](https://arxiv.org/pdf/1710.03634.pdf)
GBDT-PL: Has a python API, think the back end is in C. This performs very well when compared to other gradient boosted decision trees. (at least on the tests/hyperparameters they chose). The paper details many optimisations to make the code run quickly .
[https://github.com/GBDT-PL/GBDT-PL](https://github.com/GBDT-PL/GBDT-PL)
[https://arxiv.org/pdf/1802.05640.pdf](https://arxiv.org/pdf/1802.05640.pdf)
An additional optimization I had thought of was you could specify only a subset of the features to fit the linear fit to.
Many thanks
EDIT I fixed the broken links
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.