{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/entmoot-a-framework-for-optimization-over","title":"ENTMOOT: A Framework for Optimization over Ensemble Tree Models","arxiv_id":"2003.04774","date":"2020-03-10","proceeding":null,"authors":["Alexander Thebelt","Jan Kronqvist","Miten Mistry","Robert M. Lee","Nathan Sudermann-Merx","Ruth Misener"],"abstract":"Gradient boosted trees and other regression tree models perform well in a wide range of real-world, industrial applications. These tree models (i) offer insight into important prediction features, (ii) effectively manage sparse data, and (iii) have excellent prediction capabilities. Despite their advantages, they are generally unpopular for decision-making tasks and black-box optimization, which is due to their difficult-to optimize structure and the lack of a reliable uncertainty measure. ENTMOOT is our new framework for integrating (already trained) tree models into larger optimization problems. The contributions of ENTMOOT include: (i) explicitly introducing a reliable uncertainty measure that is compatible with tree models, (ii) solving the larger optimization problems that incorporate these uncertainty aware tree models, (iii) proving that the solutions are globally optimal, i.e. no better solution exists. In particular, we show how the ENTMOOT approach allows a simple integration of tree models into decision-making and black-box optimization, where it proves as a strong competitor to commonly-used frameworks.","url_abs":"https://arxiv.org/abs/2003.04774v3","url_pdf":"https://arxiv.org/pdf/2003.04774v3.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"entmoot-a-framework-for-optimization-over","repo_url":"https://github.com/cog-imperial/entmoot","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"BSD-3-Clause"}}],"tasks":[{"task_slug":"decision-making","task_name":"Decision Making"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2003.04774","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2003.04774"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/cog-imperial/entmoot","reach":{"status":"ok","spdx":"BSD-3-Clause"}}],"summary":{"unverified":6},"by_repo_kind":{"official":{"samples":6,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"9eda67dcec097675","entry":"eval_multi_obj_cat_testfunc","repo":"cog-imperial/entmoot","repo_kind":"official","path":"entmoot/benchmarks.py","file_url":"https://github.com/cog-imperial/entmoot/blob/HEAD/entmoot/benchmarks.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"9eda67dcec097675"}},{"code_sha256_prefix":"6de82ffb5fc2bdec","entry":"eval_reals_only_testfunc","repo":"cog-imperial/entmoot","repo_kind":"official","path":"entmoot/benchmarks.py","file_url":"https://github.com/cog-imperial/entmoot/blob/HEAD/entmoot/benchmarks.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"6de82ffb5fc2bdec"}},{"code_sha256_prefix":"911ac86ed20801f6","entry":"eval_small_single_obj_cat_testfunc","repo":"cog-imperial/entmoot","repo_kind":"official","path":"entmoot/benchmarks.py","file_url":"https://github.com/cog-imperial/entmoot/blob/HEAD/entmoot/benchmarks.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"911ac86ed20801f6"}},{"code_sha256_prefix":"f01eb438bc424617","entry":"grid","repo":"cog-imperial/entmoot","repo_kind":"official","path":"entmoot/utils.py","file_url":"https://github.com/cog-imperial/entmoot/blob/HEAD/entmoot/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"f01eb438bc424617"}},{"code_sha256_prefix":"cbd813e5b020cd61","entry":"read_lgbm_tree_model_dict","repo":"cog-imperial/entmoot","repo_kind":"official","path":"entmoot/models/mean_models/lgbm_utils.py","file_url":"https://github.com/cog-imperial/entmoot/blob/HEAD/entmoot/models/mean_models/lgbm_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"cbd813e5b020cd61"}},{"code_sha256_prefix":"9d1a2dfca475a581","entry":"sample","repo":"cog-imperial/entmoot","repo_kind":"official","path":"entmoot/utils.py","file_url":"https://github.com/cog-imperial/entmoot/blob/HEAD/entmoot/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"9d1a2dfca475a581"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}