Closed maurever closed 4 years ago
Yes, For the objective function with RenewTreeOutput
, like quantile, mae, etc, the mononote constraint will be broken.
There are not good solutions so far, as this line search process is optimized for different leaves independently.
I don't think this is a bug. will create a PR to warn the user when using them together. Also, ping @CharlesAuguste for future possible solutions.
I am not familiar with how the quantile objective function works, but I will take a look!
I gave this some thoughts, and one way I can see this working would be:
I don't have any theoretical guarantee that this would work, but it seems like a reasonable procedure to me. Any thoughts @guolinke ?
@CharlesAuguste thank you so much! Can't we just update the leaf outputs after RenewTreeOutput?
theoretically, the post-fix solution cannot learn the "optimal" tree structure, as we don't consider MC during tree growth. But the RenewTreeOut also is a post-fix solution, for the tree structure is learned by the different objective.
@CharlesAuguste thank you so much! Can't we just update the leaf outputs after RenewTreeOutput?
theoretically, the post-fix solution cannot learn the "optimal" tree structure, as we don't consider MC during tree growth. But the RenewTreeOut also is a post-fix solution, for the tree structure is learned by the different objective.
@guolinke yes updating leaf outputs after RenewTreeOutput should work the same as far as I understand it. I can give that a try in the coming days, and we'll see how that works!
@guolinke yes updating leaf outputs after RenewTreeOutput should work the same as far as I understand it. I can give that a try in the coming days, and we'll see how that works!
@CharlesAuguste was this ever fixed?
Unfortunately I haven't fixed it, and I am not able to spend time on it right now. I am sorry about that.
was this ever fixed?
was this ever fixed?
Thanks @alisoltanisobh ! Looking at #3380, the PR that resulted in this issue being automatically closed, I don't think so.
I've renamed this to "support monotone constraints with quantile distribution" and added it to #2302, where we track other feature requests for this project.
This issue has been automatically locked since there has not been any recent activity since it was closed. To start a new related discussion, open a new issue at https://github.com/microsoft/LightGBM/issues including a reference to this.
I tried quantile distribution while the monotone constraint is set and it looks it is not implemented correctly. The result prediction is not monotone, see the example and image bellow.
How you are using LightGBM?
Environment info
Operating System: Linux Debian 10.5 (x86-64)
Python version: Python 3.7.3rc1
LightGBM version or commit hash: lightgbm==2.3.1
Reproducible example
Result plot
Steps to reproduce
python example.py