1. A computer implemented method at a machine learning system comprising: accessing a plurality of training examples; storing a graph of connected nodes at a memory of the machine learning system, the nodes comprising a plurality of split nodes and wherein the nodes have a plurality of split function parameters specifying tests for determining flow of elements through the graph; and adding, using a processor, new nodes to the graph by applying a training objective function to elements of the training examples reaching nodes of the graph according to the split function parameters, the adding including: adding a layer of child nodes to the graph; selecting, by the training objective function, between possible branch assignments between a parent node and child nodes of the layer of child nodes; and selecting, by the training objective function, between a randomly generated set of possible split function parameter values.