Improve local search of Optimal Classification Trees by implementing parallelization to expand the node search radius (Julia)
(Shaun Fendi Gan, Arkira Tanglertsumpun, MIT Master of Business Analytics, Dec 2020)
The local-search heuristic was introduced as an attempt to remedy the limitations on the scalability of Bertsimas and Dunn’s Optimal Classification Tree mixed-integer optimization formulation. This repo examined the effectiveness of this heuristic as well as introducing four parallelized versions that could improve heuristic optimality.
Open benchmark.jl
to find all functions used to test and benchmark different local search. Original local search can be found as the function LocalSearch
in local_search.jl
The MIO formulation implement in JuMP/ Gurobi can also be found in oct.jl
local_search.jl
- Main file containing serially optimized functions to run the local search heuristictree.jl
- Serially optimized functions to create tree structureslocal_search_z.jl
- Contains function for Local Search with parallel Observation assignmentslocal_search_half.jl
- Contains function for Local Search with parallel half splitslocal_search_deep.jl
- Contains function for Local Search for a deep subtree searchoct.jl
- Contains the JuMP MIO Formulation for an Optimal Classification Treemodel_evaluation.jl
- Contains function for calculating accuracy of a tree’s predictionsbenchmark.jl
- Contains code used to benchmark performance of different Local Search Functions unit_test.jl
- Contains function test_tree
to verify Tree struct output from Local Searchtesting OCT.ipynb
- Contains IntepretableAI Optimal Classification Tree structure, used as referenceonethread_oct.ipynb
- Contains MIO OCT function used to test on one thread only (Gurobi Default != 1) Source: [Dimitris Bertsimas, Jack Dunn.Machine Learning under a ModernOptimization Lens. Dynamic Ideas LLC, Massachusetts, 2019]
![]() |
---|
Full Report |