HoeffdingTreeConfig
Growth tunables common to both VFDT trees.
RegressionTreeConfig and ClassificationTreeConfig stay separate types because each is @Serializable and part of the wire format, and because RegressionTreeConfig.metric and ClassificationTreeConfig.metric have different types; this interface is where the shared half is described once, and it is what lets the growth logic read tunables without knowing which tree it is driving.
Inheritors
Properties
delta
deltaDecay
Multiplicative decay applied to delta per depth, which slows growth near the leaves.
Deeper leaves see less of the stream, so a fixed confidence level would let them split on proportionally thinner evidence. Shrinking delta with depth counteracts that.
maxDepth
maxNodes
minSamplesLeaf
Minimum weighted samples required on each side of a candidate split.
minSamplesSplit
Minimum total weighted samples at a leaf before split evaluation runs at all.
mtry
Breiman-style random-subspace size: at every audit-leaf birth, draw a fresh random subset of this many candidates from the tree's full pool. null disables the trick and considers every candidate.
This is what decorrelates the trees in a forest. A single tree usually leaves it null.
splitPeriod
Audit every Nth observation rather than every update.
Evaluating every candidate at every observation is the dominant cost in a VFDT, and the bound moves slowly, so checking periodically loses almost nothing.
tau
If the Hoeffding bound itself shrinks below this, the leaf may split even when the runner-up is close: the classic VFDT tie-break parameter.
Without it, two candidates of genuinely equal merit deadlock forever, because the margin between them never exceeds any bound. This gives the tree permission to pick one once it has enough evidence to know the choice does not matter much.