m2cgen output for xgboost with binary:logistic objective returns raw (not transformed) scores
See original GitHub issueOur xgboost models use the binary:logistic'
objective function, however the m2cgen converted version of the models return raw scores instead of the transformed scores.
This is fine as long as the user knows this is happening! I didn’t, so it took a while to figure out what was going on. I’m wondering if perhaps a useful warning could be raised for users to alert them of this issue? A warning could include a note that they can transform these scores back to the expected probabilities [0, 1] by prob = logistic.cdf(score - base_score)
where base_score
is an attribute of the xgboost model.
In our case, I’d like to minimize unnecessary processing on the device, so I am actually happy with the current m2cgen output and will instead inverse transform our threshold when evaluating the model output from the transpiled model…but it did take me a bit before I figured out what was going on, which is why I’m suggesting that a user friendly message might be raised when an unsupported objective function is encountered.
Thanks for creating & sharing this great tool!
Issue Analytics
- State:
- Created 4 years ago
- Reactions:1
- Comments:5 (3 by maintainers)
@ehoppmann As a workaround you can just try passing the
XGBClassifier
instance instead ofXGBRegressor
one to ensure that a sigmoid is being applied in the generated code.hi,in the xgb2c code,what does output in the parameter of the function score mean and how can i get the predicted prob [0, 1] , thanks