Methods for Improving Random Forest Classification Performance Beyond Hyperparameter Tuning

With the goal of improving out-of-sample performance on a general Random Forest Classification problem, what are other things one can do in addition to tuning a single RFC model's hyperparameters?

For instance, would it make sense or add any benefit to train multiple RFCs on different subsets of a training data set, then average the prediction probabilities of those separate RFCs to create a single prediction probability to apply to a given piece of out-of-sample input data? If that would be beneficial, would it be best to randomly select a subset of the training data set to train each RFC?

Or, would it be sufficient to do a random train/test split on a percentage of a training data set and train a single RFC on the split data, but do so X number of times, then select the RFC model that ends up with the highest overall accuracy on the test data to use for the final model? Would that technically result in an overfit model?

• What for? Why does random forest not work for you? Why hyperparameter tuning is not enough in your scenario? What is the underlying problem? This sounds like an XY problem, – Tim Oct 20 at 18:14
• As a general result, the best ways to improve a model are generic to all models: (1) collect more observations, particularly that are similar to the cases that you get wrong and (2) devise more informative features. – Sycorax Oct 20 at 18:15
• Adding to @Sycorax removing some data (e.g. downsampling) from the training set is the opposite of getting more data. You may want to downsample for computational reasons, or sometimes, for dealing with unbalanced data, but not to improve performance of the model. – Tim Oct 20 at 18:58

For instance, would it make sense or add any benefit to train multiple RFCs on different subsets of a training data set, [...]

Random forest does by default train each tree on a different subset of data. I can't see how doubling this procedure would add anything.

Or, would it be sufficient to do a random train/test split on a percentage of a training data set and train a single RFC on the split data, but do so X number of times, then select the RFC model that ends up with the highest overall accuracy on the test data to use for the final model? [...]

This sounds like a bad idea. One thing is $$k$$-fold cross-validation, where we can overcome the problem of having small dataset when doing the split to train and test. What you propose is to cherry-pick the model that has best test set performance among the splits. This can easily lead to ending up with a result "overfitting to test set", because you'd pick the one that was trained on the most lucky train/test split, where the test set contained the most easy to classify examples among the splits. So this does not seem to make much sense as well.