myui edited a comment on issue #198: [WIP][HIVEMALL-245] Refactor RandomForest for Sparse Data handling URL: https://github.com/apache/incubator-hivemall/pull/198#issuecomment-518488243 TODO - [x] Fixed to use low/high range for samples instead of bags - [x] prune redundant branches - [x] reduce memory usage by using RoaringBitmap for AttributeType - [ ] support prediction tracing https://issues.apache.org/jira/browse/HIVEMALL-171 - [x] refactor RegressionTree as well - [ ] introduce more [sophisticated post pruning](https://en.wikipedia.org/wiki/Decision_tree_pruning#Reduced_error_pruning) - [ ] support the default value for missing values - [ ] Fix split handling of sparse numeric values - problem: split does not occur when column values have a single value - if(x<=1.0) { .. } else { ... } never split where sparse x is already 1.0 - if there are only a single value for a column, then treat it as nominal value (?) - [ ] use more robust RNG in [feature sampling](https://github.com/apache/incubator-hivemall/blob/master/core/src/main/java/hivemall/smile/classification/DecisionTree.java#L636) ``` Reservoir Sampling returns not-well shuffled result for small stream but it’s accepted in Best splitter (?) => more randomness might be required (replace java.util.Random ?) ``` - [ ] optimize [split](https://github.com/scikit-learn/scikit-learn/blob/4de404d46d24805ff48ad255ec3169a5155986f0/sklearn/tree/_tree.pyx#L224) ``` min_sample_leaf >= 2 is satisfied iff min_sample_split >= 4 So, split only happens when samples in intermediate nodes has >= 2 * min_sample_leaf nodes. min_sample_leaf = 2 replaces min_sample_split = 3 with min_sample_split = 4 ``` - [ ] memoize [a redundant split computation](https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/tree/_splitter.pyx#L1241) ``` Skip the CPU intensive evaluation of the impurity criterion for features that were already detected as constant (hence not suitable for good splitting) by ancestor nodes and save the information on newly discovered constant features to spare computation on descendant nodes. ```
---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services