kumulant

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

abstract val delta: Double(source)

Hoeffding-bound confidence threshold. Lower means splits require more evidence.

This is the delta of the bound sqrt(-ln(delta) / 2n), so it enters logarithmically: an order of magnitude buys only a modest widening of the margin a candidate has to clear.

deltaDecay

abstract val deltaDecay: Double(source)

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

abstract val maxDepth: Int(source)

Hard ceiling on tree depth.

maxNodes

abstract val maxNodes: Int(source)

Hard ceiling on internal plus leaf nodes.

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

abstract val mtry: Int?(source)

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

abstract val splitPeriod: Int(source)

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

abstract val tau: Double(source)

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.