I'm using R package randomForest
to do a regression on some biological data. My training data size is 38772 X 201
.
I just wondered---what would be a good value for the number of trees ntree
and the number of variable per level mtry
? Is there an approximate formula to find such parameter values?
Each row in my input data is a 200 character representing the amino acid sequence, and I want to build a regression model to use such sequence in order to predict the distances between the proteins.
The number of variables selected at each split is denoted by mtry in randomforest function. Select mtry value with minimum out of bag(OOB) error. In this case, mtry = 4 is the best mtry as it has least OOB error. mtry = 4 was also used as default mtry.
mtry: Number of variables randomly sampled as candidates at each split. ntree: Number of trees to grow.
The randomForest function of course has default values for both ntree and mtry . The default for mtry is often (but not always) sensible, while generally people will want to increase ntree from it's default of 500 quite a bit.
Trees are split to many nodes using random subsets of variables (mtry), and the default mtry value is the square root of the total number of variables.
The default for mtry is quite sensible so there is not really a need to muck with it. There is a function tuneRF
for optimizing this parameter. However, be aware that it may cause bias.
There is no optimization for the number of bootstrap replicates. I often start with ntree=501
and then plot the random forest object. This will show you the error convergence based on the OOB error. You want enough trees to stabilize the error but not so many that you over correlate the ensemble, which leads to overfit.
Here is the caveat: variable interactions stabilize at a slower rate than error so, if you have a large number of independent variables you need more replicates. I would keep the ntree an odd number so ties can be broken.
For the dimensions of you problem I would start ntree=1501
. I would also recommended looking onto one of the published variable selection approaches to reduce the number of your independent variables.
The short answer is no.
The randomForest
function of course has default values for both ntree
and mtry
. The default for mtry
is often (but not always) sensible, while generally people will want to increase ntree
from it's default of 500 quite a bit.
The "correct" value for ntree
generally isn't much of a concern, as it will be quite apparent with a little tinkering that the predictions from the model won't change much after a certain number of trees.
You can spend (read: waste) a lot of time tinkering with things like mtry
(and sampsize
and maxnodes
and nodesize
etc.), probably to some benefit, but in my experience not a lot. However, every data set will be different. Sometimes you may see a big difference, sometimes none at all.
The caret package has a very general function train
that allows you to do a simple grid search over parameter values like mtry
for a wide variety of models. My only caution would be that doing this with fairly large data sets is likely to get time consuming fairly quickly, so watch out for that.
Also, somehow I forgot that the ranfomForest package itself has a tuneRF
function that is specifically for searching for the "optimal" value for mtry
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With