{"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/how-well-do-feature-additive-explainers","title":"How Well Do Feature-Additive Explainers Explain Feature-Additive Predictors?","arxiv_id":"2310.18496","date":"2023-10-27","proceeding":null,"authors":["Zachariah Carmichael","Walter J. Scheirer"],"abstract":"Surging interest in deep learning from high-stakes domains has precipitated concern over the inscrutable nature of black box neural networks. Explainable AI (XAI) research has led to an abundance of explanation algorithms for these black boxes. Such post hoc explainers produce human-comprehensible explanations, however, their fidelity with respect to the model is not well understood - explanation evaluation remains one of the most challenging issues in XAI. In this paper, we ask a targeted but important question: can popular feature-additive explainers (e.g., LIME, SHAP, SHAPR, MAPLE, and PDP) explain feature-additive predictors? Herein, we evaluate such explainers on ground truth that is analytically derived from the additive structure of a model. We demonstrate the efficacy of our approach in understanding these explainers applied to symbolic expressions, neural networks, and generalized additive models on thousands of synthetic and several real-world tasks. Our results suggest that all explainers eventually fail to correctly attribute the importance of features, especially when a decision-making process involves feature interactions.","url_abs":"https://arxiv.org/abs/2310.18496v1","url_pdf":"https://arxiv.org/pdf/2310.18496v1.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":"how-well-do-feature-additive-explainers","repo_url":"https://github.com/craymichael/PostHocExplainerEvaluation","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}}],"tasks":[{"task_slug":"additive-models","task_name":"Additive models"},{"task_slug":"attribute","task_name":"Attribute"},{"task_slug":"decision-making","task_name":"Decision Making"}],"methods":[{"method_slug":"hoc","method_name":"HOC"},{"method_slug":"lime","method_name":"LIME"},{"method_slug":"shap","method_name":"SHAP"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2310.18496","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2310.18496"}},"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/craymichael/PostHocExplainerEvaluation","reach":{"status":"ok"}}],"summary":{"ran":6,"unverified":4},"by_repo_kind":{"official":{"samples":10,"ran":6,"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":10,"samples":[{"code_sha256_prefix":"9b2ce415c6357e4c","entry":"clean_explanations","repo":"craymichael/PostHocExplainerEvaluation","repo_kind":"official","path":"posthoceval/expl_utils.py","file_url":"https://github.com/craymichael/PostHocExplainerEvaluation/blob/HEAD/posthoceval/expl_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9b2ce415c6357e4c"}},{"code_sha256_prefix":"2082e17c928d79cf","entry":"is_mean_centered","repo":"craymichael/PostHocExplainerEvaluation","repo_kind":"official","path":"posthoceval/expl_utils.py","file_url":"https://github.com/craymichael/PostHocExplainerEvaluation/blob/HEAD/posthoceval/expl_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"2082e17c928d79cf"}},{"code_sha256_prefix":"fd757c7b37b51b8e","entry":"make_data","repo":"craymichael/PostHocExplainerEvaluation","repo_kind":"official","path":"benchmark_backends.py","file_url":"https://github.com/craymichael/PostHocExplainerEvaluation/blob/HEAD/benchmark_backends.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"fd757c7b37b51b8e"}},{"code_sha256_prefix":"1a398e6ded86ad9d","entry":"naive_reduce_domain","repo":"craymichael/PostHocExplainerEvaluation","repo_kind":"official","path":"posthoceval/expectation.py","file_url":"https://github.com/craymichael/PostHocExplainerEvaluation/blob/HEAD/posthoceval/expectation.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1a398e6ded86ad9d"}},{"code_sha256_prefix":"964122a6ea76a52b","entry":"numpy_func","repo":"craymichael/PostHocExplainerEvaluation","repo_kind":"official","path":"posthoceval/evaluate.py","file_url":"https://github.com/craymichael/PostHocExplainerEvaluation/blob/HEAD/posthoceval/evaluate.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"964122a6ea76a52b"}},{"code_sha256_prefix":"36f43fae249166fa","entry":"periodicity_wrapper","repo":"craymichael/PostHocExplainerEvaluation","repo_kind":"official","path":"generate_expressions.py","file_url":"https://github.com/craymichael/PostHocExplainerEvaluation/blob/HEAD/generate_expressions.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"36f43fae249166fa"}},{"code_sha256_prefix":"90e9e94744f37db1","entry":"handle_excessive_periodicity","repo":"craymichael/PostHocExplainerEvaluation","repo_kind":"official","path":"posthoceval/expectation.py","file_url":"https://github.com/craymichael/PostHocExplainerEvaluation/blob/HEAD/posthoceval/expectation.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"90e9e94744f37db1"}},{"code_sha256_prefix":"bd099a4a14d6a74d","entry":"llvm_func","repo":"craymichael/PostHocExplainerEvaluation","repo_kind":"official","path":"posthoceval/evaluate.py","file_url":"https://github.com/craymichael/PostHocExplainerEvaluation/blob/HEAD/posthoceval/evaluate.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"bd099a4a14d6a74d"}},{"code_sha256_prefix":"f39cc10c6f6fa49d","entry":"theano_func","repo":"craymichael/PostHocExplainerEvaluation","repo_kind":"official","path":"posthoceval/evaluate.py","file_url":"https://github.com/craymichael/PostHocExplainerEvaluation/blob/HEAD/posthoceval/evaluate.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f39cc10c6f6fa49d"}},{"code_sha256_prefix":"6966aadc392c85f0","entry":"tree_to_str","repo":"craymichael/PostHocExplainerEvaluation","repo_kind":"official","path":"posthoceval/expression_tree.py","file_url":"https://github.com/craymichael/PostHocExplainerEvaluation/blob/HEAD/posthoceval/expression_tree.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"6966aadc392c85f0"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}