oneapi-src / oneDAL

oneAPI Data Analytics Library (oneDAL)
https://software.intel.com/en-us/oneapi/onedal
Apache License 2.0
606 stars 213 forks source link

Feature Request: Add Support for Linear Trees in LightGBM #2817

Open dragonbra opened 3 months ago

dragonbra commented 3 months ago

I noticed that the leaf nodes in decision trees only contain a single response value, as seen in this example: https://github.com/oneapi-src/oneDAL/blob/bbe13a4bcaca8eabd3751b0ccf58ed9a044254f9/cpp/daal/include/algorithms/tree_utils/tree_utils_regression.h#L51

https://github.com/oneapi-src/oneDAL/blob/bbe13a4bcaca8eabd3751b0ccf58ed9a044254f9/examples/daal/cpp/source/gradient_boosted_trees/gbt_reg_traversed_model_builder.cpp#L92

In recent versions of the LightGBM model, a new feature called linear trees has been introduced: link to the feature. However, if I convert a linear tree model to the DAAL format, it can only store the leaf constant value, not the linear model within the leaf node.

Could this feature be added? I would greatly appreciate it.

AllenSun1024 commented 3 months ago

Hi, @dragonbra

According to your request, is it possible to use C++ interfaces to 1) convert trained LGBM models to oneDAL and 2) predict with converted oneDAL models?

Thank you~

dragonbra commented 3 months ago

Hi, @dragonbra

According to your request, is it possible to use C++ interfaces to 1) convert trained LGBM models to oneDAL and 2) predict with converted oneDAL models?

Thank you~

Hi @AllenSun1024

I have only tried converting LightGBM models to the Python version of oneDAL for inference. Since it does not support linear models, I did not explore further. Therefore, I am not sure how to use the C++ interface with oneDAL models converted from LGBM.

Subsequently, I implemented my own CUDA-accelerated inference process for LightGBM with linear_tree=true.

I hope this information helps you.

AllenSun1024 commented 3 months ago

Hi, @dragonbra

I've confirmed that No C++ converter interfaces exist.

Best, Chao