{"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/provably-robust-boosted-decision-stumps-and","title":"Provably Robust Boosted Decision Stumps and Trees against Adversarial Attacks","arxiv_id":"1906.03526","date":"2019-06-08","proceeding":"NeurIPS 2019 12","authors":["Maksym Andriushchenko","Matthias Hein"],"abstract":"The problem of adversarial robustness has been studied extensively for neural networks. However, for boosted decision trees and decision stumps there are almost no results, even though they are widely used in practice (e.g. XGBoost) due to their accuracy, interpretability, and efficiency. We show in this paper that for boosted decision stumps the \\textit{exact} min-max robust loss and test error for an $l_\\infty$-attack can be computed in $O(T\\log T)$ time per input, where $T$ is the number of decision stumps and the optimal update step of the ensemble can be done in $O(n^2\\,T\\log T)$, where $n$ is the number of data points. For boosted trees we show how to efficiently calculate and optimize an upper bound on the robust loss, which leads to state-of-the-art robust test error for boosted trees on MNIST (12.5% for $\\epsilon_\\infty=0.3$), FMNIST (23.2% for $\\epsilon_\\infty=0.1$), and CIFAR-10 (74.7% for $\\epsilon_\\infty=8/255$). Moreover, the robust test error rates we achieve are competitive to the ones of provably robust convolutional networks. The code of all our experiments is available at http://github.com/max-andr/provably-robust-boosting","url_abs":"https://arxiv.org/abs/1906.03526v2","url_pdf":"https://arxiv.org/pdf/1906.03526v2.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":"provably-robust-boosted-decision-stumps-and","repo_url":"https://github.com/max-andr/provably-robust-boosting","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"BSD-3-Clause"}}],"tasks":[{"task_slug":"adversarial-robustness","task_name":"Adversarial Robustness"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/1906.03526","atlas_url":"https://app.syntology.ai/?focus=1906.03526","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1906.03526"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/max-andr/provably-robust-boosting","reach":{"status":"ok","spdx":"BSD-3-Clause"}}],"summary":{"unverified":12},"by_repo_kind":{"official":{"samples":12,"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":"4f36bf322e7ee391","entry":"binary_search_attack","repo":"max-andr/provably-robust-boosting","repo_kind":"official","path":"attacks.py","file_url":"https://github.com/max-andr/provably-robust-boosting/blob/HEAD/attacks.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":"4f36bf322e7ee391"}},{"code_sha256_prefix":"683bc1854d08f77d","entry":"clip","repo":"max-andr/provably-robust-boosting","repo_kind":"official","path":"utils.py","file_url":"https://github.com/max-andr/provably-robust-boosting/blob/HEAD/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":"683bc1854d08f77d"}},{"code_sha256_prefix":"242a09d9693b5d69","entry":"cube_attack","repo":"max-andr/provably-robust-boosting","repo_kind":"official","path":"attacks.py","file_url":"https://github.com/max-andr/provably-robust-boosting/blob/HEAD/attacks.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":"242a09d9693b5d69"}},{"code_sha256_prefix":"0ea677162ae82cfe","entry":"find_min_yf_point","repo":"max-andr/provably-robust-boosting","repo_kind":"official","path":"tree_ensemble.py","file_url":"https://github.com/max-andr/provably-robust-boosting/blob/HEAD/tree_ensemble.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":"0ea677162ae82cfe"}},{"code_sha256_prefix":"2f6060c220b1f525","entry":"find_min_yf_tree_par","repo":"max-andr/provably-robust-boosting","repo_kind":"official","path":"tree_ensemble.py","file_url":"https://github.com/max-andr/provably-robust-boosting/blob/HEAD/tree_ensemble.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":"2f6060c220b1f525"}},{"code_sha256_prefix":"92eb12a00be37bd9","entry":"get_contiguous_indices","repo":"max-andr/provably-robust-boosting","repo_kind":"official","path":"utils.py","file_url":"https://github.com/max-andr/provably-robust-boosting/blob/HEAD/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":"92eb12a00be37bd9"}},{"code_sha256_prefix":"23596bd126ba3587","entry":"minimum","repo":"max-andr/provably-robust-boosting","repo_kind":"official","path":"utils.py","file_url":"https://github.com/max-andr/provably-robust-boosting/blob/HEAD/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":"23596bd126ba3587"}},{"code_sha256_prefix":"22a45269af07d150","entry":"normalize_per_feature_0_1","repo":"max-andr/provably-robust-boosting","repo_kind":"official","path":"data.py","file_url":"https://github.com/max-andr/provably-robust-boosting/blob/HEAD/data.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":"22a45269af07d150"}},{"code_sha256_prefix":"b282ba89051ec5db","entry":"predict_point","repo":"max-andr/provably-robust-boosting","repo_kind":"official","path":"tree_ensemble.py","file_url":"https://github.com/max-andr/provably-robust-boosting/blob/HEAD/tree_ensemble.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":"b282ba89051ec5db"}},{"code_sha256_prefix":"7a18374118969762","entry":"sampling_attack","repo":"max-andr/provably-robust-boosting","repo_kind":"official","path":"attacks.py","file_url":"https://github.com/max-andr/provably-robust-boosting/blob/HEAD/attacks.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":"7a18374118969762"}},{"code_sha256_prefix":"9ecc4a0f8c651c2d","entry":"split_train_test","repo":"max-andr/provably-robust-boosting","repo_kind":"official","path":"data.py","file_url":"https://github.com/max-andr/provably-robust-boosting/blob/HEAD/data.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":"9ecc4a0f8c651c2d"}},{"code_sha256_prefix":"0c371bdbcb6a457f","entry":"split_train_validation","repo":"max-andr/provably-robust-boosting","repo_kind":"official","path":"data.py","file_url":"https://github.com/max-andr/provably-robust-boosting/blob/HEAD/data.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":"0c371bdbcb6a457f"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}