  Feature attributions and counterfactual explanations are popular approaches
to explain a ML model. The former assigns an importance score to each input
feature, while the latter provides input examples with minimal changes to alter
the model's predictions. To unify these approaches, we provide an
interpretation based on the actual causality framework and present two key
results in terms of their use. First, we present a method to generate feature
attribution explanations from a set of counterfactual examples. These feature
attributions convey how important a feature is to changing the classification
outcome of a model, especially on whether a subset of features is necessary
and/or sufficient for that change, which attribution-based methods are unable
to provide. Second, we show how counterfactual examples can be used to evaluate
the goodness of an attribution-based explanation in terms of its necessity and
sufficiency. As a result, we highlight the complementarity of these two
approaches. Our evaluation on three benchmark datasets - Adult-Income,
LendingClub, and German-Credit - confirms the complementarity. Feature
attribution methods like LIME and SHAP and counterfactual explanation methods
like Wachter et al. and DiCE often do not agree on feature importance rankings.
In addition, by restricting the features that can be modified for generating
counterfactual examples, we find that the top-k features from LIME or SHAP are
often neither necessary nor sufficient explanations of a model's prediction.
Finally, we present a case study of different explanation methods on a
real-world hospital triage problem
