kumulant

ClassificationTree

class ClassificationTree(numClasses: Int, splitCandidates: List<SerializableSplit>, config: ClassificationTreeConfig = ClassificationTreeConfig(), concurrency: Concurrency = Concurrency.None, leafArmFactory: () -> SeriesStat<ClassCountsResult> = { ClassCountsStat(numClasses, concurrency) }, randomSeed: Int = 0)(source)

Classification mirror of RegressionTree: online VFDT decision tree where each leaf carries a per-class count accumulator and audit leaves track class counts per candidate split. Splits fire when a candidate clears the Hoeffding bound on the configured ClassificationSplitMetric (Gini or information gain).

Concurrency model matches RegressionTree: lock-free leaf updates, single split-conversion lock fired only at split-decision time.

Constructors

ClassificationTree

constructor(numClasses: Int, splitCandidates: List<SerializableSplit>, config: ClassificationTreeConfig = ClassificationTreeConfig(), concurrency: Concurrency = Concurrency.None, leafArmFactory: () -> SeriesStat<ClassCountsResult> = { ClassCountsStat(numClasses, concurrency) }, randomSeed: Int = 0)(source)

Properties

nodeCount

Number of internal + leaf nodes currently in the tree.

Functions

findLeaf

Walk to the leaf row resolves to.

merge

Structurally merge other into this tree; other is consumed.

mergeSnapshot

Snapshot merge: same rules as merge but the other side is an immutable result.

predict

Argmax class at the leaf row resolves to.

prettyPrint

fun prettyPrint(indent: String = ""): String(source)

Render the tree as nested if-else text.

probabilities

Probabilities at the leaf row resolves to.

reset

fun reset()(source)

Reset to a single fresh leaf.

rootNode

Live root node, for snapshotting.

rootSnapshot

Aggregate class-count snapshot at the root, walking leaves and split carryovers.

update

fun update(row: VectorView, classLabel: Int, weight: Double = 1.0)(source)

Fold an observation (row, classLabel) into the tree, possibly growing it.