Optimal Classification Trees for Continuous Feature Data Using Dynamic Programming with Branch-and-Bound

Catalin E. Brita, Jacobus G. M. van der Linden, Emir Demirović
1/14/2025
cs.LGcs.AIcs.DS

No official code found. Best implementation: AlgTUDelft/pystreed (21 stars, MIT, last commit 2026-03-23). 1 more below.

Abstract

Computing an optimal classification tree that provably maximizes training performance within a given size limit, is NP-hard, and in practice, most state-of-the-art methods do not scale beyond computing optimal trees of depth three. Therefore, most methods rely on a coarse binarization of continuous features to maintain scalability. We propose a novel algorithm that optimizes trees directly on the continuous feature data using dynamic programming with branch-and-bound. We develop new pruning techniques that eliminate many sub-optimal splits in the search when similar to previously computed splits and we provide an efficient subroutine for computing optimal depth-two trees. Our experiments demonstrate that these techniques improve runtime by one or more orders of magnitude over state-of-the-art optimal methods and improve test accuracy by 5% over greedy heuristics.

View on arXivView PDF

Code Implementations(2)

AlgTUDelft/pystreedCommunity100%
MIT

Python Implementation of STreeD: Dynamic Programming Approach for Optimal Decision Trees with Separable objectives and Constraints

216C, C++Oct 24, 20237 months agoMIT
ConSol-Lab/contreeCommunity100%
MIT

ConTree: Optimal Decision Trees for Continuous Feature Data

84C++, CMakeDec 17, 20247 months agoMIT

Similar Papers

Cite this paper

@article{brita2025optimal,
  title  = {Optimal Classification Trees for Continuous Feature Data Using Dynamic Programming with Branch-and-Bound},
  author = {Catalin E. Brita and Jacobus G. M. van der Linden and Emir Demirović},
  year   = {2025},
  eprint = {2501.07903},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2501.07903v1}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2501.07903.svg)](https://codeofpaper.com/paper/2501.07903)

Discussion