ensemble: pre-allocate tree vector capacities in forest classifiers and regressors#385
Closed
Aditya-9-6 wants to merge 79 commits into
Closed
ensemble: pre-allocate tree vector capacities in forest classifiers and regressors#385Aditya-9-6 wants to merge 79 commits into
Aditya-9-6 wants to merge 79 commits into
Conversation
…corelib#98) * build(deps): update nalgebra requirement from 0.23.0 to 0.26.2 Updates the requirements on [nalgebra](https://github.com/dimforge/nalgebra) to permit the latest version. - [Release notes](https://github.com/dimforge/nalgebra/releases) - [Changelog](https://github.com/dimforge/nalgebra/blob/dev/CHANGELOG.md) - [Commits](dimforge/nalgebra@v0.23.0...v0.26.2) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * fix: updates for nalgebre * test: explicitly call pow_mut from BaseVector since now it conflicts with nalgebra implementation * Don't be strict with dependencies Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Co-authored-by: Luis Moreno <morenol@users.noreply.github.com>
Updates the requirements on [nalgebra](https://github.com/dimforge/nalgebra) to permit the latest version. - [Release notes](https://github.com/dimforge/nalgebra/releases) - [Changelog](https://github.com/dimforge/nalgebra/blob/dev/CHANGELOG.md) - [Commits](dimforge/nalgebra@v0.23.0...v0.31.0) --- updated-dependencies: - dependency-name: nalgebra dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Luis Moreno <morenol@users.noreply.github.com>
* initial fastpair implementation * FastPair initial implementation * implement fastpair * Add random test * Add bench for fastpair * Refactor with constructor for FastPair * Add serialization for PairwiseDistance * Add fp_bench feature for fastpair bench
* Add example * Move to top * Add imports to example * Fix imports
* docs: Fix typo in doc for categorical transformer. * feat: Add option to take a column from Matrix. I created the method `Matrix::take_column` that uses the `Matrix::take`-interface to extract a single column from a matrix. I need that feature in the implementation of `StandardScaler`. * feat: Add `StandardScaler`. Authored-by: titoeb <timtoebrock@googlemail.com>
* Derive `serde::Serialize` and `serde::Deserialize` for `StandardScaler`. * Add relevant unit test. Signed-off-by: Christos Katsakioris <ckatsak@gmail.com> Signed-off-by: Christos Katsakioris <ckatsak@gmail.com>
* Update criterion requirement from 0.3 to 0.4 Updates the requirements on [criterion](https://github.com/bheisler/criterion.rs) to permit the latest version. - [Release notes](https://github.com/bheisler/criterion.rs/releases) - [Changelog](https://github.com/bheisler/criterion.rs/blob/master/CHANGELOG.md) - [Commits](bheisler/criterion.rs@0.3.0...0.4.0) --- updated-dependencies: - dependency-name: criterion dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> * fix criterion Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Luis Moreno <morenol@users.noreply.github.com>
* handle multiclass precision/recall
* grid search draft * hyperparam search for linear estimators
* feat: Add interface to build `Matrix` from rows. * feat: Add option to derive `RealNumber` from string. To construct a `Matrix` from csv, and therefore from string, I need to be able to deserialize a generic `RealNumber` from string. * feat: Implement `Matrix::read_csv`.
…smartcorelib#160) * fix: fix compilation warnings when running only with default features Co-authored-by: Luis Moreno <morenol@users.noreply.github.com>
smartcorelib#159) * feat: allocate first and then proceed to create matrix from Vec of RowVectors
* grid search draft * hyperparam search for linear estimators * grid search for ensembles * support grid search for more algos * grid search for unsupervised algos * minor cleanup
* Provide better output in flaky tests * feat: add seed parameter to multiple algorithms * Update changelog Co-authored-by: Luis Moreno <morenol@users.noreply.github.com>
* add seed param to search params * make default params available to serde * lints * create defaults for enums * lint
* feat: expose hyper tuning module in model_selection * Move to a folder Co-authored-by: Luis Moreno <morenol@users.noreply.github.com>
Co-authored-by: Luis Moreno <morenol@users.noreply.github.com>
* Fixes for release * add new test * Remove change applied in development branch * Only add dependency for wasm32 * Update ci.yml Co-authored-by: Luis Moreno <morenol@users.noreply.github.com> Co-authored-by: Lorenzo <tunedconsulting@gmail.com>
* Handle kernel serialization * Do not use typetag in WASM * enable tests for serialization * Update serde feature deps Co-authored-by: Luis Moreno <morenol@users.noreply.github.com> Co-authored-by: Lorenzo <tunedconsulting@gmail.com>
…nd regressors Signed-off-by: Aditya <adityadahale96@gmail.com>
Collaborator
|
Thanks @Aditya-9-6 |
Contributor
Author
|
Thanks! I've updated the base branch to development. Please proceed with the review. |
Collaborator
|
@Aditya-9-6 looks like using |
Collaborator
|
I tried to close and reopen it but CI is still blocked, please open a new one targeting |
Contributor
Author
|
Opened at #386 |
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.
Summary
This PR addresses outstanding
TODO: use with_capacity herenotes insrc/ensemble/random_forest_classifier.rsandsrc/ensemble/base_forest_regressor.rs.Rationale & Performance Benefit
When fitting Random Forests with a large number of trees (e.g.
n_trees = 100+), initializingtreesandmaybe_all_samplesvectors withVec::new()causes multiple dynamic vector re-allocations during the training loop.Pre-allocating vector capacities via
Vec::with_capacity(parameters.n_trees as usize):