// Find the column with the best split (lowest score). Unlike RF, DRF // scores on all columns and selects splits on all columns. @Override public DTree.Split bestCol(UndecidedNode u, DHistogram[] hs) { DTree.Split best = new DTree.Split( -1, -1, null, (byte) 0, Double.MAX_VALUE, Double.MAX_VALUE, Double.MAX_VALUE, 0L, 0L, 0, 0); if (hs == null) return best; for (int i = 0; i < u._scoreCols.length; i++) { int col = u._scoreCols[i]; DTree.Split s = hs[col].scoreMSE(col, _tree._min_rows); if (s == null) continue; if (s.se() < best.se()) best = s; if (s.se() <= 0) break; // No point in looking further! } return best; }