Data train = data.clone();
Data test = train.rsplit(rng, (int) (data.size() * 0.1));
DefaultTreeBuilder treeBuilder = new DefaultTreeBuilder();
SequentialBuilder forestBuilder = new SequentialBuilder(rng, treeBuilder, train);
// grow a forest with m = log2(M)+1
treeBuilder.setM(m);
long time = System.currentTimeMillis();
log.info("Growing a forest with m={}", m);
DecisionForest forestM = forestBuilder.build(nbtrees);
sumTimeM += System.currentTimeMillis() - time;
numNodesM += forestM.nbNodes();
// grow a forest with m=1
treeBuilder.setM(1);
time = System.currentTimeMillis();
log.info("Growing a forest with m=1");
DecisionForest forestOne = forestBuilder.build(nbtrees);
sumTimeOne += System.currentTimeMillis() - time;
numNodesOne += forestOne.nbNodes();
// compute the test set error (Selection Error), and mean tree error (One Tree Error),
double[] testLabels = test.extractLabels();