SYNTOLOGY HomeExplorerAtlasCodeMethodologyAboutDevelopersFeedPricing
Paper · 2510.19040 · NeurIPS · 2025

Empowering Decision Trees via Shape Function Branching

Nakul Upadhya, Eldan Cohen

arXiv · PDF · Open in the Atlas

Code that ran

We lifted 12 functions out of this paper's own repositories and ran 0 of them in a sandbox. "Ran" means the function executed on a synthesized input and returned a value. It is not a reproduction of the paper's results.

RepositoryRoleRan
optimal-uoft/Empowering-DTs-via-Shape-Functions canonical 0 of 11
VarunBabbar/SPLIT-ICML canonical 0 of 1
FunctionStatusWhere it lives
any_label_accuracy Not yet run optimal-uoft/Empowering-DTs-via-Shape-Functions/src/ShapeCARTClassifier.py
code served (permissive licence) · get_code("90a30e599cfe53ce")
calc_classification_metrics Not yet run optimal-uoft/Empowering-DTs-via-Shape-Functions/src/metric_utils.py
code served (permissive licence) · get_code("9cf58501dd2c9474")
calc_regression_metrics Not yet run optimal-uoft/Empowering-DTs-via-Shape-Functions/src/metric_utils.py
code served (permissive licence) · get_code("d1db934874c2c81b")
calculate_total_impurity Not yet run optimal-uoft/Empowering-DTs-via-Shape-Functions/src/BranchingTree.py
code served (permissive licence) · get_code("510d343f3e138a09")
compute_partition_stats Not yet run optimal-uoft/Empowering-DTs-via-Shape-Functions/src/BranchingTreeRegressor.py
code served (permissive licence) · get_code("7c0101db17bf4361")
generate_line_orientations Not yet run optimal-uoft/Empowering-DTs-via-Shape-Functions/src/BiCART.py
code served (permissive licence) · get_code("12aeb0b59db64bc6")
get_leaf_subtree_sides Not yet run optimal-uoft/Empowering-DTs-via-Shape-Functions/src/BranchingTree.py
code served (permissive licence) · get_code("4323311931a15afb")
multi_to_single Not yet run optimal-uoft/Empowering-DTs-via-Shape-Functions/src/ShapeCARTClassifier.py
code served (permissive licence) · get_code("47b248828deccd2a")
num_leaves Not yet run VarunBabbar/SPLIT-ICML/split/src/split/utils.py
code served (permissive licence) · get_code("bfcbb7d7fb893e7d")
process_dataframe Not yet run optimal-uoft/Empowering-DTs-via-Shape-Functions/src/data_utils.py
code served (permissive licence) · get_code("423116625a3e6ca4")
run_descent Not yet run optimal-uoft/Empowering-DTs-via-Shape-Functions/src/BranchingTree.py
code served (permissive licence) · get_code("74349c4086e72212")
upsample Not yet run optimal-uoft/Empowering-DTs-via-Shape-Functions/src/ShapeCARTRegressor.py
code served (permissive licence) · get_code("693f0c6e671f0da3")

Repositories linked to this paper

Some links come from the archived Papers with Code dataset (CC BY-SA 4.0): attribution and licence.

Abstract

Decision trees are prized for their interpretability and strong performance on tabular data. Yet, their reliance on simple axis-aligned linear splits often forces deep, complex structures to capture non-linear feature effects, undermining human comprehension of the constructed tree. To address this limitation, we propose a novel generalization of a decision tree, the Shape Generalized Tree (SGT), in which each internal node applies a learnable axis-aligned shape function to a single feature, enabling rich, non-linear partitioning in one split. As users can easily visualize each node's shape function, SGTs are inherently interpretable and provide intuitive, visual explanations of the model's decision mechanisms. To learn SGTs from data, we propose ShapeCART, an efficient induction algorithm for SGTs. We further extend the SGT framework to bivariate shape functions (S 2 GT) and multi-way trees (SGT K ), and present Shape 2 CART and ShapeCART K , extensions to ShapeCART for learning S 2 GTs and SGT K s, respectively. Experiments on various datasets show that SGTs achieve superior performance with reduced model size compared to traditional axis-aligned linear trees.

For agents

The same record, over MCP at https://syntology.ai/mcp:

get_harvested_code_for_paper("2510.19040")
get_code_for_paper("2510.19040")
have("2510.19040")

Connect an agent — have() is free.