Implemented multiclass classification support across the C++ core and both Python wrappers, including fitting, prediction, metrics, simplification, and visualization. - #69
Merged
Conversation
…y clf. updated interface to make regressor compatible
…eful if softmax can appear across the tree
Collaborator
Author
|
Looks good. approved |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Multiclass support
BrushClassifierandDeapClassifier.predict_probasupport for multiclass programs, individuals, and engines.multiclassification.ipynbwith sklearn data, tree output, and Graphviz rendering.Fitting and optimization
Binary classification now minimizes weighted log loss using
sqrt(weight × log_loss)residuals.Class weights are propagated from estimator parameters into fitting while preserving existing unweighted behavior.
Multiclass fitting now optimizes float/logit parameters using weighted multinomial log loss.
Split thresholds are greedily fitted and refreshed whenever
fit()runs:SplitOnfits its decision subtree first.SplitBestrefreshes its selected feature and threshold.Split nodes are excluded from Ceres parameter vectors so their thresholds do not interfere with subsequent float parameters.
Corrected regression split gain to use child-size-weighted variance rather than favoring small partitions.
Simplification
Fixed an issue where multiclass constant simplification treated every subtree as matrix-valued. Class-logit branches are vector-valued, so dispatching
Sumas matrix-valued could produceSum(MatrixF)and incorrectly collapse valid branches.class 0,class 1, etc.Validation
PATH).ArrayFJetSoftmax callable.predict_probais now correctly bound for multiclass programs, individuals, and engines.