ODTlearn: A Package for Learning Optimal Decision Trees for Prediction and Prescription
Listen
Radio episode about this paper
Transcript
Introduction to the show: ident: AI Radio. Generated commentary on the latest Artificial Intelligence papers.
Tom: Next we'll be talking about the paper "ODTlearn: A Package for Learning Optimal Decision Trees for Prediction and Prescription".
Jane: The paper was written by Patrick Vossler, Nathan Justin, Sina Aghaei, Nathanael Jo, Andrés Gómez et al. from University of Southern California.
Tom: Stay tuned as we take you through the paper and discuss its implications.
Title: Tom: Welcome back to the show, everyone. Today we’re looking at a paper that’s got me genuinely excited — it’s called “ODTlearn: A Package for Learning Optimal Decision Trees for Prediction and Prescription.” Jane, when you first saw that title, what jumped out at you?
Jane: Oh, Tom, the word “optimal” is the big one for me. Most decision trees you’ve seen in tools like scikit-learn are built with greedy heuristics — they make the best split at each step without looking ahead. This package actually solves for the best tree, globally, using math. That’s a huge difference.
Tom: Right, and the second part of the title — “prediction and prescription” — that’s the part that got me curious. We’re not just classifying things anymore. We’re actually deciding what action to take, like which treatment to give a patient.
Jane: Exactly. And the authors here are a team from USC — Patrick Vossler, Sina Aghaei, Nathan Justin, Nathanael Jo, Andrés Gómez, and Phebe Vayanos. They’ve been publishing on this mixed-integer optimization approach for a few years now, and this paper is them packaging it all up into a clean, open-source Python library.
Tom: So it’s not just a theoretical idea. They’ve actually built the tool and put it on PyPI. That’s the kind of thing that moves research from a PDF into the real world.
Jane: And that’s what I love about it. The title says “for prediction and prescription,” but really it’s about giving decision-makers — doctors, social workers, loan officers — a tree they can actually trust. Because the tree is provably optimal, not just “good enough.”
Tom: So if I’m a hospital administrator and I want to decide who gets a scarce resource, this package can give me a tree that’s not only interpretable but also mathematically guaranteed to be the best under the constraints I set?
Jane: That’s the promise, yes. And it can handle fairness constraints, budget constraints, even robustness to data shifts. That’s a big deal for high-stakes decisions.
Tom: I’m already sold on the concept. But I want to know — how does it actually work under the hood? That’s what we’re going to dig into next.
Summary: Tom: So we’re back, and we’ve got Lu and Meng with us now. We’re still on “ODTlearn: A Package for Learning Optimal Decision Trees for Prediction and Prescription.” Jane, you set the stage — can you give us the quick summary of what the paper actually does?
Jane: Sure. The paper presents a Python package that implements four main types of optimal decision trees. First, there’s the basic optimal classification tree, which they call FlowOCT. Then there’s a fair version, FairOCT, that can enforce things like statistical parity or equalized odds. There’s a robust version, RobustOCT, for when your training data might not match your deployment data. And finally, there’s FlowOPT, which is for prescriptive trees — deciding what action to take, not just what label to predict.
Lu: And the key technical contribution is the formulation itself. The FlowOCT model uses a network flow structure in the mixed-integer program. That gives it a much stronger linear relaxation, which means the solver can prune the search tree much faster. In their experiments, they found FlowOCT was about twenty-nine times faster than older MIO formulations like BinOCT or the original OCT.
Meng: That speed difference is what makes this practical. I mean, I’ve worked with MIO models before, and they can be painfully slow. If you’re solving a real problem with thousands of data points, a twenty-nine times speedup is the difference between waiting an hour and waiting two minutes.
Tom: And that speed comes from the formulation, not from a faster computer. That’s elegant.
Jane: It is. And they also show better out-of-sample accuracy — up to seven percent better than BinOCT and twenty-one percent better than the older OCT model. So it’s not just faster; it generalizes better too.
Lu: The prescriptive part is also worth highlighting. FlowOPT is compared against two earlier MIO approaches from Kallus and from Bertsimas and colleagues. FlowOPT wins on out-of-sample probability of correct treatment assignment across several experimental setups. So it’s not just a classification tool — it’s a decision tool.
Meng: And from an engineering standpoint, I really appreciate that they built it on the Python MIP library. That means it supports both the open-source CBC solver and commercial solvers like Gurobi. So someone without a paid license can still use it, just maybe on smaller problems.
Tom: So it’s fast, it’s accurate, it’s flexible, and it’s accessible. That’s a strong combination. But what does this mean for someone who’s not a mathematician? How does this change what they can do?
Jane: That’s exactly what we’re going to talk about next — the improvements this package brings to real-world practice.
Improvements: Tom: We’re back, still on “ODTlearn: A Package for Learning Optimal Decision Trees for Prediction and Prescription.” So we’ve covered what it does. Now let’s talk about what it improves compared to what was already out there. Jane, you mentioned the speed and accuracy gains — but what’s the bigger picture?
Jane: The bigger picture is flexibility. With heuristic trees, if you want to add a constraint — like “the tree must be fair” or “we can only treat one hundred patients” — you’re stuck. You have to hack the algorithm or post-process the results. With an MIO formulation, you just add a constraint to the optimization problem. It’s built into the math.
Lu: And that’s the real contribution here. The paper shows that you can encode fairness as a linear constraint. For example, you can require that the false positive rate is roughly equal across demographic groups. That’s something you simply cannot do with a greedy tree builder.
Meng: From my side, the improvement I care about is the solver support. A lot of academic code is written for one specific solver and it’s a nightmare to port. This package uses Python MIP, which abstracts away the solver. So I can prototype with CBC and then switch to Gurobi when I need more horsepower. That’s a real engineering win.
Tom: So it’s not just a research tool — it’s actually designed to be used in production?
Meng: That’s the impression I get. The fit-predict interface is familiar to anyone who’s used scikit-learn. And they even have a built-in function to plot the tree. So the learning curve is shallow.
Jane: And there’s another improvement worth mentioning — the robustness part. The RobustOCT formulation handles distribution shifts. That means if your training data is from two thousand twenty but you’re deploying in two thousand twenty-five the tree is designed to still perform well under adversarial changes. That’s a huge deal for real-world deployment.
Lu: I’d add that the prescriptive trees also improve on prior work by being more interpretable. A treatment policy in the form of a tree is something a doctor can actually read and explain to a patient. You can’t do that with a black-box neural network.
Tom: So the improvements are: speed, accuracy, flexibility, robustness, and interpretability. That’s a lot of boxes checked.
Jane: And it’s all open source, under GPL-three point zero. So anyone can download it, inspect the code, and build on it.
Meng: The one caveat is scale. MIO is still not going to handle millions of rows like XGBoost can. But for high-stakes, smaller datasets — like clinical trials or policy decisions — this is the right tool.
Tom: So where does this leave us? What’s the impact on the world? Let’s bring in Lalam for that.
Conclusion: Tom: Alright, we’re wrapping up our discussion on “ODTlearn: A Package for Learning Optimal Decision Trees for Prediction and Prescription.” Jane, can you give us the final summary?
Jane: Sure. This paper gives us a well-engineered, open-source package for learning decision trees that are provably optimal. It covers classification, fair classification, robust classification, and prescriptive trees. It’s faster and more accurate than previous MIO approaches, and it supports both free and commercial solvers.
Lu: And the deeper implication is that we can now put interpretability and optimality together. In high-stakes domains, you don’t have to choose between a model you can explain and a model that’s actually the best. That’s a genuine shift.
Meng: Practically, this means a hospital can use a tree to decide who gets a ventilator, and they can prove that the tree is optimal under their fairness and budget constraints. That’s audit-ready. That’s defensible.
Tom: And Lalam, you’ve been listening — what’s your take on the cultural impact?
Lalam: I think the cultural impact is about trust. When decisions are made by opaque systems, people lose faith. But a tree that’s optimal, fair, and explainable — that’s something a community can actually review and debate. It turns algorithmic decision-making into a public conversation rather than a private mystery. That’s a healthier relationship between technology and society.
Jane: That’s a beautiful way to put it. And with that, we’re going to say goodbye to this paper. It’s been a great one — solid math, practical software, and a clear path to real-world use.
Tom: Thanks to everyone who joined us — Lu, Meng, Lalam — and to our listeners. Next up, we’ve got a paper on federated learning for medical imaging. We’ll see you then.
Jane: Take care, everyone.
Patrick Vossler, Nathan Justin, Sina Aghaei, Nathanael Jo, Andrés Gómez, Phebe Vayanos
University of Southern California
stat.ML, cs.LG, math.OC
Submitted: 2026-08-15
Updated: 2026-08-18
Comments: 8 pages, 2 figures
Code: https://github.com/D3M-Research-Group/odtlearn
Project page: https://d3m-research-group.github.io/odtlearn
License: http://arxiv.org/licenses/nonexclusive-distrib/1.0/
Importance score: 63/100
The gist: Summary ODTLearn is an open-source Python package that provides methods for learning optimal decision trees for high-stakes predictive and prescriptive tasks based on the mixed-integer optimization
Key concepts
- Optimal Decision Trees
- Unlike standard tools that use greedy heuristics (making locally best splits), these trees are mathematically solved for globally. This means the resulting tree is provably optimal, not just 'good enough,' making it reliable for high-stakes decisions.
- Prediction and Prescription
- Prediction involves classifying data points to assign a label. Prescription goes further by determining what specific action should be taken—such as recommending a particular treatment or resource allocation—based on the model's findings.
- Mixed-Integer Optimization (MIO)
- This is the underlying mathematical technique used by the package. It allows decision-makers to encode complex real-world constraints, such as budget limits or fairness requirements, directly into the optimization problem itself.
Terminology
Summary
Summary
ODTLearn is an open-source Python package that provides methods for learning optimal decision trees for high-stakes predictive and prescriptive tasks based on the mixed-integer optimization (MIO) framework proposed in (Aghaei et al., 2021) and several of its extensions. The current version of the package provides implementations for learning optimal classification trees, optimal fair classification trees, optimal classification trees robust to distribution shifts, and optimal prescriptive trees from observational data. We have designed the package to be easy to maintain and extend as new optimal decision tree problem classes, reformulation strategies, and solution algorithms are introduced. To this end, the package follows object-oriented design principles and supports both commercial (Gurobi) and open source (COIN-OR branch and cut) solvers.
Automated data-driven predictive and prescriptive methods are increasingly being used in high-stakes domains to inform and support decision-making. In such settings, these tools should be: (a) accurate (to minimize erroneous predictions/prescriptions that may negatively affect the populations on which they are deployed), (b) interpretable (so that predictions and decisions are transparent, accountable, and easy to audit), (c) flexible (i.e., possible to easily augment with domain specific constraints such as capacity and/or fairness constraints), and (d) robust (to ensure high-quality solutions even under adversarial shifts between training and deployment data).
Despite their popularity, decision trees (Breiman et al., 1984) are not necessarily well suited for data-driven decision-making in high-stakes domains. While the structure of decision trees makes them easy to interpret, they are typically constructed using heuristics and may yield suboptimal solutions. Furthermore, with heuristic-based decision trees, it is not immediately apparent how to incorporate relevant side information into the tree construction process or how to make a tree robust to adversarial shifts between training and deployment data. Optimal decision trees retain the interpretability of heuristic decision trees while providing the flexibility to model the types of problems decision-makers face and deliver optimal, trustworthy solutions.
Our ODTlearn Python package provides methods for fitting provably optimal decision trees using mixed-integer optimization (MIO) for various problem types and settings commonly encountered by practitioners in high-stakes settings. ODTlearn implements the FlowOCT modeling and solution paradigm proposed by Aghaei et al. (2021), which is significantly faster and provides better out-of-sample performance than previous MIO-based algorithms. This approach generalizes beyond standard classification problems to problems involving imbalanced datasets (e.g., by optimizing weighted accuracy or worst-case accuracy, by constraining recall or precision, or by balancing sensitivity and specificity). In addition to the core algorithm, we implement its generalization to learn optimal fair decision trees (FairOCT) that optimize accuracy while satisfying arbitrary domain specific fairness constraints such as statistical parity, conditional statistical parity, or equalized odds as proposed in (Jo et al., 2022). Experiments demonstrated that these methods outperform popular heuristic-based algorithms for learning fair trees. For users deploying decision trees in settings with potential distribution shifts between training and testing, we implement the MIP formulation proposed in (Justin et al., 2021) (RobustOCT) for learning optimal robust classification trees. Finally, we implement the MIP formulation proposed in Jo et al. (2022) (FlowOPT) for learning optimal prescriptive trees from observational data. This framework can be used to design treatment assignment policies in the form of decision trees, being highly interpretable while offering a tunable degree of personalization. Importantly, the learned trees can also be constrained to satisfy domain specific requirements such as budget constraints (e.g., limited amount of treatments) or fairness constraints (e.g., conditional statistical parity in allocation).
There are numerous high-quality implementations of heuristic-based methods for learning decision trees in R and Python, including scikit-learn (Pedregosa et al., 2011), Rpart (Therneau et al., 1997), and Caret (Kuhn et al., 2008) among many others. As discussed in Section 1, these methods are fast, but lack the modeling flexibility and optimality guarantees of MIO-based methods.
Several different R and Python packages provide implementations of methods for constructing optimal decision trees using approaches other than mixed-integer optimization. The evtree (Grubinger et al., 2014) Python package implements an evolutionary algorithm that searches the space of possible decision trees to find globally optimal decision trees. PyDL8.5 (Aglin et al., 2021) is an open-source Python package that implements the DL8.5 (Aglin et al., 2020) algorithm in C++ for learning optimal decision trees through the use of itemset mining techniques. The gosdt Python package provides a C++ implementation of Generalized Optimal Sparse Decision Trees (GOSDT) (Lin et al., 2020; McTavish et al., 2022), which employs a branch-and-bound method with dynamic programming, similar to DL8.5. GOSDT can directly model continuous features and construct decision trees for various objectives, including accuracy, AUC, and partial area under ROC convex hull. While the MIO formulations used in ODTlearn provide the flexibility to incorporate side constraints, they are generally slower than the methods used in evtree, DL8.5, and GOSDT, especially for larger datasets or deeper trees. These methods employ specialized algorithms, such as evolutionary algorithms or branch-and-bound with dynamic programming, which can often find optimal trees more quickly than general-purpose MIO solvers. However, it is not immediately obvious how to incorporate side constraints into the tree construction process for these methods, which is a strength of the MIO approach.
The policytree package (Sverdrup et al., 2020) provides an R implementation of Policy Trees (PT) (Zhou et al., 2022), which learn personalized treatment assignment policies from observational data using decision trees and doubly robust estimators to handle confounding. PT uses a recursive partitioning approach, allowing it to learn trees that handle continuous and discrete covariates without pre-discretization and in less time than the FlowOPT MIO formulation. However, PT’s recursive partitioning approach may not converge to the global optimum and cannot easily incorporate complex constraints.
There are also open-source implementations of other MIO formulations for learning optimal classification trees. The authors of the BinOCT MIO formulation (Verwer and Zhang, 2019) provide an open-source implementation of their method. Additionally, Tang (2021) provides open-source implementations of the BinOCT, OCT (Bertsimas and Dunn, 2017), and FlowOCT (Aghaei et al., 2021) MIO formulations. While both projects provide valuable implementations of these methods for technical users and researchers, these projects are less accessible to a general audience with limited knowledge of MIO. Neither project distributes its code as a Python package, and they are not indexed on PyPi. Furthermore, their implementations rely exclusively upon proprietary MIP solvers such as CPLEX or Gurobi, which require paid or academic licenses to use with large-scale problems.
In comparisons on simulated data, the FlowOCT and FlowOPT formulations solve problem instances faster and are more accurate out-of-sample compared to existing MIO formulations. In Aghaei et al. (2021), the authors implement FlowOCT, BinOCT, and OCT in Gurobi to directly compare the in-sample and out-of-sample performance of the methods. When comparing the speed at which each method solves a fixed number of problem instances, they find that FlowOCT is 29 times faster than the other two formulations at solving problems with balanced decision trees. This significant speedup is attributed to the stronger linear optimization relaxation of the FlowOCT formulation, which leads to more effective pruning of the branch-and-bound tree during the solving process. Regarding out-of-sample accuracy, FlowOCT improves accuracy compared to BinOCT and OCT by up to 7% and 21%, respectively. In Jo et al. (2021), the authors compare FlowOPT to Gurobi implementations of the MIO formulations proposed in Kallus (2017) (K-PT) and Bertsimas et al. (2019) (B-PT). FlowOPT outperforms K-PT and B-PT in terms of the out-of-sample probability of correct treatment assignment across various experiment designs.
Interpretable AI (Interpretable AI, 2022) offers a proprietary Julia (Bezanson et al., 2017) package with a Python wrapper that provides methods for learning optimal classification, prescriptive, and regression trees. These implementations use the heuristic algorithm based on local search proposed by Bertsimas and Dunn (2019) (LST). On the one hand, LST is much faster than MIO formulations like FlowOCT, requiring only seconds to find a local optimum. On the other hand, MIO formulations are more flexible and able to solve instances to provable optimality.
In summary, ODTlearn distinguishes itself from existing implementations of optimal decision tree methods in several key ways. First, it provides open-source, user-friendly implementations of state-of-the-art MIO formulations for learning optimal decision trees, including FlowOCT and FlowOPT, which have been shown to outperform other MIO formulations in terms of solution speed and out-of-sample performance. Second, ODTlearn is distributed as a Python package indexed on PyPi, making it easily accessible to a broad audience. Third, ODTlearn supports open-source and proprietary MIP solvers, allowing users without access to commercial solvers to still benefit from the package. Finally, the MIO formulations in ODTlearn provide the flexibility to incorporate custom constraints and objectives, enabling users to tailor the learned decision trees to specific requirements of the problem they wish to solve.
The software architecture of ODTlearn is motivated by the optimal decision tree literature in which researchers have recently proposed numerous new problem classes, reformulation strategies, and solution approaches. With this in mind, we have created a class structure for our package, summarized in Figure 1, that follows the SOLID principles of object-oriented programming for developing software (Martin, 2003). These principles emphasize structuring classes that are easy to maintain and extend. The Single Responsibility Principle (SRP) states that each class should have a single responsibility or purpose. The Open-Closed Principle (OCP) requires that users should be able to extend a class’s behavior without modifying its existing code. According to the Liskov Substitution Principle (LSP), derived classes should be able to replace their base classes without affecting correctness. The Interface Segregation Principle (ISP) asserts that users should not be forced to depend on methods they do not use. Finally, the Dependency Inversion Principle (DIP) suggests that software design should rely upon abstract interfaces rather than concrete implementations. These principles establish practices for developing software with considerations for maintaining and extending it as the project grows.
Following the dependency inversion principle, all classes in ODTlearn are derived from our abstract base class OptimalDecisionTree. This class provides a standardized interface for the two types of trees currently supported (classification and prescription) while keeping their implementation details separate to follow the interface segregation principle. The OptimalDecisionTree abstract class allows our class structure to follow the open-closed principle as we can create the derived classes OptimalClassificationTree and OptimalPrescriptiveTree with problem-specific methods for traversing and visualizing the decision tree. Next, the children of OptimalClassificationTree and OptimalPrescriptiveTree implement methods for creating the decision variables, the constraints, and the objective function necessary for constructing the optimization problem of interest. The separate classes for each of the variations of the MIO formulations ensure that each of the derived classes has a single job, obeying the single responsibility principle. Finally, the classes in the third and fourth levels of Figure 1 implement user-facing methods such as fit and predict required by their parent classes. This ensures that our low-level classes respect the Liskov substitution principle by adhering to the basic requirements of their parent class. Thus, our adherence to the SOLID principles ensures that researchers and practitioners building upon ODTlearn can easily augment it with more features (e.g., different objectives or additional constraints) or even build new types of trees.
ODTlearn is built upon the Python MIP package (Santos and Toffolo, 2020), which provides a unified interface for implementing MIO formulations with callbacks across both open-source and commercial solvers. By leveraging Python MIP’s consistent interface, our package is able to support both the open-source CBC solver and the commercial Gurobi solver without the need for solver-specific code. This design choice allows us to focus on implementing the core functionality of ODTlearn while still supporting a wide range of users with different solver preferences and access to commercial licenses. The use of Python MIP is particularly important for our BendersOCT formulation, which relies on callbacks to implement the Benders’ decomposition algorithm. Callbacks are essential for the efficient solution of large-scale problems using BendersOCT, and Python MIP’s interface allows us to implement these callbacks in a solver-independent manner. Furthermore Python MIP interacts directly with the solver’s native dynamic loadable library (DLL) interface, ensuring that any computationally intensive steps are performed by the solver and not in Python.
For fitting optimal classification and prescriptive trees, we provide users with an interface that follows a common fit-predict structure. Figure 2 provides a code snippet demonstrating how to use the ODTlearn API to fit a fair optimal classification tree. Once an optimal decision tree has been learned, users can employ the build in plot tree function to visualize the tree.
Releases of the ODTlearn package are available via PyPI at https://pypi.org/project/odtlearn. The package source code and documentation are hosted on GitHub (https://github.com/D3M-Research-Group/odtlearn). Collaboration in the form of discussions, feature requests, or bug reports is made possible through the GitHub issue and pull request workflow. We have implemented continuous integration through GitHub Actions to ensure backward compatibility and quickly identify any code regressions. Our documentation includes installation instructions, a user guide, an API reference, and downloadable example notebooks demonstrating each of the classification methods implemented in the package. The documentation is hosted via GitHub pages at https://d3m-research-group.github.io/odtlearn. The package is distributed under the GPL-3.0 license and makes use of several core libraries within Python’s scientific computing ecosystem: scikit-learn (Pedregosa et al., 2011), numpy (Harris et al., 2020), and pandas (McKinney et al., 2010).
Improvements for AI systems
Based on the paper, I can implement the following specific improvements to an AI system:
1. Optimal Decision Tree Learning via Mixed-Integer Optimization (MIO)
-
Replace heuristic tree-building (e.g., CART, ID3) with the FlowOCT formulation for classification, which guarantees provably optimal trees (not just locally optimal ones) and provides 29× faster solving than prior MIO methods (BinOCT, OCT).
-
The improved system can now solve classification problems with weighted accuracy, worst-case accuracy, recall/precision constraints, or balanced sensitivity/specificity—all within a single optimization framework, rather than requiring ad-hoc post-processing.
2. Fair Classification Trees (FairOCT)
-
Integrate the FairOCT formulation to enforce arbitrary fairness constraints (statistical parity, conditional statistical parity, equalized odds, equal opportunity) directly into the tree optimization, not as a post-hoc repair.
-
The improved system can now output a decision tree that simultaneously maximizes accuracy and satisfies a user-specified fairness bound (e.g.,
fairness bound=1), which is impossible with standard scikit-learn trees that ignore fairness.
3. Robust Classification Trees (RobustOCT)
-
Implement the RobustOCT MIP formulation to handle adversarial distribution shifts between training and deployment data.
-
The improved system can now guarantee a minimum accuracy level even under worst-case perturbations of feature distributions, making it suitable for high-stakes deployment where data drift is expected (e.g., medical diagnosis, credit scoring).
4. Prescriptive Trees (FlowOPT) for Treatment Assignment
-
Add the FlowOPT formulation to learn optimal treatment assignment policies from observational data (not just predictions), with support for inverse probability weighting (IPW), direct method (DM), and doubly robust (DR) estimators.
-
The improved system can now output an interpretable decision tree that prescribes the best action (e.g., which drug to prescribe, which loan to approve) for each individual, while respecting budget constraints (limited treatments) and fairness constraints (conditional statistical parity in allocation)—a capability not present in standard classification or regression trees.
5. Solver Flexibility and Accessibility
-
Use the Python MIP interface to support both open-source (CBC) and commercial (Gurobi) solvers, eliminating the dependency on proprietary solvers that prior MIO implementations (e.g., BinOCT, OCT) required.
-
The improved system can now run optimal tree learning on any machine without a paid license, making it accessible to smaller organizations and researchers with limited budgets.
6. Object-Oriented, Extensible Architecture
-
Adopt the SOLID-principled class hierarchy (e.g.,
OptimalDecisionTree→OptimalClassificationTree→FlowOCT,FairOCT,RobustOCT;OptimalPrescriptiveTree→FlowOPTvariants) so that new problem classes, reformulations, or solution algorithms can be added without modifying existing code. -
The improved system can now be extended by a developer to add, for example, a regression tree or a tree with capacity constraints, by simply subclassing the appropriate base class and implementing the
create variables,create constraints, andcreate objectivemethods—no need to rewrite the fitting or prediction logic.
7. Built-in Visualization and API Consistency
-
Provide a unified
fit/predict/plot treeinterface across all tree types, so the improved system can be used as a drop-in replacement for scikit-learn'sDecisionTreeClassifierbut with optimality and constraint guarantees. -
The improved system can now produce a visualizable, interpretable tree (via
matplotlib) that is provably optimal under the specified objective and constraints, enabling direct auditability by domain experts.
What the improved AI system can do specifically:
-
For a hospital: Learn a fair, optimal treatment assignment tree that maximizes patient health outcomes while enforcing equalized odds across racial groups and a limited total treatment budget—something no heuristic tree can guarantee.
-
For a bank: Learn a robust credit-scoring tree that maintains a minimum approval accuracy even if the applicant population shifts (e.g., due to economic downturn), with a provable worst-case performance bound.
-
For a hiring platform: Learn an optimal classification tree that maximizes hiring accuracy subject to statistical parity constraints, with a certificate of optimality (i.e., the solver proves no better tree exists within the depth limit).
-
For a researcher: Run all of the above on a laptop with only the open-source CBC solver, and extend the code to add a new fairness metric or a new objective (e.g., F1-score) in under 50 lines of code, without breaking existing functionality.
Sources
- Strong Optimal Classification Trees
- Learning Optimal Prescriptive Trees from Observational Data
- Learning Optimal Fair Classification Trees: Trade-offs Between Interpretability, Fairness, and Accuracy
Related papers
- Behavior of prediction performance metrics with rare events
- Optimal Estimation of Generic Dynamics by Path-Dependent Neural Jump ODEs
- A Posterior-Dynamics Framework for Imaging Inverse Problems with Pretrained Diffusion Priors
- One Permutation Is All You Need: Fast, Deterministic Feature Importance and Model Stress-Testing
- Online Conformal Prediction for Non-Exchangeable Panel Data
- Deep Time-Series Forecasting in 10 Years: A Survey