From 1708df9fb76d167c3e667cb08038836c10161be5 Mon Sep 17 00:00:00 2001 From: mauicv Date: Thu, 21 Oct 2021 12:08:23 +0100 Subject: [PATCH 01/60] Add initial draft of overview intro --- doc/source/index.md | 1 + doc/source/overview/high_level.md | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 doc/source/overview/high_level.md diff --git a/doc/source/index.md b/doc/source/index.md index 913a81548..b5181cca4 100644 --- a/doc/source/index.md +++ b/doc/source/index.md @@ -10,6 +10,7 @@ :caption: Overview :maxdepth: 1 +overview/high_level overview/getting_started overview/algorithms overview/white_box_black_box diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md new file mode 100644 index 000000000..73e64e1fc --- /dev/null +++ b/doc/source/overview/high_level.md @@ -0,0 +1,24 @@ +# Overview of Explainability + +While the applications of machine learning are impressive many models provide predictions that are hard to interpret or reason about. This limits there use in many cases as often we want to know why and not just what a models prediction is. Alarming predictions are rarely taken at face value and typically warrant further analysis. Indeed in some cases explaining the choices that a model makes could even become a potential [legal requirement](https://arxiv.org/pdf/1711.00399.pdf). + +Explainability research provides us with algorithms that give insights into the context of trained models predictions. + +- How does a prediction change dependent on feature inputs? +- What features are Important for a given prediction to hold? +- What features are not important for a given prediction to hold? +- What set of features would you have to minimally change to obtain a new prediction of your choosing? +- etc.. + +The set of insights available are dependent on the trained model. If the model is a regression is makes sense to ask how the prediction varies with respect to some feature whereas it doesn't make sense to ask what minimal change is required to obtain a new classification. Insights are constrained by: + +- The type of data the model handles (images, text, ...) +- The type of model used (linear regression, neural network, ...) +- The task the model performs (regression, classification, ...) + +Explainability can be thought as an extra form of testing for a model. The insights derived should conform to the expected behaviour. Failure to do so may indicate issues with the model or problems with the dataset it's been trained on. More so explainability insights can also provide useful information on top of model predictions. How to change the model inputs to obtain a better output for instance. + + +## Insights + +... From f7f30b540238921439ec1dbfc64ff4ebf37bb609 Mon Sep 17 00:00:00 2001 From: mauicv Date: Thu, 21 Oct 2021 13:16:55 +0100 Subject: [PATCH 02/60] Add section on global and local insights --- doc/source/overview/high_level.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 73e64e1fc..006b2cf2c 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -21,4 +21,12 @@ Explainability can be thought as an extra form of testing for a model. The insig ## Insights +### Global and Local Insights + +Insights can be categorized into two types. Local and global. Intuitively a local insights says something about a single prediction that a model makes. As an example, given an image classified as a cat by a model what is the minimal set of features (pixels) that need to stay the same in order for that image to still be classified as a cat. Such an insight gives an idea of what the model is looking for when deciding to classify an instance into a specific class. Global insights on the other hand refer to the behaviour of the model over a set of inputs. Plots that show how a regression prediction varies with respect to a given feature while factoring out all the others are an example. These insights give a more general understanding of the relationship between inputs and model predictions. + +### Insight Categories + +#### Counter Factuals: + ... From 08e355d1a6ebef8f4e64b1dc2e08dcab6d9ff131 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Fri, 22 Oct 2021 14:34:36 +0100 Subject: [PATCH 03/60] Add insight categories section --- .gitignore | 3 ++ doc/source/overview/high_level.md | 72 ++++++++++++++++++++++++++++--- 2 files changed, 70 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 25c736d70..49c1b128e 100644 --- a/.gitignore +++ b/.gitignore @@ -109,3 +109,6 @@ venv.bak/ # Model binaries examples/*.h5 + +# OS specific +.DS_store \ No newline at end of file diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 006b2cf2c..bce26148c 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -1,6 +1,10 @@ # Overview of Explainability -While the applications of machine learning are impressive many models provide predictions that are hard to interpret or reason about. This limits there use in many cases as often we want to know why and not just what a models prediction is. Alarming predictions are rarely taken at face value and typically warrant further analysis. Indeed in some cases explaining the choices that a model makes could even become a potential [legal requirement](https://arxiv.org/pdf/1711.00399.pdf). +While the applications of machine learning are impressive many models provide predictions that are hard to interpret or +reason about. This limits there use in many cases as often we want to know why and not just what a models prediction +is. Alarming predictions are rarely taken at face value and typically warrant further analysis. Indeed, in some cases +explaining the choices that a model makes could even become a potential +[legal requirement](https://arxiv.org/pdf/1711.00399.pdf). Explainability research provides us with algorithms that give insights into the context of trained models predictions. @@ -10,23 +14,81 @@ Explainability research provides us with algorithms that give insights into the - What set of features would you have to minimally change to obtain a new prediction of your choosing? - etc.. -The set of insights available are dependent on the trained model. If the model is a regression is makes sense to ask how the prediction varies with respect to some feature whereas it doesn't make sense to ask what minimal change is required to obtain a new classification. Insights are constrained by: +The set of insights available are dependent on the trained model. If the model is a regression is makes sense to ask +how the prediction varies with respect to some feature whereas it doesn't make sense to ask what minimal change is +required to obtain a new classification. Insights are constrained by: - The type of data the model handles (images, text, ...) - The type of model used (linear regression, neural network, ...) - The task the model performs (regression, classification, ...) -Explainability can be thought as an extra form of testing for a model. The insights derived should conform to the expected behaviour. Failure to do so may indicate issues with the model or problems with the dataset it's been trained on. More so explainability insights can also provide useful information on top of model predictions. How to change the model inputs to obtain a better output for instance. +## Applications: + +- At a core level explainability builds trust in the machine learning systems we use. It allows us to justify there use +in many contexts where an understanding of the basis of decision is paramount. +- Explainability can be thought as an extra form of testing for a model. The insights derived should conform to the +expected behaviour. Failure to do so may indicate issues with the model or problems with the dataset it's been trained +on. +- Insights can also be used to augment model functionaluty. Providing useful information on top of model predictions. +How to change the model inputs to obtain a better output for instance. +- Explainability allows researchers to look inside the black box and see what the models are doing. Helping them +understand more broadly the effects of the particular model or training schema they're using. ## Insights ### Global and Local Insights -Insights can be categorized into two types. Local and global. Intuitively a local insights says something about a single prediction that a model makes. As an example, given an image classified as a cat by a model what is the minimal set of features (pixels) that need to stay the same in order for that image to still be classified as a cat. Such an insight gives an idea of what the model is looking for when deciding to classify an instance into a specific class. Global insights on the other hand refer to the behaviour of the model over a set of inputs. Plots that show how a regression prediction varies with respect to a given feature while factoring out all the others are an example. These insights give a more general understanding of the relationship between inputs and model predictions. +Insights can be categorized into two types. Local and global. Intuitively a local insights says something about a +single prediction that a model makes. As an example, given an image classified as a cat by a model what is the minimal +set of features (pixels) that need to stay the same in order for that image to still be classified as a cat. Such an +insight gives an idea of what the model is looking for when deciding to classify an instance into a specific class. +Global insights on the other hand refer to the behaviour of the model over a set of inputs. Plots that show how a +regression prediction varies with respect to a given feature while factoring out all the others are an example. These +insights give a more general understanding of the relationship between inputs and model predictions. ### Insight Categories +Alibi provides a number of insights with which to explore and understand models. + #### Counter Factuals: -... +Given an instance of the dataset and a prediction given by a model a question that naturally arises is how would the +instance minimally have to change in order for a different prediction to be given. Counterfactuals are local +explanations as they relate to a single instance and model prediction. + +Given a classification model trained +on MNIST and a sample from the dataset with a given prediction, a counter factual would be a generated image that +closely resembles the original but is changed enough that the model correctly classifies it as a different number. + +Similarly, given tabular data that a model uses to make financial decisions about a customer a counter factual would +explain to a user how to change they're behaviour in order to obtain a different decision. Alternatively it may tell +the Machine Learning Engineer that the model is drawing incorrect assumptions if the recommended changes involve +features that shouldn't be relevant to the given decision. This may be down either to the model training or the dataset +being unbalanced. + +#### Anchors: + +Given a single instance and model prediction anchors are local explanations that tell us what minimal set of features +needs to stay the same in order that the model still give the same prediction or close predictions. This tells the +practitioner what it is in an instance that most influences the result. + +In the case of a trained image classification model an anchor for a given instance and classification would be a +minimal subset of the image that the model uses to make its decision. A Machine learning engineer might use this +insight to see if the model is concentrating on the correct image features in making a decision. This is especially +useful applied to an erroneous decision. + +#### Accumulated Local Effect Plot + +An ALE-plot shows the dependency of model output on a subset of the input features. This is a global insight as it +describes the behaviour of the model over the entire input space. This is commonly used to obtain a plot that +visualizes the relationship directly. + +Suppose a trained regression model that predicts the number of bikes rented on a given day dependent on the temperature, +humidity and wind speed. An ALE-plot for the temperature feature is a line graph with temperature plotted against +number of bikes rented. This type of insight can be used to confirm what you expect to see. In the bikes rented case +one would anticipate an increase in rentals up until a certain temperature and then a decrease after. + +#### Integrated gradients + +... \ No newline at end of file From e592e63dfd13035987db9bc9d95044392e1fad5f Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Mon, 25 Oct 2021 17:31:16 +0100 Subject: [PATCH 04/60] Add initall draft of global attrubution methods section --- doc/source/overview/high_level.md | 62 ++++++++++++++++++++++++------- 1 file changed, 48 insertions(+), 14 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index bce26148c..b40d30f5a 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -1,10 +1,11 @@ -# Overview of Explainability +# Practical Overview of Explainability While the applications of machine learning are impressive many models provide predictions that are hard to interpret or reason about. This limits there use in many cases as often we want to know why and not just what a models prediction is. Alarming predictions are rarely taken at face value and typically warrant further analysis. Indeed, in some cases explaining the choices that a model makes could even become a potential -[legal requirement](https://arxiv.org/pdf/1711.00399.pdf). +[legal requirement](https://arxiv.org/pdf/1711.00399.pdf). The following is a non-rigorous and practical overview of +explainability and the methods alibi provide. Explainability research provides us with algorithms that give insights into the context of trained models predictions. @@ -24,16 +25,30 @@ required to obtain a new classification. Insights are constrained by: ## Applications: -- At a core level explainability builds trust in the machine learning systems we use. It allows us to justify there use +#### Trust: +At a core level explainability builds trust in the machine learning systems we use. It allows us to justify there use in many contexts where an understanding of the basis of decision is paramount. -- Explainability can be thought as an extra form of testing for a model. The insights derived should conform to the + +#### Testing: +Explainability can be thought as an extra form of testing for a model. The insights derived should conform to the expected behaviour. Failure to do so may indicate issues with the model or problems with the dataset it's been trained on. -- Insights can also be used to augment model functionaluty. Providing useful information on top of model predictions. + +#### Functionality: +Insights can also be used to augment model functionaluty. Providing useful information on top of model predictions. How to change the model inputs to obtain a better output for instance. -- Explainability allows researchers to look inside the black box and see what the models are doing. Helping them + +#### Research: +Explainability allows researchers to look inside the black box and see what the models are doing. Helping them understand more broadly the effects of the particular model or training schema they're using. +:::{admonition} **Note 1: Biases** +Practitioners must be wary of using explainability to excuse bad models rather than ensuring there correctness. As an +example its possible to have a model that is correctly trained on a dataset, however due to the dataset being either +wrong or incomplete the model doesn't actually reflect reality. If the insights that explainability generates +conform to some confirmation bias of the person training the model then they are going to be blind to this issue and +instead use these methods to confirm erroneous results. +::: ## Insights @@ -67,7 +82,7 @@ the Machine Learning Engineer that the model is drawing incorrect assumptions if features that shouldn't be relevant to the given decision. This may be down either to the model training or the dataset being unbalanced. -#### Anchors: +#### Local Scoped Rules (Anchors): Given a single instance and model prediction anchors are local explanations that tell us what minimal set of features needs to stay the same in order that the model still give the same prediction or close predictions. This tells the @@ -78,17 +93,36 @@ minimal subset of the image that the model uses to make its decision. A Machine insight to see if the model is concentrating on the correct image features in making a decision. This is especially useful applied to an erroneous decision. -#### Accumulated Local Effect Plot +#### Global Feature Attribution -An ALE-plot shows the dependency of model output on a subset of the input features. This is a global insight as it -describes the behaviour of the model over the entire input space. This is commonly used to obtain a plot that -visualizes the relationship directly. +Global Feature Attribution methods aim to show the dependency of model output on a subset of the input features. This +is a global insight as it describes the behaviour of the model over the entire input space. An example is ALE-plots +that are used to obtain graphs that visualize the relationship between feature and prediction directly. Suppose a trained regression model that predicts the number of bikes rented on a given day dependent on the temperature, humidity and wind speed. An ALE-plot for the temperature feature is a line graph with temperature plotted against number of bikes rented. This type of insight can be used to confirm what you expect to see. In the bikes rented case one would anticipate an increase in rentals up until a certain temperature and then a decrease after. -#### Integrated gradients - -... \ No newline at end of file +#### Local Feature Attribution + +Local feature attribution asks how each feature in a given instance contributes to its prediction. In the case of an +image this would highlight those pixels that make the model give the output it does. Note this differs subtly from +local scoped rules in that they find the minimum subset of features required to give a prediction whereas local feature +attribution creates a heat map that tells us each features contribution to the overall outcome. + +A common issue with some attribution methods is that you must measure the contribution with respect to some baseline +point. The choice of baseline should capture a blank state in which the model makes essentially no prediction or assigns +probability of classes equally. A common choice for image classification is an image set to black. This works well in +many cases but sometimes fails to be a good choice. For instance for a model that classifies images taken at night +using an image with every pixel set to black means the attribution method with undervalue the use of dark pixels in +attributing the contribution of each feature to the classification. This is due to the contribution being calculated +relative to the baseline which in this case is already dark. + +A good use of local feature attribution is to detect that a classifier trained on images is focusing on the correct +features of an image in order to infer the class. As an example suppose you have a model trained to detect breeds of +dog. You want to check that it focuses on the correct features of the dog in making its prediction. If you compute +the feature attribution of a picture of a husky and discover that the model is only focusing on the snowy backdrop to +the husky then you know both that all the images of huskies in your dataset overwhelmingly have snowy backdrops and +also that the model will fail to generalize. It will potentially incorrectly classify other breeds of dog with snowy +backdrops and also fail to recognise huskies without snowy backdrops. \ No newline at end of file From 22fd8d13036e393ffb500c5852aec92669944f1b Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Tue, 26 Oct 2021 12:24:34 +0100 Subject: [PATCH 05/60] Add informal definition of counter factuals --- doc/source/overview/high_level.md | 68 +++++++++++++++++++++++++++---- 1 file changed, 59 insertions(+), 9 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index b40d30f5a..f3edd56d3 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -23,6 +23,21 @@ required to obtain a new classification. Insights are constrained by: - The type of model used (linear regression, neural network, ...) - The task the model performs (regression, classification, ...) +### Type of model used: +In particular some explainer methods apply to any type of model. They can do so because the underlying method doesn't +make use of the model internals. Instead, only depending on the model outputs given particular inputs. Methods that +apply in this general setting are known as **black box** methods. Methods that do require model internals, perhaps in +order to compute prediction gradients dependent on inputs, are known as white box models. This is a much stronger +constrain that black box methods. + +:::{admonition} **Note 1: Black Box Definition** +The use of Black Box here varies subtly from the conventional use within machine learning. Typically, we say a model is +a black box if the mechanism by which it makes predictions is too complicated to be interpretable to a human. Here we +use black box to mean that the explainer method doesn't need to have access to the model internals in order to be +applied. +::: + + ## Applications: #### Trust: @@ -35,14 +50,14 @@ expected behaviour. Failure to do so may indicate issues with the model or probl on. #### Functionality: -Insights can also be used to augment model functionaluty. Providing useful information on top of model predictions. +Insights can also be used to augment model functionality. Providing useful information on top of model predictions. How to change the model inputs to obtain a better output for instance. #### Research: Explainability allows researchers to look inside the black box and see what the models are doing. Helping them understand more broadly the effects of the particular model or training schema they're using. -:::{admonition} **Note 1: Biases** +:::{admonition} **Note 2: Biases** Practitioners must be wary of using explainability to excuse bad models rather than ensuring there correctness. As an example its possible to have a model that is correctly trained on a dataset, however due to the dataset being either wrong or incomplete the model doesn't actually reflect reality. If the insights that explainability generates @@ -50,9 +65,9 @@ conform to some confirmation bias of the person training the model then they are instead use these methods to confirm erroneous results. ::: -## Insights +# Insights -### Global and Local Insights +## Global and Local Insights Insights can be categorized into two types. Local and global. Intuitively a local insights says something about a single prediction that a model makes. As an example, given an image classified as a cat by a model what is the minimal @@ -62,11 +77,11 @@ Global insights on the other hand refer to the behaviour of the model over a set regression prediction varies with respect to a given feature while factoring out all the others are an example. These insights give a more general understanding of the relationship between inputs and model predictions. -### Insight Categories +## Insight Categories Alibi provides a number of insights with which to explore and understand models. -#### Counter Factuals: +### Counter Factuals: Given an instance of the dataset and a prediction given by a model a question that naturally arises is how would the instance minimally have to change in order for a different prediction to be given. Counterfactuals are local @@ -82,7 +97,42 @@ the Machine Learning Engineer that the model is drawing incorrect assumptions if features that shouldn't be relevant to the given decision. This may be down either to the model training or the dataset being unbalanced. -#### Local Scoped Rules (Anchors): +A counterfactual, $x_{cf}$, needs to satisfy + +- The model prediction on $x_{cf}$ needs to be close to the predefined output. +- The counterfactual $x_{cf}$ should be interpretable. + +The first requirement is easy enough to satisfy. The second however requires some idea of what interpretable means. In +our case we require that the perturbation $\delta$ changing the original instance $x_0$ into $x_{cf} = x_0 + \delta$ +should be sparse. This means we prefer solutions that change a small subset of the features to construct $x_{cf}$. This +is limits the complexity of the solution making it more understandable. Secondly we want $x_{cf}$ to lie close to both +the overall data distribution and the counterfactual class specific data distribution. This condition ensures the +counter factual makes sense as something that would both occur in the dataset and occur within the target counter +factual class. + +### Explainers: + +The following discusses the set of explainer methods available from alibi for generating counterfactual insights. + +#### Counterfactuals Instances: + +TODO + +#### Contrastive Explanation Method: + +TODO + +#### Counterfactuals Guided by Prototypes: + +TODO + +#### Counterfactuals with Reinforcement Learning: + +TODO + +___ + +### Local Scoped Rules (Anchors): Given a single instance and model prediction anchors are local explanations that tell us what minimal set of features needs to stay the same in order that the model still give the same prediction or close predictions. This tells the @@ -93,7 +143,7 @@ minimal subset of the image that the model uses to make its decision. A Machine insight to see if the model is concentrating on the correct image features in making a decision. This is especially useful applied to an erroneous decision. -#### Global Feature Attribution +### Global Feature Attribution Global Feature Attribution methods aim to show the dependency of model output on a subset of the input features. This is a global insight as it describes the behaviour of the model over the entire input space. An example is ALE-plots @@ -104,7 +154,7 @@ humidity and wind speed. An ALE-plot for the temperature feature is a line graph number of bikes rented. This type of insight can be used to confirm what you expect to see. In the bikes rented case one would anticipate an increase in rentals up until a certain temperature and then a decrease after. -#### Local Feature Attribution +### Local Feature Attribution Local feature attribution asks how each feature in a given instance contributes to its prediction. In the case of an image this would highlight those pixels that make the model give the output it does. Note this differs subtly from From 563b1abb8af6ca5f40627812f7a353d73dd7c843 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Tue, 26 Oct 2021 17:04:27 +0100 Subject: [PATCH 06/60] Add informal definition of anchors --- doc/source/overview/high_level.md | 59 ++++++++++++++++++++++--------- 1 file changed, 42 insertions(+), 17 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index f3edd56d3..dd3fb93f9 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -23,7 +23,6 @@ required to obtain a new classification. Insights are constrained by: - The type of model used (linear regression, neural network, ...) - The task the model performs (regression, classification, ...) -### Type of model used: In particular some explainer methods apply to any type of model. They can do so because the underlying method doesn't make use of the model internals. Instead, only depending on the model outputs given particular inputs. Methods that apply in this general setting are known as **black box** methods. Methods that do require model internals, perhaps in @@ -40,20 +39,24 @@ applied. ## Applications: -#### Trust: +**Trust:** + At a core level explainability builds trust in the machine learning systems we use. It allows us to justify there use in many contexts where an understanding of the basis of decision is paramount. -#### Testing: +**Testing:** + Explainability can be thought as an extra form of testing for a model. The insights derived should conform to the expected behaviour. Failure to do so may indicate issues with the model or problems with the dataset it's been trained on. -#### Functionality: +**Functionality:** + Insights can also be used to augment model functionality. Providing useful information on top of model predictions. How to change the model inputs to obtain a better output for instance. -#### Research: +**Research:** + Explainability allows researchers to look inside the black box and see what the models are doing. Helping them understand more broadly the effects of the particular model or training schema they're using. @@ -65,9 +68,9 @@ conform to some confirmation bias of the person training the model then they are instead use these methods to confirm erroneous results. ::: -# Insights +## Insights -## Global and Local Insights +### Global and Local Insights Insights can be categorized into two types. Local and global. Intuitively a local insights says something about a single prediction that a model makes. As an example, given an image classified as a cat by a model what is the minimal @@ -77,11 +80,11 @@ Global insights on the other hand refer to the behaviour of the model over a set regression prediction varies with respect to a given feature while factoring out all the others are an example. These insights give a more general understanding of the relationship between inputs and model predictions. -## Insight Categories +### Insight Categories Alibi provides a number of insights with which to explore and understand models. -### Counter Factuals: +#### Counter Factuals: Given an instance of the dataset and a prediction given by a model a question that naturally arises is how would the instance minimally have to change in order for a different prediction to be given. Counterfactuals are local @@ -110,29 +113,29 @@ the overall data distribution and the counterfactual class specific data distrib counter factual makes sense as something that would both occur in the dataset and occur within the target counter factual class. -### Explainers: +##### Explainers: The following discusses the set of explainer methods available from alibi for generating counterfactual insights. -#### Counterfactuals Instances: +**Counterfactuals Instances:** TODO -#### Contrastive Explanation Method: +**Contrastive Explanation Method:** TODO -#### Counterfactuals Guided by Prototypes: +**Counterfactuals Guided by Prototypes:** TODO -#### Counterfactuals with Reinforcement Learning: +**Counterfactuals with Reinforcement Learning:** TODO ___ -### Local Scoped Rules (Anchors): +#### Local Scoped Rules (Anchors): Given a single instance and model prediction anchors are local explanations that tell us what minimal set of features needs to stay the same in order that the model still give the same prediction or close predictions. This tells the @@ -143,7 +146,29 @@ minimal subset of the image that the model uses to make its decision. A Machine insight to see if the model is concentrating on the correct image features in making a decision. This is especially useful applied to an erroneous decision. -### Global Feature Attribution +We introduce anchors in a more formal manner, taking the definition and discussion from *. + +Let A be a rule (set of predicates) acting on such an interpretable representation, such that $A(x)$ returns $1$ if all +its feature predicates are true for instance $x$. An example of such a rule, $A$, could be represented by the set +$\{not, bad\}$ in which case any sentence, $s$, with both $not$ and $bad$ in it would mean $A(s)=1$ + +Given a classifier $f$, instance $x$ and data distribution $\mathcal{D}$, $A$ is an anchor for $x$ if $A(x) = 1$ and, + +$$ E_{\mathcal{D}(z|A)}[1_{f(x)=f(z)}] ≥ τ $$ + +The distribution $\mathcal{D}(z|A)$ is those points from the dataset for which the anchor holds. This is like fixing +some set of features of an instance and allowing all the others to vary. Intuitively, the anchor condition says any +point in the data distribution that satisfies the anchor $A$ is expected to match the model prediction $f(x)$ with +probability $\tau$ (usually $\tau$ is chosen to be 0.95). + +Let $prec(A) = E_{\mathcal{D}(z|A)}[1_{f(x)=f(z)}]$ be the precision of an anchor. Note that the precision of an anchor +is considered with respect to the set of points in the data distribution to which the anchor applies, +$\mathcal{D}(z|A)}$. We can consider the **coverage** of an anchor as the probability that $A(z)=1$ for any instance +$z$ in the data distribution. The coverage tells us the proportion of the distribution that the anchor applies to. +The aim here is to find the anchor that applies to the largest set of instances. So what is the most general rule we +can find that any instance must satisfy in order that it have the same classification as $x$. + +#### Global Feature Attribution Global Feature Attribution methods aim to show the dependency of model output on a subset of the input features. This is a global insight as it describes the behaviour of the model over the entire input space. An example is ALE-plots @@ -154,7 +179,7 @@ humidity and wind speed. An ALE-plot for the temperature feature is a line graph number of bikes rented. This type of insight can be used to confirm what you expect to see. In the bikes rented case one would anticipate an increase in rentals up until a certain temperature and then a decrease after. -### Local Feature Attribution +#### Local Feature Attribution Local feature attribution asks how each feature in a given instance contributes to its prediction. In the case of an image this would highlight those pixels that make the model give the output it does. Note this differs subtly from From ad837715b63f6511150b99949a72e4394cc1738a Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Tue, 26 Oct 2021 18:41:24 +0100 Subject: [PATCH 07/60] Add initial informal discussion on ALE --- doc/source/overview/high_level.md | 65 +++++++++++++++++++++++++++---- 1 file changed, 58 insertions(+), 7 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index dd3fb93f9..6df4c43f2 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -163,21 +163,53 @@ probability $\tau$ (usually $\tau$ is chosen to be 0.95). Let $prec(A) = E_{\mathcal{D}(z|A)}[1_{f(x)=f(z)}]$ be the precision of an anchor. Note that the precision of an anchor is considered with respect to the set of points in the data distribution to which the anchor applies, -$\mathcal{D}(z|A)}$. We can consider the **coverage** of an anchor as the probability that $A(z)=1$ for any instance +$\mathcal{D}(z|A)$. We can consider the **coverage** of an anchor as the probability that $A(z)=1$ for any instance $z$ in the data distribution. The coverage tells us the proportion of the distribution that the anchor applies to. The aim here is to find the anchor that applies to the largest set of instances. So what is the most general rule we can find that any instance must satisfy in order that it have the same classification as $x$. +##### Explainers: + +The following discusses the set of explainer methods available from alibi for generating anchor insights. + +**Anchors** + +TODO + +**Contrastive Explanation Method:** + +TODO + + #### Global Feature Attribution Global Feature Attribution methods aim to show the dependency of model output on a subset of the input features. This -is a global insight as it describes the behaviour of the model over the entire input space. An example is ALE-plots -that are used to obtain graphs that visualize the relationship between feature and prediction directly. +is a global insight as it describes the behaviour of the model over the entire input space. ALE-plots, M-plots and +PDP-plots all are used to obtain graphs that visualize the relationship between feature and prediction directly. Suppose a trained regression model that predicts the number of bikes rented on a given day dependent on the temperature, -humidity and wind speed. An ALE-plot for the temperature feature is a line graph with temperature plotted against -number of bikes rented. This type of insight can be used to confirm what you expect to see. In the bikes rented case -one would anticipate an increase in rentals up until a certain temperature and then a decrease after. +humidity and wind speed. Global Feature Attribution for the temperature feature might be a line graph with temperature +plotted against number of bikes rented. This type of insight can be used to confirm what you expect to see. In the +bikes rented case one would anticipate an increase in rentals up until a certain temperature and then a decrease after. + +**Accumulated Local Effects:** + +Alibi only provides Accumulated Local Effects plots because these give the most accurate insight of ALE-plots, M-plots +and PDP-plots. ALE-plots work by averaging the local changes in prediction at every instance (local effects) in the +data distribution. They then accumulate these differences to obtain a plot of prediction over the selected feature +dependencies. + +Suppose we have a model $f$ and features $X={x_1,... x_n}$. Given a subset of the features $X_S$ then let +$X_C=X \\ X_S$. We want to obtain the ALE-plot for the features $X_S$ typical chosen to be at most 2 in order that +they can easily be visualized. The ALE-plot is defined as: + +$$ +\hat{f}_{S, ALE}(X_S) = +\int_{z_{0, S}}^{S} \mathbb{E}_{X_C|X_S=x_s} +\left[ \frac{\partial \hat{f}}{\partial x_S} (X_s, X_c)|X_S=z_S \right] dz_{S} - constant +$$ + +TODO: further discussion on definition #### Local Feature Attribution @@ -200,4 +232,23 @@ dog. You want to check that it focuses on the correct features of the dog in mak the feature attribution of a picture of a husky and discover that the model is only focusing on the snowy backdrop to the husky then you know both that all the images of huskies in your dataset overwhelmingly have snowy backdrops and also that the model will fail to generalize. It will potentially incorrectly classify other breeds of dog with snowy -backdrops and also fail to recognise huskies without snowy backdrops. \ No newline at end of file +backdrops and also fail to recognise huskies without snowy backdrops. + +TODO: discussion on definition + +##### Explainers: + +The following discusses the set of explainer methods available from alibi for generating Local Feature Attribution +insights. + +**Integrated Gradients** + +TODO + +**Kernel SHAP** + +TODO + +**Tree SHAP** + +TODO From ee18d0a09061ee4fc1f2081bfe68f5c6176e93cc Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Thu, 28 Oct 2021 12:46:38 +0100 Subject: [PATCH 08/60] Add draft intros on cf instances, cem and cf proto methods --- doc/source/overview/high_level.md | 154 +++++++++++++++++++++++------- 1 file changed, 122 insertions(+), 32 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 6df4c43f2..653b28fbb 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -66,8 +66,13 @@ example its possible to have a model that is correctly trained on a dataset, how wrong or incomplete the model doesn't actually reflect reality. If the insights that explainability generates conform to some confirmation bias of the person training the model then they are going to be blind to this issue and instead use these methods to confirm erroneous results. + +__TODO__: further discussion on faithfulness of models. Make clear that these insights apply to the model and only to +the data via the model. ::: +__TODO__: picture of explainability pipeline: training -> prediction -> insight + ## Insights ### Global and Local Insights @@ -90,9 +95,9 @@ Given an instance of the dataset and a prediction given by a model a question th instance minimally have to change in order for a different prediction to be given. Counterfactuals are local explanations as they relate to a single instance and model prediction. -Given a classification model trained -on MNIST and a sample from the dataset with a given prediction, a counter factual would be a generated image that -closely resembles the original but is changed enough that the model correctly classifies it as a different number. +Given a classification model trained on MNIST and a sample from the dataset with a given prediction, a counter factual +would be a generated image that closely resembles the original but is changed enough that the model correctly +classifies it as a different number. Similarly, given tabular data that a model uses to make financial decisions about a customer a counter factual would explain to a user how to change they're behaviour in order to obtain a different decision. Alternatively it may tell @@ -105,33 +110,111 @@ A counterfactual, $x_{cf}$, needs to satisfy - The model prediction on $x_{cf}$ needs to be close to the predefined output. - The counterfactual $x_{cf}$ should be interpretable. -The first requirement is easy enough to satisfy. The second however requires some idea of what interpretable means. In -our case we require that the perturbation $\delta$ changing the original instance $x_0$ into $x_{cf} = x_0 + \delta$ -should be sparse. This means we prefer solutions that change a small subset of the features to construct $x_{cf}$. This -is limits the complexity of the solution making it more understandable. Secondly we want $x_{cf}$ to lie close to both -the overall data distribution and the counterfactual class specific data distribution. This condition ensures the -counter factual makes sense as something that would both occur in the dataset and occur within the target counter -factual class. +The first requirement is easy enough to satisfy. The second however requires some idea of what interpretable means. +Intuitively it would require that the counterfactual constructed makes sense as an instance of the dataset. Each of the +methods available in alibi deal with interpretability slightly differently. All of them agree however that we require +that the perturbation $\delta$ changing the original instance $x_0$ into $x_{cf} = x_0 + \delta$ should be sparse. This +means we prefer solutions that change a small subset of the features to construct $x_{cf}$. This limits the complexity +of the solution making them more understandable. ##### Explainers: -The following discusses the set of explainer methods available from alibi for generating counterfactual insights. +The following discusses the set of explainer methods available from alibi for generating counterfactual insights. + +:::{admonition} **Note 3: fit and explain method runtime differences** +Alibi explainers expose two methods `fit` and `explain`. Typically, in machine learning the method that takes the most +time is the fit method as that's where the model optimization conventionally takes place. In explainability however the +model should already be fit and instead the explain step usually requires the bulk of computation. However this isn't +always the case. + +Among the following explainers there are two categories of approach taken. The first fits a counterfactual when the +user requests the insight. This happens during the `.explain()` method call on the explainer class. They do this by +running gradient descent on model inputs to find a counterfactual. The methods that take this approach are +Counterfactuals Instances, Contrastive Explanation Method and Counterfactuals Guided by Prototypes. Thus, the `fit` +methods in these cases are quick but the `explain` method slow. + +The other approach however uses reinforcement learning to pretrains a model that produces explanations on the fly. The +training in this case takes place during the `fit` method call and so this has a long runtime while the `explain` +method is quick. If you want performant explanations in production environments then the later method is preferable. +::: + **Counterfactuals Instances:** -TODO +- Black/white box method +- Classification models +- Tabular and image data types + +Let the model be given by $f$ and $f_{t}$ be the probability of class $t$, $p_t$ is the target probability of class +$t$ and $0<\lambda<1$ a hyperparameter. This method constructs counterfactual instances from an instance $X$ by running +gradient descent on a new instance $X'$ to minimize the following loss. + +$$L(X'|X)= (f_{t}(X') - p_{t})^2 + \lambda L_{1}(X'|X)$$ + +The first term pushes the constructed counterfactual towards the desired class and the use of the $L_{1}$ norm +encourages sparse solutions. + +This method requires computing gradients of the loss in the model inputs. If we have access to the model and the +gradients are available then this can be done directly. If not however, we can use numerical gradients although this +comes at a considerable performance cost. + +A problem arises here in that encouraging sparse solutions doesn't necessarily generate interpretable counterfactuals. +This happens because the loss doesn't prevent the counter factual solution moving off the data distribution. Thus, you +will likely get a solution that doesn't look like something that you'd expect to see from the data. + +__TODO: Picture example.__ **Contrastive Explanation Method:** -TODO +- Black/white box method +- Classification models +- Tabular and image data types + +CEM follows a similar approach to the above but includes two new details. Firstly an elastic net +($\beta L_{1} + L_{2}$) regularizer term is added to the loss. This causes the solutions to be both close to the +original instance and sparse. Secondly an optional autoencoder is trained to penalize conterfactual instances that +deviate from the data distribution. This works by requiring minimize the gradient descent minimize the reconstruction +loss of instances passed through the autoencoder. If an instance is unlike anything in the dataset then the autoencoder +will struggle to recreate it well, and it's loss term will be high. We require two hyperparameters $\beta$ and $\gamma$ +to define the following Loss, + +$$L(X'|X)= (f_{t}(X') - p_{t})^2 + \beta L_{1}(X' - X) + L_{2}(X' - X)^2 + \gamma L_{2} (X' - AE(X'))^2$$ + +This approach extends the definition of interpretable to include a requirement that the computed counterfactual be +believably a member of the dataset. It turns out however that this condition isn't enough to always get interpretable +results. And in particular the constructed counterfactual often doesn't look like a member of the target class. + +Similarly to the previous method, this method can apply to both black and white box models. In the case of black box +there is still a performance cost from computing the numerical gradients. + +__TODO: Picture example of results including less interpretable ones.__ **Counterfactuals Guided by Prototypes:** -TODO +- Black/white box method +- Classification models +- Tabular, image and categorical data types + +For this method we add another term to the loss that optimizes for distance between the counterfactual instance and +close members of the target class. Now the definition of interpretability has been extended even further to include the +requirement that the counterfactual be believably a member of the target class and not just in the data distribution. + +With hyperparmaters $c$ and $\beta$, the loss is now given by: + +$$L(X'|X)= cL_{pred} + \beta L_{1} + L_{2} + L_{AE} + L_{proto}$$ + +__TODO: Picture example of results.__ + +It's clear that this method produces much more interpretable results. As well as this, because the proto term pushes +the solution towards the target class we can actually remove the prediction loss term and still obtain a viable counter +factual. This doesn't make much difference if we can compute the gradients directly from the model but if not, and we +are using numerical gradients then the $L_{pred}$ term is a significant bottleneck owing to repeated calls on the model +to approximate the gradients. Thus, this method also applies to blackbox models with a significant performance gain on +the previous approaches mentioned. **Counterfactuals with Reinforcement Learning:** -TODO +__TODO__ ___ @@ -146,15 +229,24 @@ minimal subset of the image that the model uses to make its decision. A Machine insight to see if the model is concentrating on the correct image features in making a decision. This is especially useful applied to an erroneous decision. -We introduce anchors in a more formal manner, taking the definition and discussion from *. +##### Explainers: + +The following two explainer methods are available from alibi for generating anchor insights. Each approaches the idea +in slightly different ways. + +**Anchors** + +We introduce anchors in a more formal manner, taking the definition and discussion from [Anchors: High-Precision +Model-Agnostic Explanations](https://homes.cs.washington.edu/~marcotcr/aaai18.pdf) Let A be a rule (set of predicates) acting on such an interpretable representation, such that $A(x)$ returns $1$ if all its feature predicates are true for instance $x$. An example of such a rule, $A$, could be represented by the set $\{not, bad\}$ in which case any sentence, $s$, with both $not$ and $bad$ in it would mean $A(s)=1$ -Given a classifier $f$, instance $x$ and data distribution $\mathcal{D}$, $A$ is an anchor for $x$ if $A(x) = 1$ and, +Given a classifier $f$, $\tau>0$, instance $x$ and data distribution $\mathcal{D}$, $A$ is an anchor for $x$ if +$A(x) = 1$ and, -$$ E_{\mathcal{D}(z|A)}[1_{f(x)=f(z)}] ≥ τ $$ +$$ E_{\mathcal{D}(z|A)}[1_{f(x)=f(z)}] ≥ \tau $$ The distribution $\mathcal{D}(z|A)$ is those points from the dataset for which the anchor holds. This is like fixing some set of features of an instance and allowing all the others to vary. Intuitively, the anchor condition says any @@ -168,18 +260,14 @@ $z$ in the data distribution. The coverage tells us the proportion of the distri The aim here is to find the anchor that applies to the largest set of instances. So what is the most general rule we can find that any instance must satisfy in order that it have the same classification as $x$. -##### Explainers: - -The following discusses the set of explainer methods available from alibi for generating anchor insights. - -**Anchors** - -TODO +__TODO__: Include picture explanation of anchors +__TODO__: Include rough idea of method +__TODO__: Include discussion of runtime complexity, especially at classification boundaries. **Contrastive Explanation Method:** -TODO - +__TODO__: Give definition +__TODO__: Explain differences to Anchors definition. #### Global Feature Attribution @@ -209,7 +297,7 @@ $$ \left[ \frac{\partial \hat{f}}{\partial x_S} (X_s, X_c)|X_S=z_S \right] dz_{S} - constant $$ -TODO: further discussion on definition +__TODO__: further discussion on definition #### Local Feature Attribution @@ -234,7 +322,9 @@ the husky then you know both that all the images of huskies in your dataset over also that the model will fail to generalize. It will potentially incorrectly classify other breeds of dog with snowy backdrops and also fail to recognise huskies without snowy backdrops. -TODO: discussion on definition +__TODO__: discussion on definition + +- Efficiency property... ##### Explainers: @@ -243,12 +333,12 @@ insights. **Integrated Gradients** -TODO +__TODO__ **Kernel SHAP** -TODO +__TODO__ **Tree SHAP** -TODO +__TODO__ From c6343da4fcfa0a6f9dbb01bd107e1cd16f80ad4e Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Thu, 28 Oct 2021 13:27:25 +0100 Subject: [PATCH 09/60] Initial draft of cfrl section --- doc/source/overview/high_level.md | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 653b28fbb..13b16e883 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -214,7 +214,26 @@ the previous approaches mentioned. **Counterfactuals with Reinforcement Learning:** -__TODO__ +This method splits from the approach taken by the above three significantly. Instead of minimizing a loss at explain +time it trains a new model when fitting the explainer called an actor that takes instances and produces counterfactuals. +It does this using reinforcement learning. In RL an actor model takes some state as input and generates actions, in our +case the actor takes an instance with a specific classification and produces an action in the form of a counter factual. +Outcomes of actions are assigned reward dependent on some reward function that's designed to encourage specific +behaviours of the actor. In our case we reward counterfactuals that are firstly classified as the correct target class, +secondly are close to the data distribution as modelled by an autoencoder, and thirdly are sparse perturbations of the +original instance. Finally, the reinforcement training step pushes the actor to take high reward actions instead of +low reward actions. + +As well as this CFRL actors can be trained to ensure that certain constraints are taken into account when generating +counterfactuals. This is highly desirable as a use case for counterfactuals is suggesting small changes to an +instance in order to obtain a different classification. In certain cases you want these changes to be constrained, for +instance when dealing with immutable characteristics. + +To train the actor we randomly generate in distribution data instances, along with constraints and target +classifications. We then compute the reward and update the actor to maximize the reward. We end up with an actor that +is able to generate constrained interpretable counterfactual instances on demand. + +__TODO__: Example images ___ @@ -342,3 +361,8 @@ __TODO__ **Tree SHAP** __TODO__ + + +##### Example: + +__TODO__: Give example that applies to all the explainer methods. \ No newline at end of file From 9f21d576289b3bebc1b7ef5fd250d0c5569f62ac Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Fri, 29 Oct 2021 18:42:41 +0100 Subject: [PATCH 10/60] Add draft of anchor section --- doc/source/overview/high_level.md | 135 +++++++++++++++++++++++------- 1 file changed, 107 insertions(+), 28 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 13b16e883..bd1afca9d 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -67,11 +67,13 @@ wrong or incomplete the model doesn't actually reflect reality. If the insights conform to some confirmation bias of the person training the model then they are going to be blind to this issue and instead use these methods to confirm erroneous results. -__TODO__: further discussion on faithfulness of models. Make clear that these insights apply to the model and only to +__TODO__: +- further discussion on faithfulness of models. Make clear that these insights apply to the model and only to the data via the model. ::: -__TODO__: picture of explainability pipeline: training -> prediction -> insight +__TODO__: +- picture of explainability pipeline: training -> prediction -> insight ## Insights @@ -85,6 +87,9 @@ Global insights on the other hand refer to the behaviour of the model over a set regression prediction varies with respect to a given feature while factoring out all the others are an example. These insights give a more general understanding of the relationship between inputs and model predictions. +__TODO__: +- Add image to illustart + ### Insight Categories Alibi provides a number of insights with which to explore and understand models. @@ -138,6 +143,9 @@ training in this case takes place during the `fit` method call and so this has a method is quick. If you want performant explanations in production environments then the later method is preferable. ::: +__TODO__: +- schematic image explaining search for counterfactual as determined by loss +- schematic image explaining difference between different approaches. **Counterfactuals Instances:** @@ -162,7 +170,8 @@ A problem arises here in that encouraging sparse solutions doesn't necessarily g This happens because the loss doesn't prevent the counter factual solution moving off the data distribution. Thus, you will likely get a solution that doesn't look like something that you'd expect to see from the data. -__TODO: Picture example.__ +__TODO:__ +- Picture example. Like from here: https://github.com/interpretml/DiCE **Contrastive Explanation Method:** @@ -187,7 +196,8 @@ results. And in particular the constructed counterfactual often doesn't look lik Similarly to the previous method, this method can apply to both black and white box models. In the case of black box there is still a performance cost from computing the numerical gradients. -__TODO: Picture example of results including less interpretable ones.__ +__TODO:__ +- Picture example of results including less interpretable ones. **Counterfactuals Guided by Prototypes:** @@ -203,7 +213,8 @@ With hyperparmaters $c$ and $\beta$, the loss is now given by: $$L(X'|X)= cL_{pred} + \beta L_{1} + L_{2} + L_{AE} + L_{proto}$$ -__TODO: Picture example of results.__ +__TODO:__ +- Picture example of results. It's clear that this method produces much more interpretable results. As well as this, because the proto term pushes the solution towards the target class we can actually remove the prediction loss term and still obtain a viable counter @@ -224,34 +235,40 @@ secondly are close to the data distribution as modelled by an autoencoder, and t original instance. Finally, the reinforcement training step pushes the actor to take high reward actions instead of low reward actions. -As well as this CFRL actors can be trained to ensure that certain constraints are taken into account when generating +As well as this CFRL actors are trained to ensure that certain constraints can be taken into account when generating counterfactuals. This is highly desirable as a use case for counterfactuals is suggesting small changes to an instance in order to obtain a different classification. In certain cases you want these changes to be constrained, for -instance when dealing with immutable characteristics. +instance when dealing with immutable characteristics. In other words if you are using the counterfactual to advise +changes in behaviour you want to ensure the changes are enactable. Suggesting that someone needs to be 2 years younger +to apply for a loan isn't very helpful. To train the actor we randomly generate in distribution data instances, along with constraints and target -classifications. We then compute the reward and update the actor to maximize the reward. We end up with an actor that -is able to generate constrained interpretable counterfactual instances on demand. - -__TODO__: Example images - +classifications. We then compute the reward and update the actor to maximize the reward. We do this without needing +access to the critic internals. We end up with an actor that is able to generate interpretable counterfactual instances +at runtime with arbitrary constraints. + +__TODO__: +- Example images +- Black box Discussion of method +- At explain time ask for specific constraints... key point can have arbitrary constraints in counterfactuals. ___ -#### Local Scoped Rules (Anchors): +#### Local Necessary Features: -Given a single instance and model prediction anchors are local explanations that tell us what minimal set of features -needs to stay the same in order that the model still give the same prediction or close predictions. This tells the -practitioner what it is in an instance that most influences the result. +Given a single instance and model prediction Local Necessary Features are local explanations that tell us what minimal +set of features needs to stay the same in order that the model still give the same prediction or close predictions. +This tells the practitioner what it is in an instance that most influences the result. -In the case of a trained image classification model an anchor for a given instance and classification would be a +In the case of a trained image classification model, Local Necessary Features for a given instance would be a minimal subset of the image that the model uses to make its decision. A Machine learning engineer might use this insight to see if the model is concentrating on the correct image features in making a decision. This is especially useful applied to an erroneous decision. ##### Explainers: -The following two explainer methods are available from alibi for generating anchor insights. Each approaches the idea -in slightly different ways. +The following two explainer methods are available from alibi for generating Local Necessary Features insights. Each +approaches the idea in slightly different ways but the main difference is one gives an idea of the size of the area +over the dataset for which the insight applies. **Anchors** @@ -279,14 +296,73 @@ $z$ in the data distribution. The coverage tells us the proportion of the distri The aim here is to find the anchor that applies to the largest set of instances. So what is the most general rule we can find that any instance must satisfy in order that it have the same classification as $x$. -__TODO__: Include picture explanation of anchors -__TODO__: Include rough idea of method -__TODO__: Include discussion of runtime complexity, especially at classification boundaries. +__TODO__: +- Include picture explanation of anchors -**Contrastive Explanation Method:** +Alibi finds anchors by building them up from the bottom up. We start with an empty anchor $A=\{\}$ and then consider +the set of possible feature values from the instance of interest we can add. $\mathcal{A} = +\{A \wedge a_0, A \wedge a_1, A \wedge a_2, ..., A \wedge a_n\}$. In the case of textual data for instance the $a_i$ +might be words from the instance sentence. In the case of image data we take a partition the image into superpixels +which we choose to be the $a_i$. At each stage we're going to look at the set of possible next anchors that can be made +by adding in a feature $a_i$ from the instance. We then compute the precision of each of the resulting anchors and +choose the best. We iteratively build the anchor up like this until the required precision is met. + +As we build up the anchors from the empty case we need to compute their precision in order to know which one to choose. +Given any specific anchor $A=\{a_1, ..., a_n\}$ we want to know its precision. We can't compute this directly, +instead we sample from $\mathcal{D}(z|A)$ to obtain an estimate. To do this we use a number of different methods for +different data types. For instance, in the case of textual data we want to generate sentences with the anchor words in +them and also ensure that they make sense within the data distribution. One option is to replace the missing words +(those not in the anchor) from the instance with ones with the same POS tag. This means the resulting samples makes +semantic sense rather than being a random set of words. Other methods are available. In the case of images we sample an +image from the data set and then superimpose the superpixels on top of it. Hence we can estimate the precision of that +anchor by sampling from $\mathcal{D}(z|A)$ and computing $1_{f(x)=f(z)}$. + +Because at each step in building up the anchor we need to consider all the possible features we can add this algorithm +is much slower for high dimensional feature spaces. Similarly, if choosing an anchor close to a decision boundary the +method may require a very large number of samples from $\mathcal{D}(z|A)$ and $\mathcal{D}(z|A')$ in order to +distinguish two anchors $A$ and $A'$. + +Note that this is a blackbox method as we just need to be able to predict the value of an instance and don't need +to access model internals. + +**Pertinent Positives:** + +Informally a Pertinent Positive is the subset of an instance that still obtains the same classification. These differ +from anchors primarily in the fact that they aren't constructed to maximize coverage. The method to obtain them is +also substantially different. + +Given an +instance $x_0$ we let $\delta = 0$ and then set out to optimize $\delta$ to minimize the following loss: + +$$ +l = min_{ +\delta\in \mathcal{X}\cap x_0} \left \{ +c\cdot f_{\kappa}^{pos}(\delta) ++ \beta \|\delta\|_{1} ++ \|\delta\|^{2}_{2} ++ \gamma \|\delta - AE(\delta)\|^{2}_{2} +\right \} +$$ + +where + +$$ +f^{pos}_{\kappa}(x_0, \delta) = max\left\{ +max_{i\neq t_{0}}[Pred(\delta)]_{i} - [Pred(\delta)]_{t_0}, +\kappa +\right\} +$$ + +__TODO__: +- intuitive explanation + +Note this is both a black and white box method as while we need to compute the loss gradient through the model we can +do this using numerical differentiation. This comes at a significant computational cost due to the extra model calls +we need to make. -__TODO__: Give definition -__TODO__: Explain differences to Anchors definition. +__TODO__: +- Give definition, Note that the CEM paper describes anchors as global insights. +- Explain differences to Anchors definition. #### Global Feature Attribution @@ -316,7 +392,8 @@ $$ \left[ \frac{\partial \hat{f}}{\partial x_S} (X_s, X_c)|X_S=z_S \right] dz_{S} - constant $$ -__TODO__: further discussion on definition +__TODO__: +- further discussion on definition #### Local Feature Attribution @@ -341,7 +418,8 @@ the husky then you know both that all the images of huskies in your dataset over also that the model will fail to generalize. It will potentially incorrectly classify other breeds of dog with snowy backdrops and also fail to recognise huskies without snowy backdrops. -__TODO__: discussion on definition +__TODO__: +- discussion on definition - Efficiency property... @@ -365,4 +443,5 @@ __TODO__ ##### Example: -__TODO__: Give example that applies to all the explainer methods. \ No newline at end of file +__TODO__: +- Give example that applies to all the explainer methods. \ No newline at end of file From 7f10e3e51d27e7c3536863b93dd3c1cbedff6fbe Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Mon, 1 Nov 2021 10:50:25 +0000 Subject: [PATCH 11/60] Add finished draft of Pertinent Positives --- doc/source/overview/high_level.md | 37 +++++++++++++------------------ 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index bd1afca9d..ad529a018 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -7,7 +7,7 @@ explaining the choices that a model makes could even become a potential [legal requirement](https://arxiv.org/pdf/1711.00399.pdf). The following is a non-rigorous and practical overview of explainability and the methods alibi provide. -Explainability research provides us with algorithms that give insights into the context of trained models predictions. +Explainability research provides us with algorithms that give insights into trained models predictions. - How does a prediction change dependent on feature inputs? - What features are Important for a given prediction to hold? @@ -16,12 +16,15 @@ Explainability research provides us with algorithms that give insights into the - etc.. The set of insights available are dependent on the trained model. If the model is a regression is makes sense to ask -how the prediction varies with respect to some feature whereas it doesn't make sense to ask what minimal change is +how the prediction varies with respect to some feature. Whereas, it doesn't make sense to ask what minimal change is required to obtain a new classification. Insights are constrained by: - The type of data the model handles (images, text, ...) -- The type of model used (linear regression, neural network, ...) - The task the model performs (regression, classification, ...) +- The type of model used (linear regression, neural network, ...) + +__TODO:__ +- explain type of model... In particular some explainer methods apply to any type of model. They can do so because the underlying method doesn't make use of the model internals. Instead, only depending on the model outputs given particular inputs. Methods that @@ -331,39 +334,31 @@ Informally a Pertinent Positive is the subset of an instance that still obtains from anchors primarily in the fact that they aren't constructed to maximize coverage. The method to obtain them is also substantially different. -Given an -instance $x_0$ we let $\delta = 0$ and then set out to optimize $\delta$ to minimize the following loss: +Given an instance $x_0$ we set out to find a $\delta$ that minimizes the following loss: $$ -l = min_{ -\delta\in \mathcal{X}\cap x_0} \left \{ -c\cdot f_{\kappa}^{pos}(\delta) -+ \beta \|\delta\|_{1} -+ \|\delta\|^{2}_{2} -+ \gamma \|\delta - AE(\delta)\|^{2}_{2} +l = \left \{ +c\cdot L_{pred}(\delta) + \beta L_{1}(\delta) + L_{2}^{2}(\delta) + \gamma \|\delta - AE(\delta)\|^{2}_{2} \right \} $$ where $$ -f^{pos}_{\kappa}(x_0, \delta) = max\left\{ -max_{i\neq t_{0}}[Pred(\delta)]_{i} - [Pred(\delta)]_{t_0}, -\kappa -\right\} +L_{pred}(\delta) = max\left\{ max_{i\neq t_{0}}[Pred(\delta)]_{i} - [Pred(\delta)]_{t_0}, \kappa \right\} $$ -__TODO__: -- intuitive explanation +and $\delta$ is restrained to only take away features from the instance $x_0$. There is a slight subtle point here in +that removing features from an instance requires correctly defining non-informative feature values. In the case of +MNIST digits it's reasonable to assume that the black background behind each digit represents an absence of information. +Similarly, in the case of color images you might assume that the median pixel value represents no information and moving +away from this value adds information. It is however often not trivial to find these non-informative feature values and +domain knowledge becomes very important. Note this is both a black and white box method as while we need to compute the loss gradient through the model we can do this using numerical differentiation. This comes at a significant computational cost due to the extra model calls we need to make. -__TODO__: -- Give definition, Note that the CEM paper describes anchors as global insights. -- Explain differences to Anchors definition. - #### Global Feature Attribution Global Feature Attribution methods aim to show the dependency of model output on a subset of the input features. This From d535b4eac767f41f08652139dee8577f16118a86 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Mon, 1 Nov 2021 15:55:12 +0000 Subject: [PATCH 12/60] Finish draft of ALE section --- doc/source/overview/high_level.md | 36 +++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index ad529a018..27a16c74b 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -348,7 +348,7 @@ $$ L_{pred}(\delta) = max\left\{ max_{i\neq t_{0}}[Pred(\delta)]_{i} - [Pred(\delta)]_{t_0}, \kappa \right\} $$ -and $\delta$ is restrained to only take away features from the instance $x_0$. There is a slight subtle point here in +and $\delta$ is restrained to only take away features from the instance $x_0$. There is a slightly subtle point here in that removing features from an instance requires correctly defining non-informative feature values. In the case of MNIST digits it's reasonable to assume that the black background behind each digit represents an absence of information. Similarly, in the case of color images you might assume that the median pixel value represents no information and moving @@ -378,17 +378,39 @@ data distribution. They then accumulate these differences to obtain a plot of pr dependencies. Suppose we have a model $f$ and features $X={x_1,... x_n}$. Given a subset of the features $X_S$ then let -$X_C=X \\ X_S$. We want to obtain the ALE-plot for the features $X_S$ typical chosen to be at most 2 in order that -they can easily be visualized. The ALE-plot is defined as: +$X_C=X \setminus X_S$. We want to obtain the ALE-plot for the features $X_S$, typically chosen to be at most a +set of dimension 2 in order that they can easily be visualized. For simplicity assume we have $X=\{x_1, x_2\}$ and let +$X_S=\{x_2\}$ so $X_C=\{x_1\}$. The ALE of $x_1$ is defined by: $$ -\hat{f}_{S, ALE}(X_S) = -\int_{z_{0, S}}^{S} \mathbb{E}_{X_C|X_S=x_s} -\left[ \frac{\partial \hat{f}}{\partial x_S} (X_s, X_c)|X_S=z_S \right] dz_{S} - constant +\hat{f}_{S, ALE}(x_1) = +\int_{min(x_1)}^{x_1}\mathbb{E}\left[ +\frac{\partial f(X_1, X_2)}{\partial X_1} | X_1 = z_1 +\right]dz_1 - c_1 $$ +The term $\mathbb{E}\left[\frac{\partial f(X_1, X_2)}{\partial X_1} | X_1=z_1 \right]$ computes the expectation of +the derivative in $x_1$ over the random variable $X_2$ conditional on $X_1=z_1$. By taking the expectation with respect +to $X_2$ we factor out its dependency. So now we know how the prediction $f$ changes local to a point $X_1=z_1$ +independent of $X_2$. If we have this then to get the true dependency we must integrate these changes over $x_1$ from a +min value to the value of interest. ALE-plots get there names as they accumulate (integrate) the local effects which +are the expected partial derivatives. + __TODO__: -- further discussion on definition +- Add picture explaining the above idea. + +It is important to note that by considering effects local to $X_1=z_1$ in the above equations we capture any +dependencies in the features of the dataset. Similarly, by considering the differences in $f$ and accumulating them +over the variable of interest we remove any effects owing to correlation between $X_1$ and $X_2$. For better insight +into these points see... + +The above can be done where $X_S$ is any number of features however typically we are only ever interested in at most 2 +features as these can be easily visualized. + +In practice, we compute the various quantities above numerically and so $f$ doesn't need to be differentiable. + +Note that because ALE plots require differences between variable they don't natural extend to categorical data unless +there is a sensible ordering on the categorical data. As an example consider months of the year. #### Local Feature Attribution From 63f5f3217bc08e604620a3ddf390cba7c7f9e63f Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Tue, 2 Nov 2021 13:49:48 +0000 Subject: [PATCH 13/60] Add initial draft of integrated gradients section --- doc/source/overview/high_level.md | 64 ++++++++++++++++++------------- 1 file changed, 37 insertions(+), 27 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 27a16c74b..fd23c0474 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -256,7 +256,7 @@ __TODO__: - At explain time ask for specific constraints... key point can have arbitrary constraints in counterfactuals. ___ -#### Local Necessary Features: +#### c: Given a single instance and model prediction Local Necessary Features are local explanations that tell us what minimal set of features needs to stay the same in order that the model still give the same prediction or close predictions. @@ -389,12 +389,11 @@ $$ \right]dz_1 - c_1 $$ -The term $\mathbb{E}\left[\frac{\partial f(X_1, X_2)}{\partial X_1} | X_1=z_1 \right]$ computes the expectation of -the derivative in $x_1$ over the random variable $X_2$ conditional on $X_1=z_1$. By taking the expectation with respect -to $X_2$ we factor out its dependency. So now we know how the prediction $f$ changes local to a point $X_1=z_1$ -independent of $X_2$. If we have this then to get the true dependency we must integrate these changes over $x_1$ from a -min value to the value of interest. ALE-plots get there names as they accumulate (integrate) the local effects which -are the expected partial derivatives. +The term within the integral computes the expectation of the model derivative in $x_1$ over the random variable $X_2$ +conditional on $X_1=z_1$. By taking the expectation with respect to $X_2$ we factor out its dependency. So now we know +how the prediction $f$ changes local to a point $X_1=z_1$ independent of $X_2$. If we have this then to get the true +dependency we must integrate these changes over $x_1$ from a min value to the value of interest. ALE-plots get there +names as they accumulate (integrate) the local effects (the expected partial derivatives). __TODO__: - Add picture explaining the above idea. @@ -402,12 +401,10 @@ __TODO__: It is important to note that by considering effects local to $X_1=z_1$ in the above equations we capture any dependencies in the features of the dataset. Similarly, by considering the differences in $f$ and accumulating them over the variable of interest we remove any effects owing to correlation between $X_1$ and $X_2$. For better insight -into these points see... +into these points see... -The above can be done where $X_S$ is any number of features however typically we are only ever interested in at most 2 -features as these can be easily visualized. - -In practice, we compute the various quantities above numerically and so $f$ doesn't need to be differentiable. +In the above example we've assumed $f$ is differentiable. In practice however, we compute the various quantities above +numerically and so this isn't a requirement. Note that because ALE plots require differences between variable they don't natural extend to categorical data unless there is a sensible ordering on the categorical data. As an example consider months of the year. @@ -416,16 +413,8 @@ there is a sensible ordering on the categorical data. As an example consider mon Local feature attribution asks how each feature in a given instance contributes to its prediction. In the case of an image this would highlight those pixels that make the model give the output it does. Note this differs subtly from -local scoped rules in that they find the minimum subset of features required to give a prediction whereas local feature -attribution creates a heat map that tells us each features contribution to the overall outcome. - -A common issue with some attribution methods is that you must measure the contribution with respect to some baseline -point. The choice of baseline should capture a blank state in which the model makes essentially no prediction or assigns -probability of classes equally. A common choice for image classification is an image set to black. This works well in -many cases but sometimes fails to be a good choice. For instance for a model that classifies images taken at night -using an image with every pixel set to black means the attribution method with undervalue the use of dark pixels in -attributing the contribution of each feature to the classification. This is due to the contribution being calculated -relative to the baseline which in this case is already dark. +Local Necessary Features in that they find the minimum subset of features required to give a prediction whereas local +feature attribution creates a heat map that tells us each features contribution to the overall outcome. A good use of local feature attribution is to detect that a classifier trained on images is focusing on the correct features of an image in order to infer the class. As an example suppose you have a model trained to detect breeds of @@ -433,12 +422,14 @@ dog. You want to check that it focuses on the correct features of the dog in mak the feature attribution of a picture of a husky and discover that the model is only focusing on the snowy backdrop to the husky then you know both that all the images of huskies in your dataset overwhelmingly have snowy backdrops and also that the model will fail to generalize. It will potentially incorrectly classify other breeds of dog with snowy -backdrops and also fail to recognise huskies without snowy backdrops. +backdrops as huskies and also fail to recognise huskies without snowy backdrops. -__TODO__: -- discussion on definition +Suppose we have a function $f:\mathbb{R}^n → [0, 1]$ that represents a deep network, and an input +$x=(x_1,... ,x_n) \in \mathbb{R}^n$. An attribution of the prediction at input $x$ is a vector +$a=(a_1,... ,a_n) \in \mathbb{R}^n$ where $a_i$ is the contribution of $x_i$ to the prediction $f(x)$. -- Efficiency property... +__TODO__: +- picture showing above concept. ##### Explainers: @@ -447,7 +438,26 @@ insights. **Integrated Gradients** -__TODO__ +The integrated gradients' method computes the attribution of each feature by integrating the model partial derivatives +along a path from a baseline point to the instance. Let $f$ be the model and $x$ the instance of interest. +If $f:\mathbb{R}^{n} \rightarrow \mathbb{R}^{m}$ where $m$ is the number of classes the model predicts then let $F=f_k$ +where $k \in \{1,..., m\}$. If $f$ is single valued then $F=f$. We also need to choose a baseline value, $x'$. + +$$ +IG_i(x) = (x_i - x_i')\int_{\alpha}^{1}\frac{\partial F (x' + \alpha (x - x'))}{ \partial x_i } d \alpha +$$ + +So the above sums the partial derivatives with respect to each feature over the path between the baseline and the +instance of interest. In doing so you accumulate the changes in prediction that occur as a result of the changing +feature value from the baseline to the instance. The main difficulty with this method ends up being that as IG is +very dependent on the baseline it's important to make sure you choose the correct baseline. + +The choice of baseline should capture a blank state in which the model makes essentially no prediction or assigns +probability of classes equally. A common choice for image classification is an image set to black. This works well in +many cases but sometimes fails to be a good choice. For instance for a model that classifies images taken at night +using an image with every pixel set to black means the attribution method will undervalue the use of dark pixels in +attributing the contribution of each feature to the classification. This is due to the contribution being calculated +relative to the baseline which in this case is already dark. **Kernel SHAP** From 39c5ebd1dcc34d2e6f7cc4c900a105ef8bafb91f Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Wed, 3 Nov 2021 13:30:13 +0000 Subject: [PATCH 14/60] Add section on local feature attribution properties --- doc/source/overview/high_level.md | 34 ++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index fd23c0474..7314f67d0 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -406,8 +406,11 @@ into these points see... In the above example we've assumed $f$ is differentiable. In practice however, we compute the various quantities above numerically and so this isn't a requirement. +:::{admonition} **Note 4: Categorical Variables and ALE** Note that because ALE plots require differences between variable they don't natural extend to categorical data unless -there is a sensible ordering on the categorical data. As an example consider months of the year. +there is a sensible ordering on the categorical data. As an example consider months of the year. To be clear this is +only an issue if the variable you are taking the ALE with respect to is categorical. +::: #### Local Feature Attribution @@ -424,13 +427,34 @@ the husky then you know both that all the images of huskies in your dataset over also that the model will fail to generalize. It will potentially incorrectly classify other breeds of dog with snowy backdrops as huskies and also fail to recognise huskies without snowy backdrops. -Suppose we have a function $f:\mathbb{R}^n → [0, 1]$ that represents a deep network, and an input -$x=(x_1,... ,x_n) \in \mathbb{R}^n$. An attribution of the prediction at input $x$ is a vector -$a=(a_1,... ,a_n) \in \mathbb{R}^n$ where $a_i$ is the contribution of $x_i$ to the prediction $f(x)$. - __TODO__: - picture showing above concept. +Each of the following methods defines local feature attribution slightly differently. In both however we assign +attribution values to each feature to indicate how significant those features where in making the model prediction what +it is. + +Let $f:\mathbb{R}^n \rightarrow \mathbb{R}$. $f$ might be a regression, a single component of a multi regression or a +probability of a class in a classification model. If $x=(x_1,... ,x_n) \in \mathbb{R}^n$ then an attribution of the +prediction at input $x$ is a vector $a=(a_1,... ,a_n) \in \mathbb{R}^n$ where $a_i$ is the contribution of $x_i$ to the +prediction $f(x)$. + +Its desirable that these attribution values satisfy certain properties: + +1. Efficiency/Completeness: The sum of attributions equals the difference between the prediction and the +baseline/average. It makes sense that this be the case as we're interested in understanding the difference each feature +value makes in a prediction compared to some uninformative baseline. +2. Symmetry: If the model behaves the same after swapping two variables $x$ and $y$ then $x$ and $y$ have equal +attribution. If this weren't the case we'd be biasing the attribution towards certain features over other ones. +3. Dummy/Sensitivity: If a variable does not change the output of the model then it should have attribution 0. Similar +to above if this where not the case then we'd be assigning value to a feature that provides no information. +4. Additivity/Linearity: The attribution for a feature $x_i$ of a linear composition of two models $f_1$ and $f_2$ +given by $c_1 f_1 + c_2 f_2$ is $c_1 a_{1, i} + c_2 a_{2, i}$ where $a_{1, i}$ and $a_{2, i}$ is the attribution for +$x_1$ and $f_1$ and $f_2$ respectively. This allows us to decompose certain types of model that are made up of lots of +smaller models such as random forests. + +Each of the methods that alibi provides satisfies these properties. + ##### Explainers: The following discusses the set of explainer methods available from alibi for generating Local Feature Attribution From 40908d0c6d668739e3779e358caf70bd03ee2878 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Wed, 3 Nov 2021 23:59:53 +0000 Subject: [PATCH 15/60] Add draft of the SHAP method sections --- doc/source/overview/high_level.md | 83 ++++++++++++++++++++++++------- 1 file changed, 65 insertions(+), 18 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 7314f67d0..7d68c7a67 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -419,6 +419,9 @@ image this would highlight those pixels that make the model give the output it d Local Necessary Features in that they find the minimum subset of features required to give a prediction whereas local feature attribution creates a heat map that tells us each features contribution to the overall outcome. +__TODO__: +- picture showing above concept. + A good use of local feature attribution is to detect that a classifier trained on images is focusing on the correct features of an image in order to infer the class. As an example suppose you have a model trained to detect breeds of dog. You want to check that it focuses on the correct features of the dog in making its prediction. If you compute @@ -427,9 +430,6 @@ the husky then you know both that all the images of huskies in your dataset over also that the model will fail to generalize. It will potentially incorrectly classify other breeds of dog with snowy backdrops as huskies and also fail to recognise huskies without snowy backdrops. -__TODO__: -- picture showing above concept. - Each of the following methods defines local feature attribution slightly differently. In both however we assign attribution values to each feature to indicate how significant those features where in making the model prediction what it is. @@ -457,9 +457,6 @@ Each of the methods that alibi provides satisfies these properties. ##### Explainers: -The following discusses the set of explainer methods available from alibi for generating Local Feature Attribution -insights. - **Integrated Gradients** The integrated gradients' method computes the attribution of each feature by integrating the model partial derivatives @@ -473,24 +470,74 @@ $$ So the above sums the partial derivatives with respect to each feature over the path between the baseline and the instance of interest. In doing so you accumulate the changes in prediction that occur as a result of the changing -feature value from the baseline to the instance. The main difficulty with this method ends up being that as IG is -very dependent on the baseline it's important to make sure you choose the correct baseline. +feature value from the baseline to the instance. + +:::{admonition} **Note 5: Choice of Baseline** +The main difficulty with this method ends up being that as IG is very dependent on the baseline it's important to make +sure you choose the correct baseline. The choice of baseline should capture a blank state in which the model makes +essentially no prediction or assigns probability of classes equally. A common choice for image classification is an +image set to black. This works well in many cases but sometimes fails to be a good choice. For instance for a model +that classifies images taken at night using an image with every pixel set to black means the attribution method will +undervalue the use of dark pixels in attributing the contribution of each feature to the classification. This is due to +the contribution being calculated relative to the baseline which in this case is already dark. +::: + + +**KernelSHAP** + +Kernel SHAP is an efficient method of computing the Shapley values for a model around an instance $x_i$. Shapley values +are a game theoretic method of assigning payout to players depending on there contribution to an overall goal. In this +case the players are the features and the payout is the prediction the model makes. To compute these values we have to +consider the marginal contribution of each feature over all the possible coalitions of feature players. Exactly what +this means in terms of a specific coalition is a little nuanced. Suppose for example we have a regression model $f$ +that makes predictions based on four features $X = \{X_1, X_2, X_3, X_4\}$ as input. A coalition is a group of +features, say for example the first and third feature. For this coalition it's value is given by: + +$$ +val({1,3}) = \int_{\mathbb{R}}\int_{\mathbb{R}} f(x_1, X_2, x_3, X_4)d\mathbb{P}_{X_{2}X_{4}} - \mathbb{E}_{X}(f(X)) +$$ + +Given a coalition, $S$, that doesn't include $x_i$, then that features marginal contribution is given by +$val(S \cup x_i) - val(S)$. Intuitively this is the difference that feature $x_i$ would make for that coalition. We are +interested in the marginal contribution of $x_i$ over all possible coalitions with and without $x_i$. A shapley value +for the $x_i^{th}$ feature is given by the weighted sum + +$$ +\psi_j = \sum_{S\subset \{1,...,p\} \setminus \{j\}} \frac{|S|!(p - |S| - 1)!}{p!}(val(S \cup x_i) - val(S)) +$$ + +The motivation for the weights convey how much you can learn from a specific coalition. Large and Small coalitions mean +more learnt because we've isolated more of the effect. Whereas medium size coalitions don't supply us with as much +information because there are many possible such coalitions. **Not 100 percent sure about this point! Want a nicer +intuitive explanation.**. + +Computing the above would be difficult owing to the large number of possible coalitions. So instead we use a sampling +process. In fact, we can set up the sampling to preferentially select the higher information coalitions to make the +process slightly faster. -The choice of baseline should capture a blank state in which the model makes essentially no prediction or assigns -probability of classes equally. A common choice for image classification is an image set to black. This works well in -many cases but sometimes fails to be a good choice. For instance for a model that classifies images taken at night -using an image with every pixel set to black means the attribution method will undervalue the use of dark pixels in -attributing the contribution of each feature to the classification. This is due to the contribution being calculated -relative to the baseline which in this case is already dark. +Another issue that arises is unrealistic data instances being introduced when features are dependent. In order to +compute a coalitions value we marginalize those features not in the coalition. To do this we fix the feature values +that are in coalition and sample the rest from some other data point in the distribution. This works if these features +are independent but if they are not then you may end up with unrealistic data. -**Kernel SHAP** +**TreeSHAP** -__TODO__ +TreeSHAP is a variant of KernelSHAP that applies to tree based machine learning algorithms. The main difference to +KernelSHAP is that it uses the conditional expectation to remove non coalition features instead of just marginalizing +them out. The reason we use this method instead is that it's fast to compute the conditional expectation for Trees. +Note that because of the additive property of the shapley value this algorithm applies to forests as well as just +single tree models. -**Tree SHAP** +An issue arises using the conditional probability for data sets in which a variable that doesn't contribute to a +prediction is highly correlated with one that does. In this case the shapley value for the non-contributing feature can +end up being assigned a none zero shapley value. Hence, TreeSHAP doesn't always satisfy the Dummy/Sensitivity property. -__TODO__ +This being the case it is much faster. KernalSHAP has runtime complexity of $O(TL2^{M})$ and TreeSHAP only $O(TLD^{2})$ +where $T$ is the number of trees, $L$ the maximum number of leaves in any tree, $D$ the maximal depth of any tree and +$M$ the number of features. +__WARNING__: +- This whole section leans very heavily on the Christoph Molnar book! ##### Example: From ece0a1a3eaa92401e020675f317493c0c51377e3 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Thu, 4 Nov 2021 10:47:05 +0000 Subject: [PATCH 16/60] Add mention of cfrl being blackbox --- doc/source/overview/high_level.md | 73 ++++++++++++++----------------- 1 file changed, 32 insertions(+), 41 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 7d68c7a67..2a28e9f84 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -21,16 +21,15 @@ required to obtain a new classification. Insights are constrained by: - The type of data the model handles (images, text, ...) - The task the model performs (regression, classification, ...) -- The type of model used (linear regression, neural network, ...) +- The type of model used (random forest, neural network, ...) -__TODO:__ -- explain type of model... - -In particular some explainer methods apply to any type of model. They can do so because the underlying method doesn't -make use of the model internals. Instead, only depending on the model outputs given particular inputs. Methods that -apply in this general setting are known as **black box** methods. Methods that do require model internals, perhaps in -order to compute prediction gradients dependent on inputs, are known as white box models. This is a much stronger -constrain that black box methods. +Here type of model refers could be a number of different things including neural networks or random forests. Some +explainer methods apply only to specific types of model such as TreeSHAP which can only be used with tree based models. +Other explainer methods apply to any type of model. They can do so because the underlying method doesn't make use of +the model internals. Instead, only depending on the model outputs given particular inputs. Methods that apply in this +general setting are known as **black box** methods. Methods that do require model internals, perhaps in order to +compute prediction gradients dependent on inputs, are known as white box models. This is a much stronger +constraint that black box methods. :::{admonition} **Note 1: Black Box Definition** The use of Black Box here varies subtly from the conventional use within machine learning. Typically, we say a model is @@ -42,26 +41,18 @@ applied. ## Applications: -**Trust:** - -At a core level explainability builds trust in the machine learning systems we use. It allows us to justify there use -in many contexts where an understanding of the basis of decision is paramount. - -**Testing:** +**Trust:** At a core level explainability builds trust in the machine learning systems we use. It allows us to justify +there use in many contexts where an understanding of the basis of decision is paramount. -Explainability can be thought as an extra form of testing for a model. The insights derived should conform to the -expected behaviour. Failure to do so may indicate issues with the model or problems with the dataset it's been trained -on. +**Testing:** Explainability can be thought as an extra form of testing for a model. The insights derived should conform +to the expected behaviour. Failure to do so may indicate issues with the model or problems with the dataset it's been +trained on. -**Functionality:** +**Functionality:** Insights can also be used to augment model functionality. Providing useful information on top of +model predictions. How to change the model inputs to obtain a better output for instance. -Insights can also be used to augment model functionality. Providing useful information on top of model predictions. -How to change the model inputs to obtain a better output for instance. - -**Research:** - -Explainability allows researchers to look inside the black box and see what the models are doing. Helping them -understand more broadly the effects of the particular model or training schema they're using. +**Research:** Explainability allows researchers to look inside the black box and see what the models are doing. Helping +them understand more broadly the effects of the particular model or training schema they're using. :::{admonition} **Note 2: Biases** Practitioners must be wary of using explainability to excuse bad models rather than ensuring there correctness. As an @@ -91,7 +82,7 @@ regression prediction varies with respect to a given feature while factoring out insights give a more general understanding of the relationship between inputs and model predictions. __TODO__: -- Add image to illustart +- Add image to give idea of Global and local insight ### Insight Categories @@ -178,7 +169,7 @@ __TODO:__ **Contrastive Explanation Method:** -- Black/white box method +- c/white box method - Classification models - Tabular and image data types @@ -228,15 +219,17 @@ the previous approaches mentioned. **Counterfactuals with Reinforcement Learning:** -This method splits from the approach taken by the above three significantly. Instead of minimizing a loss at explain -time it trains a new model when fitting the explainer called an actor that takes instances and produces counterfactuals. -It does this using reinforcement learning. In RL an actor model takes some state as input and generates actions, in our -case the actor takes an instance with a specific classification and produces an action in the form of a counter factual. -Outcomes of actions are assigned reward dependent on some reward function that's designed to encourage specific -behaviours of the actor. In our case we reward counterfactuals that are firstly classified as the correct target class, -secondly are close to the data distribution as modelled by an autoencoder, and thirdly are sparse perturbations of the -original instance. Finally, the reinforcement training step pushes the actor to take high reward actions instead of -low reward actions. +This black box method splits from the approach taken by the above three significantly. Instead of minimizing a loss at +explain time it trains a new model when fitting the explainer called an actor that takes instances and produces +counterfactuals. It does this using reinforcement learning. In RL an actor model takes some state as input and +generates actions, in our case the actor takes an instance with a specific classification and produces an action in the +form of a counter factual. Outcomes of actions are assigned reward dependent on some reward function that's designed to +encourage specific behaviours of the actor. In our case we reward counterfactuals that are firstly classified as the +correct target class, secondly are close to the data distribution as modelled by an auto-encoder, and thirdly are sparse +perturbations of the original instance. The reinforcement training step pushes the actor to take high reward actions +instead of low reward actions. This method is black box as we compute the reward obtained by an actor by sampling an +action by directly predicting the loss. Because of this we only require the derivative with respect to the actor and +not the predictor itself. As well as this CFRL actors are trained to ensure that certain constraints can be taken into account when generating counterfactuals. This is highly desirable as a use case for counterfactuals is suggesting small changes to an @@ -252,11 +245,9 @@ at runtime with arbitrary constraints. __TODO__: - Example images -- Black box Discussion of method -- At explain time ask for specific constraints... key point can have arbitrary constraints in counterfactuals. ___ -#### c: +#### Local Necessary Features: Given a single instance and model prediction Local Necessary Features are local explanations that tell us what minimal set of features needs to stay the same in order that the model still give the same prediction or close predictions. @@ -526,7 +517,7 @@ TreeSHAP is a variant of KernelSHAP that applies to tree based machine learning KernelSHAP is that it uses the conditional expectation to remove non coalition features instead of just marginalizing them out. The reason we use this method instead is that it's fast to compute the conditional expectation for Trees. Note that because of the additive property of the shapley value this algorithm applies to forests as well as just -single tree models. +single tree models. An issue arises using the conditional probability for data sets in which a variable that doesn't contribute to a prediction is highly correlated with one that does. In this case the shapley value for the non-contributing feature can From ee1ac6d35ce2c912118a90c9ca201a1df0156eb9 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Mon, 8 Nov 2021 10:03:22 +0000 Subject: [PATCH 17/60] Update SHAP section to contian description of Interventional and path dependent Tree SHAP --- doc/source/overview/high_level.md | 175 +++++++++++++++++++----------- 1 file changed, 113 insertions(+), 62 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 2a28e9f84..276e35d19 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -1,41 +1,44 @@ # Practical Overview of Explainability While the applications of machine learning are impressive many models provide predictions that are hard to interpret or -reason about. This limits there use in many cases as often we want to know why and not just what a models prediction -is. Alarming predictions are rarely taken at face value and typically warrant further analysis. Indeed, in some cases -explaining the choices that a model makes could even become a potential +reason about. This limits there use in many cases as often we want to know why and not just what a model made a +prediction. Alarming predictions are rarely taken at face value and typically warrant further analysis. Indeed, in some +cases explaining the choices that a model makes could even become a potential [legal requirement](https://arxiv.org/pdf/1711.00399.pdf). The following is a non-rigorous and practical overview of explainability and the methods alibi provide. -Explainability research provides us with algorithms that give insights into trained models predictions. - +**Explainability provides us with algorithms that give insights into trained models predictions.** It allows +us to answer questions such as: - How does a prediction change dependent on feature inputs? - What features are Important for a given prediction to hold? - What features are not important for a given prediction to hold? - What set of features would you have to minimally change to obtain a new prediction of your choosing? -- etc.. - -The set of insights available are dependent on the trained model. If the model is a regression is makes sense to ask -how the prediction varies with respect to some feature. Whereas, it doesn't make sense to ask what minimal change is -required to obtain a new classification. Insights are constrained by: - -- The type of data the model handles (images, text, ...) -- The task the model performs (regression, classification, ...) -- The type of model used (random forest, neural network, ...) - -Here type of model refers could be a number of different things including neural networks or random forests. Some -explainer methods apply only to specific types of model such as TreeSHAP which can only be used with tree based models. -Other explainer methods apply to any type of model. They can do so because the underlying method doesn't make use of -the model internals. Instead, only depending on the model outputs given particular inputs. Methods that apply in this -general setting are known as **black box** methods. Methods that do require model internals, perhaps in order to -compute prediction gradients dependent on inputs, are known as white box models. This is a much stronger -constraint that black box methods. +- How does each feature contribute to a models prediction? + +The set of insights available are dependent on the trained model. For instance, If the model is a regression it makes +sense to ask how the prediction varies with respect to some feature. Whereas, it doesn't make sense to ask what minimal +change is required to obtain a new classification. Insights are constrained by: + +- The type of data the model handles. Some insights only apply to image data others only to textual data. +- The task the model performs. The two types of model tasks alibi handles are regression and classification. +- The type of model used. Examples of model types include neural networks and random forests. + +Some explainer methods apply only to specific types of model such as TreeSHAP which can only be used with tree based +models. This is the case when an explainer method makes use of some specific aspect of that models structure. For +instance, if the model is a neural network then some methods require being able to compute the prediction derivative +with respect to model inputs. Methods that require access to the model internals like this are known as **white box** +methods. Other explainers apply to any type of model. They can do so because the underlying method doesn't make use of +the model internals. Instead, they only require to have access to the model outputs given particular inputs. Methods +that apply in this general setting are known as **black box** methods. Note that white box methods are a subset of +black box methods and in general an explainer being a white box method is a much stronger constraint than it being a +black box methods. Typically, white box methods are faster than blackbox methods as access to the model internals means +the method can exploit some aspect of that models structure. :::{admonition} **Note 1: Black Box Definition** The use of Black Box here varies subtly from the conventional use within machine learning. Typically, we say a model is a black box if the mechanism by which it makes predictions is too complicated to be interpretable to a human. Here we use black box to mean that the explainer method doesn't need to have access to the model internals in order to be -applied. +applied. ::: @@ -51,42 +54,41 @@ trained on. **Functionality:** Insights can also be used to augment model functionality. Providing useful information on top of model predictions. How to change the model inputs to obtain a better output for instance. -**Research:** Explainability allows researchers to look inside the black box and see what the models are doing. Helping -them understand more broadly the effects of the particular model or training schema they're using. +**Research:** Explainability allows researchers to understand how and why opaque models make decisions. Helping them +understand more broadly the effects of the particular model or training schema they're using. + +__TODO__: +- picture of explainability pipeline: training -> prediction -> insight :::{admonition} **Note 2: Biases** Practitioners must be wary of using explainability to excuse bad models rather than ensuring there correctness. As an example its possible to have a model that is correctly trained on a dataset, however due to the dataset being either wrong or incomplete the model doesn't actually reflect reality. If the insights that explainability generates conform to some confirmation bias of the person training the model then they are going to be blind to this issue and -instead use these methods to confirm erroneous results. - -__TODO__: -- further discussion on faithfulness of models. Make clear that these insights apply to the model and only to -the data via the model. +instead use these methods to confirm erroneous results. A key distinction here is that explainability insights are +designed to be faithful to the model they are explaining and not the data. You use an explanation to obtain an insight +into the data only if the model is trained well. ::: -__TODO__: -- picture of explainability pipeline: training -> prediction -> insight - ## Insights ### Global and Local Insights -Insights can be categorized into two types. Local and global. Intuitively a local insights says something about a -single prediction that a model makes. As an example, given an image classified as a cat by a model what is the minimal -set of features (pixels) that need to stay the same in order for that image to still be classified as a cat. Such an -insight gives an idea of what the model is looking for when deciding to classify an instance into a specific class. -Global insights on the other hand refer to the behaviour of the model over a set of inputs. Plots that show how a -regression prediction varies with respect to a given feature while factoring out all the others are an example. These -insights give a more general understanding of the relationship between inputs and model predictions. +Insights can be categorized into two types. Local and global. Intuitively, a local insight says something about a +single prediction that a model makes. As an example, given an image classified as a cat by a model, a local insight +might give the set of features (pixels) that need to stay the same in order for that image to remain classified as a +cat. Such an insight gives an idea of what the model is looking for when deciding to classify a specific instance into +a specific class. Global insights on the other hand refer to the behaviour of the model over a set of inputs. Plots +that show how a regression prediction varies with respect to a given feature while factoring out all the others are an +example. These insights give a more general understanding of the relationship between inputs and model predictions. __TODO__: -- Add image to give idea of Global and local insight +- Add image to give idea of Global and local insight ### Insight Categories -Alibi provides a number of insights with which to explore and understand models. +Alibi provides a number of local and global insights with which to explore and understand models. The following gives +the practitioner an understanding of which explainers are suitable to be used where. #### Counter Factuals: @@ -502,30 +504,79 @@ more learnt because we've isolated more of the effect. Whereas medium size coali information because there are many possible such coalitions. **Not 100 percent sure about this point! Want a nicer intuitive explanation.**. -Computing the above would be difficult owing to the large number of possible coalitions. So instead we use a sampling -process. In fact, we can set up the sampling to preferentially select the higher information coalitions to make the -process slightly faster. - -Another issue that arises is unrealistic data instances being introduced when features are dependent. In order to -compute a coalitions value we marginalize those features not in the coalition. To do this we fix the feature values -that are in coalition and sample the rest from some other data point in the distribution. This works if these features -are independent but if they are not then you may end up with unrealistic data. +The main issue with the above is that there will be a large number of possible coalitions, $O(M2^M)$ to be precise. +Hence instead of computing all of these we use a sampling process on the space of coalitions and then estimate the +Shapley values by training a linear model. Because a coalition is a set of players/features that are or aren't +playing/contributing we represent this as points in the space of binary codes $z' = \{z_0,...,z_m\}$ where $z_j = 0$ +means that feature is present or not. To obtain the dataset on which we train this model we first sample from this +space of coalitions then compute the values of $f$ for each sample. We obtain weights for each sample using the Shapley +Kernel: -**TreeSHAP** +$$ +\pi_{x}(z') = \frac{M - 1}{\frac{M}{|z'|}|z'|(M - |z'|)} +$$ -TreeSHAP is a variant of KernelSHAP that applies to tree based machine learning algorithms. The main difference to -KernelSHAP is that it uses the conditional expectation to remove non coalition features instead of just marginalizing -them out. The reason we use this method instead is that it's fast to compute the conditional expectation for Trees. -Note that because of the additive property of the shapley value this algorithm applies to forests as well as just -single tree models. +Once we have all of this we can train a linear model, the coefficients of which are the Shapley values. There is some +nuance to how we compute the value of a model given a specific coalition as most models aren't built to accept input +with arbitrary missing values. Given a coalition $S$ we can either fix those features in $S$ and average out those not +in $S$ by replacing them by values sampled from the data set. This is the marginal expectation given by +$\mathbb{E}_{X_{X \setminus S}}[f(x_S, X_{X \setminus S})]$. A problem with this approach is that fixing the $x_S$ and +replacing the other inputs with feature values sampled from $X_{X \setminus S}$ can introduce unrealistic data if the +underlying data has dependencies. Another approach in this case is to use the conditional expectation given by +$\mathbb{E}[f(x_S, X_{X\setminus S}|X_S=x_S)]$. This is still problematic however, as a variables that don't contribute +to a prediction can be highly correlated with features that do. In this case the shapley value for the non-contributing +feature can end up being assigned a none zero shapley value which violates the Dummy/Sensitivity property. -An issue arises using the conditional probability for data sets in which a variable that doesn't contribute to a -prediction is highly correlated with one that does. In this case the shapley value for the non-contributing feature can -end up being assigned a none zero shapley value. Hence, TreeSHAP doesn't always satisfy the Dummy/Sensitivity property. +**TreeSHAP** -This being the case it is much faster. KernalSHAP has runtime complexity of $O(TL2^{M})$ and TreeSHAP only $O(TLD^{2})$ -where $T$ is the number of trees, $L$ the maximum number of leaves in any tree, $D$ the maximal depth of any tree and -$M$ the number of features. +In the case of tree based models we can obtain a speed-up by exploiting the structure of trees. Alibi exposes two +white-box methods Interventional and Path dependent feature perturbation. In each case the speed-up is in how we +compute the value of a coalition. + +Path Dependent: + +Given a coalition $S=/{z_1, ..., z_n/}$ we want to find $\mathbb{E}_{X_{X \setminus S}}[f(x_S, X_{X \setminus S})]$. We +do so in the same way we should when applying a tree based model to any sample, with the only difference being what to +do when a feature is missing from the coalition. In this case we take both routes down the tree and weight each by the +proportion of dataset samples from the training dataset that go into each branch. For this algorithm to work we need +the tree to have a record of how it splits the training dataset. We don't need the dataset itself however, unlike the +interventional TreeSHAP algorithm. + +Doing this for each possible set $S$ involves $O(TL2^M)$ time complexity. It can be significantly improved to polynomial +time however if instead of doing the above one by one we do it for all subsets at once. The intuition here is to imagine +standing at the first node and counting the number of subsets that will go one way, the number that will go the other +and the number that will go both. Because we assign different sized subsets different weights we also need to further +distinguish the above numbers passing into each branch of the tree by there size. Finally, we also need to keep track of +the proportion of sets of each size in each branch that contain a feature $i$ and the proportion that don't. Once all +these sets have flowed down to the leaves of the tree then we can compute the shapley values. Doing this gives us +$O(TLD^2)$ time complexity. + +An issue is that as we're approximating $\mathbb{E}[f(x_S, X_{X\setminus S}|X_S=x_S)]$ this method will give shapley +values that don't satisfy the Dummy/Sensitivity property. This occurs because features that contribute nothing can be +highly correlated with features that do and the expectation doesn't distinguish on this effect. Hence, the +non-significant but correlated feature will have a positive shapley coefficient. + +Interventional: + +The interventional TreeSHAP method takes a different approach. Suppose we sample a reference data point, $r$, from the +training dataset. For each feature $i$ we then enumerate over all subsets of $S\subset F \setminus \{i\}$. If a subset +is missing a feature we replace it with the corresponding one in the reference sample. We can then compute $f(S)$ +directly for each set $S$ and from that get the Shapley values. One major difference here is that we're combining each +$S$ and $r$ to generate a data point. The process of enforcing independence of the $S$ and $F\S$ in this way is known +as intervening in the underlying data set and is where the algorithm name comes from. Note that doing this breaks +any independence between features in the dataset which means the data points we're sampling won't be realistic. + +For a single Tree and sample $r$ if we just iterate over all the subsets of $S \subset F \setminus \{i\}$ the +interventional TreeSHAP method runs with $O(M2^M)$. Note that there are two paths through the tree of unique interest. +The first is the instance path for $x$, and the second is the sampled/reference path for $r$. Computing the shapley +value estimate for the sampled $r$ is going to involve replacing $x$ with values of $r$ and generating a set of +perturbed paths. If, instead of summing over the sets if we sum over the paths we get a speed improvement as many of +the sets $S$ end up taking the same path, and we compute them all at the same time instead of one by one. Doing so the +Interventional TreeSHAP algorithm obtains $O(LD)$ time complexity. + +Applied to a random forrest with $T$ trees and using $R$ samples to compute the estimates we obtain $O(TRLD)$ time +complexity. The fact that we can sum over each tree in the random forest is a results of the linearity property of +shapley values. __WARNING__: - This whole section leans very heavily on the Christoph Molnar book! From f81b82fc2780eb088713be27ec5602fb300a1d5a Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Mon, 8 Nov 2021 10:57:31 +0000 Subject: [PATCH 18/60] Add pros and cons section for anchors method --- doc/source/overview/high_level.md | 421 +++++++++++++++--------------- 1 file changed, 213 insertions(+), 208 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 276e35d19..89bf71471 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -41,7 +41,6 @@ use black box to mean that the explainer method doesn't need to have access to t applied. ::: - ## Applications: **Trust:** At a core level explainability builds trust in the machine learning systems we use. It allows us to justify @@ -70,9 +69,7 @@ designed to be faithful to the model they are explaining and not the data. You u into the data only if the model is trained well. ::: -## Insights - -### Global and Local Insights +## Global and Local Insights Insights can be categorized into two types. Local and global. Intuitively, a local insight says something about a single prediction that a model makes. As an example, given an image classified as a cat by a model, a local insight @@ -85,212 +82,51 @@ example. These insights give a more general understanding of the relationship be __TODO__: - Add image to give idea of Global and local insight -### Insight Categories +## Insights Alibi provides a number of local and global insights with which to explore and understand models. The following gives -the practitioner an understanding of which explainers are suitable to be used where. - -#### Counter Factuals: - -Given an instance of the dataset and a prediction given by a model a question that naturally arises is how would the -instance minimally have to change in order for a different prediction to be given. Counterfactuals are local -explanations as they relate to a single instance and model prediction. - -Given a classification model trained on MNIST and a sample from the dataset with a given prediction, a counter factual -would be a generated image that closely resembles the original but is changed enough that the model correctly -classifies it as a different number. - -Similarly, given tabular data that a model uses to make financial decisions about a customer a counter factual would -explain to a user how to change they're behaviour in order to obtain a different decision. Alternatively it may tell -the Machine Learning Engineer that the model is drawing incorrect assumptions if the recommended changes involve -features that shouldn't be relevant to the given decision. This may be down either to the model training or the dataset -being unbalanced. - -A counterfactual, $x_{cf}$, needs to satisfy - -- The model prediction on $x_{cf}$ needs to be close to the predefined output. -- The counterfactual $x_{cf}$ should be interpretable. - -The first requirement is easy enough to satisfy. The second however requires some idea of what interpretable means. -Intuitively it would require that the counterfactual constructed makes sense as an instance of the dataset. Each of the -methods available in alibi deal with interpretability slightly differently. All of them agree however that we require -that the perturbation $\delta$ changing the original instance $x_0$ into $x_{cf} = x_0 + \delta$ should be sparse. This -means we prefer solutions that change a small subset of the features to construct $x_{cf}$. This limits the complexity -of the solution making them more understandable. - -##### Explainers: - -The following discusses the set of explainer methods available from alibi for generating counterfactual insights. - -:::{admonition} **Note 3: fit and explain method runtime differences** -Alibi explainers expose two methods `fit` and `explain`. Typically, in machine learning the method that takes the most -time is the fit method as that's where the model optimization conventionally takes place. In explainability however the -model should already be fit and instead the explain step usually requires the bulk of computation. However this isn't -always the case. - -Among the following explainers there are two categories of approach taken. The first fits a counterfactual when the -user requests the insight. This happens during the `.explain()` method call on the explainer class. They do this by -running gradient descent on model inputs to find a counterfactual. The methods that take this approach are -Counterfactuals Instances, Contrastive Explanation Method and Counterfactuals Guided by Prototypes. Thus, the `fit` -methods in these cases are quick but the `explain` method slow. - -The other approach however uses reinforcement learning to pretrains a model that produces explanations on the fly. The -training in this case takes place during the `fit` method call and so this has a long runtime while the `explain` -method is quick. If you want performant explanations in production environments then the later method is preferable. -::: - -__TODO__: -- schematic image explaining search for counterfactual as determined by loss -- schematic image explaining difference between different approaches. - -**Counterfactuals Instances:** - -- Black/white box method -- Classification models -- Tabular and image data types - -Let the model be given by $f$ and $f_{t}$ be the probability of class $t$, $p_t$ is the target probability of class -$t$ and $0<\lambda<1$ a hyperparameter. This method constructs counterfactual instances from an instance $X$ by running -gradient descent on a new instance $X'$ to minimize the following loss. - -$$L(X'|X)= (f_{t}(X') - p_{t})^2 + \lambda L_{1}(X'|X)$$ - -The first term pushes the constructed counterfactual towards the desired class and the use of the $L_{1}$ norm -encourages sparse solutions. - -This method requires computing gradients of the loss in the model inputs. If we have access to the model and the -gradients are available then this can be done directly. If not however, we can use numerical gradients although this -comes at a considerable performance cost. - -A problem arises here in that encouraging sparse solutions doesn't necessarily generate interpretable counterfactuals. -This happens because the loss doesn't prevent the counter factual solution moving off the data distribution. Thus, you -will likely get a solution that doesn't look like something that you'd expect to see from the data. - -__TODO:__ -- Picture example. Like from here: https://github.com/interpretml/DiCE - -**Contrastive Explanation Method:** - -- c/white box method -- Classification models -- Tabular and image data types - -CEM follows a similar approach to the above but includes two new details. Firstly an elastic net -($\beta L_{1} + L_{2}$) regularizer term is added to the loss. This causes the solutions to be both close to the -original instance and sparse. Secondly an optional autoencoder is trained to penalize conterfactual instances that -deviate from the data distribution. This works by requiring minimize the gradient descent minimize the reconstruction -loss of instances passed through the autoencoder. If an instance is unlike anything in the dataset then the autoencoder -will struggle to recreate it well, and it's loss term will be high. We require two hyperparameters $\beta$ and $\gamma$ -to define the following Loss, - -$$L(X'|X)= (f_{t}(X') - p_{t})^2 + \beta L_{1}(X' - X) + L_{2}(X' - X)^2 + \gamma L_{2} (X' - AE(X'))^2$$ - -This approach extends the definition of interpretable to include a requirement that the computed counterfactual be -believably a member of the dataset. It turns out however that this condition isn't enough to always get interpretable -results. And in particular the constructed counterfactual often doesn't look like a member of the target class. - -Similarly to the previous method, this method can apply to both black and white box models. In the case of black box -there is still a performance cost from computing the numerical gradients. - -__TODO:__ -- Picture example of results including less interpretable ones. - -**Counterfactuals Guided by Prototypes:** - -- Black/white box method -- Classification models -- Tabular, image and categorical data types - -For this method we add another term to the loss that optimizes for distance between the counterfactual instance and -close members of the target class. Now the definition of interpretability has been extended even further to include the -requirement that the counterfactual be believably a member of the target class and not just in the data distribution. - -With hyperparmaters $c$ and $\beta$, the loss is now given by: - -$$L(X'|X)= cL_{pred} + \beta L_{1} + L_{2} + L_{AE} + L_{proto}$$ - -__TODO:__ -- Picture example of results. - -It's clear that this method produces much more interpretable results. As well as this, because the proto term pushes -the solution towards the target class we can actually remove the prediction loss term and still obtain a viable counter -factual. This doesn't make much difference if we can compute the gradients directly from the model but if not, and we -are using numerical gradients then the $L_{pred}$ term is a significant bottleneck owing to repeated calls on the model -to approximate the gradients. Thus, this method also applies to blackbox models with a significant performance gain on -the previous approaches mentioned. - -**Counterfactuals with Reinforcement Learning:** - -This black box method splits from the approach taken by the above three significantly. Instead of minimizing a loss at -explain time it trains a new model when fitting the explainer called an actor that takes instances and produces -counterfactuals. It does this using reinforcement learning. In RL an actor model takes some state as input and -generates actions, in our case the actor takes an instance with a specific classification and produces an action in the -form of a counter factual. Outcomes of actions are assigned reward dependent on some reward function that's designed to -encourage specific behaviours of the actor. In our case we reward counterfactuals that are firstly classified as the -correct target class, secondly are close to the data distribution as modelled by an auto-encoder, and thirdly are sparse -perturbations of the original instance. The reinforcement training step pushes the actor to take high reward actions -instead of low reward actions. This method is black box as we compute the reward obtained by an actor by sampling an -action by directly predicting the loss. Because of this we only require the derivative with respect to the actor and -not the predictor itself. - -As well as this CFRL actors are trained to ensure that certain constraints can be taken into account when generating -counterfactuals. This is highly desirable as a use case for counterfactuals is suggesting small changes to an -instance in order to obtain a different classification. In certain cases you want these changes to be constrained, for -instance when dealing with immutable characteristics. In other words if you are using the counterfactual to advise -changes in behaviour you want to ensure the changes are enactable. Suggesting that someone needs to be 2 years younger -to apply for a loan isn't very helpful. - -To train the actor we randomly generate in distribution data instances, along with constraints and target -classifications. We then compute the reward and update the actor to maximize the reward. We do this without needing -access to the critic internals. We end up with an actor that is able to generate interpretable counterfactual instances -at runtime with arbitrary constraints. - -__TODO__: -- Example images -___ +the practitioner an understanding of which explainers are suitable in which situations. -#### Local Necessary Features: +### Local Necessary Features: -Given a single instance and model prediction Local Necessary Features are local explanations that tell us what minimal -set of features needs to stay the same in order that the model still give the same prediction or close predictions. -This tells the practitioner what it is in an instance that most influences the result. +Given a single instance and model prediction, Local Necessary Features are local explanations that tell us what minimal +set of features needs to stay the same in order that the model still give the same or close prediction. This tells us +what it is in an instance that most influences the result. -In the case of a trained image classification model, Local Necessary Features for a given instance would be a -minimal subset of the image that the model uses to make its decision. A Machine learning engineer might use this -insight to see if the model is concentrating on the correct image features in making a decision. This is especially -useful applied to an erroneous decision. - -##### Explainers: +In the case of a trained image classification model, Local Necessary Features for a given instance would be a minimal +subset of the image that the model uses to make its decision. A Machine learning engineer might use this insight to see +if the model is concentrating on the correct features of an image in making a decision. This is especially useful +applied to an erroneous decision. The following two explainer methods are available from alibi for generating Local Necessary Features insights. Each -approaches the idea in slightly different ways but the main difference is one gives an idea of the size of the area -over the dataset for which the insight applies. +approaches the idea in slightly different ways but the main difference is that anchors gives an idea of the size of the +area over the dataset for which the insight applies whereas pertinent positives do not. -**Anchors** +#### Anchors -We introduce anchors in a more formal manner, taking the definition and discussion from [Anchors: High-Precision -Model-Agnostic Explanations](https://homes.cs.washington.edu/~marcotcr/aaai18.pdf) +Anchors are a local blackbox method. This section takes the definition and discussion from [Anchors: High-Precision +Model-Agnostic Explanations](https://homes.cs.washington.edu/~marcotcr/aaai18.pdf). Let A be a rule (set of predicates) acting on such an interpretable representation, such that $A(x)$ returns $1$ if all its feature predicates are true for instance $x$. An example of such a rule, $A$, could be represented by the set -$\{not, bad\}$ in which case any sentence, $s$, with both $not$ and $bad$ in it would mean $A(s)=1$ +$\{not, bad\}$ in which case any sentence, $s$, with both $not$ and $bad$ in it would mean $A(s)=1$. -Given a classifier $f$, $\tau>0$, instance $x$ and data distribution $\mathcal{D}$, $A$ is an anchor for $x$ if -$A(x) = 1$ and, +Given a classifier $f$, a value $\tau>0$, an instance $x$ and a data distribution $\mathcal{D}$, $A$ is an anchor for +$x$ if $A(x) = 1$ and, $$ E_{\mathcal{D}(z|A)}[1_{f(x)=f(z)}] ≥ \tau $$ The distribution $\mathcal{D}(z|A)$ is those points from the dataset for which the anchor holds. This is like fixing -some set of features of an instance and allowing all the others to vary. Intuitively, the anchor condition says any -point in the data distribution that satisfies the anchor $A$ is expected to match the model prediction $f(x)$ with -probability $\tau$ (usually $\tau$ is chosen to be 0.95). +some set of features of an instance and allowing all the others to vary. This condition says any point in the data +distribution that satisfies the anchor $A$ is expected to match the model prediction $f(x)$ with probability $\tau$ +(usually $\tau$ is chosen to be 0.95). Let $prec(A) = E_{\mathcal{D}(z|A)}[1_{f(x)=f(z)}]$ be the precision of an anchor. Note that the precision of an anchor is considered with respect to the set of points in the data distribution to which the anchor applies, $\mathcal{D}(z|A)$. We can consider the **coverage** of an anchor as the probability that $A(z)=1$ for any instance $z$ in the data distribution. The coverage tells us the proportion of the distribution that the anchor applies to. -The aim here is to find the anchor that applies to the largest set of instances. So what is the most general rule we -can find that any instance must satisfy in order that it have the same classification as $x$. +The aim here is to find the anchor that applies to the largest set of instances while still satisfying +$prec(A) \geq \tau$. __TODO__: - Include picture explanation of anchors @@ -303,25 +139,33 @@ which we choose to be the $a_i$. At each stage we're going to look at the set of by adding in a feature $a_i$ from the instance. We then compute the precision of each of the resulting anchors and choose the best. We iteratively build the anchor up like this until the required precision is met. -As we build up the anchors from the empty case we need to compute their precision in order to know which one to choose. -Given any specific anchor $A=\{a_1, ..., a_n\}$ we want to know its precision. We can't compute this directly, -instead we sample from $\mathcal{D}(z|A)$ to obtain an estimate. To do this we use a number of different methods for -different data types. For instance, in the case of textual data we want to generate sentences with the anchor words in -them and also ensure that they make sense within the data distribution. One option is to replace the missing words -(those not in the anchor) from the instance with ones with the same POS tag. This means the resulting samples makes -semantic sense rather than being a random set of words. Other methods are available. In the case of images we sample an -image from the data set and then superimpose the superpixels on top of it. Hence we can estimate the precision of that -anchor by sampling from $\mathcal{D}(z|A)$ and computing $1_{f(x)=f(z)}$. - -Because at each step in building up the anchor we need to consider all the possible features we can add this algorithm -is much slower for high dimensional feature spaces. Similarly, if choosing an anchor close to a decision boundary the -method may require a very large number of samples from $\mathcal{D}(z|A)$ and $\mathcal{D}(z|A')$ in order to -distinguish two anchors $A$ and $A'$. - -Note that this is a blackbox method as we just need to be able to predict the value of an instance and don't need -to access model internals. - -**Pertinent Positives:** +As we build up the anchors from the empty case we need to compute their precisions in order to know which one to choose. +We can't compute this directly, instead we sample from $\mathcal{D}(z|A)$ to obtain an estimate. To do this we use a +number of different methods for different data types. For instance, in the case of textual data we want to generate +sentences with the anchor words in them and also ensure that they make sense within the data distribution. One option +is to replace the missing words (those not in the anchor) from the instance with words with the same POS tag. This means +the resulting samples makes semantic sense rather than being a random set of words. Other methods are available. In the +case of images we sample an image from the data set and then superimpose the superpixels on top of it. + +**Pros** +- Easy to explain as rules are simple to interpret. +- Is a blackbox method as we just need to be able to predict the value of an instance and don't need to access model +internals. +- Can be parallelized and made to be much more efficient as a result. +- Although they apply to a local instance, the notion of coverage also gives a level of global insight as well. + +**Cons** +- Because at each step in building up the anchor we need to consider all the possible features we can add this +algorithm is slower for high dimensional feature spaces. +- If choosing an anchor close to a decision boundary the method may require a very large number of samples from +$\mathcal{D}(z|A)$ and $\mathcal{D}(z|A')$ in order to distinguish two anchors $A$ and $A'$. +- High dimensional feature spaces such as images need to be reduced. Typically, this is done by segmenting the image +into superpixels but the choice of algorithm used to obtain the superpixels has an effect on the anchor obtained. +- Practitioners need to make a number of choices with respect to parameters and domain specific setup. For instance the +precision threshold or the method by which we sample $\mathcal{D}(z|A)$. Fortunately alibi provides default settings +for a lot of specific data-types. + +#### Pertinent Positives Informally a Pertinent Positive is the subset of an instance that still obtains the same classification. These differ from anchors primarily in the fact that they aren't constructed to maximize coverage. The method to obtain them is @@ -579,7 +423,168 @@ complexity. The fact that we can sum over each tree in the random forest is a re shapley values. __WARNING__: -- This whole section leans very heavily on the Christoph Molnar book! +- Reference the Christoph Molnar book! + +#### Counter Factuals: + +Given an instance of the dataset and a prediction given by a model a question that naturally arises is how would the +instance minimally have to change in order for a different prediction to be given. Counterfactuals are local +explanations as they relate to a single instance and model prediction. + +Given a classification model trained on MNIST and a sample from the dataset with a given prediction, a counter factual +would be a generated image that closely resembles the original but is changed enough that the model correctly +classifies it as a different number. + +Similarly, given tabular data that a model uses to make financial decisions about a customer a counter factual would +explain to a user how to change they're behaviour in order to obtain a different decision. Alternatively it may tell +the Machine Learning Engineer that the model is drawing incorrect assumptions if the recommended changes involve +features that shouldn't be relevant to the given decision. This may be down either to the model training or the dataset +being unbalanced. + +A counterfactual, $x_{cf}$, needs to satisfy + +- The model prediction on $x_{cf}$ needs to be close to the predefined output. +- The counterfactual $x_{cf}$ should be interpretable. + +The first requirement is easy enough to satisfy. The second however requires some idea of what interpretable means. +Intuitively it would require that the counterfactual constructed makes sense as an instance of the dataset. Each of the +methods available in alibi deal with interpretability slightly differently. All of them agree however that we require +that the perturbation $\delta$ changing the original instance $x_0$ into $x_{cf} = x_0 + \delta$ should be sparse. This +means we prefer solutions that change a small subset of the features to construct $x_{cf}$. This limits the complexity +of the solution making them more understandable. + +##### Explainers: + +The following discusses the set of explainer methods available from alibi for generating counterfactual insights. + +:::{admonition} **Note 3: fit and explain method runtime differences** +Alibi explainers expose two methods `fit` and `explain`. Typically, in machine learning the method that takes the most +time is the fit method as that's where the model optimization conventionally takes place. In explainability however the +model should already be fit and instead the explain step usually requires the bulk of computation. However this isn't +always the case. + +Among the following explainers there are two categories of approach taken. The first fits a counterfactual when the +user requests the insight. This happens during the `.explain()` method call on the explainer class. They do this by +running gradient descent on model inputs to find a counterfactual. The methods that take this approach are +Counterfactuals Instances, Contrastive Explanation Method and Counterfactuals Guided by Prototypes. Thus, the `fit` +methods in these cases are quick but the `explain` method slow. + +The other approach however uses reinforcement learning to pretrains a model that produces explanations on the fly. The +training in this case takes place during the `fit` method call and so this has a long runtime while the `explain` +method is quick. If you want performant explanations in production environments then the later method is preferable. +::: + +__TODO__: +- schematic image explaining search for counterfactual as determined by loss +- schematic image explaining difference between different approaches. + +**Counterfactuals Instances:** + +- Black/white box method +- Classification models +- Tabular and image data types + +Let the model be given by $f$ and $f_{t}$ be the probability of class $t$, $p_t$ is the target probability of class +$t$ and $0<\lambda<1$ a hyperparameter. This method constructs counterfactual instances from an instance $X$ by running +gradient descent on a new instance $X'$ to minimize the following loss. + +$$L(X'|X)= (f_{t}(X') - p_{t})^2 + \lambda L_{1}(X'|X)$$ + +The first term pushes the constructed counterfactual towards the desired class and the use of the $L_{1}$ norm +encourages sparse solutions. + +This method requires computing gradients of the loss in the model inputs. If we have access to the model and the +gradients are available then this can be done directly. If not however, we can use numerical gradients although this +comes at a considerable performance cost. + +A problem arises here in that encouraging sparse solutions doesn't necessarily generate interpretable counterfactuals. +This happens because the loss doesn't prevent the counter factual solution moving off the data distribution. Thus, you +will likely get a solution that doesn't look like something that you'd expect to see from the data. + +__TODO:__ +- Picture example. Like from here: https://github.com/interpretml/DiCE + +**Contrastive Explanation Method:** + +- c/white box method +- Classification models +- Tabular and image data types + +CEM follows a similar approach to the above but includes two new details. Firstly an elastic net +($\beta L_{1} + L_{2}$) regularizer term is added to the loss. This causes the solutions to be both close to the +original instance and sparse. Secondly an optional autoencoder is trained to penalize conterfactual instances that +deviate from the data distribution. This works by requiring minimize the gradient descent minimize the reconstruction +loss of instances passed through the autoencoder. If an instance is unlike anything in the dataset then the autoencoder +will struggle to recreate it well, and it's loss term will be high. We require two hyperparameters $\beta$ and $\gamma$ +to define the following Loss, + +$$L(X'|X)= (f_{t}(X') - p_{t})^2 + \beta L_{1}(X' - X) + L_{2}(X' - X)^2 + \gamma L_{2} (X' - AE(X'))^2$$ + +This approach extends the definition of interpretable to include a requirement that the computed counterfactual be +believably a member of the dataset. It turns out however that this condition isn't enough to always get interpretable +results. And in particular the constructed counterfactual often doesn't look like a member of the target class. + +Similarly to the previous method, this method can apply to both black and white box models. In the case of black box +there is still a performance cost from computing the numerical gradients. + +__TODO:__ +- Picture example of results including less interpretable ones. + +**Counterfactuals Guided by Prototypes:** + +- Black/white box method +- Classification models +- Tabular, image and categorical data types + +For this method we add another term to the loss that optimizes for distance between the counterfactual instance and +close members of the target class. Now the definition of interpretability has been extended even further to include the +requirement that the counterfactual be believably a member of the target class and not just in the data distribution. + +With hyperparmaters $c$ and $\beta$, the loss is now given by: + +$$L(X'|X)= cL_{pred} + \beta L_{1} + L_{2} + L_{AE} + L_{proto}$$ + +__TODO:__ +- Picture example of results. + +It's clear that this method produces much more interpretable results. As well as this, because the proto term pushes +the solution towards the target class we can actually remove the prediction loss term and still obtain a viable counter +factual. This doesn't make much difference if we can compute the gradients directly from the model but if not, and we +are using numerical gradients then the $L_{pred}$ term is a significant bottleneck owing to repeated calls on the model +to approximate the gradients. Thus, this method also applies to blackbox models with a significant performance gain on +the previous approaches mentioned. + +**Counterfactuals with Reinforcement Learning:** + +This black box method splits from the approach taken by the above three significantly. Instead of minimizing a loss at +explain time it trains a new model when fitting the explainer called an actor that takes instances and produces +counterfactuals. It does this using reinforcement learning. In RL an actor model takes some state as input and +generates actions, in our case the actor takes an instance with a specific classification and produces an action in the +form of a counter factual. Outcomes of actions are assigned reward dependent on some reward function that's designed to +encourage specific behaviours of the actor. In our case we reward counterfactuals that are firstly classified as the +correct target class, secondly are close to the data distribution as modelled by an auto-encoder, and thirdly are sparse +perturbations of the original instance. The reinforcement training step pushes the actor to take high reward actions +instead of low reward actions. This method is black box as we compute the reward obtained by an actor by sampling an +action by directly predicting the loss. Because of this we only require the derivative with respect to the actor and +not the predictor itself. + +As well as this CFRL actors are trained to ensure that certain constraints can be taken into account when generating +counterfactuals. This is highly desirable as a use case for counterfactuals is suggesting small changes to an +instance in order to obtain a different classification. In certain cases you want these changes to be constrained, for +instance when dealing with immutable characteristics. In other words if you are using the counterfactual to advise +changes in behaviour you want to ensure the changes are enactable. Suggesting that someone needs to be 2 years younger +to apply for a loan isn't very helpful. + +To train the actor we randomly generate in distribution data instances, along with constraints and target +classifications. We then compute the reward and update the actor to maximize the reward. We do this without needing +access to the critic internals. We end up with an actor that is able to generate interpretable counterfactual instances +at runtime with arbitrary constraints. + +__TODO__: +- Example images +___ + + ##### Example: From e28af30a201a0a969a6b46da1432bcba9d6e4db7 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Mon, 8 Nov 2021 11:50:24 +0000 Subject: [PATCH 19/60] Add pros and cons section for pertinent positives --- doc/source/overview/high_level.md | 40 ++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 89bf71471..87a89dbae 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -160,7 +160,7 @@ algorithm is slower for high dimensional feature spaces. - If choosing an anchor close to a decision boundary the method may require a very large number of samples from $\mathcal{D}(z|A)$ and $\mathcal{D}(z|A')$ in order to distinguish two anchors $A$ and $A'$. - High dimensional feature spaces such as images need to be reduced. Typically, this is done by segmenting the image -into superpixels but the choice of algorithm used to obtain the superpixels has an effect on the anchor obtained. +into superpixels. The choice of algorithm used to obtain the superpixels has an effect on the anchor obtained. - Practitioners need to make a number of choices with respect to parameters and domain specific setup. For instance the precision threshold or the method by which we sample $\mathcal{D}(z|A)$. Fortunately alibi provides default settings for a lot of specific data-types. @@ -169,14 +169,13 @@ for a lot of specific data-types. Informally a Pertinent Positive is the subset of an instance that still obtains the same classification. These differ from anchors primarily in the fact that they aren't constructed to maximize coverage. The method to obtain them is -also substantially different. +also substantially different. The rough idea is that you define an absence of a feature and then perturb the instance +to take away as much information as possible while still retaining the original classification. Given an instance $x_0$ we set out to find a $\delta$ that minimizes the following loss: $$ -l = \left \{ -c\cdot L_{pred}(\delta) + \beta L_{1}(\delta) + L_{2}^{2}(\delta) + \gamma \|\delta - AE(\delta)\|^{2}_{2} -\right \} +l = c\cdot L_{pred}(\delta) + \beta L_{1}(\delta) + L_{2}^{2}(\delta) + \gamma \|\delta - AE(\delta)\|^{2}_{2} $$ where @@ -185,16 +184,29 @@ $$ L_{pred}(\delta) = max\left\{ max_{i\neq t_{0}}[Pred(\delta)]_{i} - [Pred(\delta)]_{t_0}, \kappa \right\} $$ -and $\delta$ is restrained to only take away features from the instance $x_0$. There is a slightly subtle point here in -that removing features from an instance requires correctly defining non-informative feature values. In the case of -MNIST digits it's reasonable to assume that the black background behind each digit represents an absence of information. -Similarly, in the case of color images you might assume that the median pixel value represents no information and moving -away from this value adds information. It is however often not trivial to find these non-informative feature values and -domain knowledge becomes very important. +And $AE$ here is an optional auto encoder generated from the training data. If delta strays from the original data +distribution the auto encoder loss will increase as it will no longer be able to reconstruct $\delta$ well. Thus, by +adding this loss we ensure that $\delta$ remains close to the original dataset distribution. -Note this is both a black and white box method as while we need to compute the loss gradient through the model we can -do this using numerical differentiation. This comes at a significant computational cost due to the extra model calls -we need to make. +Note that $\delta$ is restrained to only take away features from the instance $x_0$. There is a slightly subtle point +here in that removing features from an instance requires correctly defining non-informative feature values. In the case +of MNIST digits it's reasonable to assume that the black background behind each digit represents an absence of +information. Similarly, in the case of color images you might assume that the median pixel value represents no +information and moving away from this value adds information. + +**Pros**: +- This is both a black and white box method. Note that we need to compute the loss gradient through the model. If we +have access to the internals we can do this directly. Otherwise, we need to use numerical differentiation. This comes +at a significant computational cost due to the extra model calls we need to make. Alibi provides support for TensorFlow +models. +- If using the autoencoder loss we obtain more interpretable results as $\delta$ will be in the data distribution. + +**Cons** +- It is often not trivial to find non-informative feature values to add or take away from an instance and domain +knowledge becomes very important. +- Need to tune hyperparameters $\beta$ and $\gamma$. +- Doesn't tell us anything about the coverage of the pertinent positive. +- If using the autoencoder loss then we need access to the original dataset. #### Global Feature Attribution From fcea41123cc6b479f76c25874cce8c4c87998ba3 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Mon, 8 Nov 2021 13:29:46 +0000 Subject: [PATCH 20/60] Add IG pros and cons --- doc/source/overview/high_level.md | 100 +++++++++++++++++------------- 1 file changed, 56 insertions(+), 44 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 87a89dbae..783655c0a 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -104,8 +104,8 @@ area over the dataset for which the insight applies whereas pertinent positives #### Anchors -Anchors are a local blackbox method. This section takes the definition and discussion from [Anchors: High-Precision -Model-Agnostic Explanations](https://homes.cs.washington.edu/~marcotcr/aaai18.pdf). +Anchors are a local blackbox method introduced in [Anchors: High-Precision Model-Agnostic Explanations]( +https://homes.cs.washington.edu/~marcotcr/aaai18.pdf). Let A be a rule (set of predicates) acting on such an interpretable representation, such that $A(x)$ returns $1$ if all its feature predicates are true for instance $x$. An example of such a rule, $A$, could be represented by the set @@ -175,7 +175,7 @@ to take away as much information as possible while still retaining the original Given an instance $x_0$ we set out to find a $\delta$ that minimizes the following loss: $$ -l = c\cdot L_{pred}(\delta) + \beta L_{1}(\delta) + L_{2}^{2}(\delta) + \gamma \|\delta - AE(\delta)\|^{2}_{2} +L = c\cdot L_{pred}(\delta) + \beta L_{1}(\delta) + L_{2}^{2}(\delta) + \gamma \|\delta - AE(\delta)\|^{2}_{2} $$ where @@ -194,11 +194,10 @@ of MNIST digits it's reasonable to assume that the black background behind each information. Similarly, in the case of color images you might assume that the median pixel value represents no information and moving away from this value adds information. -**Pros**: +**Pros** - This is both a black and white box method. Note that we need to compute the loss gradient through the model. If we have access to the internals we can do this directly. Otherwise, we need to use numerical differentiation. This comes -at a significant computational cost due to the extra model calls we need to make. Alibi provides support for TensorFlow -models. +at a significant computational cost due to the extra model calls we need to make. - If using the autoencoder loss we obtain more interpretable results as $\delta$ will be in the data distribution. **Cons** @@ -215,21 +214,21 @@ is a global insight as it describes the behaviour of the model over the entire i PDP-plots all are used to obtain graphs that visualize the relationship between feature and prediction directly. Suppose a trained regression model that predicts the number of bikes rented on a given day dependent on the temperature, -humidity and wind speed. Global Feature Attribution for the temperature feature might be a line graph with temperature -plotted against number of bikes rented. This type of insight can be used to confirm what you expect to see. In the -bikes rented case one would anticipate an increase in rentals up until a certain temperature and then a decrease after. +humidity and wind speed. A global feature attribution plot for the temperature feature might be a line graph with +temperature plotted against number of bikes rented. This type of insight can be used to confirm what you expect to see. +In the bikes rented case one would anticipate an increase in rentals up until a certain temperature and then a decrease +after when it gets too hot. -**Accumulated Local Effects:** +**Accumulated Local Effects** Alibi only provides Accumulated Local Effects plots because these give the most accurate insight of ALE-plots, M-plots -and PDP-plots. ALE-plots work by averaging the local changes in prediction at every instance (local effects) in the -data distribution. They then accumulate these differences to obtain a plot of prediction over the selected feature -dependencies. +and PDP-plots. ALE-plots work by averaging the local changes in a prediction at every instance in the data distribution. +They then accumulate these differences to obtain a plot of prediction over the selected feature dependencies. -Suppose we have a model $f$ and features $X={x_1,... x_n}$. Given a subset of the features $X_S$ then let +Suppose we have a model $f$ and features $X={x_1,... x_n}$. Given a subset of the features $X_S$ we denote $X_C=X \setminus X_S$. We want to obtain the ALE-plot for the features $X_S$, typically chosen to be at most a set of dimension 2 in order that they can easily be visualized. For simplicity assume we have $X=\{x_1, x_2\}$ and let -$X_S=\{x_2\}$ so $X_C=\{x_1\}$. The ALE of $x_1$ is defined by: +$X_S=\{x_1\}$ so $X_C=\{x_2\}$. The ALE of $x_1$ is defined by: $$ \hat{f}_{S, ALE}(x_1) = @@ -240,20 +239,17 @@ $$ The term within the integral computes the expectation of the model derivative in $x_1$ over the random variable $X_2$ conditional on $X_1=z_1$. By taking the expectation with respect to $X_2$ we factor out its dependency. So now we know -how the prediction $f$ changes local to a point $X_1=z_1$ independent of $X_2$. If we have this then to get the true -dependency we must integrate these changes over $x_1$ from a min value to the value of interest. ALE-plots get there -names as they accumulate (integrate) the local effects (the expected partial derivatives). +how the prediction $f$ changes local to a point $X_1=z_1$ independent of $X_2$. By integrating these changes over $x_1$ +from a minimum value to the value of interest we obtain the global plot of how the model depends on $x_1$. ALE-plots +get there names as they accumulate (integrate) the local effects (the expected partial derivatives). Note that here we +have assumed $f$ is differentiable. In practice however, we compute the various quantities above numerically and so this +isn't a requirement. __TODO__: - Add picture explaining the above idea. -It is important to note that by considering effects local to $X_1=z_1$ in the above equations we capture any -dependencies in the features of the dataset. Similarly, by considering the differences in $f$ and accumulating them -over the variable of interest we remove any effects owing to correlation between $X_1$ and $X_2$. For better insight -into these points see... - -In the above example we've assumed $f$ is differentiable. In practice however, we compute the various quantities above -numerically and so this isn't a requirement. +For more details on accumulated local effects including a discussion on PDP-plots and M-plots see +[Motivation-and-definition for ALE](methods/ALE.html#Motivation-and-definition) :::{admonition} **Note 4: Categorical Variables and ALE** Note that because ALE plots require differences between variable they don't natural extend to categorical data unless @@ -261,21 +257,33 @@ there is a sensible ordering on the categorical data. As an example consider mon only an issue if the variable you are taking the ALE with respect to is categorical. ::: +**Pros**: +- ALE-plots are easy to visualize and understand intuitively +- Very general as it is a black box algorithm +- Doesn't struggle with dependencies in the underlying features unlike PDP-plots +- ALE-plots are fast compared to other accumulated local effects insights such as PDP-plots + +**Cons**: +- Harder to explain the underlying motivation behind the method than PDP-plots or M-plots. +- Requires access to the training dataset. +- Unlike PDP-plots, ALE-plots do not work with Categorical data + + #### Local Feature Attribution Local feature attribution asks how each feature in a given instance contributes to its prediction. In the case of an image this would highlight those pixels that make the model give the output it does. Note this differs subtly from -Local Necessary Features in that they find the minimum subset of features required to give a prediction whereas local -feature attribution creates a heat map that tells us each features contribution to the overall outcome. +Local Necessary Features which find the minimum subset of features required to give a prediction. Local feature +attribution instead assigned a score to each feature. __TODO__: -- picture showing above concept. +- picture showing above. A good use of local feature attribution is to detect that a classifier trained on images is focusing on the correct features of an image in order to infer the class. As an example suppose you have a model trained to detect breeds of dog. You want to check that it focuses on the correct features of the dog in making its prediction. If you compute the feature attribution of a picture of a husky and discover that the model is only focusing on the snowy backdrop to -the husky then you know both that all the images of huskies in your dataset overwhelmingly have snowy backdrops and +the husky then you know two things. All the images of huskies in your dataset overwhelmingly have snowy backdrops and also that the model will fail to generalize. It will potentially incorrectly classify other breeds of dog with snowy backdrops as huskies and also fail to recognise huskies without snowy backdrops. @@ -291,18 +299,15 @@ prediction $f(x)$. Its desirable that these attribution values satisfy certain properties: 1. Efficiency/Completeness: The sum of attributions equals the difference between the prediction and the -baseline/average. It makes sense that this be the case as we're interested in understanding the difference each feature -value makes in a prediction compared to some uninformative baseline. +baseline/average. We're interested in understanding the difference each feature value makes in a prediction compared to +some uninformative baseline. 2. Symmetry: If the model behaves the same after swapping two variables $x$ and $y$ then $x$ and $y$ have equal attribution. If this weren't the case we'd be biasing the attribution towards certain features over other ones. -3. Dummy/Sensitivity: If a variable does not change the output of the model then it should have attribution 0. Similar -to above if this where not the case then we'd be assigning value to a feature that provides no information. +3. Dummy/Sensitivity: If a variable does not change the output of the model then it should have attribution 0. If this +where not the case then we'd be assigning value to a feature that provides no information. 4. Additivity/Linearity: The attribution for a feature $x_i$ of a linear composition of two models $f_1$ and $f_2$ given by $c_1 f_1 + c_2 f_2$ is $c_1 a_{1, i} + c_2 a_{2, i}$ where $a_{1, i}$ and $a_{2, i}$ is the attribution for -$x_1$ and $f_1$ and $f_2$ respectively. This allows us to decompose certain types of model that are made up of lots of -smaller models such as random forests. - -Each of the methods that alibi provides satisfies these properties. +$x_1$ and $f_1$ and $f_2$ respectively. ##### Explainers: @@ -321,17 +326,24 @@ So the above sums the partial derivatives with respect to each feature over the instance of interest. In doing so you accumulate the changes in prediction that occur as a result of the changing feature value from the baseline to the instance. +**Pros:** +- Simple to understand and visualize, especially with image data. +- Doesn't require access to the training data unless you use the training data to compute the baseline instance. + +**Cons:** +- White box method. Requires the partial derivatives of the model outputs with respect to inputs. +- Requires choosing the baseline which can have a large effect on the outcome. (See Note 5) + :::{admonition} **Note 5: Choice of Baseline** The main difficulty with this method ends up being that as IG is very dependent on the baseline it's important to make -sure you choose the correct baseline. The choice of baseline should capture a blank state in which the model makes -essentially no prediction or assigns probability of classes equally. A common choice for image classification is an -image set to black. This works well in many cases but sometimes fails to be a good choice. For instance for a model -that classifies images taken at night using an image with every pixel set to black means the attribution method will -undervalue the use of dark pixels in attributing the contribution of each feature to the classification. This is due to -the contribution being calculated relative to the baseline which in this case is already dark. +sure you choose it well. The choice of baseline should capture a blank state in which the model makes essentially no +prediction or assigns probability of classes equally. A common choice for image classification is an image set to black. +This works well in many cases but sometimes fails to be a good choice. For instance for a model that classifies images +taken at night using an image with every pixel set to black means the attribution method will undervalue the use of +dark pixels in attributing the contribution of each feature to the classification. This is due to the contribution being +calculated relative to the baseline which in this case is already dark. ::: - **KernelSHAP** Kernel SHAP is an efficient method of computing the Shapley values for a model around an instance $x_i$. Shapley values From 05283f66066f4f55aa925002c0916f956573a806 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Mon, 8 Nov 2021 14:25:27 +0000 Subject: [PATCH 21/60] Add pros and cons for TreeSHAP section --- doc/source/overview/high_level.md | 148 +++++++++++++++++++----------- 1 file changed, 92 insertions(+), 56 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 783655c0a..b24a2e4c0 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -207,7 +207,7 @@ knowledge becomes very important. - Doesn't tell us anything about the coverage of the pertinent positive. - If using the autoencoder loss then we need access to the original dataset. -#### Global Feature Attribution +### Global Feature Attribution Global Feature Attribution methods aim to show the dependency of model output on a subset of the input features. This is a global insight as it describes the behaviour of the model over the entire input space. ALE-plots, M-plots and @@ -219,7 +219,7 @@ temperature plotted against number of bikes rented. This type of insight can be In the bikes rented case one would anticipate an increase in rentals up until a certain temperature and then a decrease after when it gets too hot. -**Accumulated Local Effects** +#### Accumulated Local Effects Alibi only provides Accumulated Local Effects plots because these give the most accurate insight of ALE-plots, M-plots and PDP-plots. ALE-plots work by averaging the local changes in a prediction at every instance in the data distribution. @@ -269,7 +269,7 @@ only an issue if the variable you are taking the ALE with respect to is categori - Unlike PDP-plots, ALE-plots do not work with Categorical data -#### Local Feature Attribution +### Local Feature Attribution Local feature attribution asks how each feature in a given instance contributes to its prediction. In the case of an image this would highlight those pixels that make the model give the output it does. Note this differs subtly from @@ -309,9 +309,7 @@ where not the case then we'd be assigning value to a feature that provides no in given by $c_1 f_1 + c_2 f_2$ is $c_1 a_{1, i} + c_2 a_{2, i}$ where $a_{1, i}$ and $a_{2, i}$ is the attribution for $x_1$ and $f_1$ and $f_2$ respectively. -##### Explainers: - -**Integrated Gradients** +#### Integrated Gradients The integrated gradients' method computes the attribution of each feature by integrating the model partial derivatives along a path from a baseline point to the instance. Let $f$ be the model and $x$ the instance of interest. @@ -344,24 +342,25 @@ dark pixels in attributing the contribution of each feature to the classificatio calculated relative to the baseline which in this case is already dark. ::: -**KernelSHAP** +#### KernelSHAP Kernel SHAP is an efficient method of computing the Shapley values for a model around an instance $x_i$. Shapley values are a game theoretic method of assigning payout to players depending on there contribution to an overall goal. In this case the players are the features and the payout is the prediction the model makes. To compute these values we have to -consider the marginal contribution of each feature over all the possible coalitions of feature players. Exactly what -this means in terms of a specific coalition is a little nuanced. Suppose for example we have a regression model $f$ -that makes predictions based on four features $X = \{X_1, X_2, X_3, X_4\}$ as input. A coalition is a group of -features, say for example the first and third feature. For this coalition it's value is given by: +consider the marginal contribution of each feature over all the possible coalitions of feature players. + +Suppose for example we have a regression model $f$ that makes predictions based on four features +$X = \{X_1, X_2, X_3, X_4\}$ as input. A coalition is a group of features, say for example the first and third feature. +For this coalition it's value is given by: $$ val({1,3}) = \int_{\mathbb{R}}\int_{\mathbb{R}} f(x_1, X_2, x_3, X_4)d\mathbb{P}_{X_{2}X_{4}} - \mathbb{E}_{X}(f(X)) $$ -Given a coalition, $S$, that doesn't include $x_i$, then that features marginal contribution is given by -$val(S \cup x_i) - val(S)$. Intuitively this is the difference that feature $x_i$ would make for that coalition. We are -interested in the marginal contribution of $x_i$ over all possible coalitions with and without $x_i$. A shapley value -for the $x_i^{th}$ feature is given by the weighted sum +Given a coalition, $S$, that doesn't include $x_i$, then $x_i$'s marginal contribution is given by +$val(S \cup x_i) - val(S)$. Intuitively this is the difference that feature $x_i$ would contribute if it was to join +that coalition. We are interested in the marginal contribution of $x_i$ over all possible coalitions with and without +$x_i$. A shapley value for the $x_i^{th}$ feature is given by the weighted sum $$ \psi_j = \sum_{S\subset \{1,...,p\} \setminus \{j\}} \frac{|S|!(p - |S| - 1)!}{p!}(val(S \cup x_i) - val(S)) @@ -369,10 +368,9 @@ $$ The motivation for the weights convey how much you can learn from a specific coalition. Large and Small coalitions mean more learnt because we've isolated more of the effect. Whereas medium size coalitions don't supply us with as much -information because there are many possible such coalitions. **Not 100 percent sure about this point! Want a nicer -intuitive explanation.**. +information because there are many possible such coalitions. -The main issue with the above is that there will be a large number of possible coalitions, $O(M2^M)$ to be precise. +The main issue with the above is that there will be a large number of possible coalitions, $2^M$ to be precise. Hence instead of computing all of these we use a sampling process on the space of coalitions and then estimate the Shapley values by training a linear model. Because a coalition is a set of players/features that are or aren't playing/contributing we represent this as points in the space of binary codes $z' = \{z_0,...,z_m\}$ where $z_j = 0$ @@ -384,72 +382,110 @@ $$ \pi_{x}(z') = \frac{M - 1}{\frac{M}{|z'|}|z'|(M - |z'|)} $$ -Once we have all of this we can train a linear model, the coefficients of which are the Shapley values. There is some -nuance to how we compute the value of a model given a specific coalition as most models aren't built to accept input -with arbitrary missing values. Given a coalition $S$ we can either fix those features in $S$ and average out those not +Once we have the data points, the values of $f$ for each data point and the sample weights we have everything we need +to train a linear model. The paper shows that the coefficients of this linear model are the Shapley values. + +There is some nuance to how we compute the value of a model given a specific coalition as most models aren't built to +accept input with arbitrary missing values. Given a coalition $S$ we fix those features in $S$ and average out those not in $S$ by replacing them by values sampled from the data set. This is the marginal expectation given by -$\mathbb{E}_{X_{X \setminus S}}[f(x_S, X_{X \setminus S})]$. A problem with this approach is that fixing the $x_S$ and -replacing the other inputs with feature values sampled from $X_{X \setminus S}$ can introduce unrealistic data if the -underlying data has dependencies. Another approach in this case is to use the conditional expectation given by -$\mathbb{E}[f(x_S, X_{X\setminus S}|X_S=x_S)]$. This is still problematic however, as a variables that don't contribute -to a prediction can be highly correlated with features that do. In this case the shapley value for the non-contributing -feature can end up being assigned a none zero shapley value which violates the Dummy/Sensitivity property. +$\mathbb{E}_{X_{\bar{S}}}[f(x_S, X_{\bar{S}})]$. A problem with this approach is that fixing the $x_S$ and +replacing the other inputs with feature values sampled from $X_{\bar{S}}$ can introduce unrealistic data if the +underlying data has dependencies. -**TreeSHAP** +**Pros**: +- The Shapley values are fairly distributed among the feature values which isn't always the case for other local feature +attribution methods. +- Shapley values can be easily interpreted and visualized +- Very general as is a blackbox method. + +**Cons**: +- KernalSHAP is slow owing to the number of samples required to accurately estimate the Shapley values. +- The process of sampling from the dataset while holding a set of features fixed means that unrealistic data points +will be introduced. +- Requires access to the training dataset. + + +#### TreeSHAP In the case of tree based models we can obtain a speed-up by exploiting the structure of trees. Alibi exposes two -white-box methods Interventional and Path dependent feature perturbation. In each case the speed-up is in how we -compute the value of a coalition. +white-box methods Interventional and Path dependent feature perturbation. The main difference is that Interventional +method uses the marginal expectation $\mathbb{E}[f(x_{S}, X_{\bar{S}}]$ to estimate + +$$ +f(S) = \mathbb{E}[f(x_S, X_{\bar{S}})|X_{S}=x_S] +$$ + +whereas, the Path dependent method uses the dataset to compute the conditional expectation directly. -Path Dependent: +#### Path Dependent TreeSHAP -Given a coalition $S=/{z_1, ..., z_n/}$ we want to find $\mathbb{E}_{X_{X \setminus S}}[f(x_S, X_{X \setminus S})]$. We -do so in the same way we should when applying a tree based model to any sample, with the only difference being what to -do when a feature is missing from the coalition. In this case we take both routes down the tree and weight each by the -proportion of dataset samples from the training dataset that go into each branch. For this algorithm to work we need -the tree to have a record of how it splits the training dataset. We don't need the dataset itself however, unlike the -interventional TreeSHAP algorithm. +Given a coalition $S=/{z_1, ..., z_n/}$ we want to find $\mathbb{E}[f(x_S, X_{X \bar{S}}|X_S=x_S)]$. To do so apply the +tree to the present features in the same way we normally would, with the only difference being when a feature is +missing from the coalition. In this case we take both routes down the tree and weight each by the proportion of +dataset samples from the training dataset that go into each branch. For this algorithm to work we need the tree to have +a record of how it splits the training dataset. We don't need the dataset itself however, unlike the interventional +TreeSHAP algorithm. Doing this for each possible set $S$ involves $O(TL2^M)$ time complexity. It can be significantly improved to polynomial time however if instead of doing the above one by one we do it for all subsets at once. The intuition here is to imagine standing at the first node and counting the number of subsets that will go one way, the number that will go the other -and the number that will go both. Because we assign different sized subsets different weights we also need to further -distinguish the above numbers passing into each branch of the tree by there size. Finally, we also need to keep track of -the proportion of sets of each size in each branch that contain a feature $i$ and the proportion that don't. Once all -these sets have flowed down to the leaves of the tree then we can compute the shapley values. Doing this gives us -$O(TLD^2)$ time complexity. +and the number that will go both (in the case of missing features). Because we assign different sized subsets different +weights we also need to further distinguish the above numbers passing into each branch of the tree by there size. +Finally, we also need to keep track of the proportion of sets of each size in each branch that contain a feature $i$ +and the proportion that don't. Once all these sets have flowed down to the leaves of the tree then we can compute the +shapley values. Doing this gives us $O(TLD^2)$ time complexity. + +**Pros**: +- Very fast for a very useful category of models. +- Doesn't require access to the training data. +- The Shapley values are fairly distributed among the feature values which isn't always the case for other local feature +attribution methods. +- Shapley values can be easily interpreted and visualized -An issue is that as we're approximating $\mathbb{E}[f(x_S, X_{X\setminus S}|X_S=x_S)]$ this method will give shapley -values that don't satisfy the Dummy/Sensitivity property. This occurs because features that contribute nothing can be -highly correlated with features that do and the expectation doesn't distinguish on this effect. Hence, the -non-significant but correlated feature will have a positive shapley coefficient. -Interventional: +**Cons**: +- approximating $\mathbb{E}[f(x_S, X_{X \bar{S}}|X_S=x_S)]$ this method will give shapley values that don't satisfy +the Dummy/Sensitivity property. This occurs because features that contribute nothing can be highly correlated with +features that do and the expectation doesn't distinguish on this effect. +- Only applies to Tree based models + +#### Interventional Tree SHAP The interventional TreeSHAP method takes a different approach. Suppose we sample a reference data point, $r$, from the training dataset. For each feature $i$ we then enumerate over all subsets of $S\subset F \setminus \{i\}$. If a subset is missing a feature we replace it with the corresponding one in the reference sample. We can then compute $f(S)$ -directly for each set $S$ and from that get the Shapley values. One major difference here is that we're combining each -$S$ and $r$ to generate a data point. The process of enforcing independence of the $S$ and $F\S$ in this way is known -as intervening in the underlying data set and is where the algorithm name comes from. Note that doing this breaks +directly for each coalition $S$ and from that get the Shapley values. One major difference here is that we're combining +each $S$ and $r$ to generate a data point. The process of enforcing independence of the $S$ and $F\S$ in this way is +known as intervening in the underlying data set and is where the algorithm name comes from. Note that doing this breaks any independence between features in the dataset which means the data points we're sampling won't be realistic. For a single Tree and sample $r$ if we just iterate over all the subsets of $S \subset F \setminus \{i\}$ the -interventional TreeSHAP method runs with $O(M2^M)$. Note that there are two paths through the tree of unique interest. +interventional TreeSHAP method runs with $O(M2^M)$. Note that there are two paths through the tree of special interest. The first is the instance path for $x$, and the second is the sampled/reference path for $r$. Computing the shapley value estimate for the sampled $r$ is going to involve replacing $x$ with values of $r$ and generating a set of -perturbed paths. If, instead of summing over the sets if we sum over the paths we get a speed improvement as many of -the sets $S$ end up taking the same path, and we compute them all at the same time instead of one by one. Doing so the -Interventional TreeSHAP algorithm obtains $O(LD)$ time complexity. +perturbed paths. If, instead of iterating over the sets if we sum over the paths we get a speed improvement as many of +the paths within the tree have overlapping components. We can compute them all at the same time instead of one by one. +Doing so the Interventional TreeSHAP algorithm obtains $O(LD)$ time complexity. Applied to a random forrest with $T$ trees and using $R$ samples to compute the estimates we obtain $O(TRLD)$ time complexity. The fact that we can sum over each tree in the random forest is a results of the linearity property of shapley values. +**Pros:** +- Very fast for very useful category of models +- The Shapley values are fairly distributed among the feature values which isn't always the case for other local feature +attribution methods. +- Shapley values can be easily interpreted and visualized + +**Cons**: +- Less general as a white box method +- Requires access to the dataset +- Intervention on the dataset introduces unrealistic data points + __WARNING__: -- Reference the Christoph Molnar book! +- Reference the Christoph Molnar book -#### Counter Factuals: +### Counter Factuals: Given an instance of the dataset and a prediction given by a model a question that naturally arises is how would the instance minimally have to change in order for a different prediction to be given. Counterfactuals are local From 2f83940347d288a5c0a1df30af56abc2c53a0443 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Mon, 8 Nov 2021 22:58:43 +0000 Subject: [PATCH 22/60] Add pros and cons for counterfactuals section --- doc/source/overview/high_level.md | 330 +++++++++++++++++------------- 1 file changed, 186 insertions(+), 144 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index b24a2e4c0..2b657641b 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -207,68 +207,6 @@ knowledge becomes very important. - Doesn't tell us anything about the coverage of the pertinent positive. - If using the autoencoder loss then we need access to the original dataset. -### Global Feature Attribution - -Global Feature Attribution methods aim to show the dependency of model output on a subset of the input features. This -is a global insight as it describes the behaviour of the model over the entire input space. ALE-plots, M-plots and -PDP-plots all are used to obtain graphs that visualize the relationship between feature and prediction directly. - -Suppose a trained regression model that predicts the number of bikes rented on a given day dependent on the temperature, -humidity and wind speed. A global feature attribution plot for the temperature feature might be a line graph with -temperature plotted against number of bikes rented. This type of insight can be used to confirm what you expect to see. -In the bikes rented case one would anticipate an increase in rentals up until a certain temperature and then a decrease -after when it gets too hot. - -#### Accumulated Local Effects - -Alibi only provides Accumulated Local Effects plots because these give the most accurate insight of ALE-plots, M-plots -and PDP-plots. ALE-plots work by averaging the local changes in a prediction at every instance in the data distribution. -They then accumulate these differences to obtain a plot of prediction over the selected feature dependencies. - -Suppose we have a model $f$ and features $X={x_1,... x_n}$. Given a subset of the features $X_S$ we denote -$X_C=X \setminus X_S$. We want to obtain the ALE-plot for the features $X_S$, typically chosen to be at most a -set of dimension 2 in order that they can easily be visualized. For simplicity assume we have $X=\{x_1, x_2\}$ and let -$X_S=\{x_1\}$ so $X_C=\{x_2\}$. The ALE of $x_1$ is defined by: - -$$ -\hat{f}_{S, ALE}(x_1) = -\int_{min(x_1)}^{x_1}\mathbb{E}\left[ -\frac{\partial f(X_1, X_2)}{\partial X_1} | X_1 = z_1 -\right]dz_1 - c_1 -$$ - -The term within the integral computes the expectation of the model derivative in $x_1$ over the random variable $X_2$ -conditional on $X_1=z_1$. By taking the expectation with respect to $X_2$ we factor out its dependency. So now we know -how the prediction $f$ changes local to a point $X_1=z_1$ independent of $X_2$. By integrating these changes over $x_1$ -from a minimum value to the value of interest we obtain the global plot of how the model depends on $x_1$. ALE-plots -get there names as they accumulate (integrate) the local effects (the expected partial derivatives). Note that here we -have assumed $f$ is differentiable. In practice however, we compute the various quantities above numerically and so this -isn't a requirement. - -__TODO__: -- Add picture explaining the above idea. - -For more details on accumulated local effects including a discussion on PDP-plots and M-plots see -[Motivation-and-definition for ALE](methods/ALE.html#Motivation-and-definition) - -:::{admonition} **Note 4: Categorical Variables and ALE** -Note that because ALE plots require differences between variable they don't natural extend to categorical data unless -there is a sensible ordering on the categorical data. As an example consider months of the year. To be clear this is -only an issue if the variable you are taking the ALE with respect to is categorical. -::: - -**Pros**: -- ALE-plots are easy to visualize and understand intuitively -- Very general as it is a black box algorithm -- Doesn't struggle with dependencies in the underlying features unlike PDP-plots -- ALE-plots are fast compared to other accumulated local effects insights such as PDP-plots - -**Cons**: -- Harder to explain the underlying motivation behind the method than PDP-plots or M-plots. -- Requires access to the training dataset. -- Unlike PDP-plots, ALE-plots do not work with Categorical data - - ### Local Feature Attribution Local feature attribution asks how each feature in a given instance contributes to its prediction. In the case of an @@ -325,12 +263,12 @@ instance of interest. In doing so you accumulate the changes in prediction that feature value from the baseline to the instance. **Pros:** -- Simple to understand and visualize, especially with image data. -- Doesn't require access to the training data unless you use the training data to compute the baseline instance. +- Simple to understand and visualize, especially with image data +- Doesn't require access to the training data **Cons:** -- White box method. Requires the partial derivatives of the model outputs with respect to inputs. -- Requires choosing the baseline which can have a large effect on the outcome. (See Note 5) +- White box method. Requires the partial derivatives of the model outputs with respect to inputs +- Requires choosing the baseline which can have a large effect on the outcome (See Note 5) :::{admonition} **Note 5: Choice of Baseline** The main difficulty with this method ends up being that as IG is very dependent on the baseline it's important to make @@ -372,11 +310,11 @@ information because there are many possible such coalitions. The main issue with the above is that there will be a large number of possible coalitions, $2^M$ to be precise. Hence instead of computing all of these we use a sampling process on the space of coalitions and then estimate the -Shapley values by training a linear model. Because a coalition is a set of players/features that are or aren't -playing/contributing we represent this as points in the space of binary codes $z' = \{z_0,...,z_m\}$ where $z_j = 0$ -means that feature is present or not. To obtain the dataset on which we train this model we first sample from this -space of coalitions then compute the values of $f$ for each sample. We obtain weights for each sample using the Shapley -Kernel: +Shapley values by training a linear model. Because a coalition is a set of players/features that are contributing to a +prediction we represent this as points in the space of binary codes $z' = \{z_0,...,z_m\}$ where $z_j = 1$ +means that the $j^th$ feature is present in the coalition while $z_j = 0$ means it is not. To obtain the dataset on which +we train this model we first sample from this space of coalitions then compute the values of $f$ for each sample. We +obtain weights for each sample using the Shapley Kernel: $$ \pi_{x}(z') = \frac{M - 1}{\frac{M}{|z'|}|z'|(M - |z'|)} @@ -386,11 +324,22 @@ Once we have the data points, the values of $f$ for each data point and the samp to train a linear model. The paper shows that the coefficients of this linear model are the Shapley values. There is some nuance to how we compute the value of a model given a specific coalition as most models aren't built to -accept input with arbitrary missing values. Given a coalition $S$ we fix those features in $S$ and average out those not -in $S$ by replacing them by values sampled from the data set. This is the marginal expectation given by -$\mathbb{E}_{X_{\bar{S}}}[f(x_S, X_{\bar{S}})]$. A problem with this approach is that fixing the $x_S$ and -replacing the other inputs with feature values sampled from $X_{\bar{S}}$ can introduce unrealistic data if the -underlying data has dependencies. +accept input with arbitrary missing values. If $D$ is the underlying distribution the samples are drawn from then +ideally we'd use the conditional expectation: + +$$ +f(S) = \mathbb{E}_{D}[f(x)|x_S] +$$ + +Computing this value directly is very difficult. Instead, we can use the interventional conditional expectation which +is defined as: + +$$ +f(S) = \mathbb{E}_{D}[f(x)|do(x_S)] +$$ + +The do operator here fixes the feature values in $S$ and samples the remaining $\bar{S}$ feature values from the data. +This can mean introducing unrealistic samples if there are dependencies between the features. **Pros**: - The Shapley values are fairly distributed among the feature values which isn't always the case for other local feature @@ -408,20 +357,15 @@ will be introduced. #### TreeSHAP In the case of tree based models we can obtain a speed-up by exploiting the structure of trees. Alibi exposes two -white-box methods Interventional and Path dependent feature perturbation. The main difference is that Interventional -method uses the marginal expectation $\mathbb{E}[f(x_{S}, X_{\bar{S}}]$ to estimate - -$$ -f(S) = \mathbb{E}[f(x_S, X_{\bar{S}})|X_{S}=x_S] -$$ - -whereas, the Path dependent method uses the dataset to compute the conditional expectation directly. +white-box methods, Interventional and Path dependent feature perturbation. The main difference between the two is that +the path dependent method approximates the interventional conditional expectation whereas the interventional method +calculates it directly. #### Path Dependent TreeSHAP -Given a coalition $S=/{z_1, ..., z_n/}$ we want to find $\mathbb{E}[f(x_S, X_{X \bar{S}}|X_S=x_S)]$. To do so apply the -tree to the present features in the same way we normally would, with the only difference being when a feature is -missing from the coalition. In this case we take both routes down the tree and weight each by the proportion of +Given a coalition we want to approximate the interventional conditional expectation. To do so we apply the tree to the +features present in the coalition in the same way we normally would, with the only difference being when a feature +is missing from the coalition. In this case we take both routes down the tree and weight each by the proportion of dataset samples from the training dataset that go into each branch. For this algorithm to work we need the tree to have a record of how it splits the training dataset. We don't need the dataset itself however, unlike the interventional TreeSHAP algorithm. @@ -442,12 +386,9 @@ shapley values. Doing this gives us $O(TLD^2)$ time complexity. attribution methods. - Shapley values can be easily interpreted and visualized - **Cons**: -- approximating $\mathbb{E}[f(x_S, X_{X \bar{S}}|X_S=x_S)]$ this method will give shapley values that don't satisfy -the Dummy/Sensitivity property. This occurs because features that contribute nothing can be highly correlated with -features that do and the expectation doesn't distinguish on this effect. - Only applies to Tree based models +- Uses an approximation of the interventional conditional expectation instead of computing it directly #### Interventional Tree SHAP @@ -476,14 +417,73 @@ shapley values. - The Shapley values are fairly distributed among the feature values which isn't always the case for other local feature attribution methods. - Shapley values can be easily interpreted and visualized +- Computes the interventional conditional expectation exactly unlike the path dependent method **Cons**: - Less general as a white box method - Requires access to the dataset -- Intervention on the dataset introduces unrealistic data points +- Typically, slower than the path dependent method -__WARNING__: -- Reference the Christoph Molnar book +### Global Feature Attribution + +Global Feature Attribution methods aim to show the dependency of model output on a subset of the input features. This +is a global insight as it describes the behaviour of the model over the entire input space. ALE-plots, M-plots and +PDP-plots all are used to obtain graphs that visualize the relationship between feature and prediction directly. + +Suppose a trained regression model that predicts the number of bikes rented on a given day dependent on the temperature, +humidity and wind speed. A global feature attribution plot for the temperature feature might be a line graph with +temperature plotted against number of bikes rented. This type of insight can be used to confirm what you expect to see. +In the bikes rented case one would anticipate an increase in rentals up until a certain temperature and then a decrease +after when it gets too hot. + +#### Accumulated Local Effects + +Alibi only provides Accumulated Local Effects plots because these give the most accurate insight of ALE-plots, M-plots +and PDP-plots. ALE-plots work by averaging the local changes in a prediction at every instance in the data distribution. +They then accumulate these differences to obtain a plot of prediction over the selected feature dependencies. + +Suppose we have a model $f$ and features $X={x_1,... x_n}$. Given a subset of the features $X_S$ we denote +$X_C=X \setminus X_S$. We want to obtain the ALE-plot for the features $X_S$, typically chosen to be at most a +set of dimension 2 in order that they can easily be visualized. For simplicity assume we have $X=\{x_1, x_2\}$ and let +$X_S=\{x_1\}$ so $X_C=\{x_2\}$. The ALE of $x_1$ is defined by: + +$$ +\hat{f}_{S, ALE}(x_1) = +\int_{min(x_1)}^{x_1}\mathbb{E}\left[ +\frac{\partial f(X_1, X_2)}{\partial X_1} | X_1 = z_1 +\right]dz_1 - c_1 +$$ + +The term within the integral computes the expectation of the model derivative in $x_1$ over the random variable $X_2$ +conditional on $X_1=z_1$. By taking the expectation with respect to $X_2$ we factor out its dependency. So now we know +how the prediction $f$ changes local to a point $X_1=z_1$ independent of $X_2$. By integrating these changes over $x_1$ +from a minimum value to the value of interest we obtain the global plot of how the model depends on $x_1$. ALE-plots +get there names as they accumulate (integrate) the local effects (the expected partial derivatives). Note that here we +have assumed $f$ is differentiable. In practice however, we compute the various quantities above numerically and so this +isn't a requirement. + +__TODO__: +- Add picture explaining the above idea. + +For more details on accumulated local effects including a discussion on PDP-plots and M-plots see +[Motivation-and-definition for ALE](../methods/ALE.html#Motivation-and-definition) + +:::{admonition} **Note 4: Categorical Variables and ALE** +Note that because ALE plots require differences between variable they don't natural extend to categorical data unless +there is a sensible ordering on the categorical data. As an example consider months of the year. To be clear this is +only an issue if the variable you are taking the ALE with respect to is categorical. +::: + +**Pros**: +- ALE-plots are easy to visualize and understand intuitively +- Very general as it is a black box algorithm +- Doesn't struggle with dependencies in the underlying features unlike PDP-plots +- ALE-plots are fast compared to other accumulated local effects insights such as PDP-plots + +**Cons**: +- Harder to explain the underlying motivation behind the method than PDP-plots or M-plots. +- Requires access to the training dataset. +- Unlike PDP-plots, ALE-plots do not work with Categorical data ### Counter Factuals: @@ -495,11 +495,13 @@ Given a classification model trained on MNIST and a sample from the dataset with would be a generated image that closely resembles the original but is changed enough that the model correctly classifies it as a different number. +__TODO__: +- Give example image to illustrate + Similarly, given tabular data that a model uses to make financial decisions about a customer a counter factual would explain to a user how to change they're behaviour in order to obtain a different decision. Alternatively it may tell the Machine Learning Engineer that the model is drawing incorrect assumptions if the recommended changes involve -features that shouldn't be relevant to the given decision. This may be down either to the model training or the dataset -being unbalanced. +features that shouldn't be relevant to the given decision. A counterfactual, $x_{cf}$, needs to satisfy @@ -508,28 +510,23 @@ A counterfactual, $x_{cf}$, needs to satisfy The first requirement is easy enough to satisfy. The second however requires some idea of what interpretable means. Intuitively it would require that the counterfactual constructed makes sense as an instance of the dataset. Each of the -methods available in alibi deal with interpretability slightly differently. All of them agree however that we require -that the perturbation $\delta$ changing the original instance $x_0$ into $x_{cf} = x_0 + \delta$ should be sparse. This -means we prefer solutions that change a small subset of the features to construct $x_{cf}$. This limits the complexity -of the solution making them more understandable. - -##### Explainers: - -The following discusses the set of explainer methods available from alibi for generating counterfactual insights. +methods available in alibi deal with interpretability slightly differently. All of them require that the perturbation +$\delta$ that changes the original instance $x_0$ into $x_{cf} = x_0 + \delta$ should be sparse. This means we prefer +solutions that change a small subset of the features to construct $x_{cf}$. Requiring this limits the complexity of the +solution making it more understandable. :::{admonition} **Note 3: fit and explain method runtime differences** Alibi explainers expose two methods `fit` and `explain`. Typically, in machine learning the method that takes the most -time is the fit method as that's where the model optimization conventionally takes place. In explainability however the -model should already be fit and instead the explain step usually requires the bulk of computation. However this isn't -always the case. +time is the fit method as that's where the model optimization conventionally takes place. In explainability +the explain step often requires the bulk of computation. However, this isn't always the case. -Among the following explainers there are two categories of approach taken. The first fits a counterfactual when the -user requests the insight. This happens during the `.explain()` method call on the explainer class. They do this by -running gradient descent on model inputs to find a counterfactual. The methods that take this approach are -Counterfactuals Instances, Contrastive Explanation Method and Counterfactuals Guided by Prototypes. Thus, the `fit` -methods in these cases are quick but the `explain` method slow. +Among the explainers in this section there are two approaches taken. The first fits a counterfactual when the user +requests the insight. This happens during the `.explain()` method call on the explainer class. They do this by running +gradient descent on model inputs to find a counterfactual. The methods that take this approach are Counterfactuals +Instances, Contrastive Explanation Method and Counterfactuals Guided by Prototypes. Thus, the `fit` methods in these +cases are quick but the `explain` method is slow. -The other approach however uses reinforcement learning to pretrains a model that produces explanations on the fly. The +The other approach however uses reinforcement learning to pretrain a model that produces explanations on demand. The training in this case takes place during the `fit` method call and so this has a long runtime while the `explain` method is quick. If you want performant explanations in production environments then the later method is preferable. ::: @@ -538,7 +535,7 @@ __TODO__: - schematic image explaining search for counterfactual as determined by loss - schematic image explaining difference between different approaches. -**Counterfactuals Instances:** +#### Counterfactuals Instances - Black/white box method - Classification models @@ -548,7 +545,7 @@ Let the model be given by $f$ and $f_{t}$ be the probability of class $t$, $p_t$ $t$ and $0<\lambda<1$ a hyperparameter. This method constructs counterfactual instances from an instance $X$ by running gradient descent on a new instance $X'$ to minimize the following loss. -$$L(X'|X)= (f_{t}(X') - p_{t})^2 + \lambda L_{1}(X'|X)$$ +$$L(X', X)= (f_{t}(X') - p_{t})^2 + \lambda L_{1}(X', X)$$ The first term pushes the constructed counterfactual towards the desired class and the use of the $L_{1}$ norm encourages sparse solutions. @@ -562,23 +559,38 @@ This happens because the loss doesn't prevent the counter factual solution movin will likely get a solution that doesn't look like something that you'd expect to see from the data. __TODO:__ -- Picture example. Like from here: https://github.com/interpretml/DiCE +- Picture example. Something similar to: https://github.com/interpretml/DiCE -**Contrastive Explanation Method:** +**Pros** +- Both Black and White box +- Don't need to access to the training dataset -- c/white box method +**Cons** +- Not likely to give human interpretable instances +- Requires configuration in the choice of $\lambda$ + + +#### Contrastive Explanation Method + +- White box method - Classification models - Tabular and image data types -CEM follows a similar approach to the above but includes two new details. Firstly an elastic net -($\beta L_{1} + L_{2}$) regularizer term is added to the loss. This causes the solutions to be both close to the -original instance and sparse. Secondly an optional autoencoder is trained to penalize conterfactual instances that -deviate from the data distribution. This works by requiring minimize the gradient descent minimize the reconstruction -loss of instances passed through the autoencoder. If an instance is unlike anything in the dataset then the autoencoder -will struggle to recreate it well, and it's loss term will be high. We require two hyperparameters $\beta$ and $\gamma$ -to define the following Loss, +CEM follows a similar approach to the above but includes three new details. Firstly an elastic net $\beta L_{1} + L_{2}$ +regularizer term is added to the loss. This causes the solutions to be both close to the original instance and sparse. + +Secondly we require that $\delta$ only adds new features rather than takes them away. In order to do this we require +defining what it means for a feature to be present so that the perturbation only works to add features and not take +them away. In the case of MNIST an obvious choice of "present" feature is if the pixel is equal to 1 and absent if it +is equal to 0. -$$L(X'|X)= (f_{t}(X') - p_{t})^2 + \beta L_{1}(X' - X) + L_{2}(X' - X)^2 + \gamma L_{2} (X' - AE(X'))^2$$ +Secondly an optional auto encoder is trained to penalize counter factual instances that deviate from the data +distribution. This works by requiring minimize the gradient descent minimize the reconstruction loss of instances passed +through the auto encoder. If an instance is unlike anything in the dataset then the auto encoder will struggle to +recreate it well, and it's loss term will be high. We require two hyperparameters $\beta$ and $\gamma$ to define the +following Loss, + +$$L(X'|X)= (f_{t}(X') - p_{t})^2 + \beta L_{1}(X', X) + L_{2}(X', X)^2 + \gamma L_{2} (X', AE(X'))^2$$ This approach extends the definition of interpretable to include a requirement that the computed counterfactual be believably a member of the dataset. It turns out however that this condition isn't enough to always get interpretable @@ -590,7 +602,16 @@ there is still a performance cost from computing the numerical gradients. __TODO:__ - Picture example of results including less interpretable ones. -**Counterfactuals Guided by Prototypes:** +**Pros** +- Provides more interpretable instances than the counterfactual instances' method. + +**Cons** +- Requires access to the dataset to train the auto encoder +- Requires setup and configuration in choosing $\gamma$ and $\beta$ as well as training the auto encoder +- Requires domain knowledge when choosing what it means for a feature to be present or not. This is easy in the case of +MNIST but get more complicated when applying to color images. + +#### Counterfactuals Guided by Prototypes - Black/white box method - Classification models @@ -600,33 +621,45 @@ For this method we add another term to the loss that optimizes for distance betw close members of the target class. Now the definition of interpretability has been extended even further to include the requirement that the counterfactual be believably a member of the target class and not just in the data distribution. -With hyperparmaters $c$ and $\beta$, the loss is now given by: +With hyperparameters $c$ and $\beta$, the loss is now given by: -$$L(X'|X)= cL_{pred} + \beta L_{1} + L_{2} + L_{AE} + L_{proto}$$ +$$ +L(X'|X)= c(f_{t}(X') - p_{t})^2 + \beta L_{1}(X', X) + L_{2}(X', X)^2 + \gamma L_{2} (X', AE(X'))^2 + +L_{2}(X', X_{proto}) +$$ __TODO:__ - Picture example of results. -It's clear that this method produces much more interpretable results. As well as this, because the proto term pushes -the solution towards the target class we can actually remove the prediction loss term and still obtain a viable counter -factual. This doesn't make much difference if we can compute the gradients directly from the model but if not, and we -are using numerical gradients then the $L_{pred}$ term is a significant bottleneck owing to repeated calls on the model -to approximate the gradients. Thus, this method also applies to blackbox models with a significant performance gain on +This method produces much more interpretable results. As well as this, because the proto term pushes the solution +towards the target class we can actually remove the prediction loss term and still obtain a viable counter factual. +This doesn't make much difference if we can compute the gradients directly from the model but if not, and we are using +numerical gradients then the $L_{pred}$ term is a significant bottleneck owing to repeated calls on the model to +approximate the gradients. Thus, this method also applies to blackbox models with a significant performance gain on the previous approaches mentioned. -**Counterfactuals with Reinforcement Learning:** +**Pros** +- Much more interpretable instances that the CEM method +- Blackbox version of the method doesn't require computing the numerical gradients which is expensive +- Applies to more data-types + +**Cons** +- Requires access to the dataset to train the auto encoder or k-d tree +- Requires setup and configuration in choosing $\gamma$, $\beta$ and $c$ + +#### Counterfactuals with Reinforcement Learning This black box method splits from the approach taken by the above three significantly. Instead of minimizing a loss at explain time it trains a new model when fitting the explainer called an actor that takes instances and produces counterfactuals. It does this using reinforcement learning. In RL an actor model takes some state as input and generates actions, in our case the actor takes an instance with a specific classification and produces an action in the -form of a counter factual. Outcomes of actions are assigned reward dependent on some reward function that's designed to -encourage specific behaviours of the actor. In our case we reward counterfactuals that are firstly classified as the -correct target class, secondly are close to the data distribution as modelled by an auto-encoder, and thirdly are sparse -perturbations of the original instance. The reinforcement training step pushes the actor to take high reward actions -instead of low reward actions. This method is black box as we compute the reward obtained by an actor by sampling an -action by directly predicting the loss. Because of this we only require the derivative with respect to the actor and -not the predictor itself. +form of a counter factual that the model predicts as the classification given. Outcomes of actions are assigned reward +dependent on a reward function that's designed to encourage specific behaviours of the actor. In our case we reward +counterfactuals that are firstly classified as the correct target class, secondly are close to the data distribution as +modelled by an auto-encoder, and thirdly are sparse perturbations of the original instance. The reinforcement training +step pushes the actor to take high reward actions instead of low reward actions. This method is black box as we compute +the reward obtained by an actor by sampling an action by directly predicting the loss. Because of this we only require +the derivative with respect to the actor and not the predictor itself. As well as this CFRL actors are trained to ensure that certain constraints can be taken into account when generating counterfactuals. This is highly desirable as a use case for counterfactuals is suggesting small changes to an @@ -638,12 +671,21 @@ to apply for a loan isn't very helpful. To train the actor we randomly generate in distribution data instances, along with constraints and target classifications. We then compute the reward and update the actor to maximize the reward. We do this without needing access to the critic internals. We end up with an actor that is able to generate interpretable counterfactual instances -at runtime with arbitrary constraints. +at runtime with arbitrary constraints. __TODO__: - Example images -___ +**Pros** +- Very interpretable counter factuals. +- Very fast at runtime +- Can be trained to account for arbitrary constraints +- Very general as is a Black box algorithm + +**Cons** +- Longer to fit the model +- Requires to fit an auto encoder +- Requires access to the training dataset ##### Example: From b7929987dd040409f4d4050cf66f72c8d114005e Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Tue, 9 Nov 2021 01:01:17 +0000 Subject: [PATCH 23/60] Spell and grammer check up to Local Feature Attribution --- doc/source/overview/high_level.md | 480 +++++++++++++----------------- 1 file changed, 202 insertions(+), 278 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 2b657641b..eafe333ef 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -1,11 +1,7 @@ # Practical Overview of Explainability -While the applications of machine learning are impressive many models provide predictions that are hard to interpret or -reason about. This limits there use in many cases as often we want to know why and not just what a model made a -prediction. Alarming predictions are rarely taken at face value and typically warrant further analysis. Indeed, in some -cases explaining the choices that a model makes could even become a potential -[legal requirement](https://arxiv.org/pdf/1711.00399.pdf). The following is a non-rigorous and practical overview of -explainability and the methods alibi provide. +While the applications of machine learning are impressive many models provide predictions that are hard to interpret or reason about. This limits their use in many cases as often we want to know why and not just what a model made a prediction. Alarming predictions are rarely taken at face value and typically warrant further analysis. Indeed, in some +cases explaining the choices that a model makes could even become a potential [legal requirement](https://arxiv.org/pdf/1711.00399.pdf). The following is a non-rigorous and practical overview of explainability and the methods alibi provide. **Explainability provides us with algorithms that give insights into trained models predictions.** It allows us to answer questions such as: @@ -13,169 +9,106 @@ us to answer questions such as: - What features are Important for a given prediction to hold? - What features are not important for a given prediction to hold? - What set of features would you have to minimally change to obtain a new prediction of your choosing? -- How does each feature contribute to a models prediction? +- How does each feature contribute to a model's prediction? -The set of insights available are dependent on the trained model. For instance, If the model is a regression it makes -sense to ask how the prediction varies with respect to some feature. Whereas, it doesn't make sense to ask what minimal -change is required to obtain a new classification. Insights are constrained by: +The set of insights available are dependent on the trained model. For instance, If the model is a regression it makes sense to ask how the prediction varies for some feature. Whereas, it doesn't make sense to ask what minimal change is required to obtain a new classification. Insights are constrained by: - The type of data the model handles. Some insights only apply to image data others only to textual data. -- The task the model performs. The two types of model tasks alibi handles are regression and classification. +- The task the model performs. The two types of model tasks alibi handles are regression and classification. - The type of model used. Examples of model types include neural networks and random forests. -Some explainer methods apply only to specific types of model such as TreeSHAP which can only be used with tree based -models. This is the case when an explainer method makes use of some specific aspect of that models structure. For -instance, if the model is a neural network then some methods require being able to compute the prediction derivative -with respect to model inputs. Methods that require access to the model internals like this are known as **white box** -methods. Other explainers apply to any type of model. They can do so because the underlying method doesn't make use of -the model internals. Instead, they only require to have access to the model outputs given particular inputs. Methods -that apply in this general setting are known as **black box** methods. Note that white box methods are a subset of -black box methods and in general an explainer being a white box method is a much stronger constraint than it being a -black box methods. Typically, white box methods are faster than blackbox methods as access to the model internals means -the method can exploit some aspect of that models structure. +Some explainer methods apply only to specific types of models such as TreeSHAP which can only be used with tree-based models. This is the case when an explainer method uses some aspect of that model's structure. If the model is a neural network then some methods require computing the prediction derivative for model inputs. Methods that require access to the model internals like this are known as **white box** methods. Other explainers apply to any type of model. They can do so because the underlying method doesn't make use of the model internals. Instead, they only need to have access to the model outputs given particular inputs. Methods that apply in this general setting are known as **black box** methods. Note that white box methods are a subset of black-box methods and an explainer being a white box method is a much stronger constraint than it being a black box method. Typically, white box methods are faster than black-box methods as access to the model internals means the method can exploit some aspect of that model's structure. + :::{admonition} **Note 1: Black Box Definition** -The use of Black Box here varies subtly from the conventional use within machine learning. Typically, we say a model is -a black box if the mechanism by which it makes predictions is too complicated to be interpretable to a human. Here we -use black box to mean that the explainer method doesn't need to have access to the model internals in order to be -applied. +The use of Black Box here varies subtly from the conventional use within machine learning. Typically, we say a model is a black box if the mechanism by which it makes predictions is too complicated to be interpretable to a human. Here we use black-box to mean that the explainer method doesn't need access to the model internals to be applied. ::: ## Applications: -**Trust:** At a core level explainability builds trust in the machine learning systems we use. It allows us to justify -there use in many contexts where an understanding of the basis of decision is paramount. +**Trust:** At a core level, explainability builds trust in the machine learning systems we use. It allows us to justify their use in many contexts where an understanding of the basis of the decision is paramount. -**Testing:** Explainability can be thought as an extra form of testing for a model. The insights derived should conform -to the expected behaviour. Failure to do so may indicate issues with the model or problems with the dataset it's been -trained on. +**Testing:** Explainability can be thought of as an extra form of testing for a model. The insights derived should conform to the expected behaviour. Failure to do so may indicate issues with the model or problems with the dataset it's been trained on. -**Functionality:** Insights can also be used to augment model functionality. Providing useful information on top of -model predictions. How to change the model inputs to obtain a better output for instance. +**Functionality:** Insights can be used to augment model functionality. For instance, providing information on top of model predictions such as how to change model inputs to obtain desired outputs. -**Research:** Explainability allows researchers to understand how and why opaque models make decisions. Helping them -understand more broadly the effects of the particular model or training schema they're using. +**Research:** Explainability allows researchers to understand how and why opaque models make decisions. Helping them understand more broadly the effects of the particular model or training schema they're using. __TODO__: - picture of explainability pipeline: training -> prediction -> insight :::{admonition} **Note 2: Biases** -Practitioners must be wary of using explainability to excuse bad models rather than ensuring there correctness. As an -example its possible to have a model that is correctly trained on a dataset, however due to the dataset being either -wrong or incomplete the model doesn't actually reflect reality. If the insights that explainability generates -conform to some confirmation bias of the person training the model then they are going to be blind to this issue and -instead use these methods to confirm erroneous results. A key distinction here is that explainability insights are -designed to be faithful to the model they are explaining and not the data. You use an explanation to obtain an insight -into the data only if the model is trained well. + +Practitioners must be wary of using explainability to excuse incorrect models rather than ensuring their correctness. It is possible to have a correctly trained model on a dataset, but the model doesn't reflect reality because the dataset is either wrong or incomplete. Suppose the insights that explainability generates conform to some confirmation bias of the person training the model. In that case, they will be blind to this issue and instead use these methods to confirm erroneous results. A key distinction is that explainability insights are designed to be faithful to the model they are explaining and not the data. You use an explanation to obtain an insight into the data only if the model is trained well. ::: ## Global and Local Insights -Insights can be categorized into two types. Local and global. Intuitively, a local insight says something about a -single prediction that a model makes. As an example, given an image classified as a cat by a model, a local insight -might give the set of features (pixels) that need to stay the same in order for that image to remain classified as a -cat. Such an insight gives an idea of what the model is looking for when deciding to classify a specific instance into -a specific class. Global insights on the other hand refer to the behaviour of the model over a set of inputs. Plots -that show how a regression prediction varies with respect to a given feature while factoring out all the others are an -example. These insights give a more general understanding of the relationship between inputs and model predictions. +Insights can be categorised into two types. Local and global. Intuitively, a local insight says something about a single prediction that a model makes. For example, given an image classified as a cat by a model, a local insight might give the set of features (pixels) that need to stay the same for that image to remain classified as a cat. Such an insight provides an idea of what the model is looking for when classifying a specific instance into a particular class. + +On the other hand, global insights refer to the behaviour of the model over a set of inputs. Plots showing how a regression prediction varies for a given feature while factoring out all the others are examples. These insights provide a more general understanding of the relationship between inputs and model predictions. __TODO__: - Add image to give idea of Global and local insight ## Insights -Alibi provides a number of local and global insights with which to explore and understand models. The following gives -the practitioner an understanding of which explainers are suitable in which situations. +Alibi provides several local and global insights with which to explore and understand models. The following gives the practitioner an understanding of which explainers are suitable in which situations. ### Local Necessary Features: -Given a single instance and model prediction, Local Necessary Features are local explanations that tell us what minimal -set of features needs to stay the same in order that the model still give the same or close prediction. This tells us -what it is in an instance that most influences the result. +Given a single instance and model prediction, Local Necessary Features are local explanations that tell us what minimal set of features needs to stay the same so that the model still gives the same or close prediction. -In the case of a trained image classification model, Local Necessary Features for a given instance would be a minimal -subset of the image that the model uses to make its decision. A Machine learning engineer might use this insight to see -if the model is concentrating on the correct features of an image in making a decision. This is especially useful -applied to an erroneous decision. +In the case of a trained image classification model, Local Necessary Features for a given instance would be a minimal subset of the image that the model uses to make its decision. A Machine learning engineer might use this insight to see if the model concentrates on the correct features of an image in making a decision. Local necessary features are particularly advantageous for checking erroneous model decisions. -The following two explainer methods are available from alibi for generating Local Necessary Features insights. Each -approaches the idea in slightly different ways but the main difference is that anchors gives an idea of the size of the -area over the dataset for which the insight applies whereas pertinent positives do not. +The following two explainer methods are available from alibi for generating Local Necessary Features insights. Each approaches the idea in slightly different ways. The main difference is that anchors give a picture of the size of the area over the dataset for which the insight applies, whereas pertinent positives do not. #### Anchors Anchors are a local blackbox method introduced in [Anchors: High-Precision Model-Agnostic Explanations]( https://homes.cs.washington.edu/~marcotcr/aaai18.pdf). -Let A be a rule (set of predicates) acting on such an interpretable representation, such that $A(x)$ returns $1$ if all -its feature predicates are true for instance $x$. An example of such a rule, $A$, could be represented by the set -$\{not, bad\}$ in which case any sentence, $s$, with both $not$ and $bad$ in it would mean $A(s)=1$. +Let A be a rule (set of predicates) acting on such an interpretable representation, such that $A(x)$ returns $1$ if all its feature predicates are true. An example of such a rule, $A$, could be represented by the set $\{not, bad\}$ in which case any sentence, $s$, with both $not$ and $bad$ in it would mean $A(s)=1$. -Given a classifier $f$, a value $\tau>0$, an instance $x$ and a data distribution $\mathcal{D}$, $A$ is an anchor for -$x$ if $A(x) = 1$ and, +Given a classifier $f$, a value $\tau>0$, an instance $x$, and a data distribution $\mathcal{D}$, $A$ is an anchor for $x$ if $A(x) = 1$ and, -$$ E_{\mathcal{D}(z|A)}[1_{f(x)=f(z)}] ≥ \tau $$ +$$ E_{\mathcal{D}(z|A)}[1_{f(x)=f(z)}] ≥ \tau $$. -The distribution $\mathcal{D}(z|A)$ is those points from the dataset for which the anchor holds. This is like fixing -some set of features of an instance and allowing all the others to vary. This condition says any point in the data -distribution that satisfies the anchor $A$ is expected to match the model prediction $f(x)$ with probability $\tau$ -(usually $\tau$ is chosen to be 0.95). +The distribution $\mathcal{D}(z|A)$ is those points from the dataset for which the anchor holds. This is like fixing +some set of features of an instance and allowing all the others to vary. This condition says any point in the data +distribution that satisfies the anchor $A$ is expected to match the model prediction $f(x)$ with probability $\tau$ +(usually $\tau$ is chosen to be 0.95). -Let $prec(A) = E_{\mathcal{D}(z|A)}[1_{f(x)=f(z)}]$ be the precision of an anchor. Note that the precision of an anchor -is considered with respect to the set of points in the data distribution to which the anchor applies, -$\mathcal{D}(z|A)$. We can consider the **coverage** of an anchor as the probability that $A(z)=1$ for any instance -$z$ in the data distribution. The coverage tells us the proportion of the distribution that the anchor applies to. -The aim here is to find the anchor that applies to the largest set of instances while still satisfying -$prec(A) \geq \tau$. +Let $prec(A) = E_{\mathcal{D}(z|A)}[1_{f(x)=f(z)}]$ be the precision of an anchor. Note that the precision of an anchor is considered with respect to the set of points in the data distribution to which the anchor applies, $\mathcal{D}(z|A)$. We can consider the **coverage** of an anchor as the probability that $A(z)=1$ for any instance $z$ in the data distribution. The coverage tells us the proportion of the distribution to which the anchor applies. The aim here is to find the anchor that applies to the most extensive set of instances while satisfying $prec(A) \geq \tau$. -__TODO__: +__TODO__: - Include picture explanation of anchors -Alibi finds anchors by building them up from the bottom up. We start with an empty anchor $A=\{\}$ and then consider -the set of possible feature values from the instance of interest we can add. $\mathcal{A} = -\{A \wedge a_0, A \wedge a_1, A \wedge a_2, ..., A \wedge a_n\}$. In the case of textual data for instance the $a_i$ -might be words from the instance sentence. In the case of image data we take a partition the image into superpixels -which we choose to be the $a_i$. At each stage we're going to look at the set of possible next anchors that can be made -by adding in a feature $a_i$ from the instance. We then compute the precision of each of the resulting anchors and -choose the best. We iteratively build the anchor up like this until the required precision is met. - -As we build up the anchors from the empty case we need to compute their precisions in order to know which one to choose. -We can't compute this directly, instead we sample from $\mathcal{D}(z|A)$ to obtain an estimate. To do this we use a -number of different methods for different data types. For instance, in the case of textual data we want to generate -sentences with the anchor words in them and also ensure that they make sense within the data distribution. One option -is to replace the missing words (those not in the anchor) from the instance with words with the same POS tag. This means -the resulting samples makes semantic sense rather than being a random set of words. Other methods are available. In the -case of images we sample an image from the data set and then superimpose the superpixels on top of it. +Alibi finds anchors by building them up from the bottom up. We start with an empty anchor $A=\{\}$ and then consider the set of possible feature values from the instance of interest we can add. $\mathcal{A} = \{A \wedge a_0, A \wedge a_1, A \wedge a_2, ..., A \wedge a_n\}$. For instance, in the case of textual data, the $a_i$ might be words from the instance sentence. In the case of image data, we partition the image into super-pixels which we choose to be the $a_i$. At each stage, we will look at the set of possible next anchors that can be made by adding in a feature $a_i$ from the instance. We then compute the precision of each of the resulting anchors and choose the best. We iteratively build the anchor up like this until the required precision is met. + +As we construct the new set of anchors from the last, we need to compute the precisions of the next group to know which one to choose. We can't calculate this directly; instead, we sample from $\mathcal{D}(z|A)$ to obtain an estimate. To do this, we use several different methods for different data types. For instance, in the case of textual data, we want to generate sentences with the anchor words and ensure that they make sense within the data distribution. One option is to replace the missing words (those not in the anchor) from the instance with words with the same POS tag. This means the resulting sample will make semantic sense rather than being a random set of words. Other methods are available. In the case of images, we sample an image from the data set and then superimpose the super-pixels on top of it. **Pros** - Easy to explain as rules are simple to interpret. -- Is a blackbox method as we just need to be able to predict the value of an instance and don't need to access model -internals. +- Is a black-box method as we just need to predict the value of an instance and don't need to access model internals. - Can be parallelized and made to be much more efficient as a result. -- Although they apply to a local instance, the notion of coverage also gives a level of global insight as well. +- Although they apply to a local instance, the notion of coverage also gives a level of global insight. **Cons** -- Because at each step in building up the anchor we need to consider all the possible features we can add this -algorithm is slower for high dimensional feature spaces. -- If choosing an anchor close to a decision boundary the method may require a very large number of samples from -$\mathcal{D}(z|A)$ and $\mathcal{D}(z|A')$ in order to distinguish two anchors $A$ and $A'$. -- High dimensional feature spaces such as images need to be reduced. Typically, this is done by segmenting the image -into superpixels. The choice of algorithm used to obtain the superpixels has an effect on the anchor obtained. -- Practitioners need to make a number of choices with respect to parameters and domain specific setup. For instance the -precision threshold or the method by which we sample $\mathcal{D}(z|A)$. Fortunately alibi provides default settings -for a lot of specific data-types. +- Because at each step in building up the anchor, we need to consider all the possible features we can add this algorithm is slower for high dimensional feature spaces. +- If choosing an anchor close to a decision boundary, the method may require a considerable number of samples from $\mathcal{D}(z|A)$ and $\mathcal{D}(z|A')$ to distinguish two anchors $A$ and $A'$. +- High dimensional feature spaces such as images need to be reduced. Typically, this is done by segmenting the image into superpixels. The choice of the algorithm used to obtain the superpixels has an effect on the anchor obtained. +- Practitioners need to make several choices concerning parameters and domain-specific setup. For instance, the precision threshold or the method by which we sample $\mathcal{D}(z|A)$. Fortunately, alibi provides default settings for a lot of specific data types. + #### Pertinent Positives -Informally a Pertinent Positive is the subset of an instance that still obtains the same classification. These differ -from anchors primarily in the fact that they aren't constructed to maximize coverage. The method to obtain them is -also substantially different. The rough idea is that you define an absence of a feature and then perturb the instance -to take away as much information as possible while still retaining the original classification. +Informally a Pertinent Positive is the subset of an instance that still obtains the same classification. These differ from anchors primarily in the fact that they aren't constructed to maximize coverage. The method to create them is also substantially different. The rough idea is to define an absence of a feature and then perturb the instance to take away as much information as possible while still retaining the original classification. Given an instance $x_0$ we set out to find a $\delta$ that minimizes the following loss: $$ -L = c\cdot L_{pred}(\delta) + \beta L_{1}(\delta) + L_{2}^{2}(\delta) + \gamma \|\delta - AE(\delta)\|^{2}_{2} +L = c\cdot L_{pred}(\delta) + \beta L_{1}(\delta) + L_{2}^{2}(\delta) + \gamma \|\delta - AE(\delta)\|^{2}_{2} $$ where @@ -184,73 +117,64 @@ $$ L_{pred}(\delta) = max\left\{ max_{i\neq t_{0}}[Pred(\delta)]_{i} - [Pred(\delta)]_{t_0}, \kappa \right\} $$ -And $AE$ here is an optional auto encoder generated from the training data. If delta strays from the original data -distribution the auto encoder loss will increase as it will no longer be able to reconstruct $\delta$ well. Thus, by -adding this loss we ensure that $\delta$ remains close to the original dataset distribution. +And $AE$ here is an optional auto encoder generated from the training data. If delta strays from the original data distribution, the autoencoder loss will increase as it will no longer reconstruct $\delta$ well. Thus, we ensure that $\delta$ remains close to the original dataset distribution by adding this loss. -Note that $\delta$ is restrained to only take away features from the instance $x_0$. There is a slightly subtle point -here in that removing features from an instance requires correctly defining non-informative feature values. In the case -of MNIST digits it's reasonable to assume that the black background behind each digit represents an absence of -information. Similarly, in the case of color images you might assume that the median pixel value represents no -information and moving away from this value adds information. +Note that $\delta$ is restrained to only take away features from the instance $x_0$. There is a slightly subtle point here: removing features from an instance requires correctly defining non-informative feature values. In the case of MNIST digits, it's reasonable to assume that the black background behind each digit represents an absence of information. Similarly, in the case of color images, you might take the median pixel value to convey no information, and moving away from this value adds information. **Pros** -- This is both a black and white box method. Note that we need to compute the loss gradient through the model. If we -have access to the internals we can do this directly. Otherwise, we need to use numerical differentiation. This comes -at a significant computational cost due to the extra model calls we need to make. -- If using the autoencoder loss we obtain more interpretable results as $\delta$ will be in the data distribution. +- Both a black and white box method. Note that we need to compute the loss gradient through the model. If we have access to the internals, we can do this directly. Otherwise, we need to use numerical differentiation at a high computational cost due to the extra model calls we need to make. +- We obtain more interpretable results using the autoencoder loss as $\delta$ will be in the data distribution. **Cons** -- It is often not trivial to find non-informative feature values to add or take away from an instance and domain -knowledge becomes very important. +- Finding non-informative feature values to add or take away from an instance is often not trivial, and domain knowledge is essential. - Need to tune hyperparameters $\beta$ and $\gamma$. -- Doesn't tell us anything about the coverage of the pertinent positive. -- If using the autoencoder loss then we need access to the original dataset. +- The insight doesn't tell us anything about the coverage of the pertinent positive. +- If using the autoencoder loss, then we need access to the original dataset. ### Local Feature Attribution -Local feature attribution asks how each feature in a given instance contributes to its prediction. In the case of an -image this would highlight those pixels that make the model give the output it does. Note this differs subtly from -Local Necessary Features which find the minimum subset of features required to give a prediction. Local feature +Local feature attribution asks how each feature in a given instance contributes to its prediction. In the case of an +image this would highlight those pixels that make the model give the output it does. Note this differs subtly from +Local Necessary Features which find the minimum subset of features required to give a prediction. Local feature attribution instead assigned a score to each feature. __TODO__: - picture showing above. -A good use of local feature attribution is to detect that a classifier trained on images is focusing on the correct -features of an image in order to infer the class. As an example suppose you have a model trained to detect breeds of +A good use of local feature attribution is to detect that a classifier trained on images is focusing on the correct +features of an image in order to infer the class. As an example suppose you have a model trained to detect breeds of dog. You want to check that it focuses on the correct features of the dog in making its prediction. If you compute the feature attribution of a picture of a husky and discover that the model is only focusing on the snowy backdrop to -the husky then you know two things. All the images of huskies in your dataset overwhelmingly have snowy backdrops and -also that the model will fail to generalize. It will potentially incorrectly classify other breeds of dog with snowy +the husky then you know two things. All the images of huskies in your dataset overwhelmingly have snowy backdrops and +also that the model will fail to generalize. It will potentially incorrectly classify other breeds of dog with snowy backdrops as huskies and also fail to recognise huskies without snowy backdrops. -Each of the following methods defines local feature attribution slightly differently. In both however we assign -attribution values to each feature to indicate how significant those features where in making the model prediction what -it is. +Each of the following methods defines local feature attribution slightly differently. In both however we assign +attribution values to each feature to indicate how significant those features where in making the model prediction what +it is. -Let $f:\mathbb{R}^n \rightarrow \mathbb{R}$. $f$ might be a regression, a single component of a multi regression or a -probability of a class in a classification model. If $x=(x_1,... ,x_n) \in \mathbb{R}^n$ then an attribution of the -prediction at input $x$ is a vector $a=(a_1,... ,a_n) \in \mathbb{R}^n$ where $a_i$ is the contribution of $x_i$ to the +Let $f:\mathbb{R}^n \rightarrow \mathbb{R}$. $f$ might be a regression, a single component of a multi regression or a +probability of a class in a classification model. If $x=(x_1,... ,x_n) \in \mathbb{R}^n$ then an attribution of the +prediction at input $x$ is a vector $a=(a_1,... ,a_n) \in \mathbb{R}^n$ where $a_i$ is the contribution of $x_i$ to the prediction $f(x)$. Its desirable that these attribution values satisfy certain properties: 1. Efficiency/Completeness: The sum of attributions equals the difference between the prediction and the -baseline/average. We're interested in understanding the difference each feature value makes in a prediction compared to +baseline/average. We're interested in understanding the difference each feature value makes in a prediction compared to some uninformative baseline. -2. Symmetry: If the model behaves the same after swapping two variables $x$ and $y$ then $x$ and $y$ have equal +2. Symmetry: If the model behaves the same after swapping two variables $x$ and $y$ then $x$ and $y$ have equal attribution. If this weren't the case we'd be biasing the attribution towards certain features over other ones. -3. Dummy/Sensitivity: If a variable does not change the output of the model then it should have attribution 0. If this +3. Dummy/Sensitivity: If a variable does not change the output of the model then it should have attribution 0. If this where not the case then we'd be assigning value to a feature that provides no information. -4. Additivity/Linearity: The attribution for a feature $x_i$ of a linear composition of two models $f_1$ and $f_2$ -given by $c_1 f_1 + c_2 f_2$ is $c_1 a_{1, i} + c_2 a_{2, i}$ where $a_{1, i}$ and $a_{2, i}$ is the attribution for +4. Additivity/Linearity: The attribution for a feature $x_i$ of a linear composition of two models $f_1$ and $f_2$ +given by $c_1 f_1 + c_2 f_2$ is $c_1 a_{1, i} + c_2 a_{2, i}$ where $a_{1, i}$ and $a_{2, i}$ is the attribution for $x_1$ and $f_1$ and $f_2$ respectively. #### Integrated Gradients -The integrated gradients' method computes the attribution of each feature by integrating the model partial derivatives -along a path from a baseline point to the instance. Let $f$ be the model and $x$ the instance of interest. +The integrated gradients' method computes the attribution of each feature by integrating the model partial derivatives +along a path from a baseline point to the instance. Let $f$ be the model and $x$ the instance of interest. If $f:\mathbb{R}^{n} \rightarrow \mathbb{R}^{m}$ where $m$ is the number of classes the model predicts then let $F=f_k$ where $k \in \{1,..., m\}$. If $f$ is single valued then $F=f$. We also need to choose a baseline value, $x'$. @@ -258,9 +182,9 @@ $$ IG_i(x) = (x_i - x_i')\int_{\alpha}^{1}\frac{\partial F (x' + \alpha (x - x'))}{ \partial x_i } d \alpha $$ -So the above sums the partial derivatives with respect to each feature over the path between the baseline and the -instance of interest. In doing so you accumulate the changes in prediction that occur as a result of the changing -feature value from the baseline to the instance. +So the above sums the partial derivatives with respect to each feature over the path between the baseline and the +instance of interest. In doing so you accumulate the changes in prediction that occur as a result of the changing +feature value from the baseline to the instance. **Pros:** - Simple to understand and visualize, especially with image data @@ -271,11 +195,11 @@ feature value from the baseline to the instance. - Requires choosing the baseline which can have a large effect on the outcome (See Note 5) :::{admonition} **Note 5: Choice of Baseline** -The main difficulty with this method ends up being that as IG is very dependent on the baseline it's important to make -sure you choose it well. The choice of baseline should capture a blank state in which the model makes essentially no +The main difficulty with this method ends up being that as IG is very dependent on the baseline it's important to make +sure you choose it well. The choice of baseline should capture a blank state in which the model makes essentially no prediction or assigns probability of classes equally. A common choice for image classification is an image set to black. -This works well in many cases but sometimes fails to be a good choice. For instance for a model that classifies images -taken at night using an image with every pixel set to black means the attribution method will undervalue the use of +This works well in many cases but sometimes fails to be a good choice. For instance for a model that classifies images +taken at night using an image with every pixel set to black means the attribution method will undervalue the use of dark pixels in attributing the contribution of each feature to the classification. This is due to the contribution being calculated relative to the baseline which in this case is already dark. ::: @@ -285,46 +209,46 @@ calculated relative to the baseline which in this case is already dark. Kernel SHAP is an efficient method of computing the Shapley values for a model around an instance $x_i$. Shapley values are a game theoretic method of assigning payout to players depending on there contribution to an overall goal. In this case the players are the features and the payout is the prediction the model makes. To compute these values we have to -consider the marginal contribution of each feature over all the possible coalitions of feature players. +consider the marginal contribution of each feature over all the possible coalitions of feature players. -Suppose for example we have a regression model $f$ that makes predictions based on four features -$X = \{X_1, X_2, X_3, X_4\}$ as input. A coalition is a group of features, say for example the first and third feature. +Suppose for example we have a regression model $f$ that makes predictions based on four features +$X = \{X_1, X_2, X_3, X_4\}$ as input. A coalition is a group of features, say for example the first and third feature. For this coalition it's value is given by: $$ val({1,3}) = \int_{\mathbb{R}}\int_{\mathbb{R}} f(x_1, X_2, x_3, X_4)d\mathbb{P}_{X_{2}X_{4}} - \mathbb{E}_{X}(f(X)) $$ -Given a coalition, $S$, that doesn't include $x_i$, then $x_i$'s marginal contribution is given by -$val(S \cup x_i) - val(S)$. Intuitively this is the difference that feature $x_i$ would contribute if it was to join -that coalition. We are interested in the marginal contribution of $x_i$ over all possible coalitions with and without +Given a coalition, $S$, that doesn't include $x_i$, then $x_i$'s marginal contribution is given by +$val(S \cup x_i) - val(S)$. Intuitively this is the difference that feature $x_i$ would contribute if it was to join +that coalition. We are interested in the marginal contribution of $x_i$ over all possible coalitions with and without $x_i$. A shapley value for the $x_i^{th}$ feature is given by the weighted sum $$ \psi_j = \sum_{S\subset \{1,...,p\} \setminus \{j\}} \frac{|S|!(p - |S| - 1)!}{p!}(val(S \cup x_i) - val(S)) $$ -The motivation for the weights convey how much you can learn from a specific coalition. Large and Small coalitions mean -more learnt because we've isolated more of the effect. Whereas medium size coalitions don't supply us with as much +The motivation for the weights convey how much you can learn from a specific coalition. Large and Small coalitions mean +more learnt because we've isolated more of the effect. Whereas medium size coalitions don't supply us with as much information because there are many possible such coalitions. -The main issue with the above is that there will be a large number of possible coalitions, $2^M$ to be precise. +The main issue with the above is that there will be a large number of possible coalitions, $2^M$ to be precise. Hence instead of computing all of these we use a sampling process on the space of coalitions and then estimate the -Shapley values by training a linear model. Because a coalition is a set of players/features that are contributing to a -prediction we represent this as points in the space of binary codes $z' = \{z_0,...,z_m\}$ where $z_j = 1$ -means that the $j^th$ feature is present in the coalition while $z_j = 0$ means it is not. To obtain the dataset on which -we train this model we first sample from this space of coalitions then compute the values of $f$ for each sample. We +Shapley values by training a linear model. Because a coalition is a set of players/features that are contributing to a +prediction we represent this as points in the space of binary codes $z' = \{z_0,...,z_m\}$ where $z_j = 1$ +means that the $j^th$ feature is present in the coalition while $z_j = 0$ means it is not. To obtain the dataset on which +we train this model we first sample from this space of coalitions then compute the values of $f$ for each sample. We obtain weights for each sample using the Shapley Kernel: $$ \pi_{x}(z') = \frac{M - 1}{\frac{M}{|z'|}|z'|(M - |z'|)} $$ -Once we have the data points, the values of $f$ for each data point and the sample weights we have everything we need -to train a linear model. The paper shows that the coefficients of this linear model are the Shapley values. +Once we have the data points, the values of $f$ for each data point and the sample weights we have everything we need +to train a linear model. The paper shows that the coefficients of this linear model are the Shapley values. -There is some nuance to how we compute the value of a model given a specific coalition as most models aren't built to -accept input with arbitrary missing values. If $D$ is the underlying distribution the samples are drawn from then +There is some nuance to how we compute the value of a model given a specific coalition as most models aren't built to +accept input with arbitrary missing values. If $D$ is the underlying distribution the samples are drawn from then ideally we'd use the conditional expectation: $$ @@ -342,47 +266,47 @@ The do operator here fixes the feature values in $S$ and samples the remaining $ This can mean introducing unrealistic samples if there are dependencies between the features. **Pros**: -- The Shapley values are fairly distributed among the feature values which isn't always the case for other local feature +- The Shapley values are fairly distributed among the feature values which isn't always the case for other local feature attribution methods. - Shapley values can be easily interpreted and visualized - Very general as is a blackbox method. **Cons**: - KernalSHAP is slow owing to the number of samples required to accurately estimate the Shapley values. -- The process of sampling from the dataset while holding a set of features fixed means that unrealistic data points +- The process of sampling from the dataset while holding a set of features fixed means that unrealistic data points will be introduced. - Requires access to the training dataset. #### TreeSHAP -In the case of tree based models we can obtain a speed-up by exploiting the structure of trees. Alibi exposes two +In the case of tree based models we can obtain a speed-up by exploiting the structure of trees. Alibi exposes two white-box methods, Interventional and Path dependent feature perturbation. The main difference between the two is that -the path dependent method approximates the interventional conditional expectation whereas the interventional method +the path dependent method approximates the interventional conditional expectation whereas the interventional method calculates it directly. #### Path Dependent TreeSHAP -Given a coalition we want to approximate the interventional conditional expectation. To do so we apply the tree to the -features present in the coalition in the same way we normally would, with the only difference being when a feature -is missing from the coalition. In this case we take both routes down the tree and weight each by the proportion of -dataset samples from the training dataset that go into each branch. For this algorithm to work we need the tree to have -a record of how it splits the training dataset. We don't need the dataset itself however, unlike the interventional +Given a coalition we want to approximate the interventional conditional expectation. To do so we apply the tree to the +features present in the coalition in the same way we normally would, with the only difference being when a feature +is missing from the coalition. In this case we take both routes down the tree and weight each by the proportion of +dataset samples from the training dataset that go into each branch. For this algorithm to work we need the tree to have +a record of how it splits the training dataset. We don't need the dataset itself however, unlike the interventional TreeSHAP algorithm. -Doing this for each possible set $S$ involves $O(TL2^M)$ time complexity. It can be significantly improved to polynomial +Doing this for each possible set $S$ involves $O(TL2^M)$ time complexity. It can be significantly improved to polynomial time however if instead of doing the above one by one we do it for all subsets at once. The intuition here is to imagine standing at the first node and counting the number of subsets that will go one way, the number that will go the other -and the number that will go both (in the case of missing features). Because we assign different sized subsets different -weights we also need to further distinguish the above numbers passing into each branch of the tree by there size. -Finally, we also need to keep track of the proportion of sets of each size in each branch that contain a feature $i$ -and the proportion that don't. Once all these sets have flowed down to the leaves of the tree then we can compute the +and the number that will go both (in the case of missing features). Because we assign different sized subsets different +weights we also need to further distinguish the above numbers passing into each branch of the tree by there size. +Finally, we also need to keep track of the proportion of sets of each size in each branch that contain a feature $i$ +and the proportion that don't. Once all these sets have flowed down to the leaves of the tree then we can compute the shapley values. Doing this gives us $O(TLD^2)$ time complexity. **Pros**: - Very fast for a very useful category of models. - Doesn't require access to the training data. -- The Shapley values are fairly distributed among the feature values which isn't always the case for other local feature +- The Shapley values are fairly distributed among the feature values which isn't always the case for other local feature attribution methods. - Shapley values can be easily interpreted and visualized @@ -392,29 +316,29 @@ attribution methods. #### Interventional Tree SHAP -The interventional TreeSHAP method takes a different approach. Suppose we sample a reference data point, $r$, from the -training dataset. For each feature $i$ we then enumerate over all subsets of $S\subset F \setminus \{i\}$. If a subset -is missing a feature we replace it with the corresponding one in the reference sample. We can then compute $f(S)$ -directly for each coalition $S$ and from that get the Shapley values. One major difference here is that we're combining -each $S$ and $r$ to generate a data point. The process of enforcing independence of the $S$ and $F\S$ in this way is -known as intervening in the underlying data set and is where the algorithm name comes from. Note that doing this breaks +The interventional TreeSHAP method takes a different approach. Suppose we sample a reference data point, $r$, from the +training dataset. For each feature $i$ we then enumerate over all subsets of $S\subset F \setminus \{i\}$. If a subset +is missing a feature we replace it with the corresponding one in the reference sample. We can then compute $f(S)$ +directly for each coalition $S$ and from that get the Shapley values. One major difference here is that we're combining +each $S$ and $r$ to generate a data point. The process of enforcing independence of the $S$ and $F\S$ in this way is +known as intervening in the underlying data set and is where the algorithm name comes from. Note that doing this breaks any independence between features in the dataset which means the data points we're sampling won't be realistic. -For a single Tree and sample $r$ if we just iterate over all the subsets of $S \subset F \setminus \{i\}$ the -interventional TreeSHAP method runs with $O(M2^M)$. Note that there are two paths through the tree of special interest. -The first is the instance path for $x$, and the second is the sampled/reference path for $r$. Computing the shapley -value estimate for the sampled $r$ is going to involve replacing $x$ with values of $r$ and generating a set of +For a single Tree and sample $r$ if we just iterate over all the subsets of $S \subset F \setminus \{i\}$ the +interventional TreeSHAP method runs with $O(M2^M)$. Note that there are two paths through the tree of special interest. +The first is the instance path for $x$, and the second is the sampled/reference path for $r$. Computing the shapley +value estimate for the sampled $r$ is going to involve replacing $x$ with values of $r$ and generating a set of perturbed paths. If, instead of iterating over the sets if we sum over the paths we get a speed improvement as many of -the paths within the tree have overlapping components. We can compute them all at the same time instead of one by one. +the paths within the tree have overlapping components. We can compute them all at the same time instead of one by one. Doing so the Interventional TreeSHAP algorithm obtains $O(LD)$ time complexity. -Applied to a random forrest with $T$ trees and using $R$ samples to compute the estimates we obtain $O(TRLD)$ time +Applied to a random forrest with $T$ trees and using $R$ samples to compute the estimates we obtain $O(TRLD)$ time complexity. The fact that we can sum over each tree in the random forest is a results of the linearity property of shapley values. **Pros:** - Very fast for very useful category of models -- The Shapley values are fairly distributed among the feature values which isn't always the case for other local feature +- The Shapley values are fairly distributed among the feature values which isn't always the case for other local feature attribution methods. - Shapley values can be easily interpreted and visualized - Computes the interventional conditional expectation exactly unlike the path dependent method @@ -426,52 +350,52 @@ attribution methods. ### Global Feature Attribution -Global Feature Attribution methods aim to show the dependency of model output on a subset of the input features. This -is a global insight as it describes the behaviour of the model over the entire input space. ALE-plots, M-plots and +Global Feature Attribution methods aim to show the dependency of model output on a subset of the input features. This +is a global insight as it describes the behaviour of the model over the entire input space. ALE-plots, M-plots and PDP-plots all are used to obtain graphs that visualize the relationship between feature and prediction directly. Suppose a trained regression model that predicts the number of bikes rented on a given day dependent on the temperature, -humidity and wind speed. A global feature attribution plot for the temperature feature might be a line graph with -temperature plotted against number of bikes rented. This type of insight can be used to confirm what you expect to see. -In the bikes rented case one would anticipate an increase in rentals up until a certain temperature and then a decrease +humidity and wind speed. A global feature attribution plot for the temperature feature might be a line graph with +temperature plotted against number of bikes rented. This type of insight can be used to confirm what you expect to see. +In the bikes rented case one would anticipate an increase in rentals up until a certain temperature and then a decrease after when it gets too hot. #### Accumulated Local Effects -Alibi only provides Accumulated Local Effects plots because these give the most accurate insight of ALE-plots, M-plots +Alibi only provides Accumulated Local Effects plots because these give the most accurate insight of ALE-plots, M-plots and PDP-plots. ALE-plots work by averaging the local changes in a prediction at every instance in the data distribution. They then accumulate these differences to obtain a plot of prediction over the selected feature dependencies. -Suppose we have a model $f$ and features $X={x_1,... x_n}$. Given a subset of the features $X_S$ we denote +Suppose we have a model $f$ and features $X={x_1,... x_n}$. Given a subset of the features $X_S$ we denote $X_C=X \setminus X_S$. We want to obtain the ALE-plot for the features $X_S$, typically chosen to be at most a -set of dimension 2 in order that they can easily be visualized. For simplicity assume we have $X=\{x_1, x_2\}$ and let +set of dimension 2 in order that they can easily be visualized. For simplicity assume we have $X=\{x_1, x_2\}$ and let $X_S=\{x_1\}$ so $X_C=\{x_2\}$. The ALE of $x_1$ is defined by: $$ -\hat{f}_{S, ALE}(x_1) = -\int_{min(x_1)}^{x_1}\mathbb{E}\left[ -\frac{\partial f(X_1, X_2)}{\partial X_1} | X_1 = z_1 +\hat{f}_{S, ALE}(x_1) = +\int_{min(x_1)}^{x_1}\mathbb{E}\left[ +\frac{\partial f(X_1, X_2)}{\partial X_1} | X_1 = z_1 \right]dz_1 - c_1 $$ -The term within the integral computes the expectation of the model derivative in $x_1$ over the random variable $X_2$ -conditional on $X_1=z_1$. By taking the expectation with respect to $X_2$ we factor out its dependency. So now we know -how the prediction $f$ changes local to a point $X_1=z_1$ independent of $X_2$. By integrating these changes over $x_1$ -from a minimum value to the value of interest we obtain the global plot of how the model depends on $x_1$. ALE-plots -get there names as they accumulate (integrate) the local effects (the expected partial derivatives). Note that here we +The term within the integral computes the expectation of the model derivative in $x_1$ over the random variable $X_2$ +conditional on $X_1=z_1$. By taking the expectation with respect to $X_2$ we factor out its dependency. So now we know +how the prediction $f$ changes local to a point $X_1=z_1$ independent of $X_2$. By integrating these changes over $x_1$ +from a minimum value to the value of interest we obtain the global plot of how the model depends on $x_1$. ALE-plots +get there names as they accumulate (integrate) the local effects (the expected partial derivatives). Note that here we have assumed $f$ is differentiable. In practice however, we compute the various quantities above numerically and so this isn't a requirement. -__TODO__: +__TODO__: - Add picture explaining the above idea. -For more details on accumulated local effects including a discussion on PDP-plots and M-plots see -[Motivation-and-definition for ALE](../methods/ALE.html#Motivation-and-definition) +For more details on accumulated local effects including a discussion on PDP-plots and M-plots see +[Motivation-and-definition for ALE](../methods/ALE.ipynb#Motivation-and-definition) :::{admonition} **Note 4: Categorical Variables and ALE** Note that because ALE plots require differences between variable they don't natural extend to categorical data unless there is a sensible ordering on the categorical data. As an example consider months of the year. To be clear this is -only an issue if the variable you are taking the ALE with respect to is categorical. +only an issue if the variable you are taking the ALE with respect to is categorical. ::: **Pros**: @@ -488,11 +412,11 @@ only an issue if the variable you are taking the ALE with respect to is categori ### Counter Factuals: Given an instance of the dataset and a prediction given by a model a question that naturally arises is how would the -instance minimally have to change in order for a different prediction to be given. Counterfactuals are local +instance minimally have to change in order for a different prediction to be given. Counterfactuals are local explanations as they relate to a single instance and model prediction. -Given a classification model trained on MNIST and a sample from the dataset with a given prediction, a counter factual -would be a generated image that closely resembles the original but is changed enough that the model correctly +Given a classification model trained on MNIST and a sample from the dataset with a given prediction, a counter factual +would be a generated image that closely resembles the original but is changed enough that the model correctly classifies it as a different number. __TODO__: @@ -506,32 +430,32 @@ features that shouldn't be relevant to the given decision. A counterfactual, $x_{cf}$, needs to satisfy - The model prediction on $x_{cf}$ needs to be close to the predefined output. -- The counterfactual $x_{cf}$ should be interpretable. +- The counterfactual $x_{cf}$ should be interpretable. -The first requirement is easy enough to satisfy. The second however requires some idea of what interpretable means. +The first requirement is easy enough to satisfy. The second however requires some idea of what interpretable means. Intuitively it would require that the counterfactual constructed makes sense as an instance of the dataset. Each of the -methods available in alibi deal with interpretability slightly differently. All of them require that the perturbation -$\delta$ that changes the original instance $x_0$ into $x_{cf} = x_0 + \delta$ should be sparse. This means we prefer -solutions that change a small subset of the features to construct $x_{cf}$. Requiring this limits the complexity of the -solution making it more understandable. +methods available in alibi deal with interpretability slightly differently. All of them require that the perturbation +$\delta$ that changes the original instance $x_0$ into $x_{cf} = x_0 + \delta$ should be sparse. This means we prefer +solutions that change a small subset of the features to construct $x_{cf}$. Requiring this limits the complexity of the +solution making it more understandable. :::{admonition} **Note 3: fit and explain method runtime differences** -Alibi explainers expose two methods `fit` and `explain`. Typically, in machine learning the method that takes the most -time is the fit method as that's where the model optimization conventionally takes place. In explainability +Alibi explainers expose two methods `fit` and `explain`. Typically, in machine learning the method that takes the most +time is the fit method as that's where the model optimization conventionally takes place. In explainability the explain step often requires the bulk of computation. However, this isn't always the case. -Among the explainers in this section there are two approaches taken. The first fits a counterfactual when the user -requests the insight. This happens during the `.explain()` method call on the explainer class. They do this by running -gradient descent on model inputs to find a counterfactual. The methods that take this approach are Counterfactuals -Instances, Contrastive Explanation Method and Counterfactuals Guided by Prototypes. Thus, the `fit` methods in these +Among the explainers in this section there are two approaches taken. The first fits a counterfactual when the user +requests the insight. This happens during the `.explain()` method call on the explainer class. They do this by running +gradient descent on model inputs to find a counterfactual. The methods that take this approach are Counterfactuals +Instances, Contrastive Explanation Method and Counterfactuals Guided by Prototypes. Thus, the `fit` methods in these cases are quick but the `explain` method is slow. -The other approach however uses reinforcement learning to pretrain a model that produces explanations on demand. The -training in this case takes place during the `fit` method call and so this has a long runtime while the `explain` +The other approach however uses reinforcement learning to pretrain a model that produces explanations on demand. The +training in this case takes place during the `fit` method call and so this has a long runtime while the `explain` method is quick. If you want performant explanations in production environments then the later method is preferable. ::: -__TODO__: +__TODO__: - schematic image explaining search for counterfactual as determined by loss - schematic image explaining difference between different approaches. @@ -541,20 +465,20 @@ __TODO__: - Classification models - Tabular and image data types -Let the model be given by $f$ and $f_{t}$ be the probability of class $t$, $p_t$ is the target probability of class -$t$ and $0<\lambda<1$ a hyperparameter. This method constructs counterfactual instances from an instance $X$ by running +Let the model be given by $f$ and $f_{t}$ be the probability of class $t$, $p_t$ is the target probability of class +$t$ and $0<\lambda<1$ a hyperparameter. This method constructs counterfactual instances from an instance $X$ by running gradient descent on a new instance $X'$ to minimize the following loss. -$$L(X', X)= (f_{t}(X') - p_{t})^2 + \lambda L_{1}(X', X)$$ +$$L(X', X)= (f_{t}(X') - p_{t})^2 + \lambda L_{1}(X', X)$$ -The first term pushes the constructed counterfactual towards the desired class and the use of the $L_{1}$ norm -encourages sparse solutions. +The first term pushes the constructed counterfactual towards the desired class and the use of the $L_{1}$ norm +encourages sparse solutions. -This method requires computing gradients of the loss in the model inputs. If we have access to the model and the +This method requires computing gradients of the loss in the model inputs. If we have access to the model and the gradients are available then this can be done directly. If not however, we can use numerical gradients although this comes at a considerable performance cost. -A problem arises here in that encouraging sparse solutions doesn't necessarily generate interpretable counterfactuals. +A problem arises here in that encouraging sparse solutions doesn't necessarily generate interpretable counterfactuals. This happens because the loss doesn't prevent the counter factual solution moving off the data distribution. Thus, you will likely get a solution that doesn't look like something that you'd expect to see from the data. @@ -579,24 +503,24 @@ __TODO:__ CEM follows a similar approach to the above but includes three new details. Firstly an elastic net $\beta L_{1} + L_{2}$ regularizer term is added to the loss. This causes the solutions to be both close to the original instance and sparse. -Secondly we require that $\delta$ only adds new features rather than takes them away. In order to do this we require -defining what it means for a feature to be present so that the perturbation only works to add features and not take +Secondly we require that $\delta$ only adds new features rather than takes them away. In order to do this we require +defining what it means for a feature to be present so that the perturbation only works to add features and not take them away. In the case of MNIST an obvious choice of "present" feature is if the pixel is equal to 1 and absent if it is equal to 0. -Secondly an optional auto encoder is trained to penalize counter factual instances that deviate from the data +Secondly an optional auto encoder is trained to penalize counter factual instances that deviate from the data distribution. This works by requiring minimize the gradient descent minimize the reconstruction loss of instances passed -through the auto encoder. If an instance is unlike anything in the dataset then the auto encoder will struggle to -recreate it well, and it's loss term will be high. We require two hyperparameters $\beta$ and $\gamma$ to define the +through the auto encoder. If an instance is unlike anything in the dataset then the auto encoder will struggle to +recreate it well, and it's loss term will be high. We require two hyperparameters $\beta$ and $\gamma$ to define the following Loss, -$$L(X'|X)= (f_{t}(X') - p_{t})^2 + \beta L_{1}(X', X) + L_{2}(X', X)^2 + \gamma L_{2} (X', AE(X'))^2$$ +$$L(X'|X)= (f_{t}(X') - p_{t})^2 + \beta L_{1}(X', X) + L_{2}(X', X)^2 + \gamma L_{2} (X', AE(X'))^2$$ -This approach extends the definition of interpretable to include a requirement that the computed counterfactual be -believably a member of the dataset. It turns out however that this condition isn't enough to always get interpretable -results. And in particular the constructed counterfactual often doesn't look like a member of the target class. +This approach extends the definition of interpretable to include a requirement that the computed counterfactual be +believably a member of the dataset. It turns out however that this condition isn't enough to always get interpretable +results. And in particular the constructed counterfactual often doesn't look like a member of the target class. -Similarly to the previous method, this method can apply to both black and white box models. In the case of black box +Similarly to the previous method, this method can apply to both black and white box models. In the case of black box there is still a performance cost from computing the numerical gradients. __TODO:__ @@ -616,7 +540,7 @@ MNIST but get more complicated when applying to color images. - Black/white box method - Classification models - Tabular, image and categorical data types - + For this method we add another term to the loss that optimizes for distance between the counterfactual instance and close members of the target class. Now the definition of interpretability has been extended even further to include the requirement that the counterfactual be believably a member of the target class and not just in the data distribution. @@ -624,17 +548,17 @@ requirement that the counterfactual be believably a member of the target class a With hyperparameters $c$ and $\beta$, the loss is now given by: $$ -L(X'|X)= c(f_{t}(X') - p_{t})^2 + \beta L_{1}(X', X) + L_{2}(X', X)^2 + \gamma L_{2} (X', AE(X'))^2 + +L(X'|X)= c(f_{t}(X') - p_{t})^2 + \beta L_{1}(X', X) + L_{2}(X', X)^2 + \gamma L_{2} (X', AE(X'))^2 + L_{2}(X', X_{proto}) $$ -__TODO:__ +__TODO:__ - Picture example of results. -This method produces much more interpretable results. As well as this, because the proto term pushes the solution -towards the target class we can actually remove the prediction loss term and still obtain a viable counter factual. -This doesn't make much difference if we can compute the gradients directly from the model but if not, and we are using -numerical gradients then the $L_{pred}$ term is a significant bottleneck owing to repeated calls on the model to +This method produces much more interpretable results. As well as this, because the proto term pushes the solution +towards the target class we can actually remove the prediction loss term and still obtain a viable counter factual. +This doesn't make much difference if we can compute the gradients directly from the model but if not, and we are using +numerical gradients then the $L_{pred}$ term is a significant bottleneck owing to repeated calls on the model to approximate the gradients. Thus, this method also applies to blackbox models with a significant performance gain on the previous approaches mentioned. @@ -649,31 +573,31 @@ the previous approaches mentioned. #### Counterfactuals with Reinforcement Learning -This black box method splits from the approach taken by the above three significantly. Instead of minimizing a loss at -explain time it trains a new model when fitting the explainer called an actor that takes instances and produces -counterfactuals. It does this using reinforcement learning. In RL an actor model takes some state as input and -generates actions, in our case the actor takes an instance with a specific classification and produces an action in the -form of a counter factual that the model predicts as the classification given. Outcomes of actions are assigned reward -dependent on a reward function that's designed to encourage specific behaviours of the actor. In our case we reward -counterfactuals that are firstly classified as the correct target class, secondly are close to the data distribution as -modelled by an auto-encoder, and thirdly are sparse perturbations of the original instance. The reinforcement training -step pushes the actor to take high reward actions instead of low reward actions. This method is black box as we compute -the reward obtained by an actor by sampling an action by directly predicting the loss. Because of this we only require +This black box method splits from the approach taken by the above three significantly. Instead of minimizing a loss at +explain time it trains a new model when fitting the explainer called an actor that takes instances and produces +counterfactuals. It does this using reinforcement learning. In RL an actor model takes some state as input and +generates actions, in our case the actor takes an instance with a specific classification and produces an action in the +form of a counter factual that the model predicts as the classification given. Outcomes of actions are assigned reward +dependent on a reward function that's designed to encourage specific behaviours of the actor. In our case we reward +counterfactuals that are firstly classified as the correct target class, secondly are close to the data distribution as +modelled by an auto-encoder, and thirdly are sparse perturbations of the original instance. The reinforcement training +step pushes the actor to take high reward actions instead of low reward actions. This method is black box as we compute +the reward obtained by an actor by sampling an action by directly predicting the loss. Because of this we only require the derivative with respect to the actor and not the predictor itself. -As well as this CFRL actors are trained to ensure that certain constraints can be taken into account when generating -counterfactuals. This is highly desirable as a use case for counterfactuals is suggesting small changes to an +As well as this CFRL actors are trained to ensure that certain constraints can be taken into account when generating +counterfactuals. This is highly desirable as a use case for counterfactuals is suggesting small changes to an instance in order to obtain a different classification. In certain cases you want these changes to be constrained, for -instance when dealing with immutable characteristics. In other words if you are using the counterfactual to advise +instance when dealing with immutable characteristics. In other words if you are using the counterfactual to advise changes in behaviour you want to ensure the changes are enactable. Suggesting that someone needs to be 2 years younger to apply for a loan isn't very helpful. -To train the actor we randomly generate in distribution data instances, along with constraints and target -classifications. We then compute the reward and update the actor to maximize the reward. We do this without needing -access to the critic internals. We end up with an actor that is able to generate interpretable counterfactual instances +To train the actor we randomly generate in distribution data instances, along with constraints and target +classifications. We then compute the reward and update the actor to maximize the reward. We do this without needing +access to the critic internals. We end up with an actor that is able to generate interpretable counterfactual instances at runtime with arbitrary constraints. -__TODO__: +__TODO__: - Example images **Pros** @@ -690,5 +614,5 @@ __TODO__: ##### Example: -__TODO__: -- Give example that applies to all the explainer methods. \ No newline at end of file +__TODO__: +- Give example that applies to all the explainer methods. From 988b2528e1b9a0c55118685ef4098780e84673fc Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Tue, 9 Nov 2021 13:40:33 +0000 Subject: [PATCH 24/60] Complete spelling and grammer check --- doc/source/overview/high_level.md | 392 +++++++++--------------------- 1 file changed, 113 insertions(+), 279 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index eafe333ef..3d2c689da 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -13,9 +13,9 @@ us to answer questions such as: The set of insights available are dependent on the trained model. For instance, If the model is a regression it makes sense to ask how the prediction varies for some feature. Whereas, it doesn't make sense to ask what minimal change is required to obtain a new classification. Insights are constrained by: -- The type of data the model handles. Some insights only apply to image data others only to textual data. -- The task the model performs. The two types of model tasks alibi handles are regression and classification. -- The type of model used. Examples of model types include neural networks and random forests. +- The type of data the model handles. Some insights only apply to image data others only to textual data +- The task the model performs. The two types of model tasks alibi handles are regression and classification +- The type of model used. Examples of model types include neural networks and random forests Some explainer methods apply only to specific types of models such as TreeSHAP which can only be used with tree-based models. This is the case when an explainer method uses some aspect of that model's structure. If the model is a neural network then some methods require computing the prediction derivative for model inputs. Methods that require access to the model internals like this are known as **white box** methods. Other explainers apply to any type of model. They can do so because the underlying method doesn't make use of the model internals. Instead, they only need to have access to the model outputs given particular inputs. Methods that apply in this general setting are known as **black box** methods. Note that white box methods are a subset of black-box methods and an explainer being a white box method is a much stronger constraint than it being a black box method. Typically, white box methods are faster than black-box methods as access to the model internals means the method can exploit some aspect of that model's structure. @@ -89,10 +89,10 @@ Alibi finds anchors by building them up from the bottom up. We start with an emp As we construct the new set of anchors from the last, we need to compute the precisions of the next group to know which one to choose. We can't calculate this directly; instead, we sample from $\mathcal{D}(z|A)$ to obtain an estimate. To do this, we use several different methods for different data types. For instance, in the case of textual data, we want to generate sentences with the anchor words and ensure that they make sense within the data distribution. One option is to replace the missing words (those not in the anchor) from the instance with words with the same POS tag. This means the resulting sample will make semantic sense rather than being a random set of words. Other methods are available. In the case of images, we sample an image from the data set and then superimpose the super-pixels on top of it. **Pros** -- Easy to explain as rules are simple to interpret. -- Is a black-box method as we just need to predict the value of an instance and don't need to access model internals. -- Can be parallelized and made to be much more efficient as a result. -- Although they apply to a local instance, the notion of coverage also gives a level of global insight. +- Easy to explain as rules are simple to interpret +- Is a black-box method as we just need to predict the value of an instance and don't need to access model internals +- Can be parallelized and made to be much more efficient as a result +- Although they apply to a local instance, the notion of coverage also gives a level of global insight **Cons** - Because at each step in building up the anchor, we need to consider all the possible features we can add this algorithm is slower for high dimensional feature spaces. @@ -121,255 +121,161 @@ And $AE$ here is an optional auto encoder generated from the training data. If d Note that $\delta$ is restrained to only take away features from the instance $x_0$. There is a slightly subtle point here: removing features from an instance requires correctly defining non-informative feature values. In the case of MNIST digits, it's reasonable to assume that the black background behind each digit represents an absence of information. Similarly, in the case of color images, you might take the median pixel value to convey no information, and moving away from this value adds information. +Note that we need to compute the loss gradient through the model. If we have access to the internals, we can do this directly. Otherwise, we need to use numerical differentiation at a high computational cost due to the extra model calls we need to make. + **Pros** -- Both a black and white box method. Note that we need to compute the loss gradient through the model. If we have access to the internals, we can do this directly. Otherwise, we need to use numerical differentiation at a high computational cost due to the extra model calls we need to make. -- We obtain more interpretable results using the autoencoder loss as $\delta$ will be in the data distribution. +- Both a black and white box method +- We obtain more interpretable results using the autoencoder loss as $\delta$ will be in the data distribution **Cons** -- Finding non-informative feature values to add or take away from an instance is often not trivial, and domain knowledge is essential. -- Need to tune hyperparameters $\beta$ and $\gamma$. -- The insight doesn't tell us anything about the coverage of the pertinent positive. -- If using the autoencoder loss, then we need access to the original dataset. +- Finding non-informative feature values to add or take away from an instance is often not trivial, and domain knowledge is essential +- Need to tune hyperparameters $\beta$ and $\gamma$ +- The insight doesn't tell us anything about the coverage of the pertinent positive +- If using the autoencoder loss, then we need access to the original dataset ### Local Feature Attribution -Local feature attribution asks how each feature in a given instance contributes to its prediction. In the case of an -image this would highlight those pixels that make the model give the output it does. Note this differs subtly from -Local Necessary Features which find the minimum subset of features required to give a prediction. Local feature -attribution instead assigned a score to each feature. +Local feature attribution asks how each feature in a given instance contributes to its prediction. In the case of an image, this would highlight those pixels that make the model provide the output it does. Note that this differs subtly from Local Necessary Features, which find the minimum subset of features required to give a prediction. Local feature attribution instead assigned a score to each feature. If using the autoencoder loss, then we need access to the original dataset. __TODO__: - picture showing above. -A good use of local feature attribution is to detect that a classifier trained on images is focusing on the correct -features of an image in order to infer the class. As an example suppose you have a model trained to detect breeds of -dog. You want to check that it focuses on the correct features of the dog in making its prediction. If you compute -the feature attribution of a picture of a husky and discover that the model is only focusing on the snowy backdrop to -the husky then you know two things. All the images of huskies in your dataset overwhelmingly have snowy backdrops and -also that the model will fail to generalize. It will potentially incorrectly classify other breeds of dog with snowy -backdrops as huskies and also fail to recognise huskies without snowy backdrops. - -Each of the following methods defines local feature attribution slightly differently. In both however we assign -attribution values to each feature to indicate how significant those features where in making the model prediction what -it is. - -Let $f:\mathbb{R}^n \rightarrow \mathbb{R}$. $f$ might be a regression, a single component of a multi regression or a -probability of a class in a classification model. If $x=(x_1,... ,x_n) \in \mathbb{R}^n$ then an attribution of the -prediction at input $x$ is a vector $a=(a_1,... ,a_n) \in \mathbb{R}^n$ where $a_i$ is the contribution of $x_i$ to the -prediction $f(x)$. - -Its desirable that these attribution values satisfy certain properties: - -1. Efficiency/Completeness: The sum of attributions equals the difference between the prediction and the -baseline/average. We're interested in understanding the difference each feature value makes in a prediction compared to -some uninformative baseline. -2. Symmetry: If the model behaves the same after swapping two variables $x$ and $y$ then $x$ and $y$ have equal -attribution. If this weren't the case we'd be biasing the attribution towards certain features over other ones. -3. Dummy/Sensitivity: If a variable does not change the output of the model then it should have attribution 0. If this -where not the case then we'd be assigning value to a feature that provides no information. -4. Additivity/Linearity: The attribution for a feature $x_i$ of a linear composition of two models $f_1$ and $f_2$ -given by $c_1 f_1 + c_2 f_2$ is $c_1 a_{1, i} + c_2 a_{2, i}$ where $a_{1, i}$ and $a_{2, i}$ is the attribution for -$x_1$ and $f_1$ and $f_2$ respectively. +Good use of local feature attribution detects that a classifier trained on images is focusing on the correct features of an image to infer the class. As an example, suppose you have a model trained to detect breeds of dogs. You want to check that it focuses on the correct features of the dog in making its prediction. Suppose you compute the feature attribution of a picture of a husky and discover that the model is only focusing on the snowy backdrop to the husky, then you know two things. All the images of huskies in your dataset overwhelmingly have snowy backdrops, and also that the model will fail to generalize. It will potentially incorrectly classify other dog breeds with snowy backdrops as huskies and fail to recognize huskies without snowy locations. + +Each of the following methods defines local feature attribution slightly differently. In both, however, we assign attribution values to each feature to indicate how significant those features were in making the model prediction. + +Let $f:\mathbb{R}^n \rightarrow \mathbb{R}$. $f$ might be a regression, a single component of a multi regression or a probability of a class in a classification model. If $x=(x_1,... ,x_n) \in \mathbb{R}^n$ then an attribution of the prediction at input $x$ is a vector $a=(a_1,... ,a_n) \in \mathbb{R}^n$ where $a_i$ is the contribution of $x_i$ to the prediction $f(x)$. + +The attribution values should satisfy specific properties: + +1. Efficiency/Completeness: The sum of attributions equals the difference between the prediction and the baseline/average. We're interested in understanding the difference each feature value makes in a prediction compared to some uninformative baseline. +2. Symmetry: If the model behaves the same after swapping two variables $x$ and $y$, then $x$ and $y$ have equal attribution. If this weren't the case, we would be biasing the attribution towards certain features over other ones. +3. Dummy/Sensitivity: If a variable does not change the output of the model, then it should have attribution 0. If this were not the case, we'd be assigning value to a feature that provides no information. +4. Additivity/Linearity: The attribution for a feature $x_i$ of a linear composition of two models $f_1$ and $f_2$ given by $c_1 f_1 + c_2 f_2$ is $c_1 a_{1, i} + c_2 a_{2, i}$ where $a_{1, i}$ and $a_{2, i}$ is the attribution for $x_1$ and $f_1$ and $f_2$ respectively. #### Integrated Gradients -The integrated gradients' method computes the attribution of each feature by integrating the model partial derivatives -along a path from a baseline point to the instance. Let $f$ be the model and $x$ the instance of interest. -If $f:\mathbb{R}^{n} \rightarrow \mathbb{R}^{m}$ where $m$ is the number of classes the model predicts then let $F=f_k$ -where $k \in \{1,..., m\}$. If $f$ is single valued then $F=f$. We also need to choose a baseline value, $x'$. +This method computes the attribution of each feature by integrating the model partial derivatives along a path from a baseline point to the instance. Let $f$ be the model and $x$ the instance of interest. If $f:\mathbb{R}^{n} \rightarrow \mathbb{R}^{m}$ where $m$ is the number of classes the model predicts then let $F=f_k$ where $k \in \{1,..., m\}$. If $f$ is single-valued then $F=f$. We also need to choose a baseline value, $x'$. $$ IG_i(x) = (x_i - x_i')\int_{\alpha}^{1}\frac{\partial F (x' + \alpha (x - x'))}{ \partial x_i } d \alpha $$ -So the above sums the partial derivatives with respect to each feature over the path between the baseline and the -instance of interest. In doing so you accumulate the changes in prediction that occur as a result of the changing -feature value from the baseline to the instance. +The above sums partial derivatives for each feature over the path between the baseline and instance of interest. In doing so, you accumulate the changes in the prediction that occur due to the changing feature value from the baseline to the instance. -**Pros:** +**Pros** - Simple to understand and visualize, especially with image data - Doesn't require access to the training data -**Cons:** +**Cons** - White box method. Requires the partial derivatives of the model outputs with respect to inputs -- Requires choosing the baseline which can have a large effect on the outcome (See Note 5) +- Requires choosing the baseline which can have a significant effect on the outcome (See Note 5) :::{admonition} **Note 5: Choice of Baseline** -The main difficulty with this method ends up being that as IG is very dependent on the baseline it's important to make -sure you choose it well. The choice of baseline should capture a blank state in which the model makes essentially no -prediction or assigns probability of classes equally. A common choice for image classification is an image set to black. -This works well in many cases but sometimes fails to be a good choice. For instance for a model that classifies images -taken at night using an image with every pixel set to black means the attribution method will undervalue the use of -dark pixels in attributing the contribution of each feature to the classification. This is due to the contribution being -calculated relative to the baseline which in this case is already dark. +The main difficulty with this method is that as IG is very dependent on the baseline, it's essential to make sure you choose it well. The choice of baseline should capture a blank state in which the model makes essentially no prediction or assigns the probability of each class equally. A common choice for image classification is an image set to black, which works well in many cases but sometimes fails to be a good choice. For instance, a model that classifies images taken at night using an image with every pixel set to black means the attribution method will undervalue the use of dark pixels in attributing the contribution of each feature to the classification. This is due to the contribution being calculated relative to the baseline, which is already dark. ::: #### KernelSHAP -Kernel SHAP is an efficient method of computing the Shapley values for a model around an instance $x_i$. Shapley values -are a game theoretic method of assigning payout to players depending on there contribution to an overall goal. In this -case the players are the features and the payout is the prediction the model makes. To compute these values we have to -consider the marginal contribution of each feature over all the possible coalitions of feature players. +Kernel SHAP is a method of computing the Shapley values for a model around an instance $x_i$. Shapley values are a game-theoretic method of assigning payout to players depending on their contribution to an overall goal. In this case, the players are the features, and their payout is the model prediction. To compute these values, we have to consider the marginal contribution of each feature over all the possible coalitions of feature players. -Suppose for example we have a regression model $f$ that makes predictions based on four features -$X = \{X_1, X_2, X_3, X_4\}$ as input. A coalition is a group of features, say for example the first and third feature. -For this coalition it's value is given by: +Suppose we have a regression model $f$ that makes predictions based on four features $X = \{X_1, X_2, X_3, X_4\}$ as input. A coalition is a group of features, say, the first and third features. For this coalition, its value is given by: $$ val({1,3}) = \int_{\mathbb{R}}\int_{\mathbb{R}} f(x_1, X_2, x_3, X_4)d\mathbb{P}_{X_{2}X_{4}} - \mathbb{E}_{X}(f(X)) $$ -Given a coalition, $S$, that doesn't include $x_i$, then $x_i$'s marginal contribution is given by -$val(S \cup x_i) - val(S)$. Intuitively this is the difference that feature $x_i$ would contribute if it was to join -that coalition. We are interested in the marginal contribution of $x_i$ over all possible coalitions with and without -$x_i$. A shapley value for the $x_i^{th}$ feature is given by the weighted sum +Given a coalition, $S$, that doesn't include $x_i$, then the marginal contribution of $x_i$ is given by $val(S \cup x_i) - val(S)$. Intuitively this is the difference that the feature $x_i$ would contribute if it was to join that coalition. We are interested in the marginal contribution of $x_i$ over all possible coalitions with and without $x_i$. A Shapley value for the $x_i^{th}$ feature is given by the weighted sum $$ \psi_j = \sum_{S\subset \{1,...,p\} \setminus \{j\}} \frac{|S|!(p - |S| - 1)!}{p!}(val(S \cup x_i) - val(S)) $$ -The motivation for the weights convey how much you can learn from a specific coalition. Large and Small coalitions mean -more learnt because we've isolated more of the effect. Whereas medium size coalitions don't supply us with as much -information because there are many possible such coalitions. +The weights convey how much you can learn from a specific coalition. Large and Small coalitions mean more learned because we've isolated more of the effect. At the same time, medium size coalitions don't supply us with as much information because there are many possible such coalitions. -The main issue with the above is that there will be a large number of possible coalitions, $2^M$ to be precise. -Hence instead of computing all of these we use a sampling process on the space of coalitions and then estimate the -Shapley values by training a linear model. Because a coalition is a set of players/features that are contributing to a -prediction we represent this as points in the space of binary codes $z' = \{z_0,...,z_m\}$ where $z_j = 1$ -means that the $j^th$ feature is present in the coalition while $z_j = 0$ means it is not. To obtain the dataset on which -we train this model we first sample from this space of coalitions then compute the values of $f$ for each sample. We -obtain weights for each sample using the Shapley Kernel: +The main issue with the above is that there will be many possible coalitions, $2^M$ to be precise. Hence instead of computing all of these, we use a sampling process on the space of coalitions and then estimate the Shapley values by training a linear model. Because a coalition is a set of players/features that are contributing to a prediction, we represent this as points in the space of binary codes $z' = \{z_0,...,z_m\}$ where $z_j = 1$ means that the $j^th$ feature is present in the coalition while $z_j = 0$ means it is not. To obtain the dataset on which we train this model, we first sample from this space of coalitions then compute the values of $f$ for each sample. We obtain weights for each sample using the Shapley Kernel: $$ \pi_{x}(z') = \frac{M - 1}{\frac{M}{|z'|}|z'|(M - |z'|)} $$ -Once we have the data points, the values of $f$ for each data point and the sample weights we have everything we need -to train a linear model. The paper shows that the coefficients of this linear model are the Shapley values. +Once we have the data points, the values of $f$ for each data point, and the sample weights, we have everything we need to train a linear model. The paper shows that the coefficients of this linear model are the Shapley values. -There is some nuance to how we compute the value of a model given a specific coalition as most models aren't built to -accept input with arbitrary missing values. If $D$ is the underlying distribution the samples are drawn from then -ideally we'd use the conditional expectation: +There is some nuance to how we compute the value of a model given a specific coalition, as most models aren't built to accept input with arbitrary missing values. If $D$ is the underlying distribution the samples are drawn from, then ideally, we would use the conditional expectation: $$ f(S) = \mathbb{E}_{D}[f(x)|x_S] $$ -Computing this value directly is very difficult. Instead, we can use the interventional conditional expectation which -is defined as: +Computing this value is very difficult. Instead, we can use the interventional conditional expectation, which is defined as: $$ f(S) = \mathbb{E}_{D}[f(x)|do(x_S)] $$ -The do operator here fixes the feature values in $S$ and samples the remaining $\bar{S}$ feature values from the data. -This can mean introducing unrealistic samples if there are dependencies between the features. +The do operator here fixes the values of the features in $S$ and samples the remaining $\bar{S}$ feature values from the data. Interfering in the distribution like this can mean introducing unrealistic samples if there are dependencies between the features. -**Pros**: -- The Shapley values are fairly distributed among the feature values which isn't always the case for other local feature -attribution methods. +**Pros** +- The Shapley values are fairly distributed among the feature values, which isn't always the case for other local feature attribution methods - Shapley values can be easily interpreted and visualized -- Very general as is a blackbox method. +- Very general as is a blackbox method -**Cons**: -- KernalSHAP is slow owing to the number of samples required to accurately estimate the Shapley values. -- The process of sampling from the dataset while holding a set of features fixed means that unrealistic data points -will be introduced. -- Requires access to the training dataset. +**Cons** +- KernalSHAP is slow owing to the number of samples required to estimate the Shapley values accurately +- The interventional conditional probability introduces unrealistic data points +- Requires access to the training dataset #### TreeSHAP -In the case of tree based models we can obtain a speed-up by exploiting the structure of trees. Alibi exposes two -white-box methods, Interventional and Path dependent feature perturbation. The main difference between the two is that -the path dependent method approximates the interventional conditional expectation whereas the interventional method -calculates it directly. +In the case of tree-based models, we can obtain a speed-up by exploiting the structure of trees. Alibi exposes two white-box methods, Interventional and Path dependent feature perturbation. The main difference is that the path-dependent method approximates the interventional conditional expectation, whereas the interventional method calculates it directly. #### Path Dependent TreeSHAP -Given a coalition we want to approximate the interventional conditional expectation. To do so we apply the tree to the -features present in the coalition in the same way we normally would, with the only difference being when a feature -is missing from the coalition. In this case we take both routes down the tree and weight each by the proportion of -dataset samples from the training dataset that go into each branch. For this algorithm to work we need the tree to have -a record of how it splits the training dataset. We don't need the dataset itself however, unlike the interventional -TreeSHAP algorithm. - -Doing this for each possible set $S$ involves $O(TL2^M)$ time complexity. It can be significantly improved to polynomial -time however if instead of doing the above one by one we do it for all subsets at once. The intuition here is to imagine -standing at the first node and counting the number of subsets that will go one way, the number that will go the other -and the number that will go both (in the case of missing features). Because we assign different sized subsets different -weights we also need to further distinguish the above numbers passing into each branch of the tree by there size. -Finally, we also need to keep track of the proportion of sets of each size in each branch that contain a feature $i$ -and the proportion that don't. Once all these sets have flowed down to the leaves of the tree then we can compute the -shapley values. Doing this gives us $O(TLD^2)$ time complexity. +Given a coalition, we want to approximate the interventional conditional expectation. We apply the tree to the features present in the coalition like we usually would, with the only difference being when a feature is missing from the coalition. In this case, we take both routes down the tree, weighting each by the proportion of samples from the training dataset that go each way. For this algorithm to work, we need the tree to record how it splits the training dataset. We don't need the dataset itself, however, unlike the interventional TreeSHAP algorithm. -**Pros**: -- Very fast for a very useful category of models. -- Doesn't require access to the training data. -- The Shapley values are fairly distributed among the feature values which isn't always the case for other local feature -attribution methods. +Doing this for each possible set $S$ involves $O(TL2^M)$ time complexity. We can significantly improve the algorithm to polynomial-time by computing the path of all sets simultaneously. The intuition here is to imagine standing at the first node and counting the number of subsets that will go one way, the number that will go the other, and the number that will go both (in the case of missing features). Because we assign different sized subsets different weights, we also need to distinguish the above numbers passing into each tree branch by their size. Finally, we also need to keep track of the proportion of sets of each size in each branch that contains a feature $i$ and the proportion that don't. Once all these sets have flowed down to the leaves of the tree, then we can compute the Shapley values. Doing this gives us $O(TLD^2)$ time complexity. + +**Pros** +- Very fast for a valuable category of models +- Doesn't require access to the training data +- The Shapley values are fairly distributed among the feature values, which isn't always the case for other local feature attribution methods - Shapley values can be easily interpreted and visualized -**Cons**: -- Only applies to Tree based models +**Cons** +- Only applies to Tree-based models - Uses an approximation of the interventional conditional expectation instead of computing it directly #### Interventional Tree SHAP -The interventional TreeSHAP method takes a different approach. Suppose we sample a reference data point, $r$, from the -training dataset. For each feature $i$ we then enumerate over all subsets of $S\subset F \setminus \{i\}$. If a subset -is missing a feature we replace it with the corresponding one in the reference sample. We can then compute $f(S)$ -directly for each coalition $S$ and from that get the Shapley values. One major difference here is that we're combining -each $S$ and $r$ to generate a data point. The process of enforcing independence of the $S$ and $F\S$ in this way is -known as intervening in the underlying data set and is where the algorithm name comes from. Note that doing this breaks -any independence between features in the dataset which means the data points we're sampling won't be realistic. - -For a single Tree and sample $r$ if we just iterate over all the subsets of $S \subset F \setminus \{i\}$ the -interventional TreeSHAP method runs with $O(M2^M)$. Note that there are two paths through the tree of special interest. -The first is the instance path for $x$, and the second is the sampled/reference path for $r$. Computing the shapley -value estimate for the sampled $r$ is going to involve replacing $x$ with values of $r$ and generating a set of -perturbed paths. If, instead of iterating over the sets if we sum over the paths we get a speed improvement as many of -the paths within the tree have overlapping components. We can compute them all at the same time instead of one by one. -Doing so the Interventional TreeSHAP algorithm obtains $O(LD)$ time complexity. - -Applied to a random forrest with $T$ trees and using $R$ samples to compute the estimates we obtain $O(TRLD)$ time -complexity. The fact that we can sum over each tree in the random forest is a results of the linearity property of -shapley values. - -**Pros:** +The interventional TreeSHAP method takes a different approach. Suppose we sample a reference data point, $r$, from the training dataset. For each feature, $i$, we then enumerate over all subsets of $S\subset F \setminus \{i\}$. If a subset is missing a feature, we replace it with the corresponding one in the reference sample. We can then compute $f(S)$ directly for each coalition $S$ to get the Shapley values. One major difference here is combining each $S$ and $r$ to generate a data point. Enforcing independence of the $S$ and $F\S$ in this way is known as intervening in the underlying data set and is where the algorithm's name comes from. Note that this breaks any independence between features in the dataset, which means the data points we're sampling won't be realistic. + +For a single Tree and sample $r$ if we iterate over all the subsets of $S \subset F \setminus \{i\}$, the interventional TreeSHAP method runs with $O(M2^M)$. Note that there are two paths through the tree of particular interest. The first is the instance path for $x$, and the second is the sampled/reference path for $r$. Computing the Shapley value estimate for the sampled $r$ will involve replacing $x$ with values of $r$ and generating a set of perturbed paths. Instead of iterating over the sets, we sum over the paths. Doing so is faster as many of the routes within the tree have overlapping components. We can compute them all at the same time instead of one by one. Doing this means the Interventional TreeSHAP algorithm obtains $O(LD)$ time complexity. + +Applied to a random forest with $T$ trees and using $R$ samples to compute the estimates, we obtain $O(TRLD)$ time complexity. The fact that we can sum over each tree in the random forest results from the linearity property of Shapley values. + +**Pros** - Very fast for very useful category of models -- The Shapley values are fairly distributed among the feature values which isn't always the case for other local feature -attribution methods. +- The Shapley values are fairly distributed among the feature values, which isn't always the case for other local feature attribution methods - Shapley values can be easily interpreted and visualized -- Computes the interventional conditional expectation exactly unlike the path dependent method +- Computes the interventional conditional expectation exactly unlike the path-dependent method -**Cons**: +**Cons** - Less general as a white box method - Requires access to the dataset -- Typically, slower than the path dependent method +- Typically, slower than the path-dependent method ### Global Feature Attribution -Global Feature Attribution methods aim to show the dependency of model output on a subset of the input features. This -is a global insight as it describes the behaviour of the model over the entire input space. ALE-plots, M-plots and -PDP-plots all are used to obtain graphs that visualize the relationship between feature and prediction directly. +Global Feature Attribution methods aim to show the dependency of model output on a subset of the input features. They are a global insight as it describes the behavior of the model over the entire input space. For instance, Accumulated Local Effects plots obtain graphs that directly visualize the relationship between feature and prediction. -Suppose a trained regression model that predicts the number of bikes rented on a given day dependent on the temperature, -humidity and wind speed. A global feature attribution plot for the temperature feature might be a line graph with -temperature plotted against number of bikes rented. This type of insight can be used to confirm what you expect to see. -In the bikes rented case one would anticipate an increase in rentals up until a certain temperature and then a decrease -after when it gets too hot. +Suppose a trained regression model that predicts the number of bikes rented on a given day depending on the temperature, humidity, and wind speed. A global feature attribution plot for the temperature feature might be a line graph plotted against the number of bikes rented. In the bikes rented case, one would anticipate an increase in rentals up until a specific temperature and then a decrease after it gets too hot. #### Accumulated Local Effects -Alibi only provides Accumulated Local Effects plots because these give the most accurate insight of ALE-plots, M-plots -and PDP-plots. ALE-plots work by averaging the local changes in a prediction at every instance in the data distribution. -They then accumulate these differences to obtain a plot of prediction over the selected feature dependencies. +Alibi only provides accumulated local effects plots because of the available global feature attribution methods they give the most accurate insight. Alternatives include Partial Dependence Plots. ALE plots work by averaging the local changes in a prediction at every instance in the data distribution. They then accumulate these differences to obtain a plot of prediction over the selected feature dependencies. -Suppose we have a model $f$ and features $X={x_1,... x_n}$. Given a subset of the features $X_S$ we denote -$X_C=X \setminus X_S$. We want to obtain the ALE-plot for the features $X_S$, typically chosen to be at most a -set of dimension 2 in order that they can easily be visualized. For simplicity assume we have $X=\{x_1, x_2\}$ and let -$X_S=\{x_1\}$ so $X_C=\{x_2\}$. The ALE of $x_1$ is defined by: +Suppose we have a model $f$ and features $X={x_1,... x_n}$. Given a subset of the features $X_S$, we denote $X_C=X \setminus X_S$. We want to obtain the ALE-plot for the features $X_S$, typically chosen to be at most a set of dimension two to be visualized easily. For simplicity assume we have $X=\{x_1, x_2\}$ and let $X_S=\{x_1\}$ so $X_C=\{x_2\}$. The ALE of $x_1$ is defined by: $$ \hat{f}_{S, ALE}(x_1) = @@ -378,13 +284,7 @@ $$ \right]dz_1 - c_1 $$ -The term within the integral computes the expectation of the model derivative in $x_1$ over the random variable $X_2$ -conditional on $X_1=z_1$. By taking the expectation with respect to $X_2$ we factor out its dependency. So now we know -how the prediction $f$ changes local to a point $X_1=z_1$ independent of $X_2$. By integrating these changes over $x_1$ -from a minimum value to the value of interest we obtain the global plot of how the model depends on $x_1$. ALE-plots -get there names as they accumulate (integrate) the local effects (the expected partial derivatives). Note that here we -have assumed $f$ is differentiable. In practice however, we compute the various quantities above numerically and so this -isn't a requirement. +The term within the integral computes the expectation of the model derivative in $x_1$ over the random variable $X_2$ conditional on $X_1=z_1$. By taking the expectation for $X_2$, we factor out its dependency. So now we know how the prediction $f$ changes local to a point $X_1=z_1$ independent of $X_2$. Integrating these changes over $x_1$ from a minimum value to the value of interest, we obtain the global plot of how the model depends on $x_1$. ALE-plots get their names as they accumulate (integrate) the local effects (the expected partial derivatives). Note that here we have assumed $f$ is differentiable. In practice, however, we compute the various quantities above numerically, so this isn't a requirement. __TODO__: - Add picture explaining the above idea. @@ -393,16 +293,14 @@ For more details on accumulated local effects including a discussion on PDP-plot [Motivation-and-definition for ALE](../methods/ALE.ipynb#Motivation-and-definition) :::{admonition} **Note 4: Categorical Variables and ALE** -Note that because ALE plots require differences between variable they don't natural extend to categorical data unless -there is a sensible ordering on the categorical data. As an example consider months of the year. To be clear this is -only an issue if the variable you are taking the ALE with respect to is categorical. +Note that because ALE plots require computing differences between variables, they don't naturally extend to categorical data unless there is a sensible ordering on the data. As an example, consider the months of the year. To be clear, this is only an issue if the variable you are taking the ALE for is categorical. ::: **Pros**: - ALE-plots are easy to visualize and understand intuitively - Very general as it is a black box algorithm -- Doesn't struggle with dependencies in the underlying features unlike PDP-plots -- ALE-plots are fast compared to other accumulated local effects insights such as PDP-plots +- Doesn't struggle with dependencies in the underlying features, unlike PDP plots +- ALE-plots are fast compared to other accumulated local effects insights such as PDP plots **Cons**: - Harder to explain the underlying motivation behind the method than PDP-plots or M-plots. @@ -411,48 +309,28 @@ only an issue if the variable you are taking the ALE with respect to is categori ### Counter Factuals: -Given an instance of the dataset and a prediction given by a model a question that naturally arises is how would the -instance minimally have to change in order for a different prediction to be given. Counterfactuals are local -explanations as they relate to a single instance and model prediction. +Given an instance of the dataset and a prediction given by a model, a question naturally arises how would the instance minimally have to change for a different prediction to be provided. Counterfactuals are local explanations as they relate to a single instance and model prediction. -Given a classification model trained on MNIST and a sample from the dataset with a given prediction, a counter factual -would be a generated image that closely resembles the original but is changed enough that the model correctly -classifies it as a different number. +Given a classification model trained on MNIST and a sample from the dataset with a given prediction, a counterfactual would be a generated image that closely resembles the original but is changed enough that the model correctly classifies it as a different number. __TODO__: - Give example image to illustrate -Similarly, given tabular data that a model uses to make financial decisions about a customer a counter factual would -explain to a user how to change they're behaviour in order to obtain a different decision. Alternatively it may tell -the Machine Learning Engineer that the model is drawing incorrect assumptions if the recommended changes involve -features that shouldn't be relevant to the given decision. +Similarly, given tabular data that a model uses to make financial decisions about a customer, a counterfactual would explain how to change their behavior to obtain a different conclusion. Alternatively, it may tell the Machine Learning Engineer that the model is drawing incorrect assumptions if the recommended changes involve features that are irrelevant to the given decision. A counterfactual, $x_{cf}$, needs to satisfy - The model prediction on $x_{cf}$ needs to be close to the predefined output. - The counterfactual $x_{cf}$ should be interpretable. -The first requirement is easy enough to satisfy. The second however requires some idea of what interpretable means. -Intuitively it would require that the counterfactual constructed makes sense as an instance of the dataset. Each of the -methods available in alibi deal with interpretability slightly differently. All of them require that the perturbation -$\delta$ that changes the original instance $x_0$ into $x_{cf} = x_0 + \delta$ should be sparse. This means we prefer -solutions that change a small subset of the features to construct $x_{cf}$. Requiring this limits the complexity of the -solution making it more understandable. +The first requirement is easy enough to satisfy. The second, however, requires some idea of what interpretable means. Intuitively it would require that the counterfactual construction makes sense as an instance of the dataset. Each of the methods available in alibi deals with interpretability slightly differently. All of them require that the perturbation $\delta$ that changes the original instance $x_0$ into $x_{cf} = x_0 + \delta$ should be sparse. Meaning, we prefer solutions that change a small subset of the features to construct $x_{cf}$. Requiring this limits the complexity of the solution making it more understandable. :::{admonition} **Note 3: fit and explain method runtime differences** -Alibi explainers expose two methods `fit` and `explain`. Typically, in machine learning the method that takes the most -time is the fit method as that's where the model optimization conventionally takes place. In explainability -the explain step often requires the bulk of computation. However, this isn't always the case. - -Among the explainers in this section there are two approaches taken. The first fits a counterfactual when the user -requests the insight. This happens during the `.explain()` method call on the explainer class. They do this by running -gradient descent on model inputs to find a counterfactual. The methods that take this approach are Counterfactuals -Instances, Contrastive Explanation Method and Counterfactuals Guided by Prototypes. Thus, the `fit` methods in these -cases are quick but the `explain` method is slow. - -The other approach however uses reinforcement learning to pretrain a model that produces explanations on demand. The -training in this case takes place during the `fit` method call and so this has a long runtime while the `explain` -method is quick. If you want performant explanations in production environments then the later method is preferable. +Alibi explainers expose two methods, `fit` and `explain`. Typically, in machine learning, the method that takes the most time is the fit method, as that's where the model optimization conventionally takes place. In explainability, the explain step often requires the bulk of computation. However, this isn't always the case. + +Among the explainers in this section, there are two approaches taken. The first fits a counterfactual when the user requests the insight. This happens during the `.explain()` method call on the explainer class. This is done by running gradient descent on model inputs to find a counterfactual. The methods that take this approach are counterfactual instances, contrastive explanation, and counterfactuals guided by prototypes methods. Thus, the `fit` method in these cases are quick, but the `explain` method is slow. + +The other approach, however, uses reinforcement learning to train a model that produces explanations on demand. The training takes place during the `fit` method call, so this has a long runtime while the `explain` method is quick. If you want performant explanations in production environments, then the latter approach is preferable. ::: __TODO__: @@ -465,29 +343,22 @@ __TODO__: - Classification models - Tabular and image data types -Let the model be given by $f$ and $f_{t}$ be the probability of class $t$, $p_t$ is the target probability of class -$t$ and $0<\lambda<1$ a hyperparameter. This method constructs counterfactual instances from an instance $X$ by running -gradient descent on a new instance $X'$ to minimize the following loss. +Let the model be given by $f$ and $f_{t}$ be the probability of class $t$, $p_t$ is the target probability of class $t$ and $0<\lambda<1$ a hyperparameter. This method constructs counterfactual instances from an instance $X$ by running gradient descent on a new instance $X'$ to minimize the following loss. $$L(X', X)= (f_{t}(X') - p_{t})^2 + \lambda L_{1}(X', X)$$ -The first term pushes the constructed counterfactual towards the desired class and the use of the $L_{1}$ norm -encourages sparse solutions. +The first term pushes the constructed counterfactual towards the desired class, and the use of the $L_{1}$ norm encourages sparse solutions. -This method requires computing gradients of the loss in the model inputs. If we have access to the model and the -gradients are available then this can be done directly. If not however, we can use numerical gradients although this -comes at a considerable performance cost. +This method requires computing gradients of the loss in the model inputs. If we have access to the model and the gradients are available, this can be done directly. If not, we can use numerical gradients, although this comes at a considerable performance cost. -A problem arises here in that encouraging sparse solutions doesn't necessarily generate interpretable counterfactuals. -This happens because the loss doesn't prevent the counter factual solution moving off the data distribution. Thus, you -will likely get a solution that doesn't look like something that you'd expect to see from the data. +A problem arises here in that encouraging sparse solutions doesn't necessarily generate interpretable counterfactuals. This happens because the loss doesn't prevent the counterfactual solution from moving off the data distribution. Thus, you will likely get an answer that doesn't look like something that you'd expect to see from the data. __TODO:__ - Picture example. Something similar to: https://github.com/interpretml/DiCE **Pros** -- Both Black and White box -- Don't need to access to the training dataset +- Both a black and white box method +- Doesn't require access to the training dataset **Cons** - Not likely to give human interpretable instances @@ -500,28 +371,17 @@ __TODO:__ - Classification models - Tabular and image data types -CEM follows a similar approach to the above but includes three new details. Firstly an elastic net $\beta L_{1} + L_{2}$ -regularizer term is added to the loss. This causes the solutions to be both close to the original instance and sparse. +CEM follows a similar approach to the above but includes three new details. Firstly an elastic net $\beta L_{1} + L_{2}$ regularizer term is added to the loss. This term causes the solutions to be both close to the original instance and sparse. -Secondly we require that $\delta$ only adds new features rather than takes them away. In order to do this we require -defining what it means for a feature to be present so that the perturbation only works to add features and not take -them away. In the case of MNIST an obvious choice of "present" feature is if the pixel is equal to 1 and absent if it -is equal to 0. +Secondly, we require that $\delta$ only adds new features rather than takes them away. We need to define what it means for a feature to be present so that the perturbation only works to add and not remove them. In the case of the MNIST dataset, an obvious choice of "present" feature is if the pixel is equal to 1 and absent if it is equal to 0. This is simple in the case of the MNIST data set but more difficult in complex domains such as color images. -Secondly an optional auto encoder is trained to penalize counter factual instances that deviate from the data -distribution. This works by requiring minimize the gradient descent minimize the reconstruction loss of instances passed -through the auto encoder. If an instance is unlike anything in the dataset then the auto encoder will struggle to -recreate it well, and it's loss term will be high. We require two hyperparameters $\beta$ and $\gamma$ to define the -following Loss, +Secondly, by training an optional autoencoder to penalize counter factual instances that deviate from the data distribution. This works by minimizing the reconstruction loss the autoencoder applied to instances. If a generated instance is unlike anything in the dataset, the autoencoder will struggle to recreate it well, and its loss term will be high. We require two hyperparameters $\beta$ and $\gamma$ to define the following Loss, $$L(X'|X)= (f_{t}(X') - p_{t})^2 + \beta L_{1}(X', X) + L_{2}(X', X)^2 + \gamma L_{2} (X', AE(X'))^2$$ -This approach extends the definition of interpretable to include a requirement that the computed counterfactual be -believably a member of the dataset. It turns out however that this condition isn't enough to always get interpretable -results. And in particular the constructed counterfactual often doesn't look like a member of the target class. +This approach extends the definition of interpretable to include a requirement that the computed counterfactual be believably a member of the dataset. It turns out that minimizing this loss isn't enough to always get interpretable results. And in particular, the constructed counterfactual often doesn't look like a member of the target class. -Similarly to the previous method, this method can apply to both black and white box models. In the case of black box -there is still a performance cost from computing the numerical gradients. +Similar to the previous method, this method can apply to both black and white box models. In the black-box case, there is still a performance cost from computing the numerical gradients. __TODO:__ - Picture example of results including less interpretable ones. @@ -530,10 +390,9 @@ __TODO:__ - Provides more interpretable instances than the counterfactual instances' method. **Cons** -- Requires access to the dataset to train the auto encoder -- Requires setup and configuration in choosing $\gamma$ and $\beta$ as well as training the auto encoder -- Requires domain knowledge when choosing what it means for a feature to be present or not. This is easy in the case of -MNIST but get more complicated when applying to color images. +- Requires access to the dataset to train the autoencoder +- Requires setup and configuration in choosing $\gamma$ and $\beta$ and training the autoencoder +- Requires domain knowledge when choosing what it means for a feature to be present or not #### Counterfactuals Guided by Prototypes @@ -541,9 +400,7 @@ MNIST but get more complicated when applying to color images. - Classification models - Tabular, image and categorical data types -For this method we add another term to the loss that optimizes for distance between the counterfactual instance and -close members of the target class. Now the definition of interpretability has been extended even further to include the -requirement that the counterfactual be believably a member of the target class and not just in the data distribution. +For this method, we add another term to the loss that optimizes for the distance between the counterfactual instance and close members of the target class. In doing this, we require interpretability also to mean that the generated counterfactual is believably a member target class and not just in the data distribution. With hyperparameters $c$ and $\beta$, the loss is now given by: @@ -555,16 +412,11 @@ $$ __TODO:__ - Picture example of results. -This method produces much more interpretable results. As well as this, because the proto term pushes the solution -towards the target class we can actually remove the prediction loss term and still obtain a viable counter factual. -This doesn't make much difference if we can compute the gradients directly from the model but if not, and we are using -numerical gradients then the $L_{pred}$ term is a significant bottleneck owing to repeated calls on the model to -approximate the gradients. Thus, this method also applies to blackbox models with a significant performance gain on -the previous approaches mentioned. +This method produces much more interpretable results. As well as this, because the proto term pushes the solution towards the target class, we can remove the prediction loss term and still obtain a viable counterfactual. This doesn't make much difference if we can compute the gradients directly from the model. If not, and we are using numerical gradients, then the $L_{pred}$ term is a significant bottleneck owing to repeated calls on the model to approximate the gradients. Thus, this method also applies to black-box models with a substantial performance gain on the previously mentioned approaches. **Pros** -- Much more interpretable instances that the CEM method -- Blackbox version of the method doesn't require computing the numerical gradients which is expensive +- Generates more interpretable instances that the CEM method +- Blackbox version of the method doesn't require computing the numerical gradients - Applies to more data-types **Cons** @@ -573,42 +425,24 @@ the previous approaches mentioned. #### Counterfactuals with Reinforcement Learning -This black box method splits from the approach taken by the above three significantly. Instead of minimizing a loss at -explain time it trains a new model when fitting the explainer called an actor that takes instances and produces -counterfactuals. It does this using reinforcement learning. In RL an actor model takes some state as input and -generates actions, in our case the actor takes an instance with a specific classification and produces an action in the -form of a counter factual that the model predicts as the classification given. Outcomes of actions are assigned reward -dependent on a reward function that's designed to encourage specific behaviours of the actor. In our case we reward -counterfactuals that are firstly classified as the correct target class, secondly are close to the data distribution as -modelled by an auto-encoder, and thirdly are sparse perturbations of the original instance. The reinforcement training -step pushes the actor to take high reward actions instead of low reward actions. This method is black box as we compute -the reward obtained by an actor by sampling an action by directly predicting the loss. Because of this we only require -the derivative with respect to the actor and not the predictor itself. - -As well as this CFRL actors are trained to ensure that certain constraints can be taken into account when generating -counterfactuals. This is highly desirable as a use case for counterfactuals is suggesting small changes to an -instance in order to obtain a different classification. In certain cases you want these changes to be constrained, for -instance when dealing with immutable characteristics. In other words if you are using the counterfactual to advise -changes in behaviour you want to ensure the changes are enactable. Suggesting that someone needs to be 2 years younger -to apply for a loan isn't very helpful. - -To train the actor we randomly generate in distribution data instances, along with constraints and target -classifications. We then compute the reward and update the actor to maximize the reward. We do this without needing -access to the critic internals. We end up with an actor that is able to generate interpretable counterfactual instances -at runtime with arbitrary constraints. +This black box method splits from the approach taken by the above three significantly. Instead of minimizing a loss during the explain method call, it trains a new model when fitting the explainer called an actor that takes instances and produces counterfactuals. It does this using reinforcement learning. In reinforcement learning, an actor model takes some state as input and generates actions; in our case, the actor takes an instance with a target classification and attempts to produce an instance of the target class. Outcomes of actions are assigned rewards dependent on a reward function designed to encourage specific behaviors. In our case, we reward correctly classified counterfactuals generated by the actor. As well as this, we reward counterfactuals that are close to the data distribution as modeled by an autoencoder. Finally, we require that they are sparse perturbations of the original instance. The reinforcement training step pushes the actor to take high reward actions instead of low reward actions. CFRL is a black-box method as the process by which we update the actor to maximize the reward only requires estimating the reward via sampling the counterfactuals. + +As well as this, CFRL actors can be trained to ensure that certain constraints can be taken into account when generating counterfactuals. This is highly desirable as a use case for counterfactuals is to suggest the necessary changes to an instance to obtain a different classification. In some cases, you want these changes to be constrained, for instance, when dealing with immutable characteristics. In other words, if you are using the counterfactual to advise changes in behavior, you want to ensure the changes are enactable. Suggesting that someone needs to be two years younger to apply for a loan isn't very helpful. + +The training process requires randomly sampling data instances, along with constraints and target classifications. We can then compute the reward and update the actor to maximize it. We do this without needing access to the critic internals. The end product is a model that can generate interpretable counterfactual instances at runtime with arbitrary constraints. __TODO__: - Example images **Pros** -- Very interpretable counter factuals. +- Generates more interpretable instances that the CEM method - Very fast at runtime - Can be trained to account for arbitrary constraints - Very general as is a Black box algorithm **Cons** - Longer to fit the model -- Requires to fit an auto encoder +- Requires to fit an autoencoder - Requires access to the training dataset From 673c12fd8969580eda26476cdbd1dca62f813102 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Tue, 9 Nov 2021 15:15:02 +0000 Subject: [PATCH 25/60] Second check through --- doc/source/overview/high_level.md | 64 +++++++++++++++---------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 3d2c689da..bacf99d6b 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -57,9 +57,9 @@ Alibi provides several local and global insights with which to explore and under ### Local Necessary Features: -Given a single instance and model prediction, Local Necessary Features are local explanations that tell us what minimal set of features needs to stay the same so that the model still gives the same or close prediction. +Given a single instance and model prediction, local necessary features are local explanations that tell us what minimal set of features needs to stay the same so that the model still gives the same or close prediction. -In the case of a trained image classification model, Local Necessary Features for a given instance would be a minimal subset of the image that the model uses to make its decision. A Machine learning engineer might use this insight to see if the model concentrates on the correct features of an image in making a decision. Local necessary features are particularly advantageous for checking erroneous model decisions. +In the case of a trained image classification model, local necessary features for a given instance would be a minimal subset of the image that the model uses to make its decision. A machine learning engineer might use this insight to see if the model concentrates on the correct features. Local necessary features are particularly advantageous for checking erroneous model decisions. The following two explainer methods are available from alibi for generating Local Necessary Features insights. Each approaches the idea in slightly different ways. The main difference is that anchors give a picture of the size of the area over the dataset for which the insight applies, whereas pertinent positives do not. @@ -72,12 +72,11 @@ Let A be a rule (set of predicates) acting on such an interpretable representati Given a classifier $f$, a value $\tau>0$, an instance $x$, and a data distribution $\mathcal{D}$, $A$ is an anchor for $x$ if $A(x) = 1$ and, -$$ E_{\mathcal{D}(z|A)}[1_{f(x)=f(z)}] ≥ \tau $$. +$$ +E_{\mathcal{D}(z|A)}[1_{f(x)=f(z)}] \geq \tau +$$ -The distribution $\mathcal{D}(z|A)$ is those points from the dataset for which the anchor holds. This is like fixing -some set of features of an instance and allowing all the others to vary. This condition says any point in the data -distribution that satisfies the anchor $A$ is expected to match the model prediction $f(x)$ with probability $\tau$ -(usually $\tau$ is chosen to be 0.95). +The distribution $\mathcal{D}(z|A)$ is those points from the dataset for which the anchor holds. This is like fixing some set of features of an instance and allowing all the others to vary. This condition says any point in the data distribution that satisfies the anchor $A$ is expected to match the model prediction $f(x)$ with probability $\tau$ (usually $\tau$ is chosen to be 0.95). Let $prec(A) = E_{\mathcal{D}(z|A)}[1_{f(x)=f(z)}]$ be the precision of an anchor. Note that the precision of an anchor is considered with respect to the set of points in the data distribution to which the anchor applies, $\mathcal{D}(z|A)$. We can consider the **coverage** of an anchor as the probability that $A(z)=1$ for any instance $z$ in the data distribution. The coverage tells us the proportion of the distribution to which the anchor applies. The aim here is to find the anchor that applies to the most extensive set of instances while satisfying $prec(A) \geq \tau$. @@ -95,7 +94,7 @@ As we construct the new set of anchors from the last, we need to compute the pre - Although they apply to a local instance, the notion of coverage also gives a level of global insight **Cons** -- Because at each step in building up the anchor, we need to consider all the possible features we can add this algorithm is slower for high dimensional feature spaces. +- This algorithm is much slower for high dimensional feature spaces - If choosing an anchor close to a decision boundary, the method may require a considerable number of samples from $\mathcal{D}(z|A)$ and $\mathcal{D}(z|A')$ to distinguish two anchors $A$ and $A'$. - High dimensional feature spaces such as images need to be reduced. Typically, this is done by segmenting the image into superpixels. The choice of the algorithm used to obtain the superpixels has an effect on the anchor obtained. - Practitioners need to make several choices concerning parameters and domain-specific setup. For instance, the precision threshold or the method by which we sample $\mathcal{D}(z|A)$. Fortunately, alibi provides default settings for a lot of specific data types. @@ -117,7 +116,7 @@ $$ L_{pred}(\delta) = max\left\{ max_{i\neq t_{0}}[Pred(\delta)]_{i} - [Pred(\delta)]_{t_0}, \kappa \right\} $$ -And $AE$ here is an optional auto encoder generated from the training data. If delta strays from the original data distribution, the autoencoder loss will increase as it will no longer reconstruct $\delta$ well. Thus, we ensure that $\delta$ remains close to the original dataset distribution by adding this loss. +$AE$ is an optional autoencoder generated from the training data. If delta strays from the original data distribution, the autoencoder loss will increase as it will no longer reconstruct $\delta$ well. Thus, we ensure that $\delta$ remains close to the original dataset distribution. Note that $\delta$ is restrained to only take away features from the instance $x_0$. There is a slightly subtle point here: removing features from an instance requires correctly defining non-informative feature values. In the case of MNIST digits, it's reasonable to assume that the black background behind each digit represents an absence of information. Similarly, in the case of color images, you might take the median pixel value to convey no information, and moving away from this value adds information. @@ -135,12 +134,12 @@ Note that we need to compute the loss gradient through the model. If we have acc ### Local Feature Attribution -Local feature attribution asks how each feature in a given instance contributes to its prediction. In the case of an image, this would highlight those pixels that make the model provide the output it does. Note that this differs subtly from Local Necessary Features, which find the minimum subset of features required to give a prediction. Local feature attribution instead assigned a score to each feature. If using the autoencoder loss, then we need access to the original dataset. +Local feature attribution asks how each feature in a given instance contributes to its prediction. In the case of an image, this would highlight those pixels that make the model provide the output it does. Note that this differs subtly from Local Necessary Features, which find the minimum subset of features required to give a prediction. Local feature attribution instead assigns a score to each feature. __TODO__: - picture showing above. -Good use of local feature attribution detects that a classifier trained on images is focusing on the correct features of an image to infer the class. As an example, suppose you have a model trained to detect breeds of dogs. You want to check that it focuses on the correct features of the dog in making its prediction. Suppose you compute the feature attribution of a picture of a husky and discover that the model is only focusing on the snowy backdrop to the husky, then you know two things. All the images of huskies in your dataset overwhelmingly have snowy backdrops, and also that the model will fail to generalize. It will potentially incorrectly classify other dog breeds with snowy backdrops as huskies and fail to recognize huskies without snowy locations. +A good example use of local feature attribution is to detect that a classifier trained on images is focusing on the correct features of an image to infer the class. Suppose you have a model trained to classify breeds of dogs. You want to check that it focuses on the correct features of the dog in making its prediction. Suppose you compute the feature attribution of a picture of a husky and discover that the model is only focusing on the snowy backdrop to the husky, then you know two things. All the images of huskies in your dataset overwhelmingly have snowy backdrops, and also that the model will fail to generalize. It will potentially incorrectly classify other dog breeds with snowy backdrops as huskies and fail to recognize huskies that aren't in snowy locations. Each of the following methods defines local feature attribution slightly differently. In both, however, we assign attribution values to each feature to indicate how significant those features were in making the model prediction. @@ -163,6 +162,10 @@ $$ The above sums partial derivatives for each feature over the path between the baseline and instance of interest. In doing so, you accumulate the changes in the prediction that occur due to the changing feature value from the baseline to the instance. +:::{admonition} **Note 5: Choice of Baseline** +The main difficulty with this method is that as IG is very dependent on the baseline, it's essential to make sure you choose it well. The choice of baseline should capture a blank state in which the model makes essentially no prediction or assigns the probability of each class equally. A common choice for image classification is an image set to black, which works well in many cases but sometimes fails to be a good choice. For instance, a model that classifies images taken at night using an image with every pixel set to black means the attribution method will undervalue the use of dark pixels in attributing the contribution of each feature to the classification. This is due to the contribution being calculated relative to the baseline, which is already dark. +::: + **Pros** - Simple to understand and visualize, especially with image data - Doesn't require access to the training data @@ -171,9 +174,6 @@ The above sums partial derivatives for each feature over the path between the ba - White box method. Requires the partial derivatives of the model outputs with respect to inputs - Requires choosing the baseline which can have a significant effect on the outcome (See Note 5) -:::{admonition} **Note 5: Choice of Baseline** -The main difficulty with this method is that as IG is very dependent on the baseline, it's essential to make sure you choose it well. The choice of baseline should capture a blank state in which the model makes essentially no prediction or assigns the probability of each class equally. A common choice for image classification is an image set to black, which works well in many cases but sometimes fails to be a good choice. For instance, a model that classifies images taken at night using an image with every pixel set to black means the attribution method will undervalue the use of dark pixels in attributing the contribution of each feature to the classification. This is due to the contribution being calculated relative to the baseline, which is already dark. -::: #### KernelSHAP @@ -207,16 +207,16 @@ $$ f(S) = \mathbb{E}_{D}[f(x)|x_S] $$ -Computing this value is very difficult. Instead, we can use the interventional conditional expectation, which is defined as: +Computing this value is very difficult. Instead, we can approximate the above using the interventional conditional expectation, which is defined as: $$ f(S) = \mathbb{E}_{D}[f(x)|do(x_S)] $$ -The do operator here fixes the values of the features in $S$ and samples the remaining $\bar{S}$ feature values from the data. Interfering in the distribution like this can mean introducing unrealistic samples if there are dependencies between the features. +The $do$ operator here fixes the values of the features in $S$ and samples the remaining $\bar{S}$ feature values from the data. A Downside of interfering in the distribution like this can mean introducing unrealistic samples if there are dependencies between the features. **Pros** -- The Shapley values are fairly distributed among the feature values, which isn't always the case for other local feature attribution methods +- The Shapley values are fairly distributed among the feature values - Shapley values can be easily interpreted and visualized - Very general as is a blackbox method @@ -239,7 +239,7 @@ Doing this for each possible set $S$ involves $O(TL2^M)$ time complexity. We can **Pros** - Very fast for a valuable category of models - Doesn't require access to the training data -- The Shapley values are fairly distributed among the feature values, which isn't always the case for other local feature attribution methods +- The Shapley values are fairly distributed among the feature values - Shapley values can be easily interpreted and visualized **Cons** @@ -248,15 +248,15 @@ Doing this for each possible set $S$ involves $O(TL2^M)$ time complexity. We can #### Interventional Tree SHAP -The interventional TreeSHAP method takes a different approach. Suppose we sample a reference data point, $r$, from the training dataset. For each feature, $i$, we then enumerate over all subsets of $S\subset F \setminus \{i\}$. If a subset is missing a feature, we replace it with the corresponding one in the reference sample. We can then compute $f(S)$ directly for each coalition $S$ to get the Shapley values. One major difference here is combining each $S$ and $r$ to generate a data point. Enforcing independence of the $S$ and $F\S$ in this way is known as intervening in the underlying data set and is where the algorithm's name comes from. Note that this breaks any independence between features in the dataset, which means the data points we're sampling won't be realistic. +The interventional TreeSHAP method takes a different approach. Suppose we sample a reference data point, $r$, from the training dataset. Let $F$ be the set of all features. For each feature, $i$, we then enumerate over all subsets of $S\subset F \setminus \{i\}$. If a subset is missing a feature, we replace it with the corresponding one in the reference sample. We can then compute $f(S)$ directly for each coalition $S$ to get the Shapley values. One major difference here is combining each $S$ and $r$ to generate a data point. Enforcing independence of the $S$ and $F\setminus S$ in this way is known as intervening in the underlying data distribution and is where the algorithm's name comes from. Note that this breaks any independence between features in the dataset, which means the data points we're sampling won't be realistic. For a single Tree and sample $r$ if we iterate over all the subsets of $S \subset F \setminus \{i\}$, the interventional TreeSHAP method runs with $O(M2^M)$. Note that there are two paths through the tree of particular interest. The first is the instance path for $x$, and the second is the sampled/reference path for $r$. Computing the Shapley value estimate for the sampled $r$ will involve replacing $x$ with values of $r$ and generating a set of perturbed paths. Instead of iterating over the sets, we sum over the paths. Doing so is faster as many of the routes within the tree have overlapping components. We can compute them all at the same time instead of one by one. Doing this means the Interventional TreeSHAP algorithm obtains $O(LD)$ time complexity. Applied to a random forest with $T$ trees and using $R$ samples to compute the estimates, we obtain $O(TRLD)$ time complexity. The fact that we can sum over each tree in the random forest results from the linearity property of Shapley values. **Pros** -- Very fast for very useful category of models -- The Shapley values are fairly distributed among the feature values, which isn't always the case for other local feature attribution methods +- Very fast for a valuable category of models +- The Shapley values are fairly distributed among the feature values - Shapley values can be easily interpreted and visualized - Computes the interventional conditional expectation exactly unlike the path-dependent method @@ -275,7 +275,7 @@ Suppose a trained regression model that predicts the number of bikes rented on a Alibi only provides accumulated local effects plots because of the available global feature attribution methods they give the most accurate insight. Alternatives include Partial Dependence Plots. ALE plots work by averaging the local changes in a prediction at every instance in the data distribution. They then accumulate these differences to obtain a plot of prediction over the selected feature dependencies. -Suppose we have a model $f$ and features $X={x_1,... x_n}$. Given a subset of the features $X_S$, we denote $X_C=X \setminus X_S$. We want to obtain the ALE-plot for the features $X_S$, typically chosen to be at most a set of dimension two to be visualized easily. For simplicity assume we have $X=\{x_1, x_2\}$ and let $X_S=\{x_1\}$ so $X_C=\{x_2\}$. The ALE of $x_1$ is defined by: +Suppose we have a model $f$ and features $X=\{x_1,... x_n\}$. Given a subset of the features $X_S$, we denote $X_C=X \setminus X_S$. We want to obtain the ALE-plot for the features $X_S$, typically chosen to be at most a set of dimension two to be visualized easily. For simplicity assume we have $X=\{x_1, x_2\}$ and let $X_S=\{x_1\}$ so $X_C=\{x_2\}$. The ALE of $x_1$ is defined by: $$ \hat{f}_{S, ALE}(x_1) = @@ -300,18 +300,18 @@ Note that because ALE plots require computing differences between variables, the - ALE-plots are easy to visualize and understand intuitively - Very general as it is a black box algorithm - Doesn't struggle with dependencies in the underlying features, unlike PDP plots -- ALE-plots are fast compared to other accumulated local effects insights such as PDP plots +- ALE plots are fast **Cons**: -- Harder to explain the underlying motivation behind the method than PDP-plots or M-plots. +- Harder to explain the underlying motivation behind the method than PDP plots or M plots. - Requires access to the training dataset. -- Unlike PDP-plots, ALE-plots do not work with Categorical data +- Unlike PDP plots, ALE plots do not work with Categorical data ### Counter Factuals: Given an instance of the dataset and a prediction given by a model, a question naturally arises how would the instance minimally have to change for a different prediction to be provided. Counterfactuals are local explanations as they relate to a single instance and model prediction. -Given a classification model trained on MNIST and a sample from the dataset with a given prediction, a counterfactual would be a generated image that closely resembles the original but is changed enough that the model correctly classifies it as a different number. +Given a classification model trained on the MNIST dataset and a sample from the dataset with a given prediction, a counterfactual would be a generated image that closely resembles the original but is changed enough that the model correctly classifies it as a different number. __TODO__: - Give example image to illustrate @@ -343,7 +343,7 @@ __TODO__: - Classification models - Tabular and image data types -Let the model be given by $f$ and $f_{t}$ be the probability of class $t$, $p_t$ is the target probability of class $t$ and $0<\lambda<1$ a hyperparameter. This method constructs counterfactual instances from an instance $X$ by running gradient descent on a new instance $X'$ to minimize the following loss. +Let the model be given by $f$, and let $p_t$ be the target probability of class $t$. Let $0<\lambda<1$ be a hyperparameter. This method constructs counterfactual instances from an instance $X$ by running gradient descent on a new instance $X'$ to minimize the following loss. $$L(X', X)= (f_{t}(X') - p_{t})^2 + \lambda L_{1}(X', X)$$ @@ -375,7 +375,7 @@ CEM follows a similar approach to the above but includes three new details. Firs Secondly, we require that $\delta$ only adds new features rather than takes them away. We need to define what it means for a feature to be present so that the perturbation only works to add and not remove them. In the case of the MNIST dataset, an obvious choice of "present" feature is if the pixel is equal to 1 and absent if it is equal to 0. This is simple in the case of the MNIST data set but more difficult in complex domains such as color images. -Secondly, by training an optional autoencoder to penalize counter factual instances that deviate from the data distribution. This works by minimizing the reconstruction loss the autoencoder applied to instances. If a generated instance is unlike anything in the dataset, the autoencoder will struggle to recreate it well, and its loss term will be high. We require two hyperparameters $\beta$ and $\gamma$ to define the following Loss, +Thirdly, by training an optional autoencoder to penalize counter factual instances that deviate from the data distribution. This works by minimizing the reconstruction loss of the autoencoder applied to instances. If a generated instance is unlike anything in the dataset, the autoencoder will struggle to recreate it well, and its loss term will be high. We require two hyperparameters $\beta$ and $\gamma$ to define the following Loss, $$L(X'|X)= (f_{t}(X') - p_{t})^2 + \beta L_{1}(X', X) + L_{2}(X', X)^2 + \gamma L_{2} (X', AE(X'))^2$$ @@ -402,7 +402,7 @@ __TODO:__ For this method, we add another term to the loss that optimizes for the distance between the counterfactual instance and close members of the target class. In doing this, we require interpretability also to mean that the generated counterfactual is believably a member target class and not just in the data distribution. -With hyperparameters $c$ and $\beta$, the loss is now given by: +With hyperparameters $c$, $\gamma$ and $\beta$, the loss is now given by: $$ L(X'|X)= c(f_{t}(X') - p_{t})^2 + \beta L_{1}(X', X) + L_{2}(X', X)^2 + \gamma L_{2} (X', AE(X'))^2 + @@ -425,11 +425,11 @@ This method produces much more interpretable results. As well as this, because t #### Counterfactuals with Reinforcement Learning -This black box method splits from the approach taken by the above three significantly. Instead of minimizing a loss during the explain method call, it trains a new model when fitting the explainer called an actor that takes instances and produces counterfactuals. It does this using reinforcement learning. In reinforcement learning, an actor model takes some state as input and generates actions; in our case, the actor takes an instance with a target classification and attempts to produce an instance of the target class. Outcomes of actions are assigned rewards dependent on a reward function designed to encourage specific behaviors. In our case, we reward correctly classified counterfactuals generated by the actor. As well as this, we reward counterfactuals that are close to the data distribution as modeled by an autoencoder. Finally, we require that they are sparse perturbations of the original instance. The reinforcement training step pushes the actor to take high reward actions instead of low reward actions. CFRL is a black-box method as the process by which we update the actor to maximize the reward only requires estimating the reward via sampling the counterfactuals. +This black box method splits from the approach taken by the above three significantly. Instead of minimizing a loss during the explain method call, it trains a new model when fitting the explainer called an actor that takes instances and produces counterfactuals. It does this using reinforcement learning. In reinforcement learning, an actor model takes some state as input and generates actions; in our case, the actor takes an instance with a target classification and attempts to produce an member of the target class. Outcomes of actions are assigned rewards dependent on a reward function designed to encourage specific behaviors. In our case, we reward correctly classified counterfactuals generated by the actor. As well as this, we reward counterfactuals that are close to the data distribution as modeled by an autoencoder. Finally, we require that they are sparse perturbations of the original instance. The reinforcement training step pushes the actor to take high reward actions. CFRL is a black-box method as the process by which we update the actor to maximize the reward only requires estimating the reward via sampling the counterfactuals. As well as this, CFRL actors can be trained to ensure that certain constraints can be taken into account when generating counterfactuals. This is highly desirable as a use case for counterfactuals is to suggest the necessary changes to an instance to obtain a different classification. In some cases, you want these changes to be constrained, for instance, when dealing with immutable characteristics. In other words, if you are using the counterfactual to advise changes in behavior, you want to ensure the changes are enactable. Suggesting that someone needs to be two years younger to apply for a loan isn't very helpful. -The training process requires randomly sampling data instances, along with constraints and target classifications. We can then compute the reward and update the actor to maximize it. We do this without needing access to the critic internals. The end product is a model that can generate interpretable counterfactual instances at runtime with arbitrary constraints. +The training process requires randomly sampling data instances, along with constraints and target classifications. We can then compute the reward and update the actor to maximize it. We do this without needing access to the model internals; we only need to obtain a prediction in each case. The end product is a model that can generate interpretable counterfactual instances at runtime with arbitrary constraints. __TODO__: - Example images @@ -438,7 +438,7 @@ __TODO__: - Generates more interpretable instances that the CEM method - Very fast at runtime - Can be trained to account for arbitrary constraints -- Very general as is a Black box algorithm +- General as is a Black box algorithm **Cons** - Longer to fit the model From 19ee1fdf1e97979211727ddca154cc798c590f70 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Tue, 9 Nov 2021 17:46:44 +0000 Subject: [PATCH 26/60] Add constraints tables --- doc/source/overview/high_level.md | 68 ++++++++++++++++++++++++++++--- 1 file changed, 62 insertions(+), 6 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index bacf99d6b..45fa5a8a9 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -65,6 +65,13 @@ The following two explainer methods are available from alibi for generating Loca #### Anchors +| Model-types | Task-types | Data-types | +| ----------- | -------------- | ----------- | +| Black-box | Classification | Tabular | +| | | Text | +| | | Image | +| | | Categorical | + Anchors are a local blackbox method introduced in [Anchors: High-Precision Model-Agnostic Explanations]( https://homes.cs.washington.edu/~marcotcr/aaai18.pdf). @@ -102,6 +109,12 @@ As we construct the new set of anchors from the last, we need to compute the pre #### Pertinent Positives +| Model-types | Task-types | Data-types | +| ----------- | -------------- | ----------- | +| Black-box | Classification | Tabular | +| | | Image | + + Informally a Pertinent Positive is the subset of an instance that still obtains the same classification. These differ from anchors primarily in the fact that they aren't constructed to maximize coverage. The method to create them is also substantially different. The rough idea is to define an absence of a feature and then perturb the instance to take away as much information as possible while still retaining the original classification. Given an instance $x_0$ we set out to find a $\delta$ that minimizes the following loss: @@ -154,6 +167,14 @@ The attribution values should satisfy specific properties: #### Integrated Gradients +| Model-types | Task-types | Data-types | +| ----------- | -------------- | ----------- | +| TF/Kera | Classification | Tabular | +| | Regression | Image | +| | | Text | +| | | Categorical | + + This method computes the attribution of each feature by integrating the model partial derivatives along a path from a baseline point to the instance. Let $f$ be the model and $x$ the instance of interest. If $f:\mathbb{R}^{n} \rightarrow \mathbb{R}^{m}$ where $m$ is the number of classes the model predicts then let $F=f_k$ where $k \in \{1,..., m\}$. If $f$ is single-valued then $F=f$. We also need to choose a baseline value, $x'$. $$ @@ -177,6 +198,12 @@ The main difficulty with this method is that as IG is very dependent on the base #### KernelSHAP +| Model-types | Task-types | Data-types | +| ----------------- | -------------- | ----------- | +| Black-box | Classification | Tabular | +| | Regression | Categorical | + + Kernel SHAP is a method of computing the Shapley values for a model around an instance $x_i$. Shapley values are a game-theoretic method of assigning payout to players depending on their contribution to an overall goal. In this case, the players are the features, and their payout is the model prediction. To compute these values, we have to consider the marginal contribution of each feature over all the possible coalitions of feature players. Suppose we have a regression model $f$ that makes predictions based on four features $X = \{X_1, X_2, X_3, X_4\}$ as input. A coalition is a group of features, say, the first and third features. For this coalition, its value is given by: @@ -228,6 +255,12 @@ The $do$ operator here fixes the values of the features in $S$ and samples the r #### TreeSHAP +| Model-types | Task-types | Data-types | +| ------------ | -------------- | ----------- | +| Tree-based | Classification | Tabular | +| | Regression | Categorical | + + In the case of tree-based models, we can obtain a speed-up by exploiting the structure of trees. Alibi exposes two white-box methods, Interventional and Path dependent feature perturbation. The main difference is that the path-dependent method approximates the interventional conditional expectation, whereas the interventional method calculates it directly. #### Path Dependent TreeSHAP @@ -273,6 +306,12 @@ Suppose a trained regression model that predicts the number of bikes rented on a #### Accumulated Local Effects +| Model-types | Task-types | Data-types | +| ----------- | -------------- | ----------- | +| Black-box | Classification | Tabular | +| | Regression | | + + Alibi only provides accumulated local effects plots because of the available global feature attribution methods they give the most accurate insight. Alternatives include Partial Dependence Plots. ALE plots work by averaging the local changes in a prediction at every instance in the data distribution. They then accumulate these differences to obtain a plot of prediction over the selected feature dependencies. Suppose we have a model $f$ and features $X=\{x_1,... x_n\}$. Given a subset of the features $X_S$, we denote $X_C=X \setminus X_S$. We want to obtain the ALE-plot for the features $X_S$, typically chosen to be at most a set of dimension two to be visualized easily. For simplicity assume we have $X=\{x_1, x_2\}$ and let $X_S=\{x_1\}$ so $X_C=\{x_2\}$. The ALE of $x_1$ is defined by: @@ -339,9 +378,10 @@ __TODO__: #### Counterfactuals Instances -- Black/white box method -- Classification models -- Tabular and image data types +| Model-types | Task-types | Data-types | +| ----------- | -------------- | ----------- | +| TF/Kera | Classification | Tabular | +| Black-box | | Image | Let the model be given by $f$, and let $p_t$ be the target probability of class $t$. Let $0<\lambda<1$ be a hyperparameter. This method constructs counterfactual instances from an instance $X$ by running gradient descent on a new instance $X'$ to minimize the following loss. @@ -367,9 +407,11 @@ __TODO:__ #### Contrastive Explanation Method -- White box method -- Classification models -- Tabular and image data types +| Model-types | Task-types | Data-types | +| ----------- | -------------- | ----------- | +| TF/Kera | Classification | Tabular | +| Black-box | | Image | + CEM follows a similar approach to the above but includes three new details. Firstly an elastic net $\beta L_{1} + L_{2}$ regularizer term is added to the loss. This term causes the solutions to be both close to the original instance and sparse. @@ -396,6 +438,13 @@ __TODO:__ #### Counterfactuals Guided by Prototypes +| Model-types | Task-types | Data-types | +| ----------- | -------------- | ----------- | +| TF/Kera | Classification | Tabular | +| Black-box | | Image | +| | | Categorical | + + - Black/white box method - Classification models - Tabular, image and categorical data types @@ -425,6 +474,13 @@ This method produces much more interpretable results. As well as this, because t #### Counterfactuals with Reinforcement Learning +| Model-types | Task-types | Data-types | +| ----------- | -------------- | ----------- | +| Black Box | Classification | Tabular | +| | | Image | +| | | Categorical | + + This black box method splits from the approach taken by the above three significantly. Instead of minimizing a loss during the explain method call, it trains a new model when fitting the explainer called an actor that takes instances and produces counterfactuals. It does this using reinforcement learning. In reinforcement learning, an actor model takes some state as input and generates actions; in our case, the actor takes an instance with a target classification and attempts to produce an member of the target class. Outcomes of actions are assigned rewards dependent on a reward function designed to encourage specific behaviors. In our case, we reward correctly classified counterfactuals generated by the actor. As well as this, we reward counterfactuals that are close to the data distribution as modeled by an autoencoder. Finally, we require that they are sparse perturbations of the original instance. The reinforcement training step pushes the actor to take high reward actions. CFRL is a black-box method as the process by which we update the actor to maximize the reward only requires estimating the reward via sampling the counterfactuals. As well as this, CFRL actors can be trained to ensure that certain constraints can be taken into account when generating counterfactuals. This is highly desirable as a use case for counterfactuals is to suggest the necessary changes to an instance to obtain a different classification. In some cases, you want these changes to be constrained, for instance, when dealing with immutable characteristics. In other words, if you are using the counterfactual to advise changes in behavior, you want to ensure the changes are enactable. Suggesting that someone needs to be two years younger to apply for a loan isn't very helpful. From ff49d0505bc2cb208144bce3f3110e72ff665c94 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Thu, 18 Nov 2021 11:30:19 +0000 Subject: [PATCH 27/60] Add doc overview examples notebook --- examples/overview.ipynb | 1307 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 1307 insertions(+) create mode 100644 examples/overview.ipynb diff --git a/examples/overview.ipynb b/examples/overview.ipynb new file mode 100644 index 000000000..ee8d45797 --- /dev/null +++ b/examples/overview.ipynb @@ -0,0 +1,1307 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "9a4f4dbf-a083-46e9-8891-55ef9123cf4a", + "metadata": {}, + "source": [ + "## Alibi Overview Example\n", + "\n", + "This notebook aims to demonstrate each of the explainers Alibi provides on the same model and dataset. Unfortunately, this isn't possible as white-box neural network methods exclude tree-based white-box methods. Hence we will train both a tensorflow and a random forest model on the same dataset and apply the full range of explainers to see what insights we can obtain. " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "b42fe771-fbcd-45e0-a613-6d93a0d7e80d", + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "from io import BytesIO, StringIO\n", + "from io import BytesIO\n", + "from zipfile import ZipFile\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "%matplotlib inline\n", + "import seaborn as sns\n", + "sns.set(rc={'figure.figsize':(11.7,8.27)})\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import accuracy_score, f1_score\n", + "from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.model_selection import train_test_split\n", + "np.random.seed(0)" + ] + }, + { + "cell_type": "markdown", + "id": "7b561fff-7745-4219-bb84-1787cb7a3501", + "metadata": {}, + "source": [ + "## Preparing the data.\n", + "\n", + "We're using the [wine-quality](https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/) dataset, a numeric tabular dataset containing features that refer to the chemical composition of wines and quality ratings. To make this a simple classification task, we bucket all wines with ratings greater than five as good, and the rest we label bad. As well as this we normalize all the features." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "07175f7a-df18-435c-8508-2c37b0242322", + "metadata": {}, + "outputs": [], + "source": [ + "def fetch_wine_ds():\n", + " url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv'\n", + "\n", + " try:\n", + " resp = requests.get(url, timeout=2)\n", + " resp.raise_for_status()\n", + " except requests.RequestException:\n", + " logger.exception(\"Could not connect, URL may be out of service\")\n", + " raise\n", + " string_io = StringIO(resp.content.decode('utf-8'))\n", + " return pd.read_csv(string_io, sep=';')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "e4927000-30b8-4fe4-84eb-a5d778fa072a", + "metadata": {}, + "outputs": [], + "source": [ + "df = fetch_wine_ds()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "ae34b435-ed6c-4380-ba8b-1005cf7868ce", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "StandardScaler()" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['class'] = 'bad'\n", + "df.loc[(df['quality'] > 5), 'class'] = 'good'\n", + "\n", + "features = [\n", + " 'fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar',\n", + " 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density',\n", + " 'pH', 'sulphates', 'alcohol'\n", + "]\n", + "\n", + "df['good'] = 0\n", + "df['bad'] = 0\n", + "df.loc[df['class'] == 'good', 'good'] = 1\n", + "df.loc[df['class'] == 'bad', 'bad'] = 1\n", + "\n", + "data = df[features].to_numpy()\n", + "labels = df[['class','good', 'bad']].to_numpy()\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(data, labels, random_state=0)\n", + "X_train, X_test = X_train.astype('float32'), X_test.astype('float32')\n", + "y_train_lab, y_test_lab = y_train[:, 0], y_test[:, 0]\n", + "y_train, y_test = y_train[:, 1:].astype('float32'), y_test[:, 1:].astype('float32')\n", + "\n", + "scaler = StandardScaler()\n", + "scaler.fit(X_train)" + ] + }, + { + "cell_type": "markdown", + "id": "3a3ff7b6-50c7-4e8c-9436-188cefba608d", + "metadata": {}, + "source": [ + "### Creating an Autoencoder\n", + "\n", + "For some of the explainers, we need an autoencoder to check whether example instances are close to the training data distribution or not." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "af5d71d3-729a-4fee-9f5a-b60bbe8dadc0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'MSE-Loss')" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAscAAAH2CAYAAACcOCG7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABIgElEQVR4nO3deXiU5aH38d8zS5KZzGSf7OxLCKtKFEFRBBQqm1otitpWLR5taz3d3nraU9HqOT2cXsdTbbVW34qvpadWPBYVUamiVVQW2SHsJKzZ932ZmfePDFGKQoDMPDOT7+e6coWZPMP8ct0Sft7cz30bfr/fLwAAAACymB0AAAAACBeUYwAAACCAcgwAAAAEUI4BAACAAMoxAAAAEEA5BgAAAAJCVo4XL16sqVOnKi8vT3v37j3ttQcPHtS4ceO0ePHiEKUDAAAAQliOp02bpj/96U/Kyck57XVer1eLFi3S9OnTQ5QMAAAA6GIL1RsVFBT06LpnnnlGU6ZMUXNzs5qbm4OcCgAAAPhMWK053r17t9asWaNvfvObZkcBAABAHxSymeMz6ejo0M9//nP98pe/lNVqPeffp6qqUT5faE/E9njcqqhoCOl7InQY3+jG+EYvxja6Mb7RLZjja7EYSk11fenXw6YcV1RU6PDhw7r77rslSfX19fL7/WpsbNQjjzxicjoAAAD0BWFTjrOzs7Vu3brux7/5zW/U3Nysn/zkJyamAgAAQF8SsjXHjz76qK644gqVlpbqjjvu0KxZsyRJCxcu1Pbt20MVAwAAAPhSht/vD+0C3SBjzTF6G+Mb3Rjf6MXYRjfGN7qZueY4rHarAAAAAMxEOQYAAAACKMcAAABAAOUYAAAACKAcAwAAAAGUYwAAACCAcgwAAAAEUI4BAACAAMoxAAAAEEA5BgAAAAIoxwAAAEAA5RgAAAAIoByfp4+2l6isutnsGAAAAOgFlOPz9Me39+itT4rNjgEAAIBeQDk+T444m+oa28yOAQAAgF5AOT5Pbodd9U3tZscAAABAL6Acnye3M4ZyDAAAECUox+fJ5bCrvollFQAAANGAcnyeXE6WVQAAAEQLyvF5cjvsamzpkNfnMzsKAAAAzhPl+Dy5nTHy+6Wmlk6zowAAAOA8UY7Pk8thlyQ1tHSYnAQAAADni3J8ntzOrnLc2My6YwAAgEhHOT5P3TPHzcwcAwAARDrK8XlyO2MkSY0sqwAAAIh4lOPzxJpjAACA6EE5Pk92m0WOWJsaWHMMAAAQ8SjHvSAhPoZlFQAAAFGActwLEuJj1MgNeQAAABGPctwLEl2x7FYBAAAQBSjHvaBrWQVrjgEAACId5bgXJMTHsFsFAABAFKAc94KE+Bi1d/jU1uE1OwoAAADOA+W4FyTEx0oSN+UBAABEOMpxL0iI55Q8AACAaEA57gWJrq5yzEEgAAAAkY1y3AtOzBxzUx4AAEBkoxz3AtYcAwAARAfKcS9wOewyDKmBvY4BAAAiGuW4F1gshlwOOzPHAAAAEY5y3EtcDjtrjgEAACIc5biXuJ0xamDmGAAAIKJRjnuJ22Fnn2MAAIAIRznuJS6nXY3scwwAABDRKMe9xO20q7GlUz6/3+woAAAAOEeU417icsTI5/erubXT7CgAAAA4R5TjXuJ22CWJdccAAAARjHLcS9zOrnLcwLpjAACAiEU57iWuQDnmIBAAAIDIRTnuJa7AsgoOAgEAAIhclONe4nbGSGJZBQAAQCSjHPeSWLtVMTYLN+QBAABEMMpxL+o6CIRyDAAAEKkox73I5bCz5hgAACCCUY57kdsZowZmjgEAACIW5bgXuR12NbZwQx4AAECkohz3IpfDzswxAABABAtZOV68eLGmTp2qvLw87d279wuvefLJJzVr1izNmTNHN9xwgz788MNQxesVbqddre1edXT6zI4CAACAc2AL1RtNmzZNX//613Xrrbd+6TVjx47VnXfeKYfDod27d+u2227TmjVrFBcXF6qY58UV2Ou4saVDye5Yk9MAAADgbIVs5rigoEBZWVmnvWby5MlyOBySpLy8PPn9ftXW1oYgXe9wnzglj4NAAAAAIlLIZo7P1vLly9W/f39lZmae1etSU11BSnR6Ho9bufVtkiRbjF0ej9uUHAgOxjO6Mb7Ri7GNboxvdDNrfMOyHK9fv16PP/64nnvuubN+bVVVo3w+fxBSfTmPx62KigZ527puxjtaWqfs5MhYCoIzOzG+iE6Mb/RibKMb4xvdgjm+Fotx2snUsCvHmzdv1o9//GM99dRTGjx4sNlxzsqJNcfsWAEAABCZwmort23btun73/++nnjiCY0aNcrsOGfN5ej6fw3WHAMAAESmkJXjRx99VFdccYVKS0t1xx13aNasWZKkhQsXavv27ZKkhx9+WK2trXrwwQc1b948zZs3T3v27AlVxPNmtVgUH2dTI0dIAwAARCTD7/eHdoFukJm55liS/uX3n6h/hlv3Xjc6pBkQPKxri26Mb/RibKMb4xvdzFxzHFbLKqKB2xnDzDEAAECEohz3Mo6QBgAAiFyU417mctrV0MINeQAAAJGIctzL3E67Gps7FGVLuQEAAPoEynEvczti5PX51druNTsKAAAAzhLluJe5HHZJ7HUMAAAQiSjHvcztDJRjdqwAAACIOJTjXuYKlONGdqwAAACIOJTjXubuXlZBOQYAAIg0lONe5nbGSBIHgQAAAEQgynEvi4uxymox2OsYAAAgAlGOe5lhGF0HgbCsAgAAIOJQjoPA7YjhhjwAAIAIRDkOArfTzppjAACACEQ5DgKXw84hIAAAABGIchwELmaOAQAAIhLlOAjcDruaWjvl9fnMjgIAAICzQDkOgs/2Ou40OQkAAADOBuU4CFyOE0dIs+4YAAAgklCOg8DtDJRj1h0DAABEFMpxEJyYOeYgEAAAgMhCOQ6CE2uOG5g5BgAAiCiU4yA4MXNc38SaYwAAgEhCOQ4Cu82itMQ4lVQ1mR0FAAAAZ4FyHCQ5afE6VkE5BgAAiCSU4yDJTXeptLpZnV4OAgEAAIgUlOMgyfHEy+vzq6Sq2ewoAAAA6CHKcZDkelySpKMVjSYnAQAAQE9RjoMkM8Upq8WgHAMAAEQQynGQ2KwWZaU6uSkPAAAgglCOgyjH49IxZo4BAAAiBuU4iHI98aqqb1Nza6fZUQAAANADlOMgygnclHesktljAACASEA5DqJcT7wk6SjrjgEAACIC5TiIUhPi5Ii1smMFAABAhKAcB5FhGMpJc+lYOeUYAAAgElCOgyzHE69jlU3y+/1mRwEAAMAZUI6DLNfjUlNrp2ob282OAgAAgDOgHAfZZzflsbQCAAAg3FGOg+zEdm6UYwAAgPBHOQ4yl8OuJFeMjpaznRsAAEC4oxyHQC7HSAMAAEQEynEI5HjidbyqWV6fz+woAAAAOA3KcQjkelzq9PpUXtNidhQAAACcBuU4BHK7b8pj3TEAAEA4oxyHQFaqU4YhHeWkPAAAgLBGOQ6BGLtVGclOtnMDAAAIc5TjEMn1xOsYyyoAAADCGuU4RHI8LlXUtqit3Wt2FAAAAHwJynGI5Hri5Zd0vIrZYwAAgHBFOQ6R7h0ruCkPAAAgbFGOQ8ST5FCMzcJ2bgAAAGGMchwiFouh7LR4dqwAAAAIY5TjEMrxxOsY5RgAACBsUY5DKNfjUn1zh+qb2s2OAgAAgC9AOQ6hEzflMXsMAAAQnkJSjhcvXqypU6cqLy9Pe/fu/cJrvF6vHn74YU2fPl1XX321li1bFopoIZXriZckHWHHCgAAgLAUknI8bdo0/elPf1JOTs6XXvP666/r8OHDWrVqlf7yl7/oN7/5jY4ePRqKeCGTEB+j9CSHCg/VmB0FAAAAXyAk5bigoEBZWVmnvWblypW66aabZLFYlJKSounTp+utt94KRbyQMQxDY4ematehGrV1cFIeAABAuLGZHeCEkpISZWdndz/OyspSaWnpWf8+qamu3ozVYx6Pu0fXXTm+n9759KiO17bqkpGZQU6F3tLT8UVkYnyjF2Mb3Rjf6GbW+IZNOe4tVVWN8vn8IX1Pj8etioqGHl2bkRCr2BirPtx4RIMCa5AR3s5mfBF5GN/oxdhGN8Y3ugVzfC0W47STqWGzW0VWVpaOHz/e/bikpESZmdE3s2qzWjR6UIq2HqiS3x/aEg8AAIDTC5tyPHPmTC1btkw+n0/V1dV65513NGPGDLNjBcW4IWmqaWhj1woAAIAwE5Jy/Oijj+qKK65QaWmp7rjjDs2aNUuStHDhQm3fvl2SNG/ePOXm5uqaa67R1772NX3nO99Rv379QhEv5MYMSZUhaev+SrOjAAAA4HMMf5T92364rzk+4dEXPpUk/evXC4IRCb2IdW3RjfGNXoxtdGN8oxtrjvugcUNSVXS8XnUcJQ0AABA2KMcmGTc0TX5J2w9UmR0FAAAAAZRjk/RLdynZHautB1h3DAAAEC4oxyYxDEPjhqRqR1G1Ojp9ZscBAACAKMemGjs0TW3tXu09Umt2FAAAAIhybKr8Acmy2yxs6QYAABAmKMcmirVblT8gWVv2V3JaHgAAQBigHJts3NA0Vda1qqSq2ewoAAAAfR7l2GTjhqRKErtWAAAAhAHKsclSEuLUL92lrfvZ7xgAAMBslOMwMG5oqvYfrVNjS4fZUQAAAPo0ynEYGDckTT6/XzsOMnsMAABgJspxGBiUlaCUhFit2V5idhQAAIA+jXIcBiwWQ1dekKPC4hqVVDWZHQcAAKDPohyHiSvGZctqMfTepmNmRwEAAOizKMdhIjE+RhePSNdHO0rU2t5pdhwAAIA+iXIcRqZelKuWNq/W7iwzOwoAAECfRDkOI0NyEtQ/3aXVm45ynDQAAIAJKMdhxDAMTR2fq6MVTdp3tM7sOAAAAH0O5TjMTBiZofg4m1ZvOmp2FAAAgD6HchxmYu1WXTYmSxv3VKi2sc3sOAAAAH0K5TgMXXVRjrw+v/6+5bjZUQAAAPoUynEYykh2avTgFL2/5Zg6vT6z4wAAAPQZlOMwNfWiXNU1tmvzvkqzowAAAPQZlOMwNXZwqtIS47R6IzfmAQAAhArlOExZLIauujBHe47U6mhFo9lxAAAA+gTKcRibPC5bdptFqzYcMTsKAABAn0A5DmMuh11XjM3WJztKVVXXanYcAACAqEc5DnMzJ/SXJL21/rDJSQAAAKIf5TjMpSbGaeKoTH2w9bjqmtrNjgMAABDVKMcR4NqJA9Tp9WnVBmaPAQAAgolyHAEyU5y6eES63tt0TE2tHWbHAQAAiFqU4wgxa+JAtbZ79S77HgMAAAQN5ThC9Et3adyQVP1twxG1tneaHQcAACAqUY4jyOxJA9XU2qm/bzludhQAAICoRDmOIENyEpU/IFlvrT+sjk6v2XEAAACiDuU4wsyeOEB1je1as73U7CgAAABRh3IcYUYMSNbg7AS9ufaQOr0+s+MAAABEFcpxhDEMQ7MnDlRlXavWFZaZHQcAACCqUI4j0Lihqcr1uLRy7SH5/H6z4wAAAEQNynEEMgxDsyYOUElVszbvrTQ7DgAAQNSgHEeoi0ekKz3ZoTc+KZaf2WMAAIBeQTmOUBaLoWsvHaDi0gYVFteYHQcAACAqUI4j2MRRmUp2x+qNT4rNjgIAABAVKMcRzG6zaMYl/bX7cK32H60zOw4AAEDEoxxHuCvHZcvlsDN7DAAA0AsoxxEuNsaqqwtytfVAlQ6XNZgdBwAAIKJRjqPA1PG5io2xauXaQ2ZHAQAAiGiU4ygQH2fX1AtztGF3ucqqm82OAwAAELEox1Himov7yWqx6M11zB4DAACcK8pxlEh0xWryuCx9tL1U1fWtZscBAACISJTjKPKVS/rL75feWnfY7CgAAAARiXIcRdKSHJo4KkMfbD2uuqZ2s+MAAABEHMpxlLl24gB1dPq0agOzxwAAAGeLchxlslLjdXF+ulZvOqbGlg6z4wAAAEQUynEUmjVxoNravXp341GzowAAAEQUynEU6pfu0gVD0/TOp0fU0tZpdhwAAICIEbJyXFRUpPnz52vGjBmaP3++iouLT7mmqqpKd999t+bMmaOvfOUreuihh9TZSbk7F7MnDVRTa6fe23zM7CgAAAARI2TleNGiRVqwYIHefvttLViwQA8++OAp1zz99NMaMmSIXn/9db322mvauXOnVq1aFaqIUWVwdoJGDUrR2+sPq63Da3YcAACAiBCSclxVVaXCwkLNnj1bkjR79mwVFhaqurr6pOsMw1BTU5N8Pp/a29vV0dGhjIyMUESMSnMmDVRDc4c+2Hrc7CgAAAARwRaKNykpKVFGRoasVqskyWq1Kj09XSUlJUpJSem+7tvf/rbuu+8+XX755WppadGtt96q8ePHn9V7paa6ejV7T3k8blPe93Q8HrdGfXJIqzYc0U1X58lus5odKWKF4/ii9zC+0YuxjW6Mb3Qza3xDUo576q233lJeXp7+3//7f2pqatLChQv11ltvaebMmT3+PaqqGuXz+YOY8lQej1sVFQ0hfc+emnFxrh77y1Ytf2+fplyQY3aciBTO44vzx/hGL8Y2ujG+0S2Y42uxGKedTD3nZRVr167V+vXre3RtVlaWysrK5PV2rX31er0qLy9XVlbWSdctXbpUc+fOlcVikdvt1tSpU7Vu3bpzjQhJowamaFCWWys/OSSvz2d2HAAAgLDW43J82223aePGjZKkZ555Rj/4wQ/0wx/+UE8//fQZX5uamqr8/HytWLFCkrRixQrl5+eftKRCknJzc/XBBx9Iktrb2/XJJ59o2LBhPf5mcCrDMDR70kBV1rVqXWGZ2XEAAADCWo/L8b59+3TBBRdIkpYtW6YXXnhBL730kl588cUevf6hhx7S0qVLNWPGDC1dulQPP/ywJGnhwoXavn27JOmnP/2pNm7cqDlz5ui6667TwIED9bWvfe0svyX8owuGpiknLV5vrTssvz+0S04AAAAiSY/XHPt8PhmGocOHuwrW0KFDJUl1dXU9ev2QIUO0bNmyU55/9tlnu3/dv39/LVmypKeR0EOGYWjGJf313Mpd2lFUrTGDU82OBAAAEJZ6XI7Hjx+vX/ziF6qoqNDVV18tSTp8+LCSk5ODFg6959JRGXrlgwN6a91hyjEAAMCX6PGyil/+8pdKSEhQXl6e7rvvPknSwYMH9fWvfz1o4dB7bFaLrr64n3YdqtGhUu7uBQAA+CI9njlOTk7WD37wg5OemzJlSm/nQRBdOS5Hr39UrDfXHdI980abHQcAACDs9HjmeMmSJdq1a5ckacuWLZoyZYqmTp2qzZs3By0cepczzqYpF+To090VqqxtMTsOAABA2OlxOX7++eeVm5srSfqv//ovffOb39S9996rf//3fw9aOPS+6QW5Mgxp1YYjZkcBAAAIOz0uxw0NDXK73WpsbNSePXt0++2366abblJRUVEw86GXpSTE6dKRGfpg23E1tnSYHQcAACCs9LgcZ2VladOmTVq5cqUKCgpktVrV2Ngoq9UazHwIghkT+qu9w6f3Nh01OwoAAEBY6fENef/n//wffe9731NMTIyeeOIJSdJ7772nMWPGBC0cgiPX49KYwal6d+NRzZzQX3Yb/4MDAAAgnUU5vvLKK7VmzZqTnps5c6ZmzpzZ66EQfDMn9Nev/rxZH+0o1ZQLcsyOAwAAEBZ6XI4lqbi4WCtWrFB5ebnS09M1e/ZsDRw4MEjREEwj+idpQKZbb68/oivGZctiGGZHAgAAMF2P1xyvXr1aN9xwg4qKipSYmKiioiJ99atf1bvvvhvMfAgSwzD0lQn9VVbdrM17K82OAwAAEBZ6PHP83//933rqqad06aWXdj+3bt06PfLII5o2bVpQwiG4xud5lJ7k0IqPi3XR8DQZzB4DAIA+rsczx6WlpSooKDjpufHjx6u0tLTXQyE0rBaLZk8aqENlDdq6v8rsOAAAAKbrcTkeMWKEnnvuuZOeW7JkifLz83s9FEJn4ugMpSc59OqaIvn9frPjAAAAmKrHyyoeeugh3XvvvXrhhReUlZWlkpISORwOPf3008HMhyCzWiyaNWmAlqzcra0HqnTB0DSzIwEAAJimx+V4yJAhWrlypbZs2dK9W8XYsWNVVlYWzHwIgYmjMrXi42K9uqZI44aksvYYAAD0WT1eViFJNptNBQUFuvbaa7vXH19zzTVBCYbQsVktmj1xoA6VNmjbAdYeAwCAvuusyvEXYZ1qdJg4OlNpiXGsPQYAAH3aeZdj/gk+OtisXTtXFDN7DAAA+rDzLseIHpMCs8evfcTsMQAA6JvOeEPelVde+aWzwxSo6HJi9vj5N3dr+8EqjR3CzhUAAKBvOWM5/tWvfhWKHAgTk0Z/tnPFmMHsXAEAAPqWM5bjSy65JBQ5ECY+P3u87UCVxrHvMQAA6EPOac3xRRdd1Ns5EEYmjc6UJylOL//9gHw+ls4AAIC+45zKMWuNo5vNatGNU4bqWEWTPtpeYnYcAACAkGG3CnyhgjyPhmQn6JUPD6qt3Wt2HAAAgJA4p3K8cuXK3s6BMGMYhr42dajqGtv19vrDZscBAAAIiTOW4zfffPOkxwcPHlRWVlb34+eff77XQyE8DMtN0vg8j95cd1h1jW1mxwEAAAi6M5bjn/3sZyc9vvnmm096/MQTT/RuIoSVG68cok6vT8vXFJkdBQAAIOjOWI7/8ea7Mz1GdMlIceqqC3P0wdbjOlbZZHYcAACAoDpjOf7HQyDO9BjRZ85lAxUXY9Oy9/abHQUAACCoenRDnt/vl8/nk9fr/cLHiG5uZ4xmTxygbQeqtKu42uw4AAAAQXPGE/Kam5s1cuTI7sd+v7/7sd/vZ+a4j5hekKvVm47qL+/t14PfvFgWxh0AAEShM5bjd999NxQ5EObsNqtuuHKInn29UB9vL9XlY7PO/CIAAIAIc8ZynJOT84XP19XVKTExsdcDIXxNGJmh1RuPatn7+3XBsDS5HHazIwEAAPSqM645Xr58uT788MPux9u3b9eVV16pSy+9VDNmzNDBgweDGhDhw2IYun1GnhpbOvTKB4w7AACIPmcsx3/4wx/k8Xi6Hz/44IOaNGmSXnvtNU2aNEn/+Z//GdSACC/9M9yaPr6f/r75mA4erzc7DgAAQK86YzkuLS3V8OHDJUklJSXau3evfvKTn2jYsGH64Q9/qG3btgU9JMLLdZMHKdEVoxfe3i2vz2d2HAAAgF5zxnJstVrV0dEhSdq8ebMGDx6spKQkSZLD4VBra2tQAyL8OGJtunnaMB0ua9R7m46ZHQcAAKDXnLEcX3LJJfrv//5v7d69W3/84x911VVXdX/t4MGDJy25QN9x8Yh0jRqUor9+eFC1jW1mxwEAAOgVZyzHP/vZz1RYWKhbbrlFDodDCxcu7P7aq6++qsmTJwc1IMKTYRi67Zrh6uj068V395kdBwAAoFeccSs3r9er//iP/+g+8KOhoUENDQ2SpAULFgQ9IMJXRrJTsyYO0KtrijR5bLVGDUoxOxIAAMB5OWM5njp16kmn4Pn9/pO+bhiGdu3a1fvJEBGuvbS/PtlZqqWr9ugXd02Q3dajE8kBAADC0hnL8YgRI9Ta2qrrr79ec+fOVXp6eihyIULYbVbdds1wPfaXrXrtoyJ99cohZkcCAAA4Zz06BOSJJ55QbW2tbrnlFt19991644031NHRIavVKqvVGoqcCGOjB6Xq8jFZWrn2kPYeqTU7DgAAwDnr0b+BDx8+XD/5yU+0evVqffOb39T777+vyy+/XDt37gx2PkSIW6YPU1pinP7vikI1t3aaHQcAAOCcnNUC0eLiYm3YsEFbtmxRfn6+EhISgpULEcYRa9PCOaNUVd+q/3lnr9lxAAAAzskZ1xzX1tbqjTfe0F//+lc1NTVp3rx5Wrp0qbKzs0ORDxFkaE6i5kwaqNc+KtbYIam6JD/D7EgAAABn5YzlePLkycrNzdW8efM0btw4SdKhQ4d06NCh7msmTpwYvISIKLMnDdSOomq98NYeDc1JVEpCnNmRAAAAeuyM5djj8aitrU0vvfSSXnrppVO+bhiG3n333aCEQ+SxWS1aOGekHnpug/7vikL96JYLZfncVoAAAADh7IzlePXq1aHIgSiSkezULdOH6fk3d2vV+iOaOaG/2ZEAAAB6hBMbEBSTx2bpwmFp+t+/H9Ch0gaz4wAAAPQI5RhBYRiGvvmVEXI77frdqzvY3g0AAEQEyjGCxu2M0T3zRquytlVL3tx1ytHjAAAA4YZyjKAa3i9JX50yWBv3VOidT4+aHQcAAOC0KMcIupmX9NcFQ9P00nv7deBYndlxAAAAvlTIynFRUZHmz5+vGTNmaP78+SouLv7C61auXKk5c+Zo9uzZmjNnjiorK0MVEUFiGIbump2vZHesfvfqDjW2dJgdCQAA4AuFrBwvWrRICxYs0Ntvv60FCxbowQcfPOWa7du367e//a2ee+45rVixQv/zP/8jt9sdqogIovg4u759/WjVN7Xr2dcL5WP9MQAACEMhKcdVVVUqLCzU7NmzJUmzZ89WYWGhqqurT7ru+eef15133imPxyNJcrvdio2NDUVEhMDAzATdMm2Yth+s0spPDp35BQAAACF2xkNAekNJSYkyMjJktVolSVarVenp6SopKVFKSkr3dQcOHFBubq5uvfVWNTc36+qrr9a9994r4yxOWEtNdfV6/p7weJjh7ombrhmhQxVNWv7hQV2Un6lxwz1mR+oRxje6Mb7Ri7GNboxvdDNrfENSjnvK6/Vqz549WrJkidrb2/Wtb31L2dnZuu6663r8e1RVNcrnC+0/2Xs8blVUcNBFT9181RAdOFKrf39+vf71GwXKTHGaHem0GN/oxvhGL8Y2ujG+0S2Y42uxGKedTA3JsoqsrCyVlZXJ6/VK6irB5eXlysrKOum67OxszZw5UzExMXK5XJo2bZq2bdsWiogIobgYm+6/caysVkO/XraVG/QAAEDYCEk5Tk1NVX5+vlasWCFJWrFihfLz809aUiF1rUVes2aN/H6/Ojo6tHbtWo0YMSIUERFiaUkO3XfDWFXXt+qpv25Xp9dndiQAAIDQ7Vbx0EMPaenSpZoxY4aWLl2qhx9+WJK0cOFCbd++XZI0a9Yspaam6tprr9V1112noUOH6sYbbwxVRITY0NxE3XFtvnYfrtULb+/hBD0AAGA6wx9ljYQ1x5Hnrx8c1OsfF+trVw3VzAn9zY5zCsY3ujG+0YuxjW6Mb3Qzc81xWN2Qh75p3uRBKq1u1rL39isj2aELI2QHCwAAEH04PhqmsxiG7pqVr4FZCfr96zt1uIyZAAAAYA7KMcJCjN2q7311jOLj7PrtK9vV1MoOFgAAIPQoxwgbia5Yffu60appaOOIaQAAYArKMcLKkJxE3TxtmLYdqNIbHxebHQcAAPQxlGOEnakX5ejSURla/mGRdhRVmR0HAAD0IZRjhB3DMPSNGSOU7YnXM68VqrKuxexIAACgj6AcIyzFxlj13evHyOvz6XfLd6ijkxP0AABA8FGOEbYyUpy6a9ZIFZU06M/v7DU7DgAA6AMoxwhrFw336CuX9tf7W47r4x0lZscBAABRjnKMsHfDFYM1vF+S/vj2XpVUNZkdBwAARDHKMcKe1WLRP80dJbvNoqdf3amOTq/ZkQAAQJSiHCMiJLtjddesfB0pb9RfVu83Ow4AAIhSlGNEjHFD03TNxf20etMxbdxTbnYcAAAQhSjHiCg3ThmigZluLVm5m/2PAQBAr6McI6LYrBbdM2+UfH6/fv/aTnV62f8YAAD0HsoxIk56slPfmDlCB47Va/mHRWbHAQAAUYRyjIg0YWSGrhiXpZVrD2lHUZXZcQAAQJSgHCNi3TJ9uHLS4vV/Xy9UbWOb2XEAAEAUoBwjYsXarbpn3ii1tnv17OuF8vn8ZkcCAAARjnKMiJbjcenWq4dr16Earfik2Ow4AAAgwlGOEfEuH5ulS0dl6NU1RdpzuMbsOAAAIIJRjhHxDMPQ7dfkKT3Jod+/tlP1ze1mRwIAABGKcoyo4Ii16Z55o9XY0qE/rNgln5/1xwAA4OxRjhE1BmS6NX/qMG0/WKVV64+YHQcAAEQgyjGiytSLcjR+uEf/+/cD2n+szuw4AAAgwlCOEVUMw9Ad145QsjtWv1u+g/XHAADgrFCOEXWccXZ9+/rRamju0LOv7WT/YwAA0GOUY0SlgZkJuu2a4dpZXKNX1xSZHQcAAEQIyjGi1uSxWbp8TJZe/7hY2w5Umh0HAABEAMoxopZhGLrtmuHql+7Ss68XqrK2xexIAAAgzFGOEdVi7FZ95/rR8vmlJ5fvUEen1+xIAAAgjFGOEfXSk5361qx8HSpt0J/f2Wd2HAAAEMYox+gTLhzu0bWXDtD7W47rg63HzY4DAADCFOUYfcb1VwzS6EEpeuGtPdpRVGV2HAAAEIYox+gzrBaL7r1utHI88Xrqrzt0pLzR7EgAACDMUI7Rpzhibbr/xrFyxNr062VbVdPQZnYkAAAQRijH6HNSEuJ0/41j1dLWqV8v26qWtk6zIwEAgDBBOUaf1D/DrW9fN1rHKpr0u+U71On1mR0JAACEAcox+qzRg1P19Zl52lFUraWr9srv95sdCQAAmMxmdgDATFeMy1ZFbYve+OSQ0pMduvbSAWZHAgAAJqIco8+7/orBqqht0cvvH1BGskPj89LNjgQAAEzCsgr0eRbD0J3X5mtIdoKefb1QRSX1ZkcCAAAmoRwDkmLsVn33q2Pldsboif/dpur6VrMjAQAAE1COgYDE+Bjdf9NYtbV79fjL29TazhZvAAD0NZRj4HNyPS7de91oHa1o1O9f3Smfjx0sAADoSyjHwD8YMzhVC6YP19YDVXrpvf1mxwEAACHEbhXAF5g2Plel1c1ateGI+mUl6LKRGWZHAgAAIUA5Br7EzdOGqraxTX94baeaGtt0zSX9zY4EAACCjGUVwJewWiz6p7mjdNnYbL24er9WrT9sdiQAABBklGPgNGxWi35023gV5Hn04ur9epuCDABAVKMcA2dgs1p099xRKhiRrr9QkAEAiGqsOQZ6wGa16O45IyVJf1ndtYPFDNYgAwAQdSjHQA/ZrBb901wKMgAA0YxyDJyFrpv0RsoQBRkAgGhEOQbOktVi0d1zR8ovCjIAANGGcgycA6vl5DXIhsQ+yAAARIGQ7VZRVFSk+fPna8aMGZo/f76Ki4u/9NqDBw9q3LhxWrx4cajiAWftxE16J7Z5Yx9kAAAiX8jK8aJFi7RgwQK9/fbbWrBggR588MEvvM7r9WrRokWaPn16qKIB5+zENm/jKcgAAESFkJTjqqoqFRYWavbs2ZKk2bNnq7CwUNXV1adc+8wzz2jKlCkaOHBgKKIB561rF4vPCvLrHxfL7/ebHQsAAJyDkKw5LikpUUZGhqxWqyTJarUqPT1dJSUlSklJ6b5u9+7dWrNmjV544QU99dRT5/ReqamuXsl8tjwetynvi9Doyfj+612X6td/3qy/fnBQrZ0+/dP1Y2W1GCFIh/PFn9/oxdhGN8Y3upk1vmFzQ15HR4d+/vOf65e//GV3iT4XVVWN8vlCO2vn8bhVUdEQ0vdE6JzN+N5+zTA5Yix68+NilVY06p/mjlKM/dz/e0bw8ec3ejG20Y3xjW7BHF+LxTjtZGpIynFWVpbKysrk9XpltVrl9XpVXl6urKys7msqKip0+PBh3X333ZKk+vp6+f1+NTY26pFHHglFTOC8WQxDX7tqqJLdsXrxnX361Yubdf+N4+Ry2M2OBgAAeiAk5Tg1NVX5+flasWKF5s2bpxUrVig/P/+kJRXZ2dlat25d9+Pf/OY3am5u1k9+8pNQRAR61dUF/ZTsitUzrxfq3/+4UT/42jilJTnMjgUAAM4gZLtVPPTQQ1q6dKlmzJihpUuX6uGHH5YkLVy4UNu3bw9VDCBkCkak64fzx6m+qV3/9seNKiqpNzsSAAA4A8MfZbfVs+YYve18x/dYRaN+vWyr6ps7dMdXRujSUZm9mA7niz+/0YuxjW6Mb3Qzc81xyGaOgb4qx+PSz795sQZlJeiZ1wu17L39If8fOAAA0DOUYyAEEpwx+tHNF+iqC3P05rrDevzlbWpu7TA7FgAA+AeUYyBEbFaLbp+Rp6/PyFNhcbUeeWGjSqqazI4FAAA+h3IMhNiUC3P041suVHNrhx594VNt3lthdiQAABBAOQZMMLxfkh78xsVKT3bqN69s14vv7lOn12d2LAAA+jzKMWCS1MQ4/fS28Zp2Ua5WbTiixX/apKq6VrNjAQDQp1GOARPZbRbdes1w3XvdaB2rbNJDS9Zry/5Ks2MBANBnUY6BMHDxiHQtuuNipSbE6YmXt+ml9/azzAIAABNQjoEwkZHs1M++Pl5TLszRW+sO69EXPtXR8kazYwEA0KdQjoEwYrdZ9fUZefrO9WNU09Cmh5/foBUfF8vrYxYZAIBQsJkdAMCpxud5NKxfov60aq9e+eCgNu2t0F2zRyonLd7saAAARDVmjoEwleCM0b3XjdY980apsq5VDy9Zr5VrDzGLDABAEDFzDIS5S/IzlNc/WX98e49efv+ANu+r0LdmjVRGitPsaAAARB1mjoEIkBgfo+9cP1p3zxmpkspmLVqyXqs3HZXf7zc7GgAAUYVyDEQIwzB06ahMPfKtCRqWm6Slq/bqsZe2qrqeg0MAAOgtlGMgwiS7Y/WDr43T7dcM176jtfr5H9brkx2lzCIDANALKMdABDIMQ1ddlKuH77xEOWnxenZFof7rL1t0uKzB7GgAAEQ0yjEQwTKSnXrg1ou0YPowHSpt0MNLNui5lbtU29hmdjQAACISu1UAEc5iMTS9oJ8mjs7U6x8V692NR7VhV7m+cml/zbikv2LtVrMjAgAQMSjHQJSIj7Pr5mnDdNVFOXr5/QNa/mGR/r7luK6fPFiTRmfKYjHMjggAQNhjWQUQZTKSnfrO9WP0wK0XKckVo+dW7tJDSzZox8EqbtoDAOAMKMdAlBreL0n/+vUC3TNvlNo6OvXYS1v1X3/ZokOl3LQHAMCXYVkFEMUMw9Al+Rm6cJhH728+ptc+KtLDz2/QxFEZmnf5IKUnc8oeAACfRzkG+gC7zaKrL+6ny8ZkauXaw/rbp0e0rrBcE0ZmaPakAcpKjTc7IgAAYYFyDPQhzji7bpwyRNMLcvXWusN6f8sxrd1ZqoIR6ZozaaBy011mRwQAwFSUY6APSnLF6uZpw3TtxAFatf6I3t10VBt2l+vCYWm6duIADclONDsiAACmoBwDfViCM0Y3ThmimRP6651Pj+idT49q875KDc1N1IyL++vCYWlsAQcA6FMoxwDkcth13eTBmnFJf63ZVqK/fXpET/51u9KTHbq6oJ8uH5Ol2BgOEwEARD/KMYBujlibrr64n6aOz9GmvZV6e/1h/elve7X8w4O64oJsTb0wV6mJcWbHBAAgaCjHAE5htVh08Yh0FeR5dOBYvd7ecFhvrev6uHCYR9PG52pE/yQZBksuAADRhXIM4EsZhqGhuYkamjtGVXWtem/zMX2w9bg27a1Qjide0y7K1cRRmSy5AABEDcoxgB5JTYzTjVOGaO5lA7VuV5ne3XhUL7y9R//79wOaPC5bUy/KUVqiw+yYAACcF8oxgLMSY7dq8thsXT4mS/uO1umdT49o1fojenv9YV003KPp43M1vB9LLgAAkYlyDOCcGIah4f2SNLxfkqrqWrV681F9sOW4Nu6pUP8Ml668IEcT8tPljLObHRUAgB6jHAM4b6mJcbppylDNvWyQPtlZqtUbj+qPb+/Ri+/u00XDPbp8bJbyByTLwmwyACDMUY4B9JpYu1VTLsjRleOydaisQR9uK9G6nWVaV1im1IRYTRqdpcvGZik9ibXJAIDwRDkG0OsMw9DAzAQNzEzQzVOHavO+Sn24rUQrPi7W6x8Xa3i/JF02JlMFeelyxPJjCAAQPvhbCUBQ2W1WXZKfoUvyM1Rd36pPdpZqzbYSLVm5W3/6214V5KXrsjFZyuuXxFHVAADTUY4BhExKQpxmTRyoay8doAPH6rVme4k27C7TxztKlRAfo4uGpemiPI9G9E+WzWoxOy4AoA+iHAMIuc8OF0nULdOHaev+Sm3cU6FPdpbp/S3H5Yy1adzQNI3P82j0oBTF2DlkBAAQGpRjAKaKtX+27KK9w6vC4hpt3FuuLfsq9cnOUsXarRozJFUFeR6NHZKquBh+bAEAgoe/ZQCEjRi7VRcMS9MFw9LU6fVpz5FabdxToU17K/Tp7nLZbRaNHpSighHpGjcklT2UAQC9jnIMICzZrBaNGpiiUQNTdNvVw7XvaK0+DRTlzfsqZbV0HUJy4bA0XTjMo9TEOLMjAwCiAOUYQNizWAzl9U9WXv9k3TJ9mA4er9fmfRXasq9S//POPv3PO/vUP93VPes8IMPN8dUAgHNCOQYQUSyGoaE5iRqak6ibpgxVaXWzNu/rmk1+/aNivfZRsZJcMRo3NE3jhqZp5IBkbugDAPQY5RhARMtMceorEwboKxMGqL6pXdsOVGnr/kqtLSzT37ccV4zNovwByRo3LE3jhqQp2R1rdmQAQBijHAOIGgnxMbp8bJYuH5uljk6f9hyp0db9Vdqyr1JbD1RJ2qOBmW5dEJhV7p/hMjsyACDMGH6/3292iN5UVdUony+035LH41ZFRUNI3xOhw/hGPr/fr2MVTdqyv1Jb91fq4PF6+SUlu2M1brhH/T3xGp6bpKxUJ2uVowh/dqMb4xvdgjm+Fouh1NQvnxxh5hhA1DMMQ7npLuWmuzR70kDVN7Vr64FKbT9QpS17KvT+xqOSJJfDrmG5iRqWm6SRA5OVm+6ShbIMAH0K5RhAn5MQH6PJY7M1eWy20tJc2rG3XHuP1GrfkVrtPVqrzfsqJXWV5ZEDkzVyYIpGDkhWWpLD5OQAgGCjHAPo0wzDUGaKU5kpTl0xLluSVNPQpsLiahUW16jwULXW7yqXJKUnOTSsX2L3bhlZafHMLANAlKEcA8A/SHbH6rIxWbpsTJb8fr+OVzWrsLhau4q7bvD7aHupJMkZa9OQnEQNzUlQXv9kDc5OkM1qMTk9AOB8UI4B4DQMw1BOWrxy0uJ1dUE/+f1+lde0aP+xOu07WqcDx+r014NVkooUa7dqeL8k5Q9IVv6AZPXLYM0yAEQayjEAnAXDMJSR4lRGilOXjcmSJDW2dGjP4RrtOtT18dJ7VZKk+DibhuUmaVi/rpv8Bma6mVkGgDBHOQaA8+Ry2DU+L13j89Ilda1Z3h0oyvuO1mrL/q4b/Ow2iwZlJWhYbqIGZyVoYFYCh5IAQJihHANAL0t2x2ri6ExNHJ0pSapratf+o7Xad7RrKcabaw/LF9hiPskVo0FZCZ/7cMsZZzczPgD0aSErx0VFRXrggQdUW1urpKQkLV68WAMHDjzpmieffFIrV66UxWKR3W7X97//fU2ePDlUEQEgKBLjY06aWW7r8OpIWaOKSuq7P05sHydJGSlODc5K0ODsrsLcL90lu43lGAAQCiErx4sWLdKCBQs0b948vfrqq3rwwQf1wgsvnHTN2LFjdeedd8rhcGj37t267bbbtGbNGsXFxYUqJgAEXazdqqG5iRqam9j9XFNrh4pLGrrLcmFxtT7Z2bUrhtXStd1cVlq8slOdyk6LV3ZqvDJSnJRmAOhlISnHVVVVKiws1JIlSyRJs2fP1iOPPKLq6mqlpKR0X/f5WeK8vDz5/X7V1tYqMzMzFDEBwDTxcXaNGpSiUYO6fib6/X7VNLTp4PF6FZc26Hhlkw6XNWjj7nL5A68xDCk92amctHhlp31WmrNSnbLbrOZ9MwAQwUJSjktKSpSRkSGrteuHtdVqVXp6ukpKSk4qx5+3fPly9e/f/6yL8enOyg4mj8dtyvsiNBjf6Bau45ueLuUN8Zz0XFuHV8crGnWkrEGHSxt0OPB5y/5K+XxdtdliSDnpbg3OTtTgnAQNyk7U4JxEJbr63s1/4Tq26B2Mb3Qza3zD8oa89evX6/HHH9dzzz131q+tqmrs/gsiVDwetyoqGkL6nggdxje6ReL4uuwW5ecmKv9zyzI6On0qq27W8aomHa1o0tHyRm0/UKG/bz7afU2iK0bZqfHKTHUqK8WpzNSukwFTEuKicj/mSBxb9BzjG92COb4Wi3HaydSQlOOsrCyVlZXJ6/XKarXK6/WqvLxcWVlZp1y7efNm/fjHP9ZTTz2lwYMHhyIeAEQ8u82i3HSXctNduiT/s+cbWzq6ZpnLG3WkvFGl1c1au7NMLW2d3dfE2CxKTz5Rlh3KSO4qzRkpTrkc7JwBoG8JSTlOTU1Vfn6+VqxYoXnz5mnFihXKz88/ZUnFtm3b9P3vf19PPPGERo0aFYpoABDVXA678gemKH/gZz9v/X6/6pvaVVrdrJKqZpVWd30cKWvQpj0V3dvMSV0HmWSkOJWR7FB6ctfnjBSnUhPj5HbYZUThjDOAvs3w+/0hWYNw4MABPfDAA6qvr1dCQoIWL16swYMHa+HChfre976nMWPG6Ktf/aqOHTumjIyM7tf953/+p/Ly8nr8PiyrQG9jfKMb43uyTq9PFbUtKqtuUWl1s8prmlVW06KymmZV17eddG2M3aLUhDilJTqUmhintMBHamKcPIkOuZ3mlmfGNroxvtHNzGUVISvHoUI5Rm9jfKMb49tz7R1eVdS2qLymRZV1raqsa1VVfasq61pUVdeqptbOk66PsVkCpdnRPeOckexQeopTaQlxsliCW5wZ2+jG+Ea3qF9zDACIfDF2q3I8LuV4vvgvlZa2TlUFSnNlXVeBrqprVUVdi/YerVVbu7f7WpvVkCfJoey0eOWkxSvX41KOJ17pyQ5ZLezdDMA8lGMAQK9wxNq6bwr8RyfWOZfVdC3XKKtpVmlVs46WN2rTnoruvZttVkOZKfHyJMXJk+ToWqoR+OxJdCg2hv2bAQQX5RgAEHSGYSjRFatEV6yG90s66WttHd6uolzRqGOVTTpe2aSymhbtLKpWe6fvpGsT4mPkSYpTepJDnsBHenLXDhtmr3EGEB0oxwAAU8XarRqQ6daAzJM3/Pf7/apv7lBlbYsq6lpUWduqitoWVdS2aM+RWq3dWabP32HiiLWdtLZ52IAUOWwWpSc72JIOQI9RjgEAYckwDCXGxygxPkZDchJP+XpHp0+VdV03CJbXtKi0plnl1c06cKxO6wvL5P+ouPva+Dhb11Z0KQ6lJ3UV6MxAiXbGUZwBfIZyDACISHabRVmp8cpKjT/lax2dXnUaFu0+WKnympau7eiqm7XvSJ3W/cOMs8thV2aKU+nJDiXGx8jtjFFCvF0J8TFKcMZ0fY6PicpTBAGcinIMAIg6dptV2R63HNZTC21Hp1flta0qr25WaU2zyqpbVF7TrN2Ha1Tf1K5O76nbgdptlq41zoldNwp6krvWO2cEPtus7LABRAvKMQCgT7HbrMoJbCH3j/x+v1ravGpobld9c7vqm9pV29iuyroWVdS2qrymRbuPnLwtnWFIqQlxygjMPmckO7tuGEx2KD0pTnYbO2wAkYRyDABAgGEYcsbZ5Awcm/1F/H6/Glo6Amudu2aeywInCR48XqeWNu9J1ye7Y7t21UhyKCUhVsnuWCW745TijlWSO1bxcTZ22QDCCOUYAICzYBhG11pkZ4yG/sONgieKc0VNi8prW7o/l9e2aHtRleob2/WPizZsVkN2m1V2qyGbzSKb1SK71aLYGKsykp3K8cQrOzVe2Z54pSXGsfYZCDLKMQAAveTzxfmLdtjo9PpU39Su6oY21QQ+6hrb1NHpU6fXpw6vT51evzo7fWpu69TuwzX6ZGdp9+tjbBZlpjiV5I5VgjNGia6umwVP7OrR9etYOWKtzEYD54hyDABAiNisFqUkxCklIa7Hr2lu7dDxymYdq2zU8cpmlVY3q7axTYfLGtTQ3CGv74tvIDxRlhOcMXI77XI7Y+Ry2OV22gOfY5QUKNfcUAh8hnIMAEAYc8bZNTQ3UUNzT52J9vn9amrpUH1Tu+qa2rs/1zW1q66xXfVNbaqsa1FRab0av6RIG5Lc8TFKdsUqyRWjJHds10y0K7Z7RrrrcQw3F6JPoBwDABChLIYht7Nrb+Ycz+mv9fv9am33qqGlQ43NHapvbldtY5tqG9pU29j165qGNh0s6SrSp9borlMIT17C8fmlHbHdj91Ou6wWZqMRmSjHAAD0AYZhyBFrkyPWpvQkx2mv7fT61NDcEdjKri0wE92m+qYO1TW3qz6wrKOuqV2t7d5TXm9IcjvtSoiPVWJ84LPrs1norh07uj6YjUa4oRwDAICT2KyW7vI6QO7TXtvW4f1sOUdgKUddYH/oE8+XVteqrqldnV7fKa93Oezd75Xk6pqBTnLHKimwtCPJ1TUbzUw0QoVyDAAAzlms3dp1auAZZqO7DljpVG1ju2oa21RT39b1uaFNNfWtqmloU3FpgxqaTt3uzjCkJFfsSTPOORkJ8nV65YixKi7WJkeMVY5Ym5yxNtZH47xQjgEAQNB1HbBilzPOruwvOJ3wBK/Pp/qmjq7lHCeKdEObahq6CvTxyibtKKpWW/vR076fM9bWfXPhiWLddYKhQ+nJTiW5YtjuDl+IcgwAAMKG1fLZko7TcSc4dOR4rVraOtXa7lVLW6da2rxqbu1QbWCNdG1j1+e9R2pU29h+0m4dsXar0pMdSk92KMUdp9SEWKUkxCk5IVYp7jglumI4cKWPohwDAICIExdrU5IrVkmu05foE7w+n6rq20468ru8pkXHKpq0/WCV2jtOXg9ttRhKTYhTWlKc0hLjlJrokCcxTmmJDqUmUp6jGeUYAABEPavFovQkh9KTHBo96OSv+f1+NbV2qrq+tev0wvpWVda3qqquVZV1rdqyv0r1Te0nvcZmNZSS0FWc0wKlOTstXjlp8fIkOWSxUJwjFeUYAAD0aYZhyOXoOjmwf8YX787R1uENlOWW7tJcVf/F5dlusygrxalsT7yyU+OVmeJUZqpTGckObhSMAJRjAACAM4i1W5WdFv+lNxO2tHWqpOrEMd9NOlbZpL1HarV2Z1n3NYak1MS4QFF2di3XSIhTamLXh9th5ybBMEA5BgAAOE+OWJsGZydocHbCSc+3tHWqvKZFJdVNKq1qVml115rn/UdLTjlAJcZmUUpCXPcx3smBNdUndt1IiI9RgtMuR6yNEh1ElGMAAIAgccTaNCDTrQGZJy/X8Pv9am7rVFVdYG1zYI1zdX2rahvbtf9onWob29TpPfUgb6vFUEJ81zHdCYHjwxPiu37d9XzgJMKEWGajzwHlGAAAIMQMw1B8nF3xcV++zvnEjYK1DW2qbWzrOtK7uf2zz03tqm/uUGl1s+qb2tXeeeoJhHabRSnurm3qUtxds9COwKEpXYen2OSItcoZ13VSYXwcs9KUYwAAgDD0+RsFc9NdZ7y+tb1T9c0dXcd2N7apuqGtaweO+jZVN7Sq8FCN6hrb5fOfOht9QozdotRAkU5OiFOyq6swdx3gYlN8nE2OWJtcDrsS4mNks0bfsd6UYwAAgCgQF2NTXIxN6ac5ytvv96u906fWtk61BA5PaW3rVGNrp2oCW9lVBQr10YNVqm889Tjvz3M57N3roRNdMXI57LJbLbJZLbLZLIFfG4q1W+WOj+la+uG0y+2MUWxMeO7cQTkGAADoIwyjq6jG2q1K7MH1Pr9frW2damrtVHNrp5rbOtXc2qHGlg7VNbWrrqld9Y1dnw8cq1NjS4c6Ov3q9J66xOMfxdgtGjkgRd+7cez5f2O9iHIMAACAL2QxjMCSCvtZvc7v98vr86uj06dOr09t7V41tHQt+eheN93UrtTEuCAlP3eUYwAAAPQqwzBksxrda5LdTintNMs9wkn0raIGAAAAzhHlGAAAAAigHAMAAAABlGMAAAAggHIMAAAABFCOAQAAgADKMQAAABBAOQYAAAACKMcAAABAAOUYAAAACKAcAwAAAAGUYwAAACCAcgwAAAAEUI4BAACAAMoxAAAAEEA5BgAAAAIoxwAAAECAzewAvc1iMfrU+yI0GN/oxvhGL8Y2ujG+0S1Y43um39fw+/3+oLwzAAAAEGFYVgEAAAAEUI4BAACAAMoxAAAAEEA5BgAAAAIoxwAAAEAA5RgAAAAIoBwDAAAAAZRjAAAAIIByDAAAAARQjgEAAIAAyvF5KCoq0vz58zVjxgzNnz9fxcXFZkfCeaipqdHChQs1Y8YMzZkzR9/97ndVXV0tSdqyZYvmzp2rGTNm6M4771RVVZXJaXGufvvb3yovL0979+6VxNhGi7a2Ni1atEjXXHON5syZo5///OeS+DkdLd577z1dd911mjdvnubOnatVq1ZJYnwj1eLFizV16tSTfhZLpx/PkI61H+fs9ttv9y9fvtzv9/v9y5cv999+++0mJ8L5qKmp8a9du7b78X/8x3/4/+Vf/sXv9Xr906dP92/YsMHv9/v9Tz75pP+BBx4wKybOw44dO/x33XWX/6qrrvLv2bOHsY0ijzzyiP/f/u3f/D6fz+/3+/0VFRV+v5+f09HA5/P5CwoK/Hv27PH7/X7/rl27/BdccIHf6/UyvhFqw4YN/uPHj3f/LD7hdOMZyrFm5vgcVVVVqbCwULNnz5YkzZ49W4WFhd0zjYg8SUlJmjBhQvfjCy64QMePH9eOHTsUGxurgoICSdLNN9+st956y6yYOEft7e36xS9+oYceeqj7OcY2OjQ1NWn58uW6//77ZRiGJCktLY2f01HEYrGooaFBktTQ0KD09HTV1NQwvhGqoKBAWVlZJz13uj+vof6zbAvK79oHlJSUKCMjQ1arVZJktVqVnp6ukpISpaSkmJwO58vn8+nPf/6zpk6dqpKSEmVnZ3d/LSUlRT6fT7W1tUpKSjIvJM7K448/rrlz5yo3N7f7OcY2Ohw5ckRJSUn67W9/q3Xr1ik+Pl7333+/4uLi+DkdBQzD0K9//Wt9+9vfltPpVFNTk5555hn+Ho4ypxtPv98f0rFm5hj4Ao888oicTqduu+02s6OgF2zevFk7duzQggULzI6CIPB6vTpy5IhGjhypV155RT/60Y903333qbm52exo6AWdnZ36/e9/r6eeekrvvfeefve73+mf//mfGV8EDTPH5ygrK0tlZWXyer2yWq3yer0qLy8/5Z8JEHkWL16sQ4cO6emnn5bFYlFWVpaOHz/e/fXq6mpZLBZmFiPIhg0bdODAAU2bNk2SVFpaqrvuuku33347YxsFsrKyZLPZuv/Jddy4cUpOTlZcXBw/p6PArl27VF5ervHjx0uSxo8fL4fDodjYWMY3ipyuV/n9/pCONTPH5yg1NVX5+flasWKFJGnFihXKz8/nn3Ii3GOPPaYdO3boySefVExMjCRp9OjRam1t1aeffipJevHFFzVz5kwzY+Is3X333VqzZo1Wr16t1atXKzMzU3/4wx/0rW99i7GNAikpKZowYYI++ugjSV13tVdVVWngwIH8nI4CmZmZKi0t1cGDByVJBw4cUFVVlQYMGMD4RpHT9apQdy7D7/f7g/I79wEHDhzQAw88oPr6eiUkJGjx4sUaPHiw2bFwjvbt26fZs2dr4MCBiouLkyTl5ubqySef1KZNm7Ro0SK1tbUpJydHv/rVr5SWlmZyYpyrqVOn6umnn9bw4cMZ2yhx5MgR/fSnP1Vtba1sNpv++Z//WVdeeSU/p6PEa6+9pmeffbb7hsvvfe97mj59OuMboR599FGtWrVKlZWVSk5OVlJSkt54443Tjmcox5pyDAAAAASwrAIAAAAIoBwDAAAAAZRjAAAAIIByDAAAAARQjgEAAIAAyjEAQJKUl5enQ4cOmR0DAEzFCXkAEKamTp2qyspKWa3W7ueuv/56PfjggyamAoDoRjkGgDD29NNPa9KkSWbHAIA+g2UVABBhXnnlFd188836xS9+ofHjx2vmzJn65JNPur9eVlame+65R5dccomuvvpqvfTSS91f83q9evrppzV9+nRdeOGFuuGGG1RSUtL99Y8//ljXXHONCgoK9PDDD4tzogD0NcwcA0AE2rZtm2bOnKm1a9fqb3/7m7773e/q3XffVVJSkn7wgx9o2LBh+vDDD3Xw4EHdcccd6tevnyZOnKglS5bojTfe0DPPPKNBgwZpz5493celS9L777+vl19+WY2Njbrhhht01VVX6YorrjDxOwWA0GLmGADC2He+8x0VFBR0f5yYBU5JSdE3vvEN2e12XXvttRo0aJDef/99lZSUaNOmTfrRj36k2NhY5efn66abbtKrr74qSVq2bJnuv/9+DR48WIZhaMSIEUpOTu5+v4ULFyohIUHZ2dmaMGGCdu/ebcr3DQBmYeYYAMLYk08+ecqa41deeUUZGRkyDKP7uezsbJWXl6u8vFyJiYlyuVwnfW3Hjh2SpNLSUvXv3/9L38/j8XT/2uFwqKmpqbe+FQCICMwcA0AEKisrO2k9cElJidLT05Wenq66ujo1Njae9LWMjAxJUmZmpg4fPhzyvAAQKSjHABCBqqur9cILL6ijo0NvvvmmDhw4oCuvvFJZWVm68MIL9dhjj6mtrU27d+/Wyy+/rLlz50qSbrrpJj3++OMqLi6W3+/X7t27VVNTY/J3AwDhg2UVABDG7rnnnpP2OZ40aZKmTZumsWPH6tChQ7r00kuVlpamJ554onvt8GOPPaZFixZp8uTJSkhI0H333de9NOOOO+5Qe3u77rzzTtXU1Gjw4MF68sknTfneACAcGX726QGAiPLKK69o2bJl+vOf/2x2FACIOiyrAAAAAAIoxwAAAEAAyyoAAACAAGaOAQAAgADKMQAAABBAOQYAAAACKMcAAABAAOUYAAAACPj/w1p2oHe1+SQAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from tensorflow.keras.layers import Dense, Dropout\n", + "from tensorflow.keras.models import Sequential, Model\n", + "from tensorflow.keras import metrics, Input\n", + "from tensorflow import keras\n", + "import tensorflow as tf\n", + "\n", + "ENCODING_DIM = 7\n", + "BATCH_SIZE = 64\n", + "EPOCHS = 100\n", + "\n", + "\n", + "class AE(keras.Model):\n", + " def __init__(self, encoder: keras.Model, decoder: keras.Model, **kwargs) -> None:\n", + " super().__init__(**kwargs)\n", + " self.encoder = encoder\n", + " self.decoder = decoder\n", + "\n", + " def call(self, x: tf.Tensor, **kwargs):\n", + " z = self.encoder(x)\n", + " x_hat = self.decoder(z)\n", + " return x_hat\n", + " \n", + "len_input_output = X_train.shape[-1]\n", + "\n", + "encoder = keras.Sequential()\n", + "encoder.add(Dense(units=ENCODING_DIM*2, activation=\"relu\", input_shape=(len_input_output, )))\n", + "encoder.add(Dense(units=ENCODING_DIM, activation=\"relu\"))\n", + "\n", + "decoder = keras.Sequential()\n", + "decoder.add(Dense(units=ENCODING_DIM*2, activation=\"relu\", input_shape=(ENCODING_DIM, )))\n", + "decoder.add(Dense(units=len_input_output, activation=\"linear\"))\n", + " \n", + "ae = AE(encoder=encoder, decoder=decoder)\n", + " \n", + "ae.compile(optimizer='adam', loss='mean_squared_error')\n", + "history = ae.fit(\n", + " scaler.transform(X_train), \n", + " scaler.transform(X_train), \n", + " batch_size=BATCH_SIZE, \n", + " epochs=EPOCHS, \n", + " verbose=False,)\n", + "\n", + "loss = history.history['loss']\n", + "plt.plot(loss)\n", + "plt.xlabel('Epoch')\n", + "plt.ylabel('MSE-Loss')" + ] + }, + { + "cell_type": "markdown", + "id": "c4969d4b-b4f2-4a33-a1f9-b6ac0c78d677", + "metadata": {}, + "source": [ + "Later we'll use tensorflow version 1 as the counterfactual methods depend on this version of tensorflow. The easiest way to use a model built with tfv2 in tfv1 is to save and load it." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "0109cce2-6b54-4d05-8891-e437c18df24d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:tensorflow:Compiled the loaded model, but the compiled metrics have yet to be built. `model.compile_metrics` will be empty until you train or evaluate the model.\n", + "WARNING:tensorflow:Compiled the loaded model, but the compiled metrics have yet to be built. `model.compile_metrics` will be empty until you train or evaluate the model.\n" + ] + } + ], + "source": [ + "ae.encoder.save('wine_encoder.h5')\n", + "ae.decoder.save('wine_decoder.h5')" + ] + }, + { + "cell_type": "markdown", + "id": "91035836-4c13-489b-a865-bed0817aaeb0", + "metadata": {}, + "source": [ + "# Random Forest Model" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "07246f62-3040-475e-843e-b0366c3d94fa", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "accuracy_score: 0.815\n", + "f1_score: [0.8 0.82790698]\n" + ] + } + ], + "source": [ + "from sklearn.pipeline import Pipeline\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.ensemble import RandomForestClassifier\n", + "from sklearn.metrics import accuracy_score, f1_score\n", + "from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay\n", + "\n", + "rfc = RandomForestClassifier(n_estimators=50)\n", + "rfc.fit(scaler.transform(X_train), y_train_lab)\n", + "y_pred = rfc.predict(scaler.transform(X_test))\n", + "\n", + "print('accuracy_score:', accuracy_score(y_pred, y_test_lab))\n", + "print('f1_score:', f1_score(y_test_lab, y_pred, average=None))\n", + "\n", + "# disp = ConfusionMatrixDisplay(confusion_matrix(y_test_lab, y_pred), display_labels=rfc.classes_)\n", + "# disp.plot()" + ] + }, + { + "cell_type": "markdown", + "id": "dbdd201e-2783-42d3-a345-cf742361be67", + "metadata": {}, + "source": [ + "# Tensorflow Model" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "7a28547f-1e0a-4bf4-9f18-5451127ddb77", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "accuracy_score: 0.74\n", + "f1_score: [0.75471698 0.72340426]\n" + ] + } + ], + "source": [ + "from tensorflow import keras\n", + "from tensorflow.keras import layers \n", + "\n", + "\n", + "inputs = keras.Input(shape=X_train.shape[1])\n", + "x = layers.Dense(6, activation=\"relu\")(inputs)\n", + "outputs = layers.Dense(2, activation=\"softmax\")(x)\n", + "model = keras.Model(inputs, outputs)\n", + "\n", + "model.compile(optimizer=\"adam\", loss=\"categorical_crossentropy\", metrics=['accuracy'])\n", + "history = model.fit(\n", + " scaler.transform(X_train), \n", + " y_train,\n", + " epochs=30, \n", + " verbose=False, \n", + " validation_data=(scaler.transform(X_test), y_test),\n", + ")\n", + "\n", + "y_pred = model(scaler.transform(X_test)).numpy().argmax(axis=1)\n", + "print('accuracy_score:', accuracy_score(y_pred, y_test.argmax(axis=1)))\n", + "print('f1_score:', f1_score(y_pred, y_test.argmax(axis=1), average=None))\n", + "\n", + "# disp = ConfusionMatrixDisplay(confusion_matrix(y_pred, y_test.argmax(axis=1)))\n", + "# disp.plot()" + ] + }, + { + "cell_type": "markdown", + "id": "f7a294d4-82f2-4729-ad66-872fd2925f4c", + "metadata": {}, + "source": [ + "# Select Instance \n", + "\n", + "We partition the dataset into good and bad portions and select an instance of interest." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "926bbabd-946b-4ef3-9aec-6e27df923504", + "metadata": {}, + "outputs": [], + "source": [ + "bad_wines = np.array([a for a, b in zip(X_train, y_train) if b[1] == 1])\n", + "good_wines = np.array([a for a, b in zip(X_train, y_train) if b[1] == 0])\n", + "\n", + "x = X_train[(model(X_train).numpy()[:, 0] > 0.7) & (model(X_train).numpy()[:, 0] < 0.9)][0][None]" + ] + }, + { + "cell_type": "markdown", + "id": "b0a89f7e-7a76-4c9f-b313-ce963227f548", + "metadata": {}, + "source": [ + "\n", + "# Util functions for visualizing and comparing instance differences" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "533c5164-60f2-46e4-9154-381655854aa4", + "metadata": {}, + "outputs": [], + "source": [ + "def plot_cf_and_feature_dist(x, cf, feature='total sulfur dioxide'):\n", + " \"\"\"\n", + " Create a kde plot of feature distribution and plot counter factual and instance feature values.\n", + " \"\"\"\n", + " ind = features.index(feature)\n", + " ax = sns.kdeplot(bad_wines[:, ind], bw_method=0.5, c='r')\n", + " sns.kdeplot(good_wines[:, ind], bw_method=0.5, c='b')\n", + " plt.axvline(x=x[:, ind], c='b', alpha=0.4)\n", + " plt.axvline(x=cf[:, ind], c='r', alpha=0.4) \n", + " plt.xticks([x[0, ind], cf[0, ind]], ['x', 'c'])\n", + " plt.ylabel('Probability')\n", + " plt.xlabel(' '.join([word.capitalize() for word in feature.split(' ')]))\n", + " plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "231a5665-6dfc-475c-b456-0f25598c319b", + "metadata": {}, + "outputs": [], + "source": [ + "def compare_instances(x, cf):\n", + " \"\"\"\n", + " Show the difference in values between two instances.\n", + " \"\"\"\n", + " x = x.astype('float64')\n", + " cf = cf.astype('float64')\n", + " for f, v1, v2 in zip(features, x[0], cf[0]):\n", + " print(f'{f:<25} instance: {round(v1, 3):^10} counter factual: {round(v2, 3):^10} difference: {round(v1 - v2, 7):^5}')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "527fefa8-6aba-4a69-9117-778b291493e5", + "metadata": {}, + "outputs": [], + "source": [ + "def plot_importance(feat_imp, feat_names, class_idx, **kwargs):\n", + " \"\"\"\n", + " Create a horizontal barchart of feature effects, sorted by their magnitude.\n", + " \"\"\"\n", + " \n", + " df = pd.DataFrame(data=feat_imp, columns=feat_names).sort_values(by=0, axis='columns')\n", + " feat_imp, feat_names = df.values[0], df.columns\n", + " fig, ax = plt.subplots(figsize=(10, 5))\n", + " y_pos = np.arange(len(feat_imp))\n", + " ax.barh(y_pos, feat_imp)\n", + " ax.set_yticks(y_pos)\n", + " ax.set_yticklabels(feat_names, fontsize=15)\n", + " ax.invert_yaxis()\n", + " ax.set_xlabel(f'Feature effects for class {class_idx}', fontsize=15)\n", + " return ax, fig" + ] + }, + { + "cell_type": "markdown", + "id": "559872af-99b6-4314-b418-0be491f3f405", + "metadata": {}, + "source": [ + "## Integrated Gradients\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "d8fb53ef-d965-4bd5-b70c-09badbfbfc38", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(,\n", + "
)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAt0AAAFECAYAAAD7toLkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABmd0lEQVR4nO3de3zP9f//8ds2O7Gxjfe2JCXy5sOY44yJxljOZkT45JDThJyXYyiHtLA5K0VKo6T0yTn6dNCiiE8qIhWGNWY2O9j2/v3h5/3t3Q622d7D7tfLZZe8n6/n6/l6vB57N4+9PF6vt43JZDIhIiIiIiLFxrakAxARERERud+p6BYRERERKWYqukVEREREipmKbhERERGRYqaiW0RERESkmKnoFhEREREpZiq6RURERESKWZmSDkBKrytXksnKyv0x8RUruhAfn2TFiEov5dp6lGvrUa6tS/m2HuXaeipWdOHKlWTc3cvd8VoquqXEZGWZ8iy6b80R61CurUe5th7l2rqUb+tRrq2nqHKt9hIRERERkWKmoltEREREpJip6BYRERERKWYqukVEREREipmKbhERERGRYqaiW0RERESkmKnoFhEREREpZiq6RURERESKmYpuEREREZFipk+klPuWa3lnnBz1Fs8vg8G1pEMoNZRr61GurSf9RmZJhyByV1NFIvctJ8cydB7/UUmHISJSKmyL6FrSIYjc1dReIiIiIiJSzFR0i4iIiIgUMxXdd7ktW7ZgNBpJTk4u0nXDw8MJCQkpkrX69+/P6NGji2QtERERkfuRim4RERERkWKmoltEREREpJip6C5hhw8fZvjw4QQEBODr60vXrl35+OOP89wnNTWVV155hSeeeIK6desSGBhIRESEeXtmZiZRUVG0bt2aunXr0rFjR7Zt25bjWl999RWdO3fG19eXPn36cPLkSYvtKSkpvPTSS7Ro0QIfHx969OjBl19+eecnLiIiIlKK6JGBJez8+fM0bNiQPn364ODgwPfff8+UKVOwtbWlU6dO2eabTCbCwsI4fPgwYWFh1K1bl4sXL3Lo0CHznMjISF5//XVGjhyJj48Pu3btYsKECdjY2FisGRsbyyuvvMKIESNwdHTklVdeYezYsWzbtg0bGxsApk2bxmeffca4ceOoWrUqmzdvZtiwYaxbt47GjRsXf4JERERE7gMquktY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GAwGGjZsaNHO4O/vz5YtW3I9Vu3atXn//feJjIykdevW1KlTBzs7u6I+pQLz8vK6bcGdkZHB8ePHmT59usV4UFBQnkX3hQsXuHTpEsHBwRbjHTp0YOPGjfzyyy/Uq1cPNzc3XnrpJYYNG4a9vT0jR47Msz/9xIkTpKWl0aZNG/OYra0tbdq04fXXXzePHThwgDp16lClShWL71WTJk3M38/8qlgx9/sBbtEHW1iPcm09yrXcr/Teth7l2nryU6/kR5EX3f98ksmVK1c4cuQIn376aba5/v7+5jlxcXHUqVMn25y8iugePXqQnJxMdHQ0y5Ytw83Njd69ezN69OgSLb4rVap02zlXrlwhMzMzW75u9ySYWz3fue139epV81izZs2oVKkSCQkJ9OrVK891//rrrzzX/XvcR44cyfF7detfQPIrPj6JrCxTrtsNBlfi4q4VaE0pHOXaepTr3KmIuPfpvW0d+jliPQaDK/HxSUVSeBd50W1jY2PxukKFCgQGBhIWFpZt7q3WlAoVKuDl5cWyZcsKdCxbW1sGDBjAgAEDiI2NZdu2bSxatAhvb2/69OmDo6MjADdu3LDY7++FaX7ltZa7u3uB13N3d8fOzo74+HiL8X++/qdbPdO57ff3xxu++uqrZGZmUqlSJebOnUtERESu6976RSE+Pt7cBpTTcSpUqEDdunV58cUXs61xJ09oEREREbmfFfvHwPv7+7N9+3Yee+yxXB8f6O/vz5tvvknZsmWpXr16oY7zwAMPMHToUD744ANOnToF3GzzADh16hSNGjUC4IcffiApKanA63t7e5vXunWVNzY2ltOnT5t7mwuiTJky1K5dm71799KnTx/z+O7du28bh6enJzt27KBVq1bm8e3bt+Pi4mL+IJuYmBg2bNjA4sWLcXFxYfDgwbRr14727dvnuG7NmjVxdHRk79695u9BVlYWe/futZjn7+/PV199ReXKle+757OLiIiIFJdiL7oHDBjAxx9/zDPPPEO/fv3w8vLir7/+4uDBgzRq1IhOnTrRokULAgICGDRoEEOGDKFGjRokJSXx888/k5aWxvjx43Nce8aMGVSoUIH69evj6upKTEwMv//+OxMnTgSgXr16eHl58fLLLzNmzBgSEhJ4/fXX83y2eG68vb2pW7cuS5YswdnZmaysLFatWmVxVbighg8fznPPPcfMmTMJCgri4MGDfPHFF3nuY2try6hRo5gxYwZubm60aNGCgwcPsnHjRsaNG4ejoyPJyclMmTKFDh06mHu/n3rqKV588UWaNGmCh4dHtnXd3d3p1asXUVFRlClThho1arB582auX79uMa9bt26899579O/fn0GDBvHQQw+RkJDA0aNHMRgMDBgwoND5EBEREblfFXvR7eHhQXR0NIsXL2bevHkkJibi6elJw4YNzVdlbWxsWLp0KStXrmTdunXExsZSoUIFatWqledHsPv6+rJp0yaio6NJS0ujatWqzJkzh7Zt2wI32x2WLl3KrFmzGD16NNWqVePFF180F+UF9dprrzFt2jQmTpyIl5cXEydOZN26dYVaC27eNDl9+nRWr17N1q1badq0KS+//DKDBw/Oc79evXqRlpbG+vXrefvtt/Hy8iI8PNxc8C5YsIC0tDRmzJhh3mfy5Ml89dVXzJw5k6ioqBzXnTRpEhkZGSxbtgxbW1u6dOnCwIEDmT9/vnmOo6Mj69evZ8mSJURFRREfH4+Hhwf16tUjMDCw0LkQERERuZ/ZmEym3O9kEylGupHy7qFcW49ynTuDwZXO4z8q6TCkkLZFdNV720r0c8R6ivJGygJ/IqWIiIiIiBSMim4RERERkWJW7D3dIiIi+ZGalsG2iK4lHYYUUvqNzJIOQeSupqJbRETuCtcSUyjKLlX1vVqXPtxIJG9qLxERERERKWYqukVEREREipnaS0REpFRyLe+Mk6P+Giwq6ukWyZt+2oiISKnk5FhGzwUvQroJViRvai8RERERESlmKrpFRERERIqZiu4SEBMTg9Fo5MSJEwXab8uWLRiNRpKTk+84hi+//JK33nrrjtcRERERkdtT0V1KffXVV6xfv76kwxAREREpFVR0i4iIiIgUMxXdhXDy5EkGDx5M06ZN8fX15cknn+Sdd94BIDAwkAULFljMz09biNFo5M033+Sll16iadOmNG7cmDlz5pCenp5t7tmzZxk4cCC+vr4EBweza9cui+379+9n4MCB+Pv707BhQ3r16sWXX35p3h4VFcXatWs5d+4cRqMRo9FIeHi4efuhQ4fo168f9evXx8/Pj2nTppGUlGTenpiYyNSpUwkICMDHx4fWrVszbdq0giVRREREpBTRIwMLYfjw4VSvXp2FCxfi4ODA6dOni6TPeu3atfj6+rJw4UJ+/fVXFi1ahIODA5MnT7aYN2HCBHr16sXgwYPZsGED48aNY8+ePXh7ewM3i/InnniCQYMGYWtry3//+1+GDBnChg0baNSoET179uTMmTPExMSwdOlSADw8PAD47rvvGDBgAG3btiUyMpIrV64QERFBYmIikZGRAMybN4/Dhw8zZcoUKlWqRGxsLIcOHbrj8xcRERG5X6noLqDLly9z9uxZli9fjtFoBMDf379I1i5XrhxLlizB1taWVq1akZ6ezsqVKxk2bBhubm7mec888wyhoaEA1KlThxYtWrBv3z769OkDQL9+/cxzs7Ky8PPz49dff+X999+nUaNGeHt74+npiYODA76+vhYxRERE0KBBAxYvXmwe8/LyYsCAAZw4cYKaNWty7Ngx+vbtS4cOHcxzunbV81lFREREcqOiu4Dc3Nx44IEHmDlzJv/+97/x8/OjYsWKRbJ2mzZtsLX9v46fdu3asXjxYk6ePEmTJk3M4wEBAeY/u7u74+HhwYULF8xjFy5cYNGiRXz99dfExcVhMpkAaNiwYZ7HT0lJ4ciRI0ybNo2MjAzzeKNGjbC3t+fHH3+kZs2a1KpVizfeeANbW1uaN29OtWrVCnW+FSu63HaOweBaqLWl4JRr61GurUe5ti7l23qUa+vJT72SHyq6C8jW1pY33niDxYsXM2XKFFJTU2nYsCHTpk3jX//61x2t/c/i/VbLR1xcnMW4q6vl/2gODg7m3u+srCxGjBhBcnIyo0eP5uGHH8bZ2ZnIyEji4+PzPH5iYiKZmZnMmjWLWbNmZdseGxsLwIwZM4iMjGT58uXMnj2bhx9+mDFjxtCxY8cCnW98fBJZWaZctxsMrsTFXSvQmlI4yrX1KNfWc7tcq2gpenpvW4d+jliPweBKfHxSkRTeKroLoXr16kRFRXHjxg0OHTrEq6++ytChQ/nvf/+Lg4MDN27csJifmJiYr3X/WRRfvnwZAIPBkO/Yfv/9d44fP86aNWt4/PHHzeOpqam33dfV1RUbGxuee+45WrVqlW27p6cnAOXLl2fatGlMmzaNn3/+mddff50JEyZgNBqpUaNGvmMVERERKS309JI7YG9vj7+/PwMHDiQuLo7ExES8vb05deqUxby/PzkkL3v37iUrK8v8eteuXTg5OfHYY4/lO6a0tDTg5tXvW86dO8fhw4ezxX5r7i1ly5bF19eX3377DR8fn2xfXl5e2Y5Xq1YtJk2aRFZWFqdPn853nCIiIiKlia50F9DPP//MK6+8wpNPPslDDz1EYmIia9asoVatWri5uREUFMScOXNYuXIlPj4+7Ny5k19//TVfaycnJzNmzBh69uzJr7/+yvLly+nbt6/FTZS38+ijj+Lt7c2CBQsYM2YMycnJREZGmq9S/33eX3/9xZYtW3jsscdwd3enSpUqTJgwgQEDBmBra0v79u0pV64csbGx7N+/n7Fjx1KtWjX69OlDUFAQjz32GDY2NmzatImyZctSr169gqRSREREpNRQ0V1ABoOBihUrsnLlSi5dukT58uXx8/NjwoQJAPTq1Ys//viDt99+m/T0dLp27cqIESOYMWPGbdceNGgQf/75J+PHjycrK4vQ0FDGjRtXoPgcHByIiopi9uzZjB49Gm9vb4YPH863335r8bHzTz75JDExMSxcuJDLly/TvXt35s+fT+PGjXnnnXeIjIw0X8GuXLkyLVu2pFKlSgD4+vry4YcfcvbsWezs7KhduzZr1qwxP7JQRERERCzZmG492kJKlNFoZPr06RaP+7vf6UbKu4dybT3KtfXk50bKzuM/smJE97dtEV313rYS/RyxnqK8kVI93SIiIiIixUxFt4iIiIhIMVNP913il19+KekQRERKldS0DLZF6NN0i0r6jcySDkHkrqaiW0RESqVriSmoK7bo6MOGRPKm9hIRERERkWKmoltEREREpJipvURERKQEuZZ3xsnx3v/rWD3dInm79/8vFxERuYc5OZa5L54XrptSRfKm9hIRERERkWKmoltEREREpJiVqqJ76dKltGzZklq1ahEeHk5MTAxGo5ETJ05Y5fh+fn5ERUUV+3GioqLw8/O77byQkBDCw8PNr8PDwwkJCTG/Pnr0qFXiFREREbnflZqe7mPHjhEVFcW4ceNo2rQpFStWxMPDg+joaKpWrVrS4RWpnj178sQTTxR4v7CwMFJTU82vjx49ytKlSxk1alRRhiciIiJS6pSaovv06dMA9O3bFxcXF/O4r69vCUVUfLy9vfH29i7wfvfbLx8iIiIid4tS0V4SHh7OpEmTAGjUqBFGo5GYmJhs7SXbt2+nVq1aHDhwwLzv2bNnadiwIYsWLTKPHTp0iH79+lG/fn38/PyYNm0aSUlJFsc8ePAgXbp0wcfHh5CQEL7//vt8xbp27Vp69OhBo0aNaN68OcOHD+f333/PNm/37t2EhoZSr149/Pz8GDJkCOfOnQNybi85ceIEvXv3xsfHhyeffJK9e/fmmKdb7SVbtmxhzpw5ABiNRoxGI/379+fXX3815+/vkpOTadCgAevWrcvXeYqIiIiUJqXiSndYWBje3t6sWLGCdevW4eTkRI0aNfjxxx8t5j355JPs3r2bKVOmsG3bNsqVK8cLL7xAlSpVGDlyJADfffcdAwYMoG3btkRGRnLlyhUiIiJITEwkMjISgIsXLzJkyBB8fHyIjIzk0qVLTJgwwaJ1IzcXLlygX79+VK5cmaSkJN577z169+7Nrl27cHW9+RG7W7duZfLkyXTs2JGwsDBMJhPffPMNly9f5sEHH8y2ZmpqKoMHD8bd3Z2IiAhSU1OZO3cu169fp2bNmjnG0bp1awYNGsTatWuJjo4GwMXFhRo1auDr68uHH35oUdjv2LGDGzdu0KVLl3x8R0RERERKl1JRdFetWtXcOuHj40O5cuVynTtjxgw6derE3LlzqVWrFocPH+b999/HwcEBgIiICBo0aMDixYvN+3h5eTFgwABOnDhBzZo1WbduHY6OjqxevRpnZ2cAnJ2dmThx4m1jnTJlivnPmZmZtGjRAn9/f/bu3Uu3bt3IysoiIiKCoKAgXnvtNfPcNm3a5LrmBx98wOXLl9m8ebO57eTBBx/k6aefznUfDw8PcwH/zxac0NBQ5s6dy/Tp08253LJlC4GBgbi7u9/2HEVERERKm1JRdBeEm5sbL730EsOGDcPe3p6RI0dSq1YtAFJSUjhy5AjTpk0jIyPDvE+jRo2wt7fnxx9/pGbNmhw7dozmzZubC26AoKCgfB3/yJEjLFmyhOPHj5OQkGAe/+2338z/vXTpksVTRm7n2LFj1KlTx6LPu1GjRlSsWDHfa/zdk08+ydy5c9mxYwc9evTgjz/+4LvvvmPlypUFWqdiRZfbzjEYXAsVoxSccm09yrX1KNfWpXxbj3JtPfmpV/JDRXcOmjVrRqVKlUhISKBXr17m8cTERDIzM5k1axazZs3Ktl9sbCwAcXFxGI1Gi23Ozs6ULVs2z+OeP3+eQYMGUa9ePWbNmoWnpyf29vYMGzaM9PR0AK5cuQKAwWDI9/nExcXh4eGRbbywRbeLiwvBwcFs2bKFHj16sGXLFipVqkTLli0LtE58fBJZWaZctxsMrsTFXStUjFIwyrX1KNfWc6/k+n4qnu6FfN8P7pX39v3AYHAlPj6pSApvFd05ePXVV8nMzKRSpUrMnTuXiIgIAFxdXbGxseG5556jVatW2fbz9PQEbhbE8fHxFttSUlK4fv16nsf94osvSE1NZfny5eYCPSMjg6tXr5rn3GrfiIuLy/f5GAwG89Nb/u6fMRZEz549efrppzlz5gwfffQR3bp1w87OrtDriYiIiNzPVHT/Q0xMDBs2bGDx4sW4uLgwePBg2rVrR/v27Slbtiy+vr789ttvPPfcc7muUbduXbZs2UJKSoq5xWT37t23PXZqaiq2traUKfN/35bt27dbtLJUq1YNLy8vtm7dSmBgYL7OycfHh23btnHhwgVzi8l3331326Lb3t4egLS0NBwdHS22NWzYkGrVqjFlyhTOnz9P9+7d8xWLiIiISGlUKh4ZmF/JyclMmTKFDh06EBwcTEBAAE899RQvvvgily9fBmDChAns3LmTiRMnsmfPHg4cOMCWLVsYPXq0ue96wIABpKamMmzYMPbt20d0dDSLFy/Gyckpz+M3a9aMzMxMXnjhBQ4cOMD69euJiIigfPny5jm2trZMnDiRnTt3Mn78ePbt28f+/fuZP38+x44dy3HdkJAQ3N3dGTp0KLt372bbtm1Mnjz5tjc9PvroowCsW7eOo0ePZrtaHhoaynfffUeDBg2oXr163skVERERKcVUdP/NggULSEtLY8aMGeaxyZMnU7ZsWWbOnAlA48aNeeedd7h8+TKTJk1ixIgRvP766zzwwANUqlQJuPk0k9WrV3PlyhVGjRrFu+++y8KFC29bdBuNRubNm8cPP/zAsGHD+OSTT1iyZIn5UYG3dO7cmaioKH777TdGjx7N5MmTOX36dI5923Czn/z111+nbNmyjB07lqVLlxIeHk7lypXzjKdx48YMHjyY9evX06tXL3MObmnbti0APXr0yHMdERERkdLOxmQy5X4nm0ge3nnnHV599VW++OILi0/5zC/dSHn3UK6tR7m2nnsl1waDK53Hf1TSYdyxbRFd74l83w/ulff2/UA3UkqJOnv2LGfOnGHVqlV07969UAW3iIiISGmiolsKbOnSpXzyySc0adKEMWPGlHQ4IiIiInc9tZdIiVF7yd1DubYe5dp67pVcu5Z3xsnx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WlqaReH990JeRERERLLT00sKoGzZstSvX5+tW7ea2zVux97eHoC0tLRCHbNatWp4eXmxdevWfO9z61gODg7msXPnznH48GGLef7+/mzfvj3fsfn4+ACwd+9e81hycjJff/11vmMTERERKY10pbuAxo8fz8CBA3n22Wd56qmncHZ25siRI9StW5cnnngi2/zKlSvj5OTE1q1bcXV1pUyZMubiNT9sbW2ZOHEiEyZMYPz48XTq1AkbGxu++eYbOnbsmONajz76KN7e3ixYsIAxY8aQnJxMZGQknp6eFvNGjhxJaGgoffv2ZdCgQbi5uXH8+HHc3NwIDQ3Ntu5jjz1GYGAgL774IklJSRgMBt54441894SLiIiIlFa60l1ATZo0Ye3ataSmpjJx4kTGjh3Lt99+i7e3d47zHR0dmTNnDj/++CP9+/fPsZi9nc6dOxMVFcVvv/3G6NGjmTx5MqdPn871Q3gcHByIiorCzs6O0aNHs2TJEoYNG0bTpk0t5j366KO8++67uLu7M3XqVEaOHMnOnTtzfQwhwPz582nRogVz585l6tSpNGvWjI4dOxb4nERERERKExtTfvskRIqYnl5y91CurUe5th7l2roMBlc6j/+opMO472yL6Kqnl5Sgonx6ia50i4iIiIgUM/V0i4iIyB1Lv5HJtoiuJR3GfSc1LaOkQ5AioqJbRERE7piDvZ1aHkTyoPYSEREREZFipqJbRERERKSYqegWERERESlm6ukWERGRO5Z+IxODwbWkwyg1lOv/k5qWwbXElJIO47ZUdIuIiMgdc7C303O6pURsi+jKvXALr9pLRERERESK2W2L7k8//ZQtW7YUavEvv/ySt956q1D7btmyBaPRSHJycqH2Lwij0ciGDRvMr7Oyspg1axbNmzfHaDQSFRVV7DHcsmHDBoxGo/l1TEwMRqOREydOFOlx8pvf0aNH079//yI9toiIiEhpc9v2kh07dnDlyhVCQkIKvPhXX33Fzp07GTBgQGFiKzG7du3i3Xff5eWXX6ZGjRp4e3uXWCx16tQhOjqaqlWrFum6rVu3Jjo6Gmdn5yJdV0RERESyU093Dk6fPk2FChUIDQ2947VSU1NxcnIq9P4uLi74+vrecRz/5OHhgYeHR5GvKyIiIiLZ5dleEh4ezs6dO/n2228xGo3ZWi02bNhAu3btqFu3LkFBQRat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cT744INCpOnmzYpOTk5MmTKFgQMHcvbsWd57771CrQU3rwr36tWLqKgoypQpQ40aNdi8eTPXr1/Pc7/q1avTsWNHZs+eTXJyMg899BCbN2/m9OnT5ifMHD9+nJUrVzJt2jQeeughRo4cyWeffcaUKVNYt25djlfiW7VqRa1atRgzZgwTJkzAwcGBqKiobC0nzz33HD179mTo0KH06NEDd3d3Ll68yNdff0337t1zfKyiiIiISGl32yvdTz/9NC1atGDKlCmEhoayadMmAHr16sXUqVPZs2cPw4cP55NPPiE8PJyhQ4ea933yyScJCQlh4cKFhIaGmh8dGBERwUMPPcTkyZN5+eWXadeuHd26dStw8L6+vnz44YeMHj2a559/3txvfOuxhjVr1mTu3LkcOXKEESNGcPDgQebNm1fg48DNxx1GRkZy4cIFRo4cyccff0xERESh1rpl0qRJ9OjRg2XLljF+/Hg8PT0ZOHDgbfd76aWX6N69O8uWLSMsLIxz586xcuVKGjduTHp6OpMnT8bPz4/evXsD4ODgwCuvvML3339v8Uzxv7OxsWHFihVUr16dKVOmMG/ePPr27UuDBg0s5lWrVs38SZYzZsxgyJAhREVF4eDgwMMPP3xH+RARERG5X9mYTKbc72QTKUa6kfLuoVxbj3JtPcq1dRkMrnQe/1FJhyGl0LaIrvfEjZS3vdItIiIiIiJ3RkW3iIiIiEgxK9QjA0VERET+Lv1GJtsi7uxToUUKIzUto6RDyBcV3SIiInLHHOzt1ENvJbpf4d6k9hIRERERkWKmoltEREREpJip6BYRERERKWYqukVEREREipmKbhERERGRYqaiW0RERESkmKnoFhEREREpZiq6RURERESKmYpuEREREZFipk+klBJja2tTJHOkaCjX1qNcW49ybV3Kt/Uo19ZTVLm2MZlMpiJZSUREREREcqT2EhERERGRYqaiW0RERESkmKnoFhEREREpZiq6RURERESKmYpuEREREZFipqJbRERERKSYqegWERERESlmKrpFRERERIqZim4RERERkWKmoltKVEpKCs8//zxBQUEEBwezb9++HOft2bOHkJAQOnXqRMeOHVm7dq3F9mXLltG2bVvatm3LsmXLrBH6PSe/ub548SL9+/enUaNGhISEWGyLiYmhfv36dO3ala5du9KzZ09rhH7P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cuUsxqtXr55nsS5S6plERKTIREZGmmrWrJnt66uvvjJdu3bN5Ovra4qKirLYZ/HixabmzZubMjIysq2XlZVlunHjhmn69Omm/v37m8fffvttU82aNbPNnzx5sql79+4WY3/++aepZs2aps8++8w8VrNmTVO3bt0s5n399demmjVrmmJiYizGn376adOoUaNyPef87pdTbN98842pZs2apl9++aVA6129etVUr14909y5c3ONa9SoUaZ+/fpZjB09etRUs2ZN07Vr13LdLydPPPGEaf78+ebXmZmZpoCAAFN4eLjFvJkzZ5oaNmxoSk1NNZlM//d+2L17922PMXbsWFPLli1NKSkpOW7PKVd/l5GRYUpJSTH5+vqaPvzwQ5PJdPvz3b59u6lp06a3je3vpk6daurSpUu28ddee83UokWLAq0lUpqovUREpIi5urry/vvvW3zVq1ePw4cPc/36dYKDg8nIyDB/NWvWjL/++osLFy4AcPXqVV566SWeeOIJ6tSpQ506dYiOjubMmTNFGufjjz9u8frrr7/GYDDQsGFDi/j8/f353//+l+s6hd3vTtY7fPgwqampBb5JsmrVqpQtW5YJEyawZ88eEhMTCxwf3LzCfOnSJYKDgy3GO3ToQFJSEr/88ot5zMbGJluuc/LNN9/QoUOHAvXWHzlyhIEDB+Ln58e//vUv6tevz/Xr1/ntt9+A259vzZo1uXbtGpMnT+bLL7/k+vXr+T62iBSM2ktERIqYnZ0dPj4+2cavXLkCQMeOHXPcLzY2lgcffJDw8HB++OEHwsLCqF69Oi4uLmzcuJG9e/cWaZyVKlXKFl9cXBx16tTJNtfOzi7XdQq7352sl5CQAIDBYCjQ2hUqVODNN98kKiqK559/HpPJRIsWLZg+fToPPfRQvteJi4sDoGLFihbjt17/vT2jQoUKODg43HbNhISEAp3P+fPnGTRoEPXq1WPWrFl4enpib2/PsGHDSE9PNx87r/N99NFHWb58OatXr2bo0KGUKVOGoKAgpk6dioeHR47HLV++fI7tOImJiUX69BmR+42KbhERK7lVkKxatSpbsQZQrVo10tLS2L9/PzNmzKBPnz7mbe+++26+juHg4MCNGzcsxnK7mmtjY5MtPi8vL5YtW5avY93pfneynpubG3Cz+M2tOMyNr68vb7zxBqmpqXz99dfMnz+f8ePHs2nTpnyvcas4jo+Ptxi/9bowxaebm5u5mM+PL774gtTUVJYvX07ZsmWBm/cS/LMf+3bn27p1a1q3bs21a9fYv38/c+fOZc6cOSxatCjH4z766KNcuHCB69evm48LN3u9H3300YKetkipoaJbRMRKGjRogJOTE5cuXaJ169Y5zrl27RpZWVkWV0aTkpL47LPPLObZ29sDN5/y8ffHz3l7e3Pu3DmL8VtPm7gdf39/3nzzTcqWLUv16tXzfV6F3e9O1ruVy61btzJ58uQc59jb25OWlpbrcZycnAgMDOTkyZOsWrWqQDF6e3vj6enJjh07aNWqlXl8+/btuLi4YDQaC7Qe3Dzv7du3M3bs2Hw9UjA1NRVbW1vKlPm/v8q3b9+e7SbeW253vq6urnTu3JmDBw9y+PDhXI8bEBAAwO7du+natSsAFy9e5LvvvjPftCoi2anoFhGxkvLly/Pcc8/x8ssvc+7cOZo0aUJWVhZnzpwhJiaGZcuW4erqio+PD8uWLcPFxQVbW1tWr16Ni4sLSUlJ5rVuXVFct24dzZo1w8XFhUcffZS2bdsSGRnJ1KlTCQkJ4fjx43zwwQf5iq9FixYEBAQwaNAghgwZQo0aNUhKSuLnn38mLS2N8ePHF+l+dxJH+fLlCQsLY9GiRdy4cYPHH3+c9PR0Pv/8c5577jm8vLyoVq0ae/fuZc+ePXh5eeHp6clPP/3EBx98QJs2bahcuTIXL14kOjqaZs2aFShGW1tbRo0axYwZM3Bzc6NFixYcPHiQjRs3Mm7cuEI9h3vkyJGEhobSt29fBg0ahJubG8ePH8fNzY3Q0NBs85s1a0ZmZiYvvPACoaGhnDx5krVr11K+fHnznP379+d5vu+99x5HjhyhZcuWeHp6cubMGXbs2GEupnPi7e1NaGgoc+fOxWQy4eHhwdKlS6lcuTJdunQp8HmLlBYqukVErGjIkCF4enqybt063nzzTRwdHXnkkUfo0KGDeU5ERAQzZsxg8uTJuLm50bdvX1JTU9mwYYN5TuPGjRk8eDDr16/ntddeo0mTJrz99tvUrFmTuXPnsnz5cnbv3k2zZs2YN2+eRatKbmxsbFi6dCkrV65k3bp1xMbGUqFCBWrVqpXnx7MXdr87XW/YsGFUqFCB9evX895771GhQgUaN25sfpTd008/zU8//cSUKVO4evUqzz33HB07dsTGxoZFixYRHx+Ph4cHrVu3Zty4cQWOs1evXqSlpbF+/XrefvttvLy8CA8PZ8CAAQVeC27+IvXuu+8SERHB1KlTAahRo0ausRmNRubNm8fSpUvZvXs3tWrVYsmSJYwdO9Y8p2rVqnmer9Fo5LPPPmPevHlcvXoVg8FAz549GTNmTJ6xTps2DWdnZ+bPn09qaipNmjQhIiLinv7QH5HiZmMy/f+Hs4qIiIiISLHQIwNFRERERIqZim4RERERkWKmoltEREREpJip6BYRERERKWYqukVEREREipmKbhERERGRYqaiW0RERESkmKnoFhEREREpZiq6RURERESK2f8DqiZm0hf9S1oAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from alibi.explainers import IntegratedGradients\n", + "\n", + "ig = IntegratedGradients(model,\n", + " layer=None,\n", + " method=\"gausslegendre\",\n", + " n_steps=50,\n", + " internal_batch_size=100)\n", + "\n", + "result = ig.explain(scaler.transform(x), target=0)\n", + "\n", + "plot_importance(result.data['attributions'][0], features, 0)\n" + ] + }, + { + "cell_type": "markdown", + "id": "91775149-0ff9-46d7-a71d-d32c910c2757", + "metadata": {}, + "source": [ + "## KernelSHAP" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "442a2603-1aed-4cd2-a3dc-f4965f5efaec", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "4a04c153bbf84b3f8883ff145cea2990", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/1 [00:00,\n", + "
)" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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165dY8KECbRp08ZcW/3ss8/y8ssv06BBAzw8PLKM6+7uTrdu3YiJiaFYsWJUqVKF9evXc/36dYt+nTp1Yu3atfTu3Zt+/frx2GOPkZiYyKFDh/D09KRPnz5W3w8RERGRouaeJ9MeHh7Exsby5ptvMmvWLJKSkvDy8qJu3brmVVQ7OzsWLFjAkiVLWLlyJefOnaN06dJUq1Yt16/y9vPzY926dcTGxpKamkqFChWYMWMGLVu2BG6VHSxYsIBp06YxYsQIKlasyMsvv2xOtvPrjTfeYNKkSYwbNw5vb2/GjRvHypUrrRoLbj1sOHnyZJYtW8bGjRtp2LAhr776Kv3798/1uG7dupGamsqqVat477338Pb2JjIy0pzIzpkzh9TUVKZMmWI+JiIigm+++YapU6cSExOT7bjjx48nPT2dhQsXYjAY6NChA3379mX27NnmPk5OTqxatYr58+cTExNDQkICHh4e1KpVi6CgIKvvhYiIiEhRZGcymYrGE2DywNEDiFIQNDe262GeG09PV9qP+aSww8jVpqiOD+382LqH+bNji+70AGK+vwFRRERERERuUTItIiIiImKle14zLSIi8rBJSU1nU1THwg4jV2k3Mwo7BJEHgpJpERGRAnY16Qa2XvFaVL5YRsTWqcxDRERERMRKSqZFRERERKykMg8REREb5FrKmeJO9+6fadVMixQMJdMiIiI2qLhTsXu6V7WtPyApUlSozENERERExEpKpkVERERErPRQJdMLFiygadOmVKtWjcjISOLi4jAajRw9evS+nN/f35+YmJh7fp6YmBj8/f3v2C80NJTIyEjz68jISEJDQ82vDx06dF/iFRERESmqHpqa6cOHDxMTE8Po0aNp2LAhZcqUwcPDg9jYWCpUqFDY4RWorl278vTTT+f7uPDwcFJSUsyvDx06xIIFCxg+fHhBhiciIiLywHhokukTJ04A0LNnT1xcXMztfn5+hRTRvePj44OPj0++j3vQfqgQERERudceijKPyMhIxo8fD0C9evUwGo3ExcVlKfPYvHkz1apVY+/eveZjT58+Td26dZk3b565bf/+/fTq1YvatWvj7+/PpEmTSE5Otjjnvn376NChA76+voSGhvLDDz/kKdYVK1bQpUsX6tWrR+PGjRk8eDC///57ln7bt28nLCyMWrVq4e/vz4ABAzhz5gyQfZnH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IiIiIg+yIp1MA7Rp04aSJUuydOlSPvroIwwGA4899hjNmzfHwcEBe3t7qlatyqpVqzh//jzFixfHz8+Pt99+O0tyfJu3tzfLli3jlVdeYfjw4VSuXNm8Jd/fdevWjT/++IP33nuPtLQ0OnbsyJAhQywe8OvevTunT59m1apVpKam0qRJE6KioujWrVu+rtPX15d3332X//znP1y7do1y5coxfPhwnn/+eXOfN954g0mTJjFu3Di8vb0ZN24cK1eutBinVatWTJo0ieXLl/PRRx/RsGFDxo8fz4svvoiLy616IKPRyKxZs1iwYAHbt2+nWrVqzJ8/n1GjRuUrZhEREZEHnZ3JZCoaT4DJPbNo0SKWLFnCd999l+MPGPeCHkCUgqC5sV2am3vD09OV9mM+uetxNkV11PzYKH12bMsD/QCi5N+lS5dYunQp/v7+ODs7s3//fpYvX05YWNh9TaRFREREHgRKph8yDg4OnDhxgo0bN5KcnIynpyf//ve/GTlyZGGHJiIiIlLkKJl+yLi6urJ8+fLCDkNERKyUkprOpqiOdz1O2s2MAohGRJRMi4iIFCFXk25QENW0+oY9kYJRpPeZFhEREREpTEqmRURERESspDIPERGRIsq1lDPFnaz7p1w10yIFQ8m0iIhIEVXcqZjVe04XxEOMIqIyDxERERERqymZFhERERGxkpJpG3P06FGMRiNxcXH39bxxcXEYjUaOHj0KQFpaGjExMfz888/3NQ4RERGRokTJtABQo0YNYmNjqVChAgA3b95kwYIFSqZFREREcqEHEAUAFxcX/Pz8CjsMERERkSJFK9OF7P3336dZs2b4+fkxePBg4uPjLd7PzMxk2bJlBAcHU7NmTVq3bs3HH39s0ad3796MGDGCTZs2ERwcTN26dXnhhRc4f/68Rb+lS5cSHByMr68vjRs3pn///ubz/bPMo27dugC89NJLGI1GjEYjp0+fJiwsjMjIyCzXERkZSadOnQrqtoiIiIgUCVqZLkQ7duxg+vTpdO/enZYtW7Jv3z4mTJhg0WfGjBls3LiR8PBwatSowTfffMOECRNwc3Pj6aefNvf78ccfuXjxIhEREaSmpvLqq68yefJkli9fDsDGjRtZsmQJY8eO5cknnyQxMZFvv/2WGzduZBvbypUref755xkyZAjNmzcHwMvLi7CwMObMmcPkyZMp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ERGxkpJpERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaRGRAhQTE4PRaMzyq0+fPgV6nkOHDhETE1OgY95r169fZ9SoUfj7+2M0GtmwYQMA69atIygoiH/961/07t27wM73+eefm89xt44fP85zzz2Hn58fRqOR06dPF8i4+REXF4fRaOTo0aP3/dz/lJaWxuzZswkICMDPz4+BAwcWyj0RsQX6BkQRkQLm6upq3k/5720F6dChQyxYsMC8j3ZRsGbNGnbt2sWcOXPw9vamQoUKxMfH8/LLL9OzZ09CQkIoXbp0gZ1vy5YtXL58mdDQ0Lse67XXXuPq1assXrwYZ2dnvLy8CiDCouuVV15h69atvPTSS7i7u7NgwQL69evHpk2bcHJyKuzwRO4rJdMiIgXM3t4ePz+/wg4jX1JSUihevPg9PceJEyeoWLGixbfp7d+/n4yMDLp06WLT33p44sQJgoKCCAgIuKtxTCYTaWlpRTrhPH/+PB9++CEzZ86kU6dOAFSrVo0WLVrw6aef0rVr18INUOQ+U5mHiMh9tn79etq2bUvNmjV5+umnWb58ucX7Bw4cYPDgwQQGBuLn50fHjh359NNPze9v2LCBGTNmAJjLSG6XR0RGRmZZiT19+jRGo5Fdu3aZ24xGI++88w6vvvoqjRo1on379gCkpqby2muv0axZM2rWrEmHDh348ssv73hNdzouKCiIDz/8kCNHjphjjomJoWfPngB07NjRovQjr3GsW7eO9u3b4+vrS+PGjRkxYgRXr14lMjKSrVu38t1331mcD24l8M899xx169albt26dOzYkc2bN2d7Xbfv3R9//MG7775rca8BVq9eTatWrahZsybBwcG8++67FsfHxMTg7+/P/v376dKlC76+vjmeC+CXX35h8ODB1K9fnzp16hAWFmb+JrzsrFixgi5dulCvXj0aN27M4MGD+f333y363Ol6d+7cSWhoKH5+fjRo0ICuXbvy3Xff5XjOr7/+GoDg4GBzm7e3N3Xr1uW///1vjseJPKi0Mi0icg+kp6dbvLa3t8fOzo633nqLefPm8cILL9CwYUN++ukn5s+fj7OzM7169QLg7Nmz1K1blx49euDo6MgPP/zAhAkTMBgMtGvXjubNm9OvXz9WrFhBbGwsAC4uLvmO8e2336Z+/fq89tpr3P4y3BEj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hYXRs2dP+vXrh5ubG0eOHMHNzY2wsLAs/Rs1akRGRgYvvfQSYWFhHDt2jBUrVlCqVClzn927d+d6vWvXruXgwYM0bdoULy8vTp06xZYtW8xJcnZ8fHwICwtj5syZmEwmPDw8WLBgAeXKlaNDhw75vm6Rok7JtIjIfTRgwAC8vLxYuXIl77zzDk5OTjzxxBO0adPG3CcqKoopU6YQERGBm5sbPXv2JCUlhdWrV5v71K9fn/79+7Nq1SreeOMNGjRowHvvvUfVqlWZOXMmixYtYvv27TRq1IhZs2ZZlIzkxM7OjgULFrBkyRJWrlzJuXPnKF26NNWqVcv1a76tPe5uxxs0aBClS5dm1apVrF27ltKlS1O/fn3zlm3PPfccP//8MxMmTODKlSsMGzaMtm3bYmdnx7x580hISMDDw4PmzZszevTofMfZrVs3UlNTWbVqFe+99x7e3t5ERkZa/dXxlSpV4oMPPiAqKoqJEycCUKVKlRxjMxqNzJo1iwULFrB9+3aqVavG/PnzGTVqlLlPhQoVcr1eo9HIF198waxZs7hy5Qqenp507dqVkSNH5hrrpEmTcHZ2Zvbs2aSkpNCgQQOioqKK9JfRiFjLzmT6/5uLioiIiIhIvmhrPBERERERKymZFhERERGxkpJpERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaRERERERKymZFhERERGxkpJpEREREREr/T+wmI9qpMS2xQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import shap\n", + "from alibi.explainers import KernelShap\n", + "\n", + "predict_fn = lambda x: model(scaler.transform(x))\n", + "\n", + "explainer = KernelShap(predict_fn, task='classification')\n", + "\n", + "explainer.fit(X_train[0:100])\n", + "\n", + "result = explainer.explain(x)\n", + "\n", + "plot_importance(result.shap_values[0], features, 0)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "77deef77-42c1-4450-b381-fde4b1079e24", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "19b564c2c960412980333e532dda6ecc", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/1 [00:00,\n", + "
)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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x8eHbdu2mYveW5o0acLMmTNZunQpderU4fPPP2ffvn02n2tERARXrlyhYcOGlC1blqNHj7J//37Gjh0LZBTZtWrVYuHChbi4uJCens7y5cvNV/tvGTRoECNGjGDmzJkEBgbyww8/8Pnnn5vzCRk97Wlpabz00kuEhoZy/PhxVq1aRenSpW2OW0RERKQouq+LbIC2bdtSqlQpli9fzsaNGzEYDDz00EO0aNGCEiVKUKxYMapXr86aNWs4d+4czs7O+Pr68vbbb2cqmm/x9vZmxYoVvPLKK4wYMYKqVauabx34T926dePPP//kvffeIyUlhY4dOzJkyBCrNxZ2796d06dPs2bNGpKTk2natCnh4eF069bNpvP08fHh3Xff5f/+7/+4fv06FStWZMSIETz//PPmOW+88QZTpkxh/PjxeHt7M378eFavXm21T+vWrZkyZQorV65k48aNNGzYkAkTJvDiiy/i6prR1G80GpkzZw6LFi1ix44d1KhRg4ULFzJ69GibYhYREREpqhxMJpNtt3eQQmfJkiUsW7aM/fv3Z/uLR37Q3UXujnJhoVxYKBcWyoWFcpGhqObB09ONDmM/sRrbHN6xSOYiK7q7iNjFxYsXWb58Of7+/ri4uPDdd9+xcuVKQkND/9UCW0RERKQwU5FdxJQoUYKTJ08SHR1NQkICnp6ePPfcc4waNaqgQxMREZF8kJScyubwjlZjKTfTCiiaokNFdhHj5ubGypUrCzoMERER+Zdcu5rI7c0Q+rTH/Hdf38JPRERERORepCJbRERERMTOVGSLiIiIiNiZerJFRERECjG30i44O1mXfHrjY/5TkS0iIiJSiDk7Fc/yPtmSv9QuIiIiIiJiZyqyRURERETsLM9F9qJFi2jWrBk1atQgLCzMnjH963r37s3IkSOtxtavX09gYCD/+c9/6N27978Wy7FjxzAajcTExJjHjEYja9eutetxTp8+jdFoZM+ePTnOW7t2LUaj0a7HFhERESns8tSTfeTIESIjIxkzZgwNGzakXLly9o6rQMXFxfHyyy/Ts2dPgoODKVOmTIHGExUVRaVKley6p5eXF1FRUTz66KN23VdERERE8lhknzx5EoCePXvi6uqa7bykpCScnZ3zFlkB+uOPP0hLS6NLly7UqFHjrvZKS0sjLS0NR0fHPO/h6+t7VzFkxdHRMV/2FRER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A1C7dm28vb159dVXGTVqFJcvX+att97K8d7e2alQoQK1atVi4cKFuLi4kJ6ezvLly62u+tpq8ODBDB8+nOnTpxMUFMSBAwf48ssvc1xjMBgYMWIE06ZNw93dnaZNm3LgwAHWrVvHmDFjcHJy4vr160yaNIm2bduae7efeeYZXn75ZRo0aICHh0emfcuWLUu3bt2IjIykePHiVKtWjQ0bNnDjxg2reZ06deLDDz+kd+/e9OvXj4ceeojLly9z+PBhPD096dOnT57zISIiIlJY5HuR7eHhQVRUFG+++SZz5szh6tWreHl54efnZ77q6uDgwKJFi1i2bBmrV68mNjaWMmXKUKNGjRw/0tzX15f169cTFRVFcnIylStXZtasWbRq1QrIaF9YtGgRM2bMYOTIkVSpUoWXX37ZXITb6o033mDKlCmMHz8eb29vxo8fz+rVq/O0F2S8yXHq1KmsWLGC6OhoGjZsyKuvvkr//v1zXNetWzeSk5NZs2YN7733Ht7e3oSFhZkL3Hnz5pGcnMy0adPMayZOnMjXX3/N9OnTiYyMzHLfCRMmkJqayuLFizEYDDz99NP07duXuXPnmuc4OTmxZs0aFi5cSGRkJPHx8Xh4eFC7dm0CAwPznAsRERGRwsTBZDLZdnsHETvR3UXujnJhoVxYKBcWyoWFcpGhqObB09ONDmM/sRrbHN6xSOYiK/l1dxGbP/FRRERERERylu/tIiIiIiJScJKSU9kc3tFqLOVmWgFFU3SoyBYREREpxK5dTeT2Zgh92mP+U7uIiIiIiIidqcgWEREREbEzFdkiIiIiInamnmwRERGRIiblZtp91ZedlJzKtauJBR2GTVRki4iIiBQxjiWKZbp39r1sc3jHTG/evNepXURERERExM5UZIuIiIiI2JmK7AIQExOD0Wjk2LFjNq3btGkTRqOR69ev33UMX331Fe++++5d7yMiIiIimanILqK+/vpr1qxZU9BhiIiIiBRKKrJFREREROxMRXYeHD9+nP79+9OwYUN8fX156qmneP/99wEIDAxk3rx5VvNz0+ZhNBp55513eOWVV2jYsCH169dn1qxZpKSkZJp7+vRp+vbti6+vL8HBwWzfvt3q+b1799K3b18aN26Mn58f3bp146uvvjI/HxkZyapVqzhz5gxGoxGj0UhYWJj5+e+++45evXpRp04d/P39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/ciPPvoof//9N5s2beKxxx6jbNmyVKpUCR8fHxYvXoyrqysGg4EVK1bg6upKQkKCTcH36NGDoKAgHnvsMRwcHFi/fj0lS5Y094O3atWKiIgIJk+eTEhICEePHmXjxo15SFPGmwudnZ2ZNGkSffv25fTp03z44Yd52gsyrvp269aNyMhIihcvTrVq1diwYQM3btzIcV3VqlVp164dM2fO5Pr16zz00ENs2LCBkydPmu8Ac/ToUZYtW8aUKVN46KGHGDZsGLt372bSpEmsXr06yyvtzZs3p0aNGowaNYpx48bh6OhIZGRkphaS4cOH07VrVwYOHEiXLl0oW7Ys58+f55tvvqFz585Z3uZQREREpKi545XsZ599lqZNmzJp0iRCQ0NZv349AN26dWPy5Mns3LmTwYMH8+mnnxIWFsbAgQPNa5966ilCQkKYP38+oaGh5lv5hYeH89BDDzFx4kReffVVWrduTadOnWwO3tfXl48//piRI0fy4osvmvuFb91msHr16syePZtDhw4xZMgQDhw4wJw5c2w+DmTcfjAiIoJz584xbNgw/vvf/xIeHp6nvW6ZMGECXbp0YfHixYwdOxYvLy/69u17x3WvvPIKnTt3ZvHixQwdOpQzZ86wbNky6tevT0pKChMnTsTf35/u3bsD4OjoyGuvvcYPP/xgdU/vf3JwcGDp0qVUrVqVSZMmMWfOHHr27EndunWt5lWpUsX8SZHTpk1jwIABREZG4ujoyMMPP3xX+RAREREpLBxMJpNt7zwTsRO98fHuKBcWyoWFcmGhXFgoFxmUBwtPTzc6jP2koMOwi83hHe/JNz7e8Uq2iIiIiIjYRkW2iIiIiIid5ekWfiIiIiJy/0q5mcbm8Lv7lOx7RVJyakGHkCUV2SIiIiJFjGOJYupPz2dqFxERERERsTMV2SIiIiIidqYiW0RERETEzlRki4iIiIjYmYpsERERERE7U5EtIiIiImJnKrJFREREROxMRbaIiIiIiJ2pyBYRERERsTN94qMUGIPB4V9dVxgpFxbKhYVyYaFcWCgXGZQHC+XCIqdc5DVPDiaTyZTXgEREREREJDO1i4iIiIiI2JmKbBERERERO1ORLSIiIiJiZyqyRURERETsTEW2iIiIiIidqcgWEREREbEzFdkiIiIiInamIltERERExM5UZIuIiIiI2JmKbClwiYmJ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pW/fvnTu3LlAzvVO7PV35MMPP+Stt94CoGnTpkybNs18/jk9dy/JbS4g53O6318v7JGHovZaAdnn4n5+rThx4gRhYWFcvXqV0qVLM2/ePB599FEGDBjAyJEj8fHxIS0tjZkzZ/L1118DMGDAAPObRfP63L3obnPRpUsXzpw5Y1U8v/baaxiNRvr06UN8fDwODg64uroyYcIEfH19c4xHRbaIiIiIiJ2pXURERERExM5UZIuIiIiI2JmKbBERERERO1ORLSIiIiJiZyqyRURERETsTEW2iIgdRUZGYjQaM3316dPHrsc5fPgwkZGRdt0zv924cYPRo0fj7++P0Whk06ZNAKxfv57AwED+85//0Lt3b7sd77PPPjMf426dOHGCZ599Fl9fX4xGI6dPn7bLvraIiYnBaDRy7Nixf/3Yt1u8eDF9+vTBz8+vwPIhcq/TJz6KiNiZm5ub+V68/xyzp8OHD7No0aJ79t7FWVm3bh179uxh3rx5eHt7U7lyZeLi4nj55Zfp2bMnwcHBlClTxm7H27p1K5cuXSIkJOSu93rttde4du0aS5cuxcXFBS8vLztEeP+Kiori4Ycfxt/fn927dxd0OCL3JBXZIiJ2VqxYsTt+SMG9JikpCWdn53w9xsmTJ6lSpYrVJ8Z99913pKWl0aVLl3vykxVvOXnyJIGBgTRu3Piu9jGZTKSkpODk5GSnyArG3r17MRgM7NmzR0W2SDbULiIi8i/bsGED7dq1o1atWjz55JOsXLnS6vmDBw8yePBgAgIC8PX1pWPHjvz3v/81P79p0yZmzZoFYG5HudVmERYWlunK7enTpzEajezZs8c8ZjQaeeedd3j11Vdp1KgRHTp0ACA5OZnXXnuN5s2bU6tWLZ5++mk+//zzO57TndYFBgby0UcfcfToUXPMkZGR9OzZE4COHTtatZDkNo7169fToUMHfHx8aNKkCSNHjuTatWuEhYWxbds29u/fb3U8yCjsn332Wfz8/PDz86Njx45s2bIly/O6lbs///yTd9991yrXkPEJka1bt6ZWrVoEBQXx7rvvWq2PjIzE39+f7777ji5duuDj45PtsQB++eUXBg8eTP369albty6hoaHmT6bLyqpVq+jSpQv16tWjSZMmDB48mD/++MNqzp3Od9euXYSEhODr60uDBg3o2rUr+/fvz/aYAAaDygeRO9GV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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import shap\n", + "from alibi.explainers import KernelShap\n", + "\n", + "predict_fn = lambda x: rfc.predict_proba(scaler.transform(x))\n", + "\n", + "explainer = KernelShap(predict_fn, task='classification')\n", + "\n", + "explainer.fit(X_train[0:100])\n", + "\n", + "result = explainer.explain(x)\n", + "\n", + "plot_importance(result.shap_values[1], features, 1)" + ] + }, + { + "cell_type": "markdown", + "id": "c9f0d0aa-f805-4ca7-9d26-4280548dd66b", + "metadata": {}, + "source": [ + "## Interventional treeSHAP" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "2d3b1ce0-8d52-4a6f-b30c-40779b9b2a8c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(,\n", + "
)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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eHp6ZjvPzc36G+jo6EhycnKW82NjYylfvrzVWLFixXB3d8/QmlGuXLlsj/33339nOu/Ox5cvXyY2NpaaNWtm2ON2sf/oo4+ydOlSVq5cyaBBgyhevDiBgYFMmTIFDw+PbOP4p7i4eNLSTLmeD+l/CWJjr9u0prBSLiyUCwvlwkK5SKc8WNwPufg3C997PRf/lpx+LgwGhzxdGFSRbQelS5fGYDAQGxtr1309PT2Ji4uzGktNTeXKlSuUKVPGajy7K+iAuVi/c787H5cpUwZvb2+WLFmS7X4tW7akZcuWXL9+nX379jFnzhxmz57NwoULs10nIiIiUhTojY92ULJkSerUqUNUVBQmk21XZrNTp04ddu3aRWpqqnlsx44dpKSkUL9+fZv2euCBB/D09GT37t1W4zt37rR63KRJE/7++29KliyJj49Phq87ubm50bFjRwIDA/ntt99siklERESksNKVbDsZN24c/fr144UXXuCZZ57BxcWFw4cPU6tWrTzvOXToULp06cLw4cPp2bMn58+f5/XXX8ff39+qHzs3ihUrxgsvvMD8+fMpW7YsDRo0YMeOHZw8edJqXrNmzfD396d///4MHDiQatWqER8fzy+//EJSUhLjxo3jww8/5PDhwzRv3hwvLy9Onz7Ntm3b6NSpU57PVURERKQwUZFtJw0bNmT16tUsWrSICRMmUKJECR5//HFat27N5cuX87TnY489xqpVq3jjjTcYMWIErq6utG/fngkTJuRpv+eff54rV67w4YcfsmbNGgICApgwYQLjx483z3FwcGDx4sUsX76cNWvWEBMTQ5kyZahRowZ9+vQB0u+/vWfPHubOncvVq1fx9PSkW7dujB49Ok9xiYiIiBQ2DiZ79jeI2EBvfLw7yoWFcmGhXFgoF+mUB4v7IReenm50HPdJvh9nS1inez4X/5b8euOjerJFREREROxMRbaIiIiIiJ2pJ1tERETkHpGYlMKWsPy/kUDyrdScJ8ldUZEtIiIico+4fi2Bf6NTWp/2mP/ULiIiIiIiYmcqskVERERE7EztIiIiIiL3KbfSLjg72V7OqSc7/6nIFhEREblPOTsVz9N9tf+NN1cWdWoXERERERGxMxXZIiIiIiJ2piLbzjZv3ozRaOTGjRsAxMXFERERwZkzZ3K9h9FoZN26dfkVYq5FR0djNBo5fvx4tvPm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ffcdvXv3pk6dOvj5+TF16lTi4+Otjnnw4EGefvppfHx8CA4O5ocffshVrKtXr6Zr167Ur1+fpk2bMmTIEP74448M83bu3ElISAi1a9fGz8+PgQMHcvbsWSDzdpHjx4/To0cPfHx8eOqpp9i9e3emebrdLrJ582Zmz54NgNFoxGg00qdPH3777Tdz/v7pxo0b1K1blzVr1uTqPEVEREQKsyJxJXvYsGFUqFCBZcuWsWbNGpydnalWrRo//fST1bynnnqKnTt3MnnyZLZs2UKpUqV46aWXqFSpEsOHDwfg+++/p2/fvrRu3Zrw8HAuX75MWFgY165dIzw8HIALFy4wcOBAfHx8CA8P5+LFi4wfP96qFSMr58+fp3fv3lSsWJH4+Hg+/PBDevTowY4dO3BzS/8I1KioKCZNmkT79u0ZNmwYJpOJb7/9lkuXLvHggw9m2DMxMZEBAwZQtmxZwsLCSExMZM6cOdy8eZPq1atnGkfLli3p378/q1evJjIyEgBXV1eqVauGr68vH3/8sVUhv23bNm7dusXTTz+di++IiIiISOFWJIrsypUrm1shfHx8KFWqVJZzp0+fTocOHZgzZw41atTg0KFDfPTRRzg6OgIQFhZG3bp1efPNN81rvL296du3L8ePH6d69eqsWbMGJycnVq5ciYuLCwAuLi5MmDAhx1gnT55s/nNqairNmjWjSZMm7N69m86dO5OWlkZYWBiBgYG88cYb5rmtWrXKcs9NmzZx6dIlNm7caG4jefDBB3n22WezXOPh4WEu2O9sqQkJCWHOnDlMmzbNnMvNmzcTEBBA2bJlczzH28qVc815UiY8Pd3ytK4wUi4slAsL5cJCuUinPFgoFxbKhUV+5KJIFNm2cHd355VXXmHw4MGUKFGC4cOHU6NGDQASEhI4fPgwU6dOJSUlxbymfv36lChRgp9++onq1atz9OhRmjZtai6wAQIDA3N1/MOHD7No0SKOHTvGlStXzOO///67+b8XL160ugtITo4ePUrNmjWt+rTr169PuXLlcr3HPz311FPMmTOHbdu20bVrV/7880++//57li9fbtM+cXHxpKWZbFrj6elGbOx1m9YUVsqFhXJhoVxYKBfplAeLopaLnArHopSL7OT0c2EwOOTpwmCR6Mm2VePGjSlfvjwmk4nu3bubx69du0ZqaiozZ86kZs2a5i8fHx9u3bpFTEwMALGxsRkKWBcXF0qWLJntcc+dO0f//v0xmUzMnDmT9evX89FHH1GuXDmSk5MBuHz5MgCenp65Pp/Y2Fg8PDwyjOe1yHZ1dSUoKIjNmzcD6Vexy5cvT/PmzfO0n4iIiEhhoyvZmXj99ddJTU2lfPnyzJkzh7CwMADc3NxwcHBgxIgRtGjRIsM6Ly8vIL0AjouLs3ouISGBmzdvZnvcL7/8ksTERJYuXWouyFNSUrh69ap5zu12jNjY2Fyfj6enp/nuKv90Z4y26NatG88++yynT5/mk08+oXPnzhQrVizP+4mIiIgUJiqy7xAdHc26det48803cXV1ZcCAAbRp04a2bdtSsmRJfH19+f333xkxYkSWe9SqVYvNmzeTkJBgbhnZuXNnjsdOTEzEYDBQvLjl27J161ar1pQqVarg7e1NVFQUAQEBuTonHx8ftmzZwvnz580tI99//32ORXaJEiUASEpKwsnJyeq5evXqUaVKFSZPnsy5c+fo0qVLrmIRERERKQrULvIPN27cYPLkybRr146goCD8/f155plnePnll7l06RIA48ePZ/v27UyYMIFdu3axf/9+Nm/ezKhRo8x903379iUxMZHBgwezd+9eIiMjefPNN3F2ds72+I0bNyY1NZWXXnqJ/fv3s3btWsLCwihdurR5jsFgYMKECWzfvp1x48axd+9e9u3bx7x58zh69Gim+wYHB1O2bFkGDRrEzp072bJlC5MmTcrxTYqPPvooAGvWrOHIkSMZroaHhITw/fffU7duXapWrZp9ckVERESKEBXZ/zB//nySkpKYPn26eWzSpEmULFmSGTNmANCgQQPef/99Ll26xMSJExk6dChvvfUWDzzwAOXLlwfS7zaycuVKLl++zMiRI/nggw9YsGBBjkW20Whk7ty5/PjjjwwePJhPP/2URYsWmW/dd1vHjh2JiIjg999/Z9SoUUyaNIlTp05l2ncN6f3gb731FiVLlmTMmDEsXryY0NBQKlasmG08DRo0YMCAAaxdu5bu3bubc3Bb69atAejatWu2+4iIiIgUNQ4mk8m22zuI/H/vv/8+r7/+Ol9++aXVp2jmlu4ucneUCwvlwkK5sFAu0ikPFkUtF56ebnQc90mmz20J61SkcpGd/Lq7iHqyxWZnzpzh9OnTrFixgi5duuSpwBYREREpzFRki80W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jz+YMGECALVr18bb25tXX32V0aNHc+XKFd56661s7+2dlQoVKlCrVi0WLVqEi4sLaWlprFixwuqqr62GDBnCiBEjmDFjBoGBgRw8eJAvv/wy2zUGg4GRI0cyffp03N3dadasGQcPHmT9+vWMHTsWJycnbty4weTJk2nXrp25d/uZZ57h5ZdfpmHDhnh4eGTYt2zZsnTv3p2IiAiKFy9OtWrV2LhxIzdv3rSa17lzZz788EP69OlD//79eeihh7hy5QpHjhzB09OTvn375jkfIiIiIoVFvhfZHh4eREZG8uabbzJ37lyuXbuGl5cX9erVM191dXBwYPHixSxfvpw1a9YQExNDmTJlqFGjRrYfae7r68uGDRuIjIwkKSmJypUrM3v2bFq3bg2kty8sXryYmTNnMmrUKKpUqcLLL79sLsJt9cYbbzB16lQmTJiAt7c3EyZMYM2aNXnaC9Lf5Dht2jRWrlxJVFQUjRo14tVXX2XAgAHZruvevTtJSUmsXbuW9957D29vb0JDQ80F7vz580lKSmL69OnmNZMmTeLrr79mxowZREREZLrvxIkTSUlJYcmSJRgMBp5++mn69evHvHnzzHOcnJxYu3YtixYtIiIigri4ODw8PKhduzYBAQF5zoWIiIhIYeJgMplsu72DiJ3o7iJ3R7mwUC4slAsL5SKd8mBRVHPh6elGx3GfWI1tCetUJHORmfy6u4jNn/goIiIiIiLZy/d2EREREREpOIlJKWwJ62Q1lnwrtYCiKTpUZIuIiIgUYtevJXBnM4Q+7TH/qV1ERERERMTOVGSLiIiIiNiZimwRERERETtTT7aIiIhIEZN8K/W+6ctOTErh+rWEgg7DZiqyRURERIoYxxLFMtw7+161JaxThjdu3g/ULiIiIiIiYmcqskVERERE7ExFdgGIjo7GaDRy/Phxm9Zt3rwZo9HIjRs37jqGr776inffffeu9xERERGRjFRkF1Fff/01a9euLegwRERERAolFdkiIiIiInamIjsPTpw4wYABA2jUqBG+vr489dRTvP/++wAEBAQwf/58q/m5afMwGo288847vPLKKzRq1IgGDRowe/ZskpOTM8w9c+YM/fr1w9fXl6CgIHbs2GH1/L59++jXrx9NmjShXr16dO/ena+++sr8fEREBKtXr+bs2bMYjUaMRiOhoaHm57/77jt69+5N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sWPHmvuRH330Uf7++282b97MY489RtmyZalUqRI+Pj4sWbIEV1dXDAYDK1euxNXVlfj4eJuC79mzJ4GBgTz22GM4ODiwYcMGSpYsae4Hb926NeHh4UyZMoXg4GCOHTvGpk2b8pCm9DcXOjs7M3nyZPr168eZM2f48MMP87QXpF/17d69OxERERQvXpxq1aqxceNGbt68me26qlWr0r59e2bNmsWNGzd46KGH2LhxI6dOnTLfAebYsWMsX76cqVOn8tBDDzF8+HD27NnD5MmTWbNmTaZX2lu0aEGNGjUYPXo048ePx9HRkYiIiAwtJCNGjKBbt24MGjSIrl27UrZsWS5cuMA333xDly5dMr3NoYiIiEhRk+OV7GeffZZmzZoxefJkQkJC2LBhAwDdu3dnypQp7Nq1iyFDhvDpp58SGhrKoEGDzGufeuopgoODWbBgASEhIeZb+YWFhfHQQw8xadIkXn31Vdq0aUPnzp1tDt7X15ePP/6YUaNG8eKLL5r7hW/fZrB69erMmTOHw4cPM3ToUA4ePMjcuXNtPg6k334wPDyc8+fPM3z4cP773/8SFhaWp71umzhxIl27dmXJkiWMGzcOLy8v+vXrl+O6V155hS5durBkyRKGDRvG2bNnWb58OQ0aNCA5OZlJkybh5+dHjx49AHB0dOS1117jhx9+sLqn9z85ODiwbNkyqlatyuTJk5k7dy69evWibt26VvOqVKli/qTI6dOnM3DgQCIiInB0dOThhx++q3yIiIiIFBYOJpPJtneeidiJ3vh4d5QLC+XCQrmwUC7SKQ8WyoWFp6cbHcd9UtBh2MWWsE735Bsfc7ySLSIiIiIitlGRLSIiIiJiZ3m6hZ+IiIiI3L+Sb6WyJezuPiX7XpGYlFLQIWRKRbaIiIhIEeNYopj60/OZ2kVEREREROxMRbaIiIiIiJ2pyBYRERERsTMV2SIiIiIidqYiW0RERETEzlRki4iIiIjYmYpsERERERE7U5EtIiIiImJnKrJFREREROxMn/goBcZgcPhX1xVGyoWFcmGhXFgoF+mUBwvlwkK5sMguF3nNk4PJZDLlNSAREREREclI7SIiIiIiInamIltERERExM5UZIuIiIiI2JmKbBERERERO1ORLSIiIiJiZyqyRURERETsTEW2iIiIiIidqcgWEREREbEzFdkiIiIiInamIlsK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Pyv9+vWjS5cuBXKuObHX35EPP/yQt956C4BmzZoxffp08/ln99y9Ird5gOzPpyi9VkDWuShqrxWQdS7u59eKkydPEhoayrVr1yhdujTz58/n0UcfZeDAgYwaNQofHx9SU1OZNWsWX3/9NQADBw40v1k0r8/di+42F127duXs2bNWxfNrr72G0Wikb9++xMXF4eDggKurKxMnTsTX1zfbeFRki4iIiIjYmdpFRERERETsTEW2iIiIiIidqcgWEREREbEzFdkiIiIiInamIltERERExM5UZIuI2FFERARGozHDV9++fe16nCNHjhAREWHXPfPbzZs3GTNmDH5+fhiNRjZv3gzAhg0bCAgI4D//+Q99+vSx2/E+++wz8zHu1smTJ3n22Wfx9fXFaDRy5swZu+xri+joaIxGI8ePH//Xj32nJUuW0LdvX+rVq1dg+RC51+kTH0VE7MzNzc18L95/jtnTkSNHWLx48T177+LMrF+/nr179zJ//ny8vb2pXLkysbGxvPzyy/Tq1YugoCDKlCljt+Nt27aNy5cvExwcfNd7vfbaa1y/fp1ly5bh4uKCl5eXHSK8f0VGRvLwww/j5+fHnj17CjockXuSimwRETsrVqxYjh9ScK9JTEzE2dk5X49x6tQpqlSpYvWJcd999x2pqal07dr1nv10RUiPPSAggCZNmtzVPiaTieTkZJycnOwUWcHYt28fBoOBvXv3qsgWyYLaRURE/mUbN26kffv21KpViyeffJJVq1ZZPX/o0CGGDBmCv78/vr6+dOrUif/+97/m5zdv3szs2bMBzO0ot9ssQkNDM1y5PXPmDEajkb1795rHjEYj77zzDq+++iqNGzemY8eOACQlJfHaa6/RokULatWqxdNPP83nn3+e4znltC4gIICPPvqIY8eOmWOOiIigV69eAHTq1MmqhSS3cWzYsIGOHTvi4+ND06ZNGTVqFNevXyc0NJTt27dz4MABq+NBemH/7LPPUq9ePerVq0enTp3YunVrpud1O3d//vkn7777rlWuIf1TItu0aUOtWrUIDAzk3XfftVofERGBn58f3333HV27dsXHxyfLYwH88ssvDBkyhAYNGlC3bl1CQkLMn0yXmdWrV9O1a1fq169P06ZNGTJkCH/88YfVnJzOd/fu3QQHB+Pr60vDhg3p1q0bBw4cyPKYAAaDygeRnOhK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5EimT5+Ou7s7zZo14+DBg6xfv56xY8fm6T7Yw4cPJyQkhF69etG/f3/c3d05duwY7u7uhISEZJjfuHFjUlNTeemllwgJCeHEiROsXr2a0qVLm+fs27cv2/P98MMPOXz4MM2bN8fLy4vTp0+zbds2OnXqlG2sBw4c4NKlS/z0008AfPHFF3h4eFCtWjWqVatm87mLFEYqskVE/kUDBw7Ey8uLNWvW8M477+Dk5MQjjzxCu3btzHPCwsKYPn06kyZNwt3dnV69epGYmMi6devMcxo0aMCAAQNYu3Ytb7zxBg0bNuS9996jevXqzJkzh6VLl7Jz504aN27M3LlzrVpPsuLg4MDixYtZvnw5a9asISYmhjJlylCjRo1sP+48r+vudr/BgwdTpkwZ1q5dy4cffkiZMmVo0KABpUqVAuDZZ5/l559/ZvLkyVy9epURI0bQvn17HBwcWLhwIXFxcXh4eNCyZUvGjh1rc5zdu3cnKSmJtWvX8t577+Ht7U1oaCh9+/a1eS9I/8Xpgw8+ICwsjClTpgBQrVq1LGMzGo3MnTuXxYsXs3PnTmrUqMGiRYsYM2aMeU7lypWzPV+j0ciePXuYO3cuV69exdPTk27dujF69OhsY42IiLC6l/bMmTMBGDFixH31KaQi+cnBZPr/N0cVERERERG70C38RERERETsTEW2iIiIiIidqcgWEREREbEzFdkiIiIiInamIltERERExM5UZIuIiIiI2JmKbBERERERO1ORLSIiIiJiZyqyRURERETs7P8BD7Klm1YQYfIAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from alibi.explainers import TreeShap\n", + "import shap\n", + "\n", + "tree_explainer_interventional = TreeShap(rfc, model_output='raw', task='classification')\n", + "tree_explainer_interventional.fit(scaler.transform(X_train[0:100]))\n", + "result = tree_explainer_interventional.explain(scaler.transform(x))\n", + "\n", + "plot_importance(result.shap_values[1], features, 1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "94c05d4f-13b8-4266-bced-510664ba7342", + "metadata": {}, + "source": [ + "## Path Dependent treeSHAP" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "aeef4572-2c4e-41ea-8298-80c95476be96", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(,\n", + "
)" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAFECAYAAADlf7JXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABj4UlEQVR4nO3deXxN1/7/8VcOMpCQhCSqqjUeLiHGGKI0hNRQRExFa6h5qjk1Fq2hpEjMSku1hFb16q156O2gQUu51ZYa2iJIQ0QigyTn94ef8+1pBslpiBzv5+ORx3XWXnvtz97Luf1k++y17UwmkwkREREREck1Q34HICIiIiJSUCmZFhERERGxkpJpERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaRERERERKxXO7wDk8XXjRgLp6Vrm3BaVLOlMTEx8fochD5Dm2LZpfm2b5jd3DAY73NyKZbldybTkm/R0k5JpG6a5tX2aY9um+bVtmt+8ozIPERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaRERERERKymZFhERERGxkpJpERERERErKZkWEREREbGSkmkRERERESvZmUwmvQJH8kVMTPwDfQOTS3EnHB30kk8REZG/SrmTxs3Y2/kdRoFhMNhRsqRzltuVaYjNcnQoTPuxn+Z3GCIiIo+U7aEd8jsEm6IyDxERERERKymZFhERERGxkpLpR9zWrVsxGo0kJCTk6bghISEEBQXlyVi9e/dm5MiReTKWiIiISEGiZFpERERExEpKpkVERERErKRkOp8dO3aMwYMH4+fnh4+PDx06dODf//53tvskJSXx1ltv8dxzz1GjRg38/f0JDQ01b09LSyM8PJzmzZtTo0YN2rZty/bt2zMd6+uvv6Z9+/b4+PjQo0cPzpw5Y7E9MTGRN954gyZNmuDt7U3nzp356quv/vmJi4iIiNgALY2Xzy5fvkydOnXo0aMH9vb2fP/990yaNAmDwUC7du0y9DeZTAwdOpRjx44xdOhQatSowdWrVzl69Ki5T1hYGO+88w7Dhg3D29ub3bt3M27cOOzs7CzGjIqK4q233mLIkCE4ODjw1ltvMXr0aLZv346dnR0AU6ZMYf/+/YwZM4Zy5cqxZcsWBg0axLp166hXr96Dv0AiIiIijzAl0/msbdu25j+bTCbq16/P1atX2bx5c6bJ9FdffcXXX3/NsmXLaNGihbm9Y8eOAMTGxrJu3TqGDBnC0KFDAWjatClXrlwhPDzcYsybN2+yceNGnnnmGfPxhw0bxrlz56hYsSJnz57lP//5D3PmzKFTp07msV544QWWL1/OmjVr/tG5Z7cAuoiIiDw4Hh4u+R2CzVAync9u3rxJeHg4+/bt4+rVq6SlpQHg5eWVaf9vv/0WV1dXi0T6r86cOUNiYiKBgYEW7W3atCEkJITr16/j7u4OwJNPPmlOpAEqVqwIwNWrV6lYsSInT57EZDJZjGUwGAgMDOSdd96x+pzvedBvQNT/UYiIiGQuOvpWfodQYOgNiI+4kJAQfvjhB4YOHUrFihVxdnZm48aN7Nu3L9P+sbGxeHh4ZDledHQ0ACVLlrRov/c5NjbWnEy7uFgmm0WKFAEgOTkZgGvXrlG0aFGcnJwyjJWYmEhKSgr29vY5PVURERERm6MHEPNRcnIyBw8eZMSIEfTq1YtGjRrh7e2NyZT13VpXV1dzwpyZe4n29evXLdpjYmLM++eUp6cnt2/fJjExMcNYTk5OSqRFRETksadkOh+lpKSQnp5ukZTGx8ezf//+LPdp1KgRsbGxHDhwINPtlStXxsnJiR07dli079ixg2eeecZ8VzonvL29sbOzY9euXeY2k8nErl27qFu3bo7HEREREbFVKvPIRy4uLnh7e7N06VKcnZ0xGAysWrUKZ2dn4uPjM92nSZMm+Pn5MXbsWIYNG8a//vUvoqOjOXr0KDNnzsTV1ZWXX36ZFStWULhwYWrUqMHu3bv54osvePvtt3MVX8WKFWnbti0zZ84kISGBp556ii1btnDu3DmmT5+eF5dAREREpEBTMp3PQkNDmTZtGhMnTsTV1ZWePXuSlJTEhg0bMu1vZ2fH0qVLWbx4MevWreP69et4enrSvn17c5+RI0dSqFAhNm7cSExMDOXKlWP+/PkWK4fk1BtvvMGCBQtYunQpcXFxVKlShRUrVmhZPBERERHAzpRdga7IA/QwVvNoP/bTBza+iIhIQbQ9tINW88iF+63moZppEREREREr6c605JsHfWfapbgTjg6qZBIREfmrlDtp3Iy9nd9hFBhaZ1oeW7fiEtE/YuUPDw8X/ROijdMc2zbNr23TS83ylso8RERERESspGRaRERERMRKSqZFRERERKykmmkREZFHyKPy8LTqam1Xyp20/A7BpuT/t1VERETMHB0Ka418eaC2h3bI7xBsiso8RERERESspGRaRERERMRKj0UyHR4ejq+vb672SUlJITw8nJ9++smi/eLFixiNRg4cOGBu8/f3Z968eXkS6z+VWXyZ2bBhA0aj0fw5MjISo9HI6dOngazPX0RERET+z2ORTFvjzp07LFmyJEMy6enpSUREBHXr1s2nyLJnbXzVq1cnIiKCcuXKAVmfv4iIiIj8Hz2AmEv29vb4+PjkdxhZsjY+Z2fnR/q8RERERB5Fj+yd6a1bt1KjRg3i4uIs2s+cOYPRaOSbb74xt23YsIFWrVpRo0YNAgICeO+997Id+/bt28ycOZPWrVtTq1Yt/P39mTFjBvHx8eY+derUAeC1117DaDRiNBq5ePFijssojh49Sq9evahVqxa+vr5MmTLFYvzMHDt2jMGDB+Pn54ePjw8dOnTg3//+d4Z+ly5dYsyYMfj6+lKrVi3at2/P9u3bgczLPFJSUpg5cyb16tWjQYMGzJ49m9TUVIsx/17mkdX5BwcHExISkiGmkJAQOnbsmO35iYiIiNiaRzaZbtmyJQB79uyxaP/8888pVaqUuQZ68+bNzJo1C39/f1asWEFgYCBz585l1apVWY6dlJREWloao0ePZvXq1YwaNYpvv/2WUaNGmfusW7cOgCFDhhAREUFERASenp45iv27776jT58+lCpVirCwMF577TW++OILJk2alO1+ly9fpk6dOrz55pssX76cVq1aMWnSJD777DNzn5iYGLp168bJkyeZOHEiK1asIDg4mKioqCzHXbBgAVu2bGHo0KHMnz+fy5cvs3bt2mxjyer8g4OD2bVrFwkJCea+CQkJ7Nq1i86dO+fk8oiIiIjYjEe2zKN48eI0bdqUzz//3CJJ+/zzz2ndujWFChUiPT2d8PBwgoKCzHdL/fz8uHXrFitXruTll1/GwcEhw9ju7u7MmDHD/Dk1NZWyZcvy4osvcvnyZcqUKYO3tzcA5cqVy3X5Q2hoKLVr12bRokXmNi8vL/r06cPp06epUqVKpvu1bdvW/GeTyUT9+vW5evUqmzdvpl27dgC89957xMfHs3XrVnNy36hRoyxjuXHjBps2bWLEiBH069cPgKZNm9KmTZtszyGr82/Xrh1z585l586d5nnZsWMHd+7cMceYUyVLOueqvxQseuGD7dMcixRc+v7mnUc2mQZo06YNISEh3LhxAzc3N3766ScuXLjAm2++CcCVK1e4du0agYGBGfbbuHEjv/zyCzVr1sx07G3btvHee+/x22+/cfv2bXP7hQsXKFOmjNUxJyYmcvz4caZMmWJRSlG3bl2KFCnCjz/+mGUyffPmTcLDw9m3bx9Xr14lLe3uG4q8vLzMfb799luaNm2a47vkp0+fJjk5mRYtWpjbDAYDLVq04J133sn1+Tk7O9O6dWs++eQTczL9ySef4O/vj5ubW67GiomJJz3dlOsY5NHn4eFCdPSt/A5DHiDN8YOjJEceBn1/c85gsMv2BuAjnUz7+/tTuHBhdu/eTbdu3fj8888pXbq0eaWK6OhoAEqWLGmx373PN2/ezHTcPXv2MHHiRHr06MHo0aNxdXUlOjqaYcOGkZyc/I9ijouLIy0tjRkzZljc/b4nu3KMkJAQfvjhB4YOHUrFihVxdnZm48aN7Nu3z9wnNjbWfNc4J/78808g62tkjeDgYHr37s0ff/yByWTi6NGj2ZbViIiIiNiqRzqZLlasGM2aNePzzz+nW7du7Nixg8DAQOzs7ADw8PAA7tYR/9W9zyVKlMh03J07d1KrVi1ef/11c9vhw4fzJGYXFxfs7OwYPnw4zZo1y7A9qzvKycnJHDx4kGnTptGjRw9z+4cffmjR717in1OlSpUC7l4TV1dXc/vfr1lu1K9fn6effpqtW7diMpnw9PTEz8/P6vFERERECqpH9gHEe9q2bcuRI0fYv38/f/zxh0VdcenSpfH09GTnzp0W++zYsQNnZ2eLl5L8VVJSEvb29hZt91bDuKdIkSIAub5TXbRoUXx8fDh//jze3t4Zfv5asvFXKSkppKenW8QVHx/P/v37Lfo1atSIr776ynzH+X6qVKmCg4ODxd3t9PR0i8+Zud/5d+7cmW3btvHpp5/SsWNHChUqlKN4RERERGzJI31nGqBZs2Y4Ojoybdo0ypYta1EDbTAYGDFiBNOmTcPV1ZUmTZpw5MgRNm7cyJgxYzJ9+BCgcePGzJw5k+XLl1OrVi2++OILDh06ZNHH3t6esmXLsmPHDipXroyDg0OWyfnfjRs3jj59+mAwGGjdujXFihUjKiqKgwcPMnr0aMqXL59hHxcXF7y9vVm6dCnOzs4YDAZWrVqFs7OzxZJ6ffr0Ydu2bfTs2ZPBgwdTunRpzp07x+3btxkwYECGcd3c3OjatSvh4eEULlyYSpUqsWXLFos68cxkdf73kv1OnTqxePFiUlNTCQoKytF1EREREbE1j3wy7ejoiL+/P9u3b2fgwIEZtnft2pXk5GTWr1/P+++/j5eXFyEhIfTp0yfLMbt3787FixdZv349ycnJNGnShNDQULp27WrRb8aMGcybN4++ffuSkpJy37u599SrV48PPviAsLAwJkyYQHp6OmXKlKFp06bmsovMhIaGMm3aNCZOnIirqys9e/YkKSmJDRs2mPu4u7uzceNG5s+fz+zZs0lJSeHpp59m0KBBWY47YcIEUlNTWbp0KQaDgRdeeIG+ffsyd+7cbM8js/MvW7YscLfE5t4vNpn9ciAiIiLyOLAzmUxaTkFyLTY2lmeffZapU6fSpUsXq8bQah62Sys92D7N8YPj4eFC+7Gf5ncYYsO2h3bQ9zcXCvRqHvLoiY+P5+zZs6xfv55ixYrlem1pEREREVuiZFpy5ccff+Sll17iySefZN68eTg5OeV3SCIiNiUpOZXtoR3yOwyxYSl30vI7BJuiZFpyxdfXl19++SW/wxARsVm34hLJ73+AVxmPbdOLgfLWI780noiIiIjIo0rJtIiIiIiIlZRMi4iIiIhYSTXTIiIiki9cijvh6KBU5GHTA4h5S3+DRUREJF84OhTWmtr5QKvF5C2VeYiIiIiIWEnJ9CPm9OnTGI1GIiMjH+pxIyMjMRqNnD59GoCUlBTCw8P56aefHmocIiIiIgWJkmkBoHr16kRERFCuXDkA7ty5w5IlS5RMi4iIiGRDNdMCgLOzMz4+PvkdhoiIiEiBojvT+eyDDz6gWbNm+Pj4MHjwYKKjoy22p6ens2rVKgICAqhRowatW7fmk08+sejTu3dvRo4cyfbt2wkICKBOnTq88sorXLlyxaLfypUrCQgIwNvbm8aNG9O/f3/z8f5e5lGnTh0AXnvtNYxGI0ajkYsXLxIcHExISEiG8wgJCaFjx455dVlERERECgTdmc5He/fuZebMmXTv3p2WLVty5MgRJk2aZNFn1qxZbNu2jaFDh1K9enW+/vprJk2ahKurK88995y53w8//MC1a9eYOHEiycnJvPnmm0ydOpXVq1cDsG3bNlasWMG4ceOoXLkysbGxfPvttyQmJmYa27p163j55ZcZMmQIzZs3B8DT05Pg4GDmzZvH1KlTKVasGAAJCQns2rWLMWPGPICrJCIiIvLoUjKdj1asWEHTpk2ZMWMGAE2bNuX69ets2bIFgN9++42NGzcyZ84cOnXqBEDjxo2Jjo5myZIlFsl0fHw8K1eupESJEgBER0czZ84ckpKScHR05MSJE/j5+dGzZ0/zPq1atcoyNm9vbwDKlStnUf7Rrl075s6dy86dO+ncuTMAO3bs4M6dO7Rr1y4ProqIiIhIwaFkOp+kpqZy6tQppk6datEeEBBgTqYPHTqEwWAgICCA1NRUc59GjRrxn//8h7S0NAoVKgTcTX7vJdIAlSpVAuDq1as8/fTTVKtWjY8++oiwsDCaN29O9erVzfvmhrOzs7nU5F4y/cknn+Dv74+bm1uuxipZ0jnXx5eCw8PDJb9DkAdMc2zbNL+2TfObd5RM55MbN26QlpZGyZIlLdr/+vlen7p162Y6RnR0NKVLlwagePHiFtuKFCkCQHJyMgCdO3cmISGBiIgIli5diqurK927d2fkyJG5TqqDg4Pp3bs3f/zxByaTiaNHj7Jq1apcjQEQExNPerop1/vJo8/Dw4Xo6Fv5HYY8QJpj2/aw5lcJXf7R9zfnDAa7bG8AKpnOJ25ubhQqVIiYmBiL9r9+LlGiBIULF2bjxo3Y2dllGMPd3T3HxzMYDPTp04c+ffoQFRXF9u3bWbhwIaVLl6ZHjx65ir1+/fo8/fTTbN26FZPJhKenJ35+frkaQ0RERMQWKJnOJ4ULF6ZatWrs27fPIpnds2eP+c8NGzYkLS2NW7du0aRJkzw79hNPPMHAgQP5+OOPOXv2bKZ9/n5n++86d+7Mxo0bAejYsaNVJSMiIiIiBZ2S6Xw0ePBghg8fzvTp0wkICODIkSN8+eWX5u0VKlSge/fujBkzhv79++Pt7U1ycjJnzpzhwoULvPnmmzk+1rRp0yhRogS1atXCxcWFyMhIfvvtN8aPH59pf3t7e8qWLcuOHTuoXLkyDg4OGI1G7O3tAejUqROLFy8mNTWVoKCgf3YhRERERAooJdP5KCAggKlTp7Jq1Sq2bdtGgwYNePPNN+nfv7+5z/Tp03nmmWfYsmULYWFhODs7U6lSJYKDg3N1LB8fHzZv3kxERATJycmUK1eOWbNm0bJlyyz3mTFjBvPmzaNv376kpKSwb98+ypYtC4CHhwc1a9YEoHz58lacvYiIiEjBZ2cymfQEmORabGwszz77LFOnTqVLly5WjaEHEG2XHk6zfZpj2/YwH0BsP/bTB34csbQ9tIO+v7mgBxAlT8XHx3P27FnWr19PsWLFtLa0iIiIPNaUTEuu/Pjjj7z00ks8+eSTzJs3Dycnp/wOSURERCTfqMxD8o3KPGyXSgBsn+bYtj2s+XUp7oSjg+7rPWwpd9K4GXs7v8MoMFTmISIiIo+kW3GJ6Feyh08vy8lbhvwOQERERESkoFIyLSIiIiJiJZV5iIiIiPyFrddyp9xJy+8QbIrt/k0RERERsYKjQ2GbXv96e2iH/A7BpqjMQ0RERETESkqmRURERESspGQ6j23duhWj0UhCQgIAMTExhIeHc/HixRyPYTQa2bBhw4MKMcciIyMxGo2cPn06237z5s3D39//IUUlIiIi8uhQMp3HmjdvTkREhPnNgDExMSxZsoRLly7leIyIiAgCAwMfVIg5Vr16dSIiIihXrlx+hyIiIiLySNIDiHnM3d0dd3d3q/ZNSkrC0dERHx+fvA3KSs7Ozo9MLCIiIiKPIt2ZtsKRI0fo3bs3tWvXpm7duvTu3ZtTp04BlmUeFy9epH379gC89NJLGI1GjEYj8H8lFF9++SWDBw+mdu3azJw5E8i8zGPPnj0EBwdTs2ZNfH19GTBgQLZ3uw8ePEjfvn1p1KgRderUoWvXrnz11VcZ+v38888MHjyYevXqUbt2bYKDg/n6668tYvxrmUdcXBxjx46ldu3a+Pn5sXz58n9wJUVEREQKNt2ZzqXIyEj69euHr68vc+fOxcnJie+//56rV6/yr3/9y6Kvp6cnCxYsYNy4cUybNo3q1atnGG/y5MkEBQXx8ssv4+DgkOkxt23bxsSJE2nbti1Dhw7FZDLx7bffcv36dZ588slM97l48SLPPfcc/fr1w2Aw8N///pcBAwawYcMG6tatC8DZs2fp0aMH5cuXZ8aMGbi6uvK///2PqKioLM//tdde4/Dhw7z22muUKlWKtWvX8vvvv1O4sP4qiYiIyONHGVAuvf322xiNRtasWYOdnR0Azz77bKZ97e3tzXeiK1WqlGnJRGBgIK+++mqWx0tPTyc0NJSAgADefvttc3uLFi2yjbNXr14WY/j6+vLrr7/y0UcfmZPppUuX4uLiwocffoijoyMATZo0yXLMM2fOsHfvXhYuXEibNm0A8PX15bnnnsPZ2TnbeERERERskZLpXLh9+zY//PADkydPNifS/1Tz5s2z3X7+/HmuXbtGUFBQrsa9cuUKCxcu5JtvviE6OhqTyQRAnTp1zH2+/fZbXnjhBXMifT8nT54ELBP5YsWK0bhxY06cOJGr+ABKllQCbss8PFzyOwR5wDTHtk3za9s0v3lHyXQuxMXFYTKZ8PDwyLMxS5Ysme32GzduAOTqmOnp6QwZMoSEhARGjhzJ008/jZOTE2FhYcTExJj7xcbG5mrcP//8k2LFimUoR7nfOWQlJiae9HSTVfvKo83Dw4Xo6Fv5HYY8QJpj2/a4z+/jkGg+zvObWwaDXbY3AJVM50Lx4sUxGAxER0fn2Zj3u8Pt5uYGkKtj/vbbb5w6dYrVq1dblKAkJSVZ9HN1dc3VuKVKlSIhIYHk5GSLhPqvCbqIiIjI40SreeRC0aJFqVWrFtu2bTOXTdxPkSJFAEhOTrbqmOXLl8fLy4tt27bleJ97x7K3tze3Xbp0iWPHjln0a9SoETt27MhxbN7e3gDs27fP3JaQkMA333yT49hEREREbInuTOfS2LFj6du3L6+88grdunXDycmJ48ePU6NGDZ577rkM/cuUKYOjoyPbtm3DxcWFwoULm5PSnDAYDIwfP55x48YxduxY2rVrh52dHd9++y1t27bNdKwKFSpQunRp5s2bx6hRo0hISCAsLAxPT0+LfsOGDSM4OJiePXvSr18/XF1dOXXqFK6urgQHB2cYt3Llyvj7+/P6668THx+Ph4cHa9asyXHNtYiIiIit0Z3pXKpfvz5r164lKSmJ8ePHM3r0aA4fPkzp0qUz7e/g4MCsWbP48ccf6d27d6ZJ6v20b9+e8PBwzp8/z8iRI5k4cSLnzp3L8uUw9vb2hIeHU6hQIUaOHMnixYsZNGgQDRo0sOhXoUIFPvzwQ9zc3Jg8eTLDhg1j165dWS63BzB37lyaNGnC7NmzmTx5Mg0bNqRt27a5PicRERERW2Bnymm9gkge0wOItutxf3jpcaA5tm2P+/x6eLjQfuyn+R3GA7M9tMNjPb+5db8HEHVnWkRERETESkqmRURERESspAcQRURERP4iKTmV7aEd8juMByblTlp+h2BTlEyLiIiI/MWtuERsuaL4cXgpzcOkMg8RERERESspmRYRERERsZLKPERERERywKW4E44OBT91Us103ir4fyNEREREHgJHh8I2sf60LT9cmR9U5iEiIiIiYiUl0yIiIiIiVlIyLTni7+/PvHnzMt1mNBrZsGHDQ45IREREJP8pmRYRERERsZKSaRERERERKymZFkJCQggKCmLv3r0EBgbi7e1Njx49+PXXX/M7NBEREZFHmpJpAeDy5cvMmTOHoUOHEhoaSnx8PP379yc5Odncx2QykZqamuFHRERE5HGldaYFgBs3brBs2TLq1KkDQPXq1QkICGDr1q306NEDgHfffZd33303P8MUEREReaQomRYASpYsaU6kAZ588kmqV6/OiRMnzMn0Cy+8wEsvvZRh3+DgYCuP6WxdsFIgeHi45HcI8oBpjm2b5te2aX7zjpJpAe4m05m1RUdHmz+XKlUKb2/vPDtmTEw86emmPBtPHh0eHi5ER9/K7zDkAdIc2zbNb+ZsKQHV/OacwWCX7Q1A1UwLADExMZm2eXh45EM0IiIiIgWDkmkB7ibO33//vfnz5cuXOXXqFDVr1szHqEREREQebSrzEADc3NwYP348r776Ko6OjoSFheHu7k5QUFB+hyYiIiLyyFIyLQCUKVOGwYMHExoayqVLl6hRowahoaE4ODjkd2giIiIijywl02LWqlUrWrVqlem2/fv3Z7nfL7/88qBCEhEREXmkqWZaRERERMRKSqZFRERERKxkZzKZtNCv5AutM227tEat7dMc2zbNb+Zcijvh6FDwK2RT7qRxM/Z2fodRYNxvnemC/zdCRERE5CG4FZeILfyKYUsvn3kUqMxDRERERMRKSqZFRERERKykMg8RERGRR8TDqMtOuZP2QMd/3CiZFhEREXlEODoUpv3YTx/oMbaHdnig4z9uVOYhIiIiImIlJdMiIiIiIlZSMv0QbN26FaPRSEJCQrb9evfuzciRI/PsuEajkQ0bNmTb58CBAxiNRi5evJhnxxURERF5XKhm2oZFRERQtmzZ/A5DRERExGYpmbZBSUlJODo64uPjk9+hiIiIiNg0lXnkoSNHjtC7d29q165N3bp16d27N6dOnTJvv3jxIn379sXHx4fAwEB279593zEPHTpEly5d8Pb2pnHjxrz++usW5SKRkZEYjUa+/PJLBg8eTO3atZk5cyaQsczDZDIRHh5Oo0aNqF27NhMmTCA+Pj7DMZOTk3nr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u5fBgwfz2WefERISwsCBA837Pv/88wQFBTF//nyCg4PNS+SFhoby1FNPMXHiRN58801atWpFx44dcx28j48Pn3zyCSNHjuTVV1811/PeW76vSpUqzJ49m+PHjzNkyBCOHDnCnDlzcn0cuLusX1hYGFeuXGHYsGH8+9//JjQ01Kqx7pkwYQKdO3dm6dKljB07Fk9PT/r27Xvf/d544w06derE0qVLGTp0KJcuXWLFihXUq1ePlJQUJk6ciK+vL927dwfA3t6et956i++//95iTey/srOzY/ny5VSsWJFJkyYxZ84cevbsSe3atS36lS9f3vzmxGnTpjFgwADCw8Oxt7fn6aef/kfXQ0RERKSgsTOZTFpOQfKFVvOwXVoJwPZpjm2b5te2eXi40H7sp/kdhlW2h3awjdU8RERERETEytU8RERERKRgSrmTxvbQf/aSu/ySlJya3yFkoGRaRERE5DFiX6SQynjykMo8RERERESspGRaRERERMRKSqZFRERERKykmmkRERGRx0jKnTQ8PFzyO4w8k5Scyq24xHw7vpJpERERkceIfZFCBXad6cxsD+1Afj5OqTIPERERERErKZnOB5GRkRiNRk6fPp2r/bZu3YrRaCQhIeEfx/DVV1/x3nvv/eNxRERERB5nSqYfU19//TXr16/P7zBERERECjQl0yIiIiIiVlIybYUzZ87Qv39/GjRogI+PD88//zwffPABAP7+/sybN8+if07KM4xGI++++y5vvPEGDRo0oF69esyaNYuUlJQMfS9evEjfvn3x8fEhMDCQ3bt3W2w/ePAgffv2pVGjRtSpU4euXbvy1VdfmbeHh4ezdu1aLl26hNFoxGg0EhISYt5+9OhRevXqRa1atfD19WXKlCnEx8ebt8fFxTF58mT8/Pzw9vamefPmTJkyJXcXUURERMQGaDUPKwwePJiKFSsyf/587O3tOXfuXJ7UMa9duxYfHx/mz5/Pr7/+ysKFC7G3t2fixIkW/caNG0fXrl3p378/GzZsYMyYMezdu5fSpUsDd5Pt5557jn79+mEwGPjvf//LgAED2LBhA3Xr1qVLly5cuHCByMhIlixZAoC7uzsA3333HX369KFly5aEhYVx48YNQkNDiYuLIywsDIA5c+Zw7NgxJk2aRKlSpYiKiuLo0aP/+PxFREREChol07l0/fp1Ll68yLJlyzAajQA0atQoT8YuVqwYixcvxmAw0KxZM1JSUlixYgWDBg3C1dXV3O/ll18mODgYgOrVq9OkSRMOHDhAjx49AOjVq5e5b3p6Or6+vvz666989NFH1K1bl9KlS+Pp6Ym9vT0+Pj4WMYSGhlK7dm0WLVpkbvPy8qJPnz6cPn2aKlWqcPLkSXr27EmbNm3MfTp06JAn10BERESkIFEynUuurq488cQTTJ8+nZdeeglfX19KliyZJ2O3aNECg+H/Km9atWrFokWLOHPmDPXr1ze3+/n5mf/s5uaGu7s7V65cMbdduXKFhQsX8s033xAdHY3JZAKgTp062R4/MTGR48ePM2XKFFJTU83tdevWpUiRIvz4449UqVKFqlWrsmbNGgwGA40bN6Z8+fJWnW/Jks5W7ScFgy29EEAypzm2bZpfKUjy8++rkulcMhgMrFmzhkWLFjFp0iSSkpKoU6cOU6ZM4V//+tc/GvvvSfm90ovo6GiLdhcXy78w9vb25trq9PR0hgwZQkJCAiNHjuTpp5/GycmJsLAwYmJisj1+XFwcaWlpzJgxgxkzZmTYHhUVBcC0adMICwtj2bJlzJw5k6effppRo0bRtm3bXJ1vTEw86emmXO0jBYOHhwvR0fm5hL48aJpj26b5tW22+IvSg/z7ajDYZXsDUMm0FSpWrEh4eDh37tzh6NGjLFiwgIEDB/Lf//4Xe3t77ty5Y9E/Li4uR+P+Pdm9fv06AB4eHjmO7bfffuPUqVOsXr2aZ5991tyelJR0331dXFyws7Nj+PDhNGvWLMN2T09PAIoXL86UKVOYMmUKP//8M++88w7jxo3DaDRSqVKlHMcqIiIiUtBpNY9/oEiRIjRq1Ii+ffsSHR1NXFwcpUuX5uzZsxb9/rqSRnb27dtHenq6+fPu3btxdHSkcuXKOY4pOTkZuHu3+p5Lly5x7NixDLHf63tP0aJF8fHx4fz583h7e2f48fLyynC8qlWrMmHCBNLT0zl37lyO4xQRERGxBboznUs///wzb731Fs8//zxPPfUUcXFxrF69mqpVq+Lq6kpAQACzZs1ixYoVeHt7s2vXLn799dccjZ2QkMCoUaPo0qULv/76K8uWLaNnz54WDx/eT4UKFShdujTz5s1j1KhRJCQkEBYWZr6r/Nd+f/75J1u3bqVy5cq4ublRtmxZxo0bR58+fTAYDLRu3ZpixYoRFRXFwYMHGT16NOXLl6dHjx4EBARQuXJl7Ozs2Lx5M0WLFqVmzZq5uZQiIiIiBZ6S6Vzy8PCgZMmSrFixgmvXrlG8eHF8fX0ZN24cAF27duX333/n/fffJyUlhQ4dOjBkyBCmTZt237H79evHH3/8wdixY0lPTyc4OJgxY8bkKj57e3vCw8OZOXMmI0eOpHTp0gwePJjDhw9bvL78+eefJzIykvnz53P9+nU6derE3LlzqVevHh988AFhYWHmO85lypShadOmlCpVCgAfHx8++eQTLl68SKFChahWrRqrV682L80nIiIi8riwM91b6kHyldFoZOrUqRbL2tk6PYBou/Twku3THNs2za9t8/Bwof3YT/M7jDyzPbRDvj6AqJppERERERErKZkWEREREbGSaqYfEb/88kt+hyAiIiKPgZQ7aWwPtZ03Fyclp96/0wOkZFpERETkMWJfpJBq4vOQyjxERERERKykZFpERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKQ3IEq+MRjs8jsEeYA0v7ZPc2zbNL+2TfObc/e7VnYmk8n0kGIREREREbEpKvMQEREREbGSkmkRERERESspmRYRERERsZKSaRERERERKymZFhERERGxkpJpERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaXlgEhMTefXVVwkICCAwMJADBw5k2m/v3r0EBQXRrl072rZty9q1ay22L126lJYtW9KyZUuWLl36MEKXHMjp/F69epXevXtTt25dgoKCLLZFRkZSq1YtOnToQIcOHejSpcvDCF1yIC/mF2Dz5s0EBATQsmVLZs6cSXp6+oMOXXIgp/MLWc+hvr+PlvPnz9OtWzdat25Nt27duHDhQoY+aWlpzJgxg5YtWxIQEMCWLVtytE3uwyTygISHh5smT55sMplMpvPnz5saN25sio+Pz9Dv+PHjpitXrphMJpMpLi7O1LJlS9ORI0dMJpPJdPjwYVO7du1MiYmJpsTERFO7du1Mhw8ffngnIVnK6fzGxcWZjhw5Yjpw4ICpU6dOFtu+/fbbDG3yaMiL+f39999NTZs2NcXExJjS0tJM/fr1M33yyScPI3y5j5zOb3ZzqO/vo6V3796mbdu2mUwmk2nbtm2m3r17Z+jzySefmPr162dKS0szxcTEmJo2bWr6448/7rtNsqc70/LA7Nixg27dugHwzDPPUKNGDf773/9m6FerVi28vLwAcHFxoWLFily6dAmAzz//nI4dO+Lo6IijoyMdO3bk888/f3gnIVnK6fy6uLhQr149nJycHnaI8g/kxfzu2rWLli1b4u7ujsFgoEuXLvr+PiJyOr+aw4IhJiaGU6dO0a5dOwDatWvHqVOnuH79ukW/zz//nC5dumAwGHB3d6dly5bs3Lnzvtske0qm5YG5fPkyTz75pPnzE088wZUrV7Ld5+zZsxw/fpyGDRsCEBUVRZkyZSzGiIqKejABS65YM7+ZuXDhAp06daJLly588skneRmi/AN5Mb9///6WKVNG399HRE7n935zqO/voyEqKgovLy8KFSoEQKFChfD09Mzwfcvsv6n35j27bZK9wvkdgBRcnTp14vLly5lu++abb3I93rVr1xg6dCjTp08336mW/JPX85uZ6tWr88UXX+Di4sIff/xB37598fLyonHjxnkyvmTtYcyv5B99f0UeHiXTYrX73YUoU6YMly5dwt3dHbj7W6+vr2+mfWNiYujbty+vvPIKzz//vLn9iSeesPgPQlRUFE888UQeRC/3k5fzmxVnZ2fzn5966ilatmzJ999/r/8YPwQPY37//v29fPmyvr8PSV7Nb3ZzqO/vo+OJJ57g6tWrpKWlUahQIdLS0rh27VqG79u9+axZsyZgeTc6u22SPZV5yAMTGBhIREQEcPefAk+ePEnTpk0z9Ltx4wZ9+/alZ8+eGZ4GDwwMZNu2bSQlJZGUlMS2bdsskm3JPzmd3+xcu3YNk8kEQGxsLF9//TVVq1bN81gl9/Jiflu3bs3evXu5fv066enpbNmyRd/fR0RO5ze7OdT399FRsmRJqlWrxmeffQbAZ599RrVq1cy/LN0TGBjIli1bSE9P5/r16+zdu5fWrVvfd5tkz85075sgksdu375NSEgIP/30EwaDgfHjx9OyZUsAFi9ejKenJz169GDevHl88MEHlC9f3rzvSy+9ROfOnQEIDw9n27ZtAHTs2JERI0Y89HORjHI6v2lpaTz33HOkpKQQHx+Pu7s7Xbp0YcSIEWzYsIGNGzdSuHBh0tLS6NixI6+88ko+n5lA3swvwKZNm3jnnXcAaNKkCdOmTTPXdUr+yen8QtZzqO/vo+Xs2bOEhIQQFxdH8eLFmTdvHhUqVGDAgAGMHDkSb29v0tLSmDlzJl9//TUAAwYMMD+Imt02yZ6SaRERERERK6nMQ0RERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVE8lB4eDhGozHDT58+ffL0OCdOnCA8PDxPx3zQbt++zejRo/H19cVoNLJ161YANm/ejL+/P//617/o3bt3nh3v888/Nx/jnzp79iwvvvgiPj4+GI1GLl68mCfj5kZkZCRGo5HTp08/9GP/3dKlS+nTpw916tTJt+sh8qjQGxBFRPKYi4uLeV3ev7blpRMnTrBkyZICte76xo0bOXDgAPPmzcPLy4ty5coRHR3N66+/Ts+ePQkMDKREiRJ5drydO3dy48YNgoKC/vFYb731Frdu3WL58uU4OTnh6emZBxEWXBERETz99NP4+vqyf//+/A5HJF8pmRYRyWOFChXCx8cnv8PIlaSkJBwdHR/oMc6dO0f58uUt3qp29OhR0tLS6Ny58yP99rxz587h7+9Po0aN/tE4JpOJlJQUHBwc8iiy/HHw4EEMBgMHDhxQMi2PPZV5iIg8ZFu2bKFt27bUqFGD5557jtWrV1tsP3bsGIMHD8bPzw8fHx86dOjAv//9b/P2rVu3MmvWLABzGcm98oiQkJAMd2IvXryI0WjkwIED5jaj0ci7777Lm2++ScOGDWnfvj0AycnJvPXWWzRr1owaNWrwwgsv8MUXX9z3nO63n7+/Px999BGnTp0yxxweHk7Pnj0B6NChg0XpR07j2Lx5M+3bt8fb25vGjRszcuRIbt26RUhICLt27eLw4cMWx4O7CfyLL75InTp1qFOnDh06dGDHjh2Znte9a/f777/z3nvvWVxrgA0bNtCqVStq1KhBQEAA7733nsX+4eHh+Pr6cvToUTp37oy3t3eWxwL4+eefGTx4MPXq1aN27doEBweb30iXmbVr19K5c2fq1q1L48aNGTx4ML/99ptFn/ud7759+wgKCsLHx4f69evTpUsXDh8+nOUxAQwGpQ8i9+jOtIjIA5CammrxuVChQtjZ2fHOO++wcOFCXnnlFRo0aMCPP/7I4sWLcXJyolevXgBcvnyZOnXq0KNHD+zt7fn++++ZNGkSBoOBdu3a0bx5c/r168fatWuJiIgAwNnZOdcxrlmzhnr16vHWW29x72W4I0eO5MSJE4wYMYJy5cqxY8cOhgwZwscff0y1atWyHOt++y1ZsoRFixbxxx9/MGfOHABKly6Nu7s7M2fOZMGCBTz11FOUK1cux3EsW7aMsLAwXnzxRcaPH09SUhIHDx7k9u3bDB06lMuXL3Pr1i2mT59uPl58fDyDBw+mRYsWDBs2DJPJxOnTp7l161am5+Xp6UlERATDhw/H19eX3r17m6/15s2bmTVrFn379sXPz4/IyEjmzp1LSkoKAwcONI+RlJRESEgIr7zyCs8880yWJSJnz56lR48elC9fnhkzZuDq6sr//vc/oqKisrzuV65coVevXpQpU4b4+Hg2bdpE9+7d2b17Ny4uLvc9399//51Ro0bRu3dvxo8fT0pKCv/73/+4efNmlscUkb8xiYhIngkLCzNVqVIlw8/XX39tunXrlsnHx8cUHh5usc+iRYtMjRs3NqWmpmYYLz093XTnzh3T1KlTTb179za3v//++6YqVapk6D9x4kRTp06dLNr++OMPU5UqVUz79+83t1WpUsXUsWNHi37ffPONqUqVKqbIyEiL9hdffNE0YsSILM85p/tlFtu3335rqlKliumXX37J1Xg3b9401axZ0zR79uws4xoxYoSpV69eFm0nTpwwValSxXTr1q0s98vMc889Z5o7d675c1pamsnPz88UEhJi0W/69OmmOnXqmJKSkkwm0//9fdizZ899jzF69GhT06ZNTYmJiZluz+xa/VVqaqopMTHR5OPjY/rkk09MJtP9z3fHjh2mBg0a3De2rOzfv99UpUoV0x9//GH1GCIFnf6dRkQkj7m4uPDRRx9Z/NSsWZNjx45x+/ZtAgMDSU1NNf80bNiQP//8kytXrgBw8+ZN3njjDZ577jmqV69O9erViYiI4MKFC3ka57PPPmvx+ZtvvsHDw4M6depYxNeoUSP+97//ZTmOtfv9k/GOHTtGUlJSrh8uLFeuHEWLFmXcuHHs3buXuLi4XMcHd+8IX7t2jcDAQIv2Nm3aEB8fzy+//GJus7Ozy3CtM/Ptt9/Spk2bXNWuHz9+nL59++Lr68u//vUvatWqxe3btzl//jxw//OtUqUKt27dYuLEiXz11Vfcvn07x8cWkbtU5iEikscKFSqEt7d3hvYbN24A0LZt20z3i4qK4sknnyQkJIQffviBoUOHUrFiRZydndm4cSP79u3L0zhLlSqVIb7o6GiqV6+eoW+hQoWyHMfa/f7JeLGxsQB4eHjkauwSJUrw7rvvEh4ezquvvorJZKJJkyZMnTqVp556KsfjREdHA1CyZEmL9nuf/1omUaJECezt7e87ZmxsbK7O5/Lly/Tr14+aNWsyY8YMPD09KVKkCIMGDSIlJcV87OzOt0KFCixbtoxVq1YxcOBAChcuTEBAAJMnT8bd3T3HsYg8zpRMi4g8JPeWfVu5cmWGJAygfPnyJCcnc/DgQaZNm0aPHj3M2z788MMcHcPe3p47d+5YtGV199XOzi5DfF5eXixdujRHx/qn+/2T8VxdXYG7SW1ukz4fHx/WrFlDUlIS33zzDXPnzmXs2LFs3rw5x2PcS3pjYmIs2u99tmaJP1dXV3OSnhNffvklSUlJLFu2jKJFiwJ3a/X/Xu98v/Nt3rw5zZs359atWxw8eJDZs2cza9YsFi5cmOtzEHkcKZkWEXlIateujaOjI9euXaN58+aZ9rl16xbp6ekWdzLj4+MzLD9WpEgR4O6qF39dZq106dJcunTJov2rr77KUXyNGjXi3XffpWjRolSsWDHH52Xtfv9kvHvXctu2bUycODHTPkWKFCE5OTnL4zg6OuLv78+ZM2dYuXJlrmIsXbo0np6e7Ny5k2bNmpnbd+zYgbOzM0ajMVfjwd3z3rFjB6NHj87R0nlJSUkYDAYKF/6//5Tv2LEjw8Ov99zvfF1cXGjfvj1Hjhzh2LFjuY5f5HGlZFpE5CEpXrw4w4cP58033+TSpUvUr1+f9PR0Lly4QGRkJEuXLsXFxQVvb2+WLl2Ks7MzBoOBVatW4ezsTHx8vHmsChUqALBu3ToaNmyIs7MzFSpUoGXLloSFhTF58mSCgoI4deoUH3/8cY7ia9KkCX5+fvTr148BAwZQqVIl4uPj+fnnn0lOTmbs2LF5ut8/iaN48eIMHTqUhQsXcufOHZ599llSUlL44osvGD58OF5eXpQvX559+/axd+9evLy88PT05KeffuLjjz+mRYsWlClThqtXrxIREUHDhg1zFaPBYGDEiBFMmzYNV1dXmjRpwpEjR9i4cSNjxoyxah3pYcOGERwcTM+ePenXrx+urq6cOnUKV1dXgoODM/Rv2LAhaWlpvPbaawQHB3PmzBnWrl1L8eLFzX0OHjyY7flu2rSJ48eP07RpUzw9Pblw4QI7d+6kQ4cO2cZ6+PBhrl+/zo8//gjAf//7X9zd3alUqRKVKlXK9bmLFGRKpkVEHqIBAwbg6enJunXrePfdd3FwcOCZZ56hTZs25j6hoaFMmzaNiRMn4urqSs+ePUlKSmLDhg3mPvXq1aN///6sX7+et99+m/r16/P+++9TpUoVZs+ezbJly9izZw8NGzZkzpw5FiUjWbGzs2PJkiWsWLGCdevWERUVRYkSJahatWq2r/m2dr9/Ot6gQYMoUaIE69evZ9OmTZQoUYJ69epRrFgxAF588UV++uknJk2axM2bNxk+fDht27bFzs6OhQsXEhMTg7u7O82bN2fMmDG5jrNr164kJyezfv163n//fby8vAgJCbH61fEVKlTgww8/JDQ0lMmTJwNQqVKlLGMzGo3MmTOHJUuWsGfPHqpWrcrixYsZPXq0uU+5cuWyPV+j0cj+/fuZM2cON2/exMPDgy5dujBq1KhsYw0PD7dYi3rGjBkADB8+vEC9lVMkL9iZTP9/cVEREREREckVLY0nIiIiImIlJdMiIiIiIlZSMi0iIiIiYiUl0yIiIiIiVlIyLSIiIiJiJSXTIiIiIiJWUjItIiIiImIlJdMiIiIiIlZSMi0iIiIiYqX/B085VuEWqJ6IAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "path_dependent_explainer = TreeShap(rfc, model_output='raw', task='classification')\n", + "path_dependent_explainer.fit()\n", + "result = path_dependent_explainer.explain(scaler.transform(x))\n", + "\n", + "plot_importance(result.shap_values[1], features, 1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "9c32759e-e66f-4af9-91af-e5d1deb01019", + "metadata": {}, + "source": [ + "## Anchors" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "0e36d1c9-49e1-4da8-9bc8-da312e2b31b2", + "metadata": {}, + "outputs": [], + "source": [ + "from alibi.explainers import AnchorTabular\n", + "\n", + "predict_fn = lambda x: model(scaler.transform(x))\n", + "explainer = AnchorTabular(predict_fn, features)\n", + "explainer.fit(X_train, disc_perc=(25, 50, 75))\n", + "result = explainer.explain(scaler.inverse_transform(x), threshold=0.95)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "3b3722d3-f837-4343-a2de-c7f4d4849223", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Anchor = ['alcohol > 11.00', 'sulphates > 0.73']\n", + "Precision = 0.9935483870967742\n", + "Coverage = 0.0817347789824854\n" + ] + } + ], + "source": [ + "print('Anchor =', result.data['anchor'])\n", + "print('Precision = ', result.data['precision'])\n", + "print('Coverage = ', result.data['coverage'])" + ] + }, + { + "cell_type": "markdown", + "id": "3a604116-6772-469d-b251-05fb920f6fb7", + "metadata": {}, + "source": [ + "## ALE " + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "3596db3d-40bb-42e4-9b59-1ae18f6be64f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[]], dtype=object)" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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Z88epyPhkDlz5mjq1KkaNGiQtm7d2vLxnTt3atasWbrgggs0a9YsFRUVORcSko4/Vsf7OJxzrDGprKzUjTfeqAsuuECXXHKJ/vu//1sVFRUOJ+3ajvd35+abb9all16qyy67TLNnz9amTZscTAnp87/P/e///i/fA6PE8cZq6tSpuvDCCzVjxgzNmDFDb7/9dofkofigQ1VXV+v222/XAw88oPnz5+uqq67S3Xff7XQsHHLuuefqiSeeUG5ubquP33XXXZo9e7YWLVqk2bNn684773QoIQ473lgd7+NwzrHGxDAMfeMb39CiRYs0f/589erVS7/97W8dTInj/d2ZM2eOXnzxRb3wwgv6+te/rh//+McOJcRhn/V9bsOGDVq9ejXfA6PEZ43V73//e82bN0/z5s3T5MmTOyQPxQcdateuXerWrZv69u0rSTrrrLO0bNkyftMZJcaOHavs7OxWHysvL9fGjRtVWFgoSSosLNTGjRsZM4cda6w+6+NwzrHGJDU1VRMmTGh5PGrUKJWUlHR0NBzheH93kpKSWv5cV1cnwzA6MhaO4XhjFQgEdM899/AL1SgSbT+TXE4HQNfSt29fHTx4UGvXrtWIESM0f/58SVJpaanS09MdTodjKS0tVVZWlizLkiRZlqXu3bszZkAbiUQievLJJzV16lSno+A4fvKTn2j58uWybVt/+9vfnI6D43jooYd06aWXqmfPnk5HwQn44Q9/KNu2ddppp+kHP/iBkpOT2/09mfFBh0pKStKDDz6oX/3qV7r88stVXl6u5OTkln9UA0BX84tf/EI+n0/XX3+901FwHPfee6/efPNNff/739d9993ndBwcw6pVq7R+/XrNnj3b6Sg4AU888YRefPFFPffcc7JtW/fcc0+HvC/FBx3ujDPO0JNPPqnnn39e119/vZqampSXl+d0LBxHdna2ysrKFA6HJUnhcFj79++PqqlrIFbNmTNHu3bt0u9+9zuZJj+So91ll12m999/X5WVlU5Hwad8+OGH2r59u84991xNnTpV+/bt0w033KBly5Y5HQ3HcPjfEB6PR7Nnz9bKlSs75H35LosOd+DAAUnNyzseeOABXXPNNfL5fA6nwvFkZGSooKBACxYskCQtWLBABQUFLHMDvqAHHnhA69ev18MPPyyPx+N0HBxDfX29SktLWx6//vrrSklJUWpqqnOhcEw33XSTli1bptdff12vv/66evTooUcffVRnnnmm09HwKQ0NDaqtrZUk2bathQsXqqCgoEPe27Bt2+6QdwIO+clPfqKVK1cqGAxq0qRJ+vGPfyyv1+t0LEj65S9/qVdffVUHDx5UWlqaUlNT9dJLL2n79u264447VFNTo+TkZM2ZM0f9+vVzOm6XdryxOt7H4Zxjjcnvfvc7FRYWqk+fPoqLi5Mk9ezZUw8//LDDabuuY43T//3f/+nmm29WY2OjTNNUSkqKbr/9dg0dOtTpuF3aiXyfmzp1qv70pz9p4MCBDqWEdOyx+tOf/qRvf/vbCofDikQi6t+/v37605+qe/fu/79de4dlfw/jOP5xyz+VDm4hGpeFiUQYRKtuSRP3LhZsNapNmFhIZ5NWDCoRI6ESAxLC1IShbDoYpMQlRNqQVHC2niMk/3/O4bR+eb+2X/M8v+f7TL988u23n4fgAwAAAMDw+KsbAAAAAMMj+AAAAAAwPIIPAAAAAMMj+AAAAAAwPIIPAAAAAMMj+AAAfoTV1VUNDAz8p3cEg0E1NzcnbT4AIHkIPgAAAAAMj+ADAAAAwPAIPgCAlDI/Py+Hw6Ha2lp1dXVpe3v707pwOCyXy6X6+nrZbDbNzc1JkuLxuDwej+x2u+x2uzwej+Lx+LvehYUFWa1W2e12raysJH6PRqMaHx9XQ0OD2tra5PV69fr6+n3LAgD+NwQfAEBKKS0t1fLyso6OjjQyMqKxsTFdX1+/q4nFYnK5XGpqatLBwYG2trZktVolST6fT6FQSOvr6woEAjo5OZHX60303t7eKhqNan9/Xx6PR1NTU3p4eJAkTU9PKxqNamdnR0tLS1pfX38XjAAAPxfBBwCQUjo7O1VUVKT09HR1dXWpvLxcx8fH72r29vZUUFCgoaEh/fr1S2azWTU1NZKkjY0Nud1u5efnKy8vT263W4FAINGbmZkpt9utrKwstbS0KDs7W2dnZ3p5edHm5qZGR0dlNptVUlIil8v1rhcA8HNlJvsAAAD809ramvx+vyKRiCTp8fFR9/f3ysjISNRcXl6qrKzs0/7r62tZLJbEs8VieXdjlJOTo8zMvz9/JpMpMeP5+flD79XV1ZftBgBIHm58AAApIxKJaGJiQpOTkwoGgzo8PFRlZeWHuuLiYp2fn3/6jsLCQl1cXCSeLy8vVVhY+NvZubm5ysrK+tBbVFT0LzYBAKQagg8AIGU8PT0pLS1NeXl5kqSVlRWFw+EPda2trbq5udHi4qLi8bhisZhCoZAkqbu7Wz6fT3d3d7q7u9Ps7Kx6e3t/OzsjI0MdHR2amZlRLBZTJBKR3++X0+n82iUBAElB8AEApIyKigoNDQ2pv79fNptNp6enqqur+1BnNpu1sLCg3d1dNTY2qr29XcFgUJI0PDys6upqOZ1OOZ1OVVVVaXh4+I/mT05OymQyyeFwaHBwUD09Perr6/vSHQEAyZH29vb2luxDAAAAAMB34sYHAAAAgOERfAAAAAAYHsEHAAAAgOERfAAAAAAYHsEHAAAAgOERfAAAAAAYHsEHAAAAgOERfAAAAAAY3l8lBBq2mNDH0QAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from alibi.explainers import ALE\n", + "from alibi.explainers import plot_ale\n", + "\n", + "predict_fn = lambda x: model(scaler.transform(x)).numpy()\n", + "ale = ALE(predict_fn, feature_names=features)\n", + "exp = ale.explain(X_train)\n", + "plot_ale(exp, features=['alcohol'])" + ] + }, + { + "cell_type": "markdown", + "id": "aacbe189-a135-4ef9-bcf4-35df9019d5bb", + "metadata": {}, + "source": [ + "## Counter Factuals with Reinforcement Learning" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "b7fbd60a-64af-43f9-80d3-9b78cfde8079", + "metadata": {}, + "outputs": [], + "source": [ + "from alibi.explainers import CounterfactualRL \n", + "\n", + "# Define constants\n", + "COEFF_SPARSITY = 7.5 # sparisty coefficient\n", + "COEFF_CONSISTENCY = 0 # consisteny coefficient -> no consistency\n", + "TRAIN_STEPS = 5000\n", + "# number of training steps -> consider increasing the number of steps\n", + "BATCH_SIZE = 100 # batch size\n", + "\n", + "predict_fn = lambda x: model(x)\n", + "\n", + "explainer = CounterfactualRL(predictor=predict_fn,\n", + " encoder=ae.encoder,\n", + " decoder=ae.decoder,\n", + " latent_dim=ENCODING_DIM,\n", + " coeff_sparsity=COEFF_SPARSITY,\n", + " coeff_consistency=COEFF_CONSISTENCY,\n", + " train_steps=TRAIN_STEPS,\n", + " batch_size=BATCH_SIZE,\n", + " backend=\"tensorflow\")" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "ce1ac845-d4f3-4f15-92c7-1b5a072bc4e8", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 5000/5000 [00:47<00:00, 104.47it/s]\n" + ] + }, + { + "data": { + "text/plain": [ + "CounterfactualRL(meta={\n", + " 'name': 'CounterfactualRL',\n", + " 'type': ['blackbox'],\n", + " 'explanations': ['local'],\n", + " 'params': {\n", + " 'act_noise': 0.1,\n", + " 'act_low': -1.0,\n", + " 'act_high': 1.0,\n", + " 'replay_buffer_size': 1000,\n", + " 'batch_size': 100,\n", + " 'num_workers': 4,\n", + " 'shuffle': True,\n", + " 'exploration_steps': 100,\n", + " 'update_every': 1,\n", + " 'update_after': 10,\n", + " 'train_steps': 5000,\n", + " 'backend': 'tensorflow',\n", + " 'encoder_preprocessor': 'identity_function',\n", + " 'decoder_inv_preprocessor': 'identity_function',\n", + " 'reward_func': 'get_classification_reward',\n", + " 'postprocessing_funcs': [],\n", + " 'conditional_func': 'generate_empty_condition',\n", + " 'callbacks': [],\n", + " 'actor': \"\",\n", + " 'critic': \"\",\n", + " 'optimizer_actor': \"\",\n", + " 'optimizer_critic': \"\",\n", + " 'lr_actor': 0.001,\n", + " 'lr_critic': 0.001,\n", + " 'actor_hidden_dim': 256,\n", + " 'critic_hidden_dim': 256,\n", + " 'encoder': \"\",\n", + " 'decoder': \"\",\n", + " 'latent_dim': 7,\n", + " 'predictor': '',\n", + " 'coeff_sparsity': 7.5,\n", + " 'coeff_consistency': 0,\n", + " 'seed': 0,\n", + " 'sparsity_loss': 'sparsity_loss',\n", + " 'consistency_loss': 'consistency_loss'}\n", + " ,\n", + " 'version': '0.6.2dev'}\n", + ")" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "explainer.fit(X=scaler.transform(X_train))" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "6559f2e3-72db-4ca3-b949-8e3d7371a10a", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 1/1 [00:00<00:00, 248.40it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fixed acidity instance: 7.856 counter factual: 7.8 difference: 0.0557041\n", + "volatile acidity instance: 0.657 counter factual: 0.62 difference: 0.0365658\n", + "citric acid instance: 0.099 counter factual: 0.05 difference: 0.0491835\n", + "residual sugar instance: 2.075 counter factual: 2.3 difference: -0.2247791\n", + "chlorides instance: 0.061 counter factual: 0.079 difference: -0.0175778\n", + "free sulfur dioxide instance: 10.058 counter factual: 6.0 difference: 4.0575562\n", + "total sulfur dioxide instance: 24.849 counter factual: 18.0 difference: 6.8489075\n", + "density instance: 0.997 counter factual: 0.997 difference: -0.0001004\n", + "pH instance: 3.383 counter factual: 3.29 difference: 0.0931356\n", + "sulphates instance: 0.515 counter factual: 0.63 difference: -0.1146441\n", + "alcohol instance: 9.428 counter factual: 9.3 difference: 0.1283131\n" + ] + }, + { + "data": { + "image/png": "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QXV1NVauXInrrrsOb731Vk+wJiIabNj+QUQUBG63G4888gimTJmCKVOm4JFHHoHb7YbdbsfixYvR3NyMiRMnYuLEiWhqasLevXuxcOFCTJo0CVOmTMHvfvc7uN3uPu9jNptRV1eHBQsWQKVSQaVS4fzzz8ekSZMAAG+99RZ+8IMfnPSe07WSVFVVYebMmQCACy64ADfffDPq6uowatQoeL3envNuuukmrFmzpufa3//+9/Hoo4/ioosuwsqVK3utValUYsSIEXjyySeh0+nw0ksvATi1NaOyshI33XQTJk2ahNmzZ+PDDz8E0LVT6UUXXQSj0QgAOHjwIC644AJUVlYC6PpHzeeffw4AcDqdePDBB3HBBRdg1qxZ2Ldv30m1NDU14ac//SkuvvhiXHXVVVi1alVf/6mJiPqFoZqIKAj+9re/Yc+ePXj33Xfx3nvvYd++fXj22WcRHx+PF154ARkZGdi1axd27dqFzMxMyGQy/L//9/+wbds2vPrqq/jiiy/wyiuv9Hmf1NRUDBkyBPfddx82bdqE1tbWs6p36NChKCsrAwB8+eWXAYfMvXv3Ii8vD5999hnuvPPOgN4jl8tx9dVXY+fOnacc83g8uOOOO3DppZfi888/x29/+1v86le/wtGjR3Heeefh+9//Ph544AE4nU7cd999uOeee1BYWHjKdZ5++mnU1NTggw8+wD//+U+88847Pcf8fj/uvPNOjBo1Cp9++ilefvllvPzyy9iyZUtA9RMRBYKhmogoCNauXYslS5ZAr9dDp9NhyZIleO+99854/rhx4zBhwgQoFArk5uZi4cKF+PLLL/u8jyAIWLVqFXJycvDYY49hypQpuOGGG1BdXR3ET3NmGRkZuOmmm6BQKBAXF9ev97W3t5/y+p49e2C323H77bdDpVJh8uTJuPLKK3v6pe+++250dHRg/vz5yMjIwA033HDa67///vu44447kJKSAoPBgJtuuqnn2L59+2A2m3H33XdDpVIhLy8PCxYswLp16/r56YmIzow91UREQdDc3Izs7Oyer7Ozs9Hc3HzG86uqqvDYY49h//79cDgc8Pl8GDt2bED3ysrKwtKlSwEARqMRDz30EB544AG89tprA/sQAd77bDQ1NUGr1Z7yenNzM7KysiCTfbvGk52djaamJgBdLSTXXnstfv/73+PBBx+EIAinvX5zczMMBsNJ1+hWX1+P5ubmnhYZAPD5fCd9TUQ0UFypJiIKgoyMDDQ0NPR8bTQaex7KO10QXL58OYYNG4YNGzbg66+/xr333ntWDxsaDAbccMMNOHz4MABAo9HA6XT2HG9paQn4WvHx8QDQ6/vPFGp74/f78dFHH502xGZkZKCxsRF+v7/nNaPRiMzMTABdYfzpp5/Gddddh8cee+yMfefp6ek9vdfd1+hmMBiQm5uLnTt39vzYtWsXXnjhhX5/FiKiM2GoJiIKgtmzZ+Nvf/sbzGYzzGYznnnmGcyZMwcAoNfrYbFYYLPZes7v7OxEQkICEhISUFlZif/+978B3ae9vR1PPfUUjh07Br/fD7PZjDfffBMTJkwAAIwePRpHjhzBgQMH4HK5+nyY8EQ6nQ6ZmZl499134fP58MYbb6C2tjbw/wjf4fV6UVlZiV/84hdobW3FLbfccso548ePR1xcHP7xj3/A4/Fg+/bt2Lx5M2bNmgVRFPHggw/i+uuvx6OPPoqMjAz85S9/Oe29rrnmGjz//PNob29HY2Mj/v3vf590j4SEBDz//PNwOp3w+Xw4fPgw9u7de9afjYjouxiqiYiC4K677sK4ceMwd+5czJ07F2PHjsVdd90FACgsLMTs2bMxbdo0TJo0CU1NTXjggQdQVlaG8847Dw899BBmzZoV0H2USiXq6+vxox/9COeffz7mzJkDlUqFxx57DEDXA4hLlizBLbfcghkzZuD888/v1+d4+OGH8c9//hMXXXQRKioqTprLHaj3338fEydOxKRJk3DnnXciJSUFb731Vs/q84lUKhWee+45fPrpp7j44ouxYsUKPPHEEygsLMSqVatgMplwzz33QBAEPProo3jrrbdO+8Dj3XffjezsbFx99dW49dZbUVpa2nNMLpfjueeew8GDB3H11Vfj4osvxm9/+1t0dHT0+7MREZ2JIJ7N9xuJiIiIiKgHV6qJiIiIiAaIoZqIiIiIaIAYqomIiIiIBoihmoiIiIhogBiqiYiIiIgGiKGaiIiIiGiAGKqJiIiIiAaIoZqIiIiIaIAYqomIiIiIBuj/A6Eq4xam9sItAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "result_cfrl = explainer.explain(X=scaler.transform(x), Y_t=np.array([1]))\n", + "cfrl = scaler.inverse_transform(result_cfrl.data['cf']['X'])\n", + "compare_instances(cfrl, x)\n", + "plot_cf_and_feature_dist(x, cfrl, feature='total sulfur dioxide')" + ] + }, + { + "cell_type": "markdown", + "id": "6d142f8a-c97f-4965-8b76-840b0aed5164", + "metadata": {}, + "source": [ + "## Set up tfv1" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "4fc13edf-3e05-4a7f-b5d6-f822923df98d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:tensorflow:From /home/alex/miniconda3/envs/alibi-explain/lib/python3.8/site-packages/tensorflow/python/compat/v2_compat.py:96: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "non-resource variables are not supported in the long term\n" + ] + } + ], + "source": [ + "model.save('wine_clf.h5')\n", + "import tensorflow.compat.v1 as tf\n", + "tf.disable_v2_behavior()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "38105a7b-b86e-4720-9015-e7838ed82e0c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:tensorflow:OMP_NUM_THREADS is no longer used by the default Keras config. To configure the number of threads, use tf.config.threading APIs.\n" + ] + } + ], + "source": [ + "from tensorflow.keras.models import Model, load_model\n", + "model = load_model('wine_clf.h5')" + ] + }, + { + "cell_type": "markdown", + "id": "9223ff2e-66c7-40a0-ba8a-7655ef7650ca", + "metadata": {}, + "source": [ + "## Counterfactual Instances" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "80adef85-5100-489f-a5d6-888e9e932677", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:tensorflow:From /home/alex/Development/alibi-explain/alibi/explainers/counterfactual.py:169: The name tf.keras.backend.get_session is deprecated. Please use tf.compat.v1.keras.backend.get_session instead.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "`Model.state_updates` will be removed in a future version. This property should not be used in TensorFlow 2.0, as `updates` are applied automatically.\n" + ] + } + ], + "source": [ + "from alibi.explainers import Counterfactual\n", + "\n", + "shape = (1,) + X_train.shape[1:]\n", + "target_proba = 0.51\n", + "tol = 0.01 # want counterfactuals with p(class)>0.99\n", + "target_class = 'other'\n", + "max_iter = 1000\n", + "lam_init = 1e-1\n", + "max_lam_steps = 10\n", + "learning_rate_init = 0.1\n", + "feature_range = (scaler.transform(X_train).min(), scaler.transform(X_train).max())\n", + "\n", + "explainer = Counterfactual(\n", + " model,\n", + " shape=shape, \n", + " target_proba=target_proba,\n", + " tol=tol,\n", + " target_class=target_class,\n", + " max_iter=max_iter, \n", + " lam_init=lam_init,\n", + " max_lam_steps=max_lam_steps,\n", + " learning_rate_init=learning_rate_init,\n", + " feature_range=feature_range\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "56a4399b-659c-4d60-bd2c-e3c6ca259f28", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fixed acidity instance: 7.8 counter factual: 7.8 difference: 0.0 \n", + "volatile acidity instance: 0.62 counter factual: 0.594 difference: 0.0259061\n", + "citric acid instance: 0.05 counter factual: 0.05 difference: 0.0 \n", + "residual sugar instance: 2.3 counter factual: 2.3 difference: 0.0 \n", + "chlorides instance: 0.079 counter factual: 0.079 difference: 0.0 \n", + "free sulfur dioxide instance: 6.0 counter factual: 6.0 difference: 0.0 \n", + "total sulfur dioxide instance: 18.0 counter factual: 18.0 difference: 0.0 \n", + "density instance: 0.997 counter factual: 0.997 difference: 0.0 \n", + "pH instance: 3.29 counter factual: 3.29 difference: 0.0 \n", + "sulphates instance: 0.63 counter factual: 0.704 difference: -0.0743216\n", + "alcohol instance: 9.3 counter factual: 9.3 difference: 0.0 \n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAscAAAH0CAYAAADR8ICwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAB04klEQVR4nO3deZhcZZk3/u85VXVq6eru6n3f0ukknR0IBJRFQCCIEFxARnEHRER03nlf9B1REXUceGdwQX+D4jI6LsNkFBkQ2QIoouxZydbpLL1VV3VVV3V37afOOb8/qrtJyNbLWaqrvp/rypVeqp/nTgjJN0/ucz+CpmkaiIiIiIgIotUFEBERERHlC4ZjIiIiIqJJDMdERERERJMYjomIiIiIJjEcExERERFNYjgmIiIiIprEcExERERENMludQF6i0TiUFWObqaFY9ehCEpLXWipcuuyXmLXGygtdUFp6dRlPSIiokIiigIqKkpO+PmCC8eqqjEc04KSSmfhdCm6/brNptJQnSL/PyAiIpoDtlUQEREREU1iOCYiIiIimsRwTEREREQ0ieGYiIiIiGgSwzERERER0SSGYyIiIiKiSaaNcrvlllswMDAAURTh8Xjw5S9/Gd3d3Ue9RlEUfOMb38Dzzz8PQRBw00034ZprrjGrRCIiIiIqcqaF47vvvhulpaUAgKeffhr/+I//iIceeuio1zzyyCPo6+vDk08+iWg0iquvvhrnnHMOmpubzSqTiIiIiIqYaW0VU8EYAGKxGARBOOY1jz32GK655hqIoojKykq8853vxOOPP25WiURERERU5Ey9Ie9LX/oSXnjhBWiahh//+MfHfN7v96OxsXH6/YaGBgwPD5tZIhEREREVMVPD8Te/+U0AwO9//3vcc889eOCBB3Tfo6rKq/uaREYqD8YBADU1pad45czYyt26rkdERFRMTA3HU66++mp85StfQSQSQUVFxfTHGxoaMDQ0hNWrVwM49iR5JsLhGFRV07VeIiONjSVRXu7GyMiELuvFdF6PiIiokIiicNLDVFN6juPxOPx+//T7zzzzDMrLy+Hz+Y563YYNG7Bp0yaoqorR0VE8/fTTuOyyy8wokYiIiIjInJPjZDKJz33uc0gmkxBFEeXl5bj//vshCAJuvPFG3HbbbVi1ahU2btyIbdu24dJLLwUAfOYzn0FLS4sZJRIR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+9vftroMIiLLzP2mASIimpVYLIabb74Zd955Jy6//HLIsoxXX30VkiRZXRoREU3iyTERkUkOHjwIAHj3u98Nm80Gl8uFc889F8uWLcN9992H//2///f0awcGBrB06VJks9lj1vnd736H6667DnfddRfOOOMMbNiwAX/729+Oes3g4CCuu+46nHbaafjEJz6B0dHR6c/ddtttePvb344zzjgDH/rQh9DT0wMAePDBB/HII4/gJz/5CU477TTcfPPNAIBAIIDPfvazOPvss3HRRRfhF7/4xfRa27dvx3vf+16cfvrpeNvb3oZvfetb+v2EERFZgOGYiMgkHR0dsNls+MIXvoA//elPGBsbm/Na27dvR2trK1588UXcdtttuPXWWxGNRqc//+ijj+Jb3/oW/va3v0GWZfz0pz+d/tz555+PJ554An/729+wfPny6VD+gQ98AFdeeSU++clPYsuWLbj//vuhqio+/elPY+nSpfjzn/+Mn//85/j5z3+O559/HgDwzW9+Ex/5yEfw+uuv46mnnsLll18+5x8TEVE+YDgmIjKJ1+vFr3/9awiCgC9/+cs455xzcPPNNyMUCs16rcrKSnz0ox+Fw+HAu971LnR0dOC5556b/vx73/tedHR0wOVyYcOGDdi9e/f0597//vfD6/VCkiR89rOfxZ49ezAxMXHcfXbs2IHR0VHceuutkCQJLS0tuPbaa/HYY48BAOx2O/r6+jA6OoqSkhKsXbt21j8WIqJ8wp5jIiITdXZ24p//+Z8BAL29vfg//+f/4J/+6Z/Q0dExq3Xq6uogCML0+42NjQgGg9Pv19TUTL/tdruRSCQAAIqi4Nvf/jYef/xxjI6OQhRzZySRSASlpaXH7DM4OIhgMIh169ZNf0xRlOn3v/nNb+J73/seLr/8cjQ3N+PWW2/FhRdeOKsfCxFRPmE4JiKySGdnJ9773vfiwQcfxPLly5FKpaY/d6rT5EAgAE3TpgOy3+/HRRdddMo9H3nkEWzevBk/+9nP0NzcjImJCZx55pnQNA0AjgrcANDQ0IDm5mY8+eSTx12vvb0d9957L1RVxZNPPonbbrsNL730EjwezylrISLKR2yrICIySW9vL376059ieHgYQC7QPvroo1izZg26u7vxyiuvYGhoCBMTE/jhD3940rVGR0fxi1/8ArIs449//CN6e3txwQUXnLKGeDwOSZJQUVGBZDKJe++996jPV1VVYWBgYPr91atXo6SkBD/60Y+QSqWgKAr27ds3PX7u4Ycfnj6BLisrA4Dp02giooWIv4MREZnE6/Vi27ZtuOaaa7B27Vpce+21WLJkCb74xS/i7W9/O971rnfhqquuwnvf+95TtiasXr0ahw8fxtlnn43vfOc7+N73voeKiopT1nD11VejsbER5513Hq644opjeoTf//73Y//+/Vi3bh1uueUW2Gw23H///dizZw8uvvhinH322bjjjjsQi8UAAM8//zyuuOIKnHbaafjmN7+Jb3/723C5XHP+OSIispqgTf1bGhERLQi/+93vsGnTJvzmN7+xuhQiooLDk2MiIiIiokkMx0REREREk9hWQUREREQ0iSfHRERERESTGI6JiIiIiCYxHBMRERERTWI4JiIiIiKaxHBMRERERDSJ4ZiIiIiIaNL/D2ixqx9XA8p5AAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "result_cf = explainer.explain(scaler.transform(x))\n", + "cf = result_cf.data['cf']['X']\n", + "cf = scaler.inverse_transform(cf)\n", + "compare_instances(x, cf)\n", + "plot_cf_and_feature_dist(x, cf, feature='sulphates')" + ] + }, + { + "cell_type": "markdown", + "id": "36ad53ba-d63e-4edc-b9d0-bc4ba305a593", + "metadata": {}, + "source": [ + "## Contrastive Explanations Method" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "d32d1873-5321-4f50-9666-3d3875d178cd", + "metadata": {}, + "outputs": [], + "source": [ + "from alibi.explainers import CEM\n", + "\n", + "mode = 'PN' # 'PN' (pertinent negative) or 'PP' (pertinent positive)\n", + "shape = (1,) + X_train.shape[1:] # instance shape\n", + "kappa = .2 # minimum difference needed between the prediction probability for the perturbed instance on the\n", + " # class predicted by the original instance and the max probability on the other classes\n", + " # in order for the first loss term to be minimized\n", + "beta = .1 # weight of the L1 loss term\n", + "c_init = 10. # initial weight c of the loss term encouraging to predict a different class (PN) or\n", + " # the same class (PP) for the perturbed instance compared to the original instance to be explained\n", + "c_steps = 10 # nb of updates for c\n", + "max_iterations = 1000 # nb of iterations per value of c\n", + "feature_range = (scaler.transform(X_train).min(axis=0).reshape(shape)-.1, # feature range for the perturbed instance\n", + " scaler.transform(X_train).max(axis=0).reshape(shape)+.1) # can be either a float or array of shape (1xfeatures)\n", + "clip = (-1000.,1000.) # grXdient clipping\n", + "lr_init = 1e-2 # initial learning rate" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "7aa6351b-01fd-4f6b-8f05-92f187b2737a", + "metadata": {}, + "outputs": [], + "source": [ + "cem = CEM(model, mode, shape, kappa=kappa, beta=beta, feature_range=feature_range,\n", + " max_iterations=max_iterations, c_init=c_init, c_steps=c_steps,\n", + " learning_rate_init=lr_init, clip=clip)\n", + "cem.fit(scaler.transform(X_train), no_info_type='median')\n", + "result_cem = cem.explain(scaler.transform(x), verbose=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "96abe72c-2e01-402d-b2ed-9b61f208a95b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fixed acidity instance: 7.8 counter factual: 7.8 difference: 0.0 \n", + "volatile acidity instance: 0.62 counter factual: 0.62 difference: 0.0 \n", + "citric acid instance: 0.05 counter factual: 0.05 difference: 0.0 \n", + "residual sugar instance: 2.3 counter factual: 2.3 difference: 0.0 \n", + "chlorides instance: 0.079 counter factual: 0.079 difference: 0.0 \n", + "free sulfur dioxide instance: 6.0 counter factual: 6.0 difference: 0.0 \n", + "total sulfur dioxide instance: 18.0 counter factual: 17.107 difference: 0.8926582\n", + "density instance: 0.997 counter factual: 0.997 difference: 0.0 \n", + "pH instance: 3.29 counter factual: 3.29 difference: 0.0 \n", + "sulphates instance: 0.63 counter factual: 0.781 difference: -0.1507046\n", + "alcohol instance: 9.3 counter factual: 9.3 difference: 0.0 \n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cem_cf = result_cem.data['PN']\n", + "cem_cf = scaler.inverse_transform(cem_cf)\n", + "compare_instances(x, cem_cf)\n", + "plot_cf_and_feature_dist(x, cem_cf, feature='sulphates')" + ] + }, + { + "cell_type": "markdown", + "id": "07f58f8b-944a-4a5d-8d74-fc2fce4b0f6d", + "metadata": {}, + "source": [ + "## Counterfactual With Prototypes" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "626490a0-c1af-43bb-82e8-d3e89a38daa6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:tensorflow:No training configuration found in the save file, so the model was *not* compiled. Compile it manually.\n", + "WARNING:tensorflow:No training configuration found in the save file, so the model was *not* compiled. Compile it manually.\n" + ] + } + ], + "source": [ + "encoder = load_model('wine_encoder.h5')\n", + "decoder = load_model('wine_decoder.h5')" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "a556375d-bd5d-475a-9e1c-e71f66f23ecd", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "`Model.state_updates` will be removed in a future version. This property should not be used in TensorFlow 2.0, as `updates` are applied automatically.\n" + ] + } + ], + "source": [ + "from alibi.explainers import CounterfactualProto\n", + "\n", + "ae = AE(encoder=encoder, decoder=decoder)\n", + "\n", + "explainer = CounterfactualProto(\n", + " model,\n", + " shape=shape,\n", + " ae_model=ae,\n", + " enc_model=encoder,\n", + " max_iterations=500,\n", + " feature_range=feature_range,\n", + " c_init=1., \n", + " c_steps=4,\n", + " eps=(1e-2, 1e-2), \n", + " update_num_grad=100\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "a6e5ff2b-0fab-4fcd-9b52-f454bd68acf6", + "metadata": {}, + "outputs": [], + "source": [ + "explainer.fit(scaler.transform(X_train))\n", + "result_proto = explainer.explain(scaler.transform(x), Y=None, target_class=None, k=20, k_type='mean',\n", + " threshold=0., verbose=False, print_every=100, log_every=100)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "3e6116d6-b739-436c-8179-1cbaddf218c0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fixed acidity instance: 7.8 counter factual: 7.8 difference: 0.0 \n", + "volatile acidity instance: 0.62 counter factual: 0.594 difference: 0.0259061\n", + "citric acid instance: 0.05 counter factual: 0.05 difference: 0.0 \n", + "residual sugar instance: 2.3 counter factual: 2.3 difference: 0.0 \n", + "chlorides instance: 0.079 counter factual: 0.079 difference: 0.0 \n", + "free sulfur dioxide instance: 6.0 counter factual: 6.0 difference: 0.0 \n", + "total sulfur dioxide instance: 18.0 counter factual: 18.0 difference: 0.0 \n", + "density instance: 0.997 counter factual: 0.997 difference: 0.0 \n", + "pH instance: 3.29 counter factual: 3.29 difference: 0.0 \n", + "sulphates instance: 0.63 counter factual: 0.704 difference: -0.0743216\n", + "alcohol instance: 9.3 counter factual: 9.3 difference: 0.0 \n" + ] + }, + { + "data": { + "image/png": "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xx134N5778XMmTMRjUbx2GOPYcuWLQCAO+64A9dddx0AnPQ5IiIiIqJ4m1QXoBARERERnS5uDiQiIiIiGgcGZyIiIiKicWBwJiIiIiIaBwZnIiIiIqJxYHAmIiIiIhoHBmciIiIionFgcCaipLNz50589atfxTXXXINrrrkGmzdvBjB8Xvz555+P9vZ2AMBvfvMbfP/731ezVSIimkB4jjMRJZWBgQFcddVVePLJJzFv3jxEo1F4PB7YbDYAwOrVq/HXv/4V9957L3784x/j5ZdfhsViUblrIiKaCLRqN0BEdCp27dqF8vJyzJs3DwCg0WhGQzMArFy5Eh9//DHuuecePP/88wzNREQUMxzVIKIJJRQKoba2FlarFS6XS+12iIhoAmFwJqKkMmfOHNTX12Pnzp0AgGg0CrfbPfr8448/junTp+OZZ57Bww8/jM7OTrVaJSKiCYYzzkSUdHbs2IFVq1bB5/NBFEXcf//9OOecc7BhwwY88cQTePHFF2EwGPDiiy/ilVdewXPPPQetlpNpRER0ZhiciYiIiIjGgaMaRERERETjwOBMRERERDQODM5EREREROPA4ExERERENA4MzkRERERE48DgTESUAD755BOcd955p/35Dz30EH7729/G5L1OR0dHB+bOnYtoNHrc55988kn84Ac/GNdriYgSFYMzEVGMfOMb38Cvf/3rYx7fsGEDzj33XEQikZjU+ec//4mvfvWrRz322GOP4Z577onJ+wPDQbeyshK7d+8e1+vz8vKwc+dOaDSaU37t1772Nbz44otn1C8RkRIYnImIYuTaa6/Fq6++in89Hv/VV1/F8uXLk+YSFlmWsXr1aqSlpWH16tVqt0NElDAYnImIYuSSSy7BwMAAtm3bNvqY2+3Gxo0bsXLlSoRCIfzHf/wHlixZgiVLluA//uM/EAqFjvte//M//4NLLrkEc+fOxZVXXom3334bAFBfX4+HH34Yu3btwty5c7FgwQIAwAMPPID//u//Pu57dXV14Tvf+Q7OPvtsXHTRRXjuuedO+uvYtm0benp68KMf/Qjr168/qsdAIICf/exnuPDCCzF//nx89atfRSAQQFtbGyorK0dX1VtbW3HTTTdh7ty5uPXWW9Hf3z/6Hp9/7X//939j27ZteOyxxzB37lw89thjePTRR/Gzn/3sqJ7uuusuPPvssyftm4go3hiciYhixGg04oorrjhqlfb1119HWVkZqqqq8NRTT2H37t1Ys2YNXn31Vezduxe/+93vjvtehYWFeP7557F9+3Z8+9vfxg9/+EN0d3ejvLwcjz76KObMmYOdO3ceFdKPR5IkfOtb30JlZSU++OAD/PnPf8af//xnbNq06YSf88orr+DCCy/EFVdcAQDYuHHj6HOrVq3C/v378fe//x1bt27FD3/4Q4jisV9KfvCDH2D69On45JNPcPfdd+OVV145bq3vf//7WLBgAR566CHs3LkTDz30EK699lqsXbsWkiQBAPr6+vDRRx/h6quvPumvlYgo3hiciYhiaOXKlXjzzTcRDAYBAKtXr8a1114LAHjttddwzz33wG63IyMjA/fccw9effXV477PFVdcgZycHIiiiCuvvBLFxcXYs2fPKfezd+9e9PX14dvf/jb0ej0KCwvxla98BevXrz/u6/1+P9544w0sX74cOp0Ol19++ehfBCRJwssvv4wf/ehHyMnJgUajwbx586DX6496j46ODuzduxff/e53odfrsXDhQlx00UXj7nnWrFmwWq346KOPAADr16/HokWLkJmZecq/fiKiWEqOgTsioiSxYMECpKenY8OGDZg5cyb27t2L3/zmNwCA7u5u5OXljb42Ly8P3d3dx32f1atX45lnnkF7ezsAwOfzHTXuMF7t7e3o7u4eHekAgGg0etTPP+/tt9+GVqsdPZVj+fLluPXWW9HX1wdZlhEMBlFYWHjSmt3d3UhNTYXZbB59LC8vD06nc9x9j8yLn3vuuXj11Vdx8803j/tziYjihcGZiCjGVqxYgdWrV6OxsRFLliwZXSnNzs5GR0cHpkyZAgBwOp3Izs4+5vPb29vx4IMP4tlnn8XcuXOh0WiwYsWK0ecFQRh3Lw6HAwUFBXjrrbfG9frVq1fD5/PhwgsvBDC8UTAcDuO1117D1772NRgMBrS2tqKqquqE7/H/t3P/IMnEcRzHP9YitFVCUKMEkgUJ/iHclJbqONChpQihxV1cGoOWmkKSxsZA8MYmR4cCabMLJyE4AoeIDEWeZztSnz8XFDm8X3DL93c/+N72uR/fu0AgoJeXF729vbnh+enp6VN9G4ah7e1tNZtNtVotpdNpz3sB4LswqgEAX8w0TdXrdV1fX8s0Tbe+tbWli4sLdToddTodlUol7ezsjO3vdrvy+XyanZ2VJFUqFT0+Prrrc3Nzchznrx8WfrS2tqaZmRldXl7q/f1dg8FAtm3/cezDcRzV63WVy2VVq1VVq1VZlqXDw0NZlqWpqSllMhmdnJzIcRwNBgM1Go2xPhYXFxUOh3V+fq5er6e7u7uhOelR8/PzarfbQ7WFhQWtrq6qUChoc3NTfr//v88KAN+N4AwAX2xpaUnr6+vqdrtKpVJuPZ/PKxwOyzAMGYahlZUV5fP5sf3BYFC5XE67u7va2NiQbduKRCLueiKRUDAYVDKZVDwe/2cv09PTKpfLajabSqVSSiQSOjo60uvr69i9lmUpFAopmUwqEAi4197enh4eHmTbtorFopaXl5XNZhWLxXR6eup+xPfR2dmZ7u/vFY/HVSqVhl4gRu3v7+vm5kbRaFTHx8du3TRN2bY9dNoOAD/J92v0h6MAAEyA29tbFQoF1Wq1T415AMB34cQZADBx+v2+rq6ulM1mCc0AJgbBGQAwUVqtlqLRqJ6fn3VwcPDT7QCAi1ENAAAAwANOnAEAAAAPCM4AAACABwRnAAAAwAOCMwAAAOABwRkAAADwgOAMAAAAePAbGShb2LUoLgEAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "proto_cf = result_proto.data['cf']['X']\n", + "proto_cf = scaler.inverse_transform(proto_cf)\n", + "compare_instances(x, proto_cf)\n", + "plot_cf_and_feature_dist(x, proto_cf, feature='volatile acidity')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From e1e5833d3cbb7018384f6fcf5816e6334a90e3b9 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Wed, 24 Nov 2021 13:29:33 +0000 Subject: [PATCH 28/60] Updates to into suggested in PR --- doc/source/overview/high_level.md | 706 ++++++++++++------ doc/source/overview/images/exp-aug.png | Bin 0 -> 32103 bytes doc/source/overview/images/local-global.png | Bin 0 -> 30633 bytes .../overview/images/wine-quality-ds.png | Bin 0 -> 32164 bytes examples/overview.ipynb | 374 +++++++++- 5 files changed, 825 insertions(+), 255 deletions(-) create mode 100644 doc/source/overview/images/exp-aug.png create mode 100644 doc/source/overview/images/local-global.png create mode 100644 doc/source/overview/images/wine-quality-ds.png diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 45fa5a8a9..e87b8e9b7 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -1,171 +1,306 @@ -# Practical Overview of Explainability - -While the applications of machine learning are impressive many models provide predictions that are hard to interpret or reason about. This limits their use in many cases as often we want to know why and not just what a model made a prediction. Alarming predictions are rarely taken at face value and typically warrant further analysis. Indeed, in some -cases explaining the choices that a model makes could even become a potential [legal requirement](https://arxiv.org/pdf/1711.00399.pdf). The following is a non-rigorous and practical overview of explainability and the methods alibi provide. - -**Explainability provides us with algorithms that give insights into trained models predictions.** It allows -us to answer questions such as: -- How does a prediction change dependent on feature inputs? -- What features are Important for a given prediction to hold? -- What features are not important for a given prediction to hold? -- What set of features would you have to minimally change to obtain a new prediction of your choosing? -- How does each feature contribute to a model's prediction? - -The set of insights available are dependent on the trained model. For instance, If the model is a regression it makes sense to ask how the prediction varies for some feature. Whereas, it doesn't make sense to ask what minimal change is required to obtain a new classification. Insights are constrained by: - -- The type of data the model handles. Some insights only apply to image data others only to textual data -- The task the model performs. The two types of model tasks alibi handles are regression and classification -- The type of model used. Examples of model types include neural networks and random forests - -Some explainer methods apply only to specific types of models such as TreeSHAP which can only be used with tree-based models. This is the case when an explainer method uses some aspect of that model's structure. If the model is a neural network then some methods require computing the prediction derivative for model inputs. Methods that require access to the model internals like this are known as **white box** methods. Other explainers apply to any type of model. They can do so because the underlying method doesn't make use of the model internals. Instead, they only need to have access to the model outputs given particular inputs. Methods that apply in this general setting are known as **black box** methods. Note that white box methods are a subset of black-box methods and an explainer being a white box method is a much stronger constraint than it being a black box method. Typically, white box methods are faster than black-box methods as access to the model internals means the method can exploit some aspect of that model's structure. - - -:::{admonition} **Note 1: Black Box Definition** -The use of Black Box here varies subtly from the conventional use within machine learning. Typically, we say a model is a black box if the mechanism by which it makes predictions is too complicated to be interpretable to a human. Here we use black-box to mean that the explainer method doesn't need access to the model internals to be applied. -::: - -## Applications: - -**Trust:** At a core level, explainability builds trust in the machine learning systems we use. It allows us to justify their use in many contexts where an understanding of the basis of the decision is paramount. - -**Testing:** Explainability can be thought of as an extra form of testing for a model. The insights derived should conform to the expected behaviour. Failure to do so may indicate issues with the model or problems with the dataset it's been trained on. - -**Functionality:** Insights can be used to augment model functionality. For instance, providing information on top of model predictions such as how to change model inputs to obtain desired outputs. - -**Research:** Explainability allows researchers to understand how and why opaque models make decisions. Helping them understand more broadly the effects of the particular model or training schema they're using. - -__TODO__: -- picture of explainability pipeline: training -> prediction -> insight - -:::{admonition} **Note 2: Biases** - -Practitioners must be wary of using explainability to excuse incorrect models rather than ensuring their correctness. It is possible to have a correctly trained model on a dataset, but the model doesn't reflect reality because the dataset is either wrong or incomplete. Suppose the insights that explainability generates conform to some confirmation bias of the person training the model. In that case, they will be blind to this issue and instead use these methods to confirm erroneous results. A key distinction is that explainability insights are designed to be faithful to the model they are explaining and not the data. You use an explanation to obtain an insight into the data only if the model is trained well. +## Introduction + +```{contents} +:depth: 3 +:local: true +``` + +# What is Explainability? + +**Explainability provides us with algorithms that give insights into trained models predictions.** It allows us to +answer questions such as: + +- How does a prediction **change** dependent on feature inputs? +- What features **are** or **are not** important for a given prediction to hold? +- What set of features would you have to minimally **change** to obtain a **new** prediction of your choosing? +- How does each feature **contribute** to a model's prediction? + +```{image} images/exp-aug.png +:align: center +:alt: Model augmented with explainabilty +``` + +Alibi provides a set of **algorithms** or **methods** known as **explainers**. Each explainer provides some kind of +insight about a model. The set of insights available given a trained model is dependent on a number of factors. For +instance, if the model is a [regression](https://en.wikipedia.org/wiki/Regression_analysis) it makes sense to ask how +the prediction varies for some regressor. Whereas, it doesn't make sense to ask what minimal change is required to +obtain a new class prediction. In general, given a model the explainers we can use are constrained by: + +- The **type of data** the model handles. Each insight applies to some or all of the following kinds of data: image, + tabular or textual. +- The **task the model** performs, regression + or [classification](https://en.wikipedia.org/wiki/Statistical_classification). +- The **type of model** used. Examples of model types + include [neural networks](https://en.wikipedia.org/wiki/Neural_network) + and [random forests](https://en.wikipedia.org/wiki/Random_forest). + +## Applications + +As machine learning methods have become more complex and more mainstream, with many industries +now [incorporating AI](https://www.mckinsey.com/business-functions/mckinsey-analytics/our-insights/global-survey-the-state-of-ai-in-2020) +in some form or another, the need to understand the decisions made by models is only increasing. Explainability has +several applications of importance. + +- **Trust:**. At a core level, explainability builds [trust](https://onlinelibrary.wiley.com/doi/abs/10.1002/bdm.542) in + the machine learning systems we use. It allows us to justify their use in many contexts where an understanding of the + basis of the decision is paramount. This is a common issue within machine learning in medicine, where acting on a + model prediction may require expensive or risky procedures to be carried out. +- **Testing:**. Explainability might be used + to [audit financial models](https://dl.acm.org/doi/pdf/10.1145/3351095.3375624) that aid decisions about whether to + grant customer loans. By computing the attribution of each feature towards the prediction the model makes, + organisations can check that they are consistent with human decision-making. Similarly, explainability applied to a + model trained on image data can explicitly show the model's focus when making decisions, + aiding [debugging](http://proceedings.mlr.press/v70/sundararajan17a.html). Practitioners must be wary + of [misuse](#biases), however. +- **Functionality:**. Insights can be used to augment model functionality. For instance, providing information on top of + model predictions such as how to change model inputs to obtain desired outputs. +- **Research:**. Explainability allows researchers to understand how and why opaque models make decisions. This can help + them understand more broadly the effects of the particular model or training schema they're using. + +## Black-box vs White-box methods + +Some explainers apply only to specific types of models such as the [Tree SHAP](#path-dependent-treeshap) methods which +can only be used with [tree-based models](https://en.wikipedia.org/wiki/Decision_tree_learning). This is the case when +an explainer uses some aspect of that model's internal structure. If the model is a neural network then some methods +require taking gradients of the model predictions with respect to the inputs. Methods that require access to the model +internals are known as **white-box** methods. Other explainers apply to any type of model. They can do so because the +underlying method doesn't make use of the model internals. Instead, they only need to have access to the model outputs +given particular inputs. Methods that apply in this general setting are known as **black-box** methods. Note that +white-box methods are a subset of black-box methods and an explainer being a white-box method is a much stronger +constraint than it being a black-box method. Typically, white-box methods are faster than black-box methods as they can +exploit the model internals. + +:::{admonition} **Note 1: Black-box Definition** +The use of black-box here varies subtly from the conventional use within machine learning. In most other contexts a +model is a black-box if the mechanism by which it makes predictions is too complicated to be interpretable to a human. +Here we use black-box to mean that the explainer method doesn't need access to the model internals to be applied. ::: ## Global and Local Insights -Insights can be categorised into two types. Local and global. Intuitively, a local insight says something about a single prediction that a model makes. For example, given an image classified as a cat by a model, a local insight might give the set of features (pixels) that need to stay the same for that image to remain classified as a cat. Such an insight provides an idea of what the model is looking for when classifying a specific instance into a particular class. - -On the other hand, global insights refer to the behaviour of the model over a set of inputs. Plots showing how a regression prediction varies for a given feature while factoring out all the others are examples. These insights provide a more general understanding of the relationship between inputs and model predictions. - -__TODO__: -- Add image to give idea of Global and local insight - -## Insights - -Alibi provides several local and global insights with which to explore and understand models. The following gives the practitioner an understanding of which explainers are suitable in which situations. - -### Local Necessary Features: - -Given a single instance and model prediction, local necessary features are local explanations that tell us what minimal set of features needs to stay the same so that the model still gives the same or close prediction. - -In the case of a trained image classification model, local necessary features for a given instance would be a minimal subset of the image that the model uses to make its decision. A machine learning engineer might use this insight to see if the model concentrates on the correct features. Local necessary features are particularly advantageous for checking erroneous model decisions. - -The following two explainer methods are available from alibi for generating Local Necessary Features insights. Each approaches the idea in slightly different ways. The main difference is that anchors give a picture of the size of the area over the dataset for which the insight applies, whereas pertinent positives do not. - -#### Anchors - -| Model-types | Task-types | Data-types | -| ----------- | -------------- | ----------- | -| Black-box | Classification | Tabular | -| | | Text | -| | | Image | -| | | Categorical | +Insights can be categorised into two categories — Local and global. Intuitively, a local insight says something +about a single prediction that a model makes. For example, given an image classified as a cat by a model, a local +insight might give the set of features (pixels) that need to stay the same for that image to remain classified as a cat. + +On the other hand, global insights refer to the behaviour of the model over a range of inputs. As an example, a plot +that shows how a regression prediction varies for a given feature. These insights provide a more general understanding +of the relationship between inputs and model predictions. + +```{image} images/local-global.png +:align: center +:alt: Local and Global insights +``` + +## Biases + +The explanations Alibi's methods provide depend on the model, the data, and — for local methods — the +instance of interest. Thus Alibi allows us to obtain insight into the model and, therefore, also the data, albeit +indirectly. There are several pitfalls of which the practitioner must be wary. + +Often bias exists in the data we feed machine learning models even when we exclude sensitive factors. Ostensibly +explainability is a solution to this problem as it allows us to understand the model's decisions to check if they're +appropriate. However, human bias itself is still an element. Hence, if the model is doing what we expect it to on biased +data, we are venerable to using explainability to justify relations in the data that may not be accurate. Consider: +> _"Before launching the model, risk analysts are asked to review the Shapley value explanations to ensure that the +> model exhibits expected behavior (i.e., the model uses the same features that a human would for the same task)."_ +> — [Explainable Machine Learning in Deployment](https://dl.acm.org/doi/pdf/10.1145/3351095.3375624) + +The critical point here is that the risk analysts in the above scenario must be aware of their own bias and potential +bias in the dataset. The Shapley value explanations themselves don't remove this source of human error; they just make +the model less opaque. + +Machine learning engineers may also have expectations about how the model should be working. An explanation that doesn't +conform to their expectations may prompt them to erroneously decide that the model is "incorrect". People usually expect +classifiers trained on image datasets to use the same structures humans naturally do when identifying the same classes. +However, there is no reason to believe such models should behave the same way we do. + +Interpretability of insights can also mislead. Some insights such as [anchors](/overview/high_level.html#anchors) give +conditions for a classifiers prediction. Ideally, the set of these conditions would be small. However, when obtaining +anchors close to decision boundaries, we may get a complex set of conditions to differentiate that instance from near +members of a different class. Because this is harder to understand, one might write the model off as incorrect, while in +reality, the model performs as desired. + +# Types of Insights + +Alibi provides several local and global insights with which to explore and understand models. The following gives the +practitioner an understanding of which explainers are suitable in which situations. + +| Explainer | Scope | Model types | Task types | Data types | Use | +| -------------------------------------------------------------------------------------------- | ------ | --------------------- | -------------------------- | ---------------------------------------- | --------------------------------------------------------------------------------- | +| [Anchors](#anchors) | Local | Black-box | Classification | Tabular, Categorical, Text and Image | What set of features cannot be changed in order to ensure the current prediction? | +| [Pertinent Positives](#pertinent-positives) | Local | Black-box/White-box | Classification | Tabular, Image | "" | +| [Integrated Gradients](#integrated-gradients) | Local | White-box | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | +| [Kernel SHAP](#kernelshap) | Local | Black-box | Classification, Regression | Tabular, Categorical | "" | +| [Tree SHAP (path-dependent)](#path-dependent-treeshap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | +| [Tree SHAP (interventional)](#interventional-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | +| [Accumulated Local Effects](#accumulated-local-effects) | Global | Black-box | Classification, Regression | Tabular | How does model prediction vary with respect to features of interest | +| [Counterfactuals Instances](#counterfactuals-instances) | Local | Black-box/White-box | Classification | Tabular, Image | What minimal change to features is required to reclassify the current prediction? | +| [Contrastive Explanation Method](#contrastive-explanation-method) | Local | Black-box/White-box | Classification | Tabular, Image | "" | +| [Counterfactuals Guided by Prototypes](#counterfactuals-guided-by-prototypes) | Local | Black-box/White-box | Classification | Tabular, Categorical, Image | "" | +| [counterfactuals-with-reinforcement-learning](#counterfactuals-with-reinforcement-learning) | Local | Black-box | Classification | Tabular, Categorical, Image | "" | + +## 1. Local Necessary Features + +Given a single instance and model prediction, local necessary features are local explanations that tell us what minimal +set of features needs to stay the same so that the model still gives the same or close prediction. + +In the case of a trained image classification model, local necessary features for a given instance would be a minimal +subset of the image that the model uses to make its decision. A machine learning engineer might use this insight to see +if the model concentrates on the correct features. Local necessary features are particularly advantageous for checking +erroneous model decisions. + +The following two explainer methods are available from Alibi for generating Local Necessary Features insights. Each +approaches the idea in slightly different ways. The main difference is that anchors give a picture of the size of the +area over the dataset for which the insight applies, whereas pertinent positives do not. + +### Anchors + +| Model-types | Task-types | Data-types | +| ----------- | -------------- | ---------------------------------------- | +| Black-box | Classification | Tabular, Text, Image and Categorical | Anchors are a local blackbox method introduced in [Anchors: High-Precision Model-Agnostic Explanations]( https://homes.cs.washington.edu/~marcotcr/aaai18.pdf). -Let A be a rule (set of predicates) acting on such an interpretable representation, such that $A(x)$ returns $1$ if all its feature predicates are true. An example of such a rule, $A$, could be represented by the set $\{not, bad\}$ in which case any sentence, $s$, with both $not$ and $bad$ in it would mean $A(s)=1$. - -Given a classifier $f$, a value $\tau>0$, an instance $x$, and a data distribution $\mathcal{D}$, $A$ is an anchor for $x$ if $A(x) = 1$ and, +Let A be a rule (set of predicates) acting on such an interpretable representation, such that $A(x)$ returns $1$ if all +its feature predicates are true. An example of such a rule, $A$, could be represented by the set $\{not, bad\}$ in which +case any sentence, $s$, with both $not$ and $bad$ in it would mean $A(s)=1$. As a more specific example consider the +[wine quality dataset](https://archive.ics.uci.edu/ml/datasets/wine+quality): -$$ -E_{\mathcal{D}(z|A)}[1_{f(x)=f(z)}] \geq \tau -$$ +```{image} images/wine-quality-ds.png +:align: center +:alt: first five rows of wine quality dataset +``` -The distribution $\mathcal{D}(z|A)$ is those points from the dataset for which the anchor holds. This is like fixing some set of features of an instance and allowing all the others to vary. This condition says any point in the data distribution that satisfies the anchor $A$ is expected to match the model prediction $f(x)$ with probability $\tau$ (usually $\tau$ is chosen to be 0.95). - -Let $prec(A) = E_{\mathcal{D}(z|A)}[1_{f(x)=f(z)}]$ be the precision of an anchor. Note that the precision of an anchor is considered with respect to the set of points in the data distribution to which the anchor applies, $\mathcal{D}(z|A)$. We can consider the **coverage** of an anchor as the probability that $A(z)=1$ for any instance $z$ in the data distribution. The coverage tells us the proportion of the distribution to which the anchor applies. The aim here is to find the anchor that applies to the most extensive set of instances while satisfying $prec(A) \geq \tau$. +In which case predicates would be of the form : `'alcohol > 11.00'`. Note that the more predicates we add to an anchor +the smaller it becomes as by doing so we filter out more cases. __TODO__: -- Include picture explanation of anchors -Alibi finds anchors by building them up from the bottom up. We start with an empty anchor $A=\{\}$ and then consider the set of possible feature values from the instance of interest we can add. $\mathcal{A} = \{A \wedge a_0, A \wedge a_1, A \wedge a_2, ..., A \wedge a_n\}$. For instance, in the case of textual data, the $a_i$ might be words from the instance sentence. In the case of image data, we partition the image into super-pixels which we choose to be the $a_i$. At each stage, we will look at the set of possible next anchors that can be made by adding in a feature $a_i$ from the instance. We then compute the precision of each of the resulting anchors and choose the best. We iteratively build the anchor up like this until the required precision is met. +- Include picture explanation of anchors -As we construct the new set of anchors from the last, we need to compute the precisions of the next group to know which one to choose. We can't calculate this directly; instead, we sample from $\mathcal{D}(z|A)$ to obtain an estimate. To do this, we use several different methods for different data types. For instance, in the case of textual data, we want to generate sentences with the anchor words and ensure that they make sense within the data distribution. One option is to replace the missing words (those not in the anchor) from the instance with words with the same POS tag. This means the resulting sample will make semantic sense rather than being a random set of words. Other methods are available. In the case of images, we sample an image from the data set and then superimpose the super-pixels on top of it. +Alibi finds anchors by building them up from the bottom up. We start with an empty anchor $A=\{\}$ and then consider the +set of possible feature values from the instance of interest we can add. $\mathcal{A} = \{A \wedge a_0, A \wedge a_1, A +\wedge a_2, ..., A \wedge a_n\}$. For instance, in the case of textual data, the $a_i$ might be words from the instance +sentence. In the case of image data, we partition the image into super-pixels which we choose to be the $a_i$. At each +stage, we will look at the set of possible next anchors that can be made by adding in a feature $a_i$ from the instance. +We then compute the precision of each of the resulting anchors and choose the best. We iteratively build the anchor up +like this until the required precision is met. + +As we construct the new set of anchors from the last, we need to compute the precisions of the next group to know which +one to choose. We can't calculate this directly; instead, we sample from $\mathcal{D}(z|A)$ to obtain an estimate. To do +this, we use several different methods for different data types. For instance, in the case of textual data, we want to +generate sentences with the anchor words and ensure that they make sense within the data distribution. One option is to +replace the missing words (those not in the anchor) from the instance with words with the same POS tag. This means the +resulting sample will make semantic sense rather than being a random set of words. Other methods are available. In the +case of images, we sample an image from the data set and then superimpose the super-pixels on top of it. **Pros** + - Easy to explain as rules are simple to interpret - Is a black-box method as we just need to predict the value of an instance and don't need to access model internals - Can be parallelized and made to be much more efficient as a result - Although they apply to a local instance, the notion of coverage also gives a level of global insight **Cons** -- This algorithm is much slower for high dimensional feature spaces -- If choosing an anchor close to a decision boundary, the method may require a considerable number of samples from $\mathcal{D}(z|A)$ and $\mathcal{D}(z|A')$ to distinguish two anchors $A$ and $A'$. -- High dimensional feature spaces such as images need to be reduced. Typically, this is done by segmenting the image into superpixels. The choice of the algorithm used to obtain the superpixels has an effect on the anchor obtained. -- Practitioners need to make several choices concerning parameters and domain-specific setup. For instance, the precision threshold or the method by which we sample $\mathcal{D}(z|A)$. Fortunately, alibi provides default settings for a lot of specific data types. +- This algorithm is much slower for high dimensional feature spaces +- If choosing an anchor close to a decision boundary, the method may require a considerable number of samples from + $\mathcal{D}(z|A)$ and $\mathcal{D}(z|A')$ to distinguish two anchors $A$ and $A'$. +- High dimensional feature spaces such as images need to be reduced. Typically, this is done by segmenting the image + into superpixels. The choice of the algorithm used to obtain the superpixels has an effect on the anchor obtained. +- Practitioners need to make several choices concerning parameters and domain-specific setup. For instance, the + precision threshold or the method by which we sample $\mathcal{D}(z|A)$. Fortunately, Alibi provides default settings + for a lot of specific data types. -#### Pertinent Positives +### Pertinent Positives | Model-types | Task-types | Data-types | | ----------- | -------------- | ----------- | | Black-box | Classification | Tabular | | | | Image | - -Informally a Pertinent Positive is the subset of an instance that still obtains the same classification. These differ from anchors primarily in the fact that they aren't constructed to maximize coverage. The method to create them is also substantially different. The rough idea is to define an absence of a feature and then perturb the instance to take away as much information as possible while still retaining the original classification. +Informally a Pertinent Positive is the subset of an instance that still obtains the same classification. These differ +from anchors primarily in the fact that they aren't constructed to maximize coverage. The method to create them is also +substantially different. The rough idea is to define an absence of a feature and then perturb the instance to take away +as much information as possible while still retaining the original classification. Given an instance $x_0$ we set out to find a $\delta$ that minimizes the following loss: -$$ -L = c\cdot L_{pred}(\delta) + \beta L_{1}(\delta) + L_{2}^{2}(\delta) + \gamma \|\delta - AE(\delta)\|^{2}_{2} -$$ +$$ L = c\cdot L_{pred}(\delta) + \beta L_{1}(\delta) + L_{2}^{2}(\delta) + \gamma \|\delta - AE(\delta)\|^{2}_{2} $$ where -$$ -L_{pred}(\delta) = max\left\{ max_{i\neq t_{0}}[Pred(\delta)]_{i} - [Pred(\delta)]_{t_0}, \kappa \right\} -$$ +$$ L_{pred}(\delta) = max\left\{ max_{i\neq t_{0}}[Pred(\delta)]_{i} - [Pred(\delta)]_{t_0}, \kappa \right\} $$ -$AE$ is an optional autoencoder generated from the training data. If delta strays from the original data distribution, the autoencoder loss will increase as it will no longer reconstruct $\delta$ well. Thus, we ensure that $\delta$ remains close to the original dataset distribution. +$AE$ is an optional autoencoder generated from the training data. If delta strays from the original data distribution, +the autoencoder loss will increase as it will no longer reconstruct $\delta$ well. Thus, we ensure that $\delta$ remains +close to the original dataset distribution. -Note that $\delta$ is restrained to only take away features from the instance $x_0$. There is a slightly subtle point here: removing features from an instance requires correctly defining non-informative feature values. In the case of MNIST digits, it's reasonable to assume that the black background behind each digit represents an absence of information. Similarly, in the case of color images, you might take the median pixel value to convey no information, and moving away from this value adds information. +Note that $\delta$ is restrained to only take away features from the instance $x_0$. There is a slightly subtle point +here: removing features from an instance requires correctly defining non-informative feature values. In the case of +MNIST digits, it's reasonable to assume that the black background behind each digit represents an absence of +information. Similarly, in the case of color images, you might take the median pixel value to convey no information, and +moving away from this value adds information. -Note that we need to compute the loss gradient through the model. If we have access to the internals, we can do this directly. Otherwise, we need to use numerical differentiation at a high computational cost due to the extra model calls we need to make. +Note that we need to compute the loss gradient through the model. If we have access to the internals, we can do this +directly. Otherwise, we need to use numerical differentiation at a high computational cost due to the extra model calls +we need to make. **Pros** -- Both a black and white box method + +- Both a black and white-box method - We obtain more interpretable results using the autoencoder loss as $\delta$ will be in the data distribution **Cons** -- Finding non-informative feature values to add or take away from an instance is often not trivial, and domain knowledge is essential + +- Finding non-informative feature values to add or take away from an instance is often not trivial, and domain knowledge + is essential - Need to tune hyperparameters $\beta$ and $\gamma$ - The insight doesn't tell us anything about the coverage of the pertinent positive - If using the autoencoder loss, then we need access to the original dataset ### Local Feature Attribution -Local feature attribution asks how each feature in a given instance contributes to its prediction. In the case of an image, this would highlight those pixels that make the model provide the output it does. Note that this differs subtly from Local Necessary Features, which find the minimum subset of features required to give a prediction. Local feature attribution instead assigns a score to each feature. +Local feature attribution asks how each feature in a given instance contributes to its prediction. In the case of an +image, this would highlight those pixels that make the model provide the output it does. Note that this differs subtly +from Local Necessary Features, which find the minimum subset of features required to give a prediction. Local feature +attribution instead assigns a score to each feature. __TODO__: + - picture showing above. -A good example use of local feature attribution is to detect that a classifier trained on images is focusing on the correct features of an image to infer the class. Suppose you have a model trained to classify breeds of dogs. You want to check that it focuses on the correct features of the dog in making its prediction. Suppose you compute the feature attribution of a picture of a husky and discover that the model is only focusing on the snowy backdrop to the husky, then you know two things. All the images of huskies in your dataset overwhelmingly have snowy backdrops, and also that the model will fail to generalize. It will potentially incorrectly classify other dog breeds with snowy backdrops as huskies and fail to recognize huskies that aren't in snowy locations. +A good example use of local feature attribution is to detect that a classifier trained on images is focusing on the +correct features of an image to infer the class. Suppose you have a model trained to classify breeds of dogs. You want +to check that it focuses on the correct features of the dog in making its prediction. Suppose you compute the feature +attribution of a picture of a husky and discover that the model is only focusing on the snowy backdrop to the husky, +then you know two things. All the images of huskies in your dataset overwhelmingly have snowy backdrops, and also that +the model will fail to generalize. It will potentially incorrectly classify other dog breeds with snowy backdrops as +huskies and fail to recognize huskies that aren't in snowy locations. -Each of the following methods defines local feature attribution slightly differently. In both, however, we assign attribution values to each feature to indicate how significant those features were in making the model prediction. +Each of the following methods defines local feature attribution slightly differently. In both, however, we assign +attribution values to each feature to indicate how significant those features were in making the model prediction. -Let $f:\mathbb{R}^n \rightarrow \mathbb{R}$. $f$ might be a regression, a single component of a multi regression or a probability of a class in a classification model. If $x=(x_1,... ,x_n) \in \mathbb{R}^n$ then an attribution of the prediction at input $x$ is a vector $a=(a_1,... ,a_n) \in \mathbb{R}^n$ where $a_i$ is the contribution of $x_i$ to the prediction $f(x)$. +Let $f:\mathbb{R}^n \rightarrow \mathbb{R}$. $f$ might be a regression, a single component of a multi regression or a +probability of a class in a classification model. If $x=(x_1,... ,x_n) \in \mathbb{R}^n$ then an attribution of the +prediction at input $x$ is a vector $a=(a_1,... ,a_n) \in \mathbb{R}^n$ where $a_i$ is the contribution of $x_i$ to the +prediction $f(x)$. The attribution values should satisfy specific properties: -1. Efficiency/Completeness: The sum of attributions equals the difference between the prediction and the baseline/average. We're interested in understanding the difference each feature value makes in a prediction compared to some uninformative baseline. -2. Symmetry: If the model behaves the same after swapping two variables $x$ and $y$, then $x$ and $y$ have equal attribution. If this weren't the case, we would be biasing the attribution towards certain features over other ones. -3. Dummy/Sensitivity: If a variable does not change the output of the model, then it should have attribution 0. If this were not the case, we'd be assigning value to a feature that provides no information. -4. Additivity/Linearity: The attribution for a feature $x_i$ of a linear composition of two models $f_1$ and $f_2$ given by $c_1 f_1 + c_2 f_2$ is $c_1 a_{1, i} + c_2 a_{2, i}$ where $a_{1, i}$ and $a_{2, i}$ is the attribution for $x_1$ and $f_1$ and $f_2$ respectively. +1. Efficiency/Completeness: The sum of attributions equals the difference between the prediction and the + baseline/average. We're interested in understanding the difference each feature value makes in a prediction compared + to some uninformative baseline. +2. Symmetry: If the model behaves the same after swapping two variables $x$ and $y$, then $x$ and $y$ have equal + attribution. If this weren't the case, we would be biasing the attribution towards certain features over other ones. +3. Dummy/Sensitivity: If a variable does not change the output of the model, then it should have attribution 0. If this + were not the case, we'd be assigning value to a feature that provides no information. +4. Additivity/Linearity: The attribution for a feature $x_i$ of a linear composition of two models $f_1$ and $f_2$ given + by $c_1 f_1 + c_2 f_2$ is $c_1 a_{1, i} + c_2 a_{2, i}$ where $a_{1, i}$ and $a_{2, i}$ is the attribution for $x_1$ + and $f_1$ and $f_2$ respectively. -#### Integrated Gradients +### Integrated Gradients | Model-types | Task-types | Data-types | | ----------- | -------------- | ----------- | @@ -174,269 +309,387 @@ The attribution values should satisfy specific properties: | | | Text | | | | Categorical | +This method computes the attribution of each feature by integrating the model partial derivatives along a path from a +baseline point to the instance. Let $f$ be the model and $x$ the instance of interest. If $f:\mathbb{R}^{n} \rightarrow +\mathbb{R}^{m}$ where $m$ is the number of classes the model predicts then let $F=f_k$ where $k \in \{1,..., m\}$. If +$f$ is single-valued then $F=f$. We also need to choose a baseline value, $x'$. -This method computes the attribution of each feature by integrating the model partial derivatives along a path from a baseline point to the instance. Let $f$ be the model and $x$ the instance of interest. If $f:\mathbb{R}^{n} \rightarrow \mathbb{R}^{m}$ where $m$ is the number of classes the model predicts then let $F=f_k$ where $k \in \{1,..., m\}$. If $f$ is single-valued then $F=f$. We also need to choose a baseline value, $x'$. - -$$ -IG_i(x) = (x_i - x_i')\int_{\alpha}^{1}\frac{\partial F (x' + \alpha (x - x'))}{ \partial x_i } d \alpha -$$ +$$ IG_i(x) = (x_i - x_i')\int_{\alpha}^{1}\frac{\partial F (x' + \alpha (x - x'))}{ \partial x_i } d \alpha $$ -The above sums partial derivatives for each feature over the path between the baseline and instance of interest. In doing so, you accumulate the changes in the prediction that occur due to the changing feature value from the baseline to the instance. +The above sums partial derivatives for each feature over the path between the baseline and instance of interest. In +doing so, you accumulate the changes in the prediction that occur due to the changing feature value from the baseline to +the instance. :::{admonition} **Note 5: Choice of Baseline** -The main difficulty with this method is that as IG is very dependent on the baseline, it's essential to make sure you choose it well. The choice of baseline should capture a blank state in which the model makes essentially no prediction or assigns the probability of each class equally. A common choice for image classification is an image set to black, which works well in many cases but sometimes fails to be a good choice. For instance, a model that classifies images taken at night using an image with every pixel set to black means the attribution method will undervalue the use of dark pixels in attributing the contribution of each feature to the classification. This is due to the contribution being calculated relative to the baseline, which is already dark. +The main difficulty with this method is that as IG is very dependent on the baseline, it's essential to make sure you +choose it well. The choice of baseline should capture a blank state in which the model makes essentially no prediction +or assigns the probability of each class equally. A common choice for image classification is an image set to black, +which works well in many cases but sometimes fails to be a good choice. For instance, a model that classifies images +taken at night using an image with every pixel set to black means the attribution method will undervalue the use of dark +pixels in attributing the contribution of each feature to the classification. This is due to the contribution being +calculated relative to the baseline, which is already dark. ::: **Pros** + - Simple to understand and visualize, especially with image data - Doesn't require access to the training data **Cons** -- White box method. Requires the partial derivatives of the model outputs with respect to inputs -- Requires choosing the baseline which can have a significant effect on the outcome (See Note 5) +- white-box method. Requires the partial derivatives of the model outputs with respect to inputs +- Requires choosing the baseline which can have a significant effect on the outcome (See Note 5) -#### KernelSHAP +### KernelSHAP | Model-types | Task-types | Data-types | | ----------------- | -------------- | ----------- | | Black-box | Classification | Tabular | | | Regression | Categorical | +Kernel SHAP is a method of computing the Shapley values for a model around an instance $x_i$. Shapley values are a +game-theoretic method of assigning payout to players depending on their contribution to an overall goal. In this case, +the players are the features, and their payout is the model prediction. To compute these values, we have to consider the +marginal contribution of each feature over all the possible coalitions of feature players. -Kernel SHAP is a method of computing the Shapley values for a model around an instance $x_i$. Shapley values are a game-theoretic method of assigning payout to players depending on their contribution to an overall goal. In this case, the players are the features, and their payout is the model prediction. To compute these values, we have to consider the marginal contribution of each feature over all the possible coalitions of feature players. +Suppose we have a regression model $f$ that makes predictions based on four features $X = \{X_1, X_2, X_3, X_4\}$ as +input. A coalition is a group of features, say, the first and third features. For this coalition, its value is given by: -Suppose we have a regression model $f$ that makes predictions based on four features $X = \{X_1, X_2, X_3, X_4\}$ as input. A coalition is a group of features, say, the first and third features. For this coalition, its value is given by: - -$$ -val({1,3}) = \int_{\mathbb{R}}\int_{\mathbb{R}} f(x_1, X_2, x_3, X_4)d\mathbb{P}_{X_{2}X_{4}} - \mathbb{E}_{X}(f(X)) +$$ val({1,3}) = \int_{\mathbb{R}}\int_{\mathbb{R}} f(x_1, X_2, x_3, X_4)d\mathbb{P}_{X_{2}X_{4}} - \mathbb{E}_{X}(f(X)) $$ -Given a coalition, $S$, that doesn't include $x_i$, then the marginal contribution of $x_i$ is given by $val(S \cup x_i) - val(S)$. Intuitively this is the difference that the feature $x_i$ would contribute if it was to join that coalition. We are interested in the marginal contribution of $x_i$ over all possible coalitions with and without $x_i$. A Shapley value for the $x_i^{th}$ feature is given by the weighted sum +Given a coalition, $S$, that doesn't include $x_i$, then the marginal contribution of $x_i$ is given by $val(S \cup x_i) -$$ -\psi_j = \sum_{S\subset \{1,...,p\} \setminus \{j\}} \frac{|S|!(p - |S| - 1)!}{p!}(val(S \cup x_i) - val(S)) +- val(S)$. Intuitively this is the difference that the feature $x_i$ would contribute if it was to join that coalition. + We are interested in the marginal contribution of $x_i$ over all possible coalitions with and without $x_i$. A Shapley + value for the $x_i^{th}$ feature is given by the weighted sum + +$$ \psi_j = \sum_{S\subset \{1,...,p\} \setminus \{j\}} \frac{|S|!(p - |S| - 1)!}{p!}(val(S \cup x_i) - val(S)) $$ -The weights convey how much you can learn from a specific coalition. Large and Small coalitions mean more learned because we've isolated more of the effect. At the same time, medium size coalitions don't supply us with as much information because there are many possible such coalitions. +The weights convey how much you can learn from a specific coalition. Large and Small coalitions mean more learned +because we've isolated more of the effect. At the same time, medium size coalitions don't supply us with as much +information because there are many possible such coalitions. -The main issue with the above is that there will be many possible coalitions, $2^M$ to be precise. Hence instead of computing all of these, we use a sampling process on the space of coalitions and then estimate the Shapley values by training a linear model. Because a coalition is a set of players/features that are contributing to a prediction, we represent this as points in the space of binary codes $z' = \{z_0,...,z_m\}$ where $z_j = 1$ means that the $j^th$ feature is present in the coalition while $z_j = 0$ means it is not. To obtain the dataset on which we train this model, we first sample from this space of coalitions then compute the values of $f$ for each sample. We obtain weights for each sample using the Shapley Kernel: +The main issue with the above is that there will be many possible coalitions, $2^M$ to be precise. Hence instead of +computing all of these, we use a sampling process on the space of coalitions and then estimate the Shapley values by +training a linear model. Because a coalition is a set of players/features that are contributing to a prediction, we +represent this as points in the space of binary codes $z' = \{z_0,...,z_m\}$ where $z_j = 1$ means that the $j^th$ +feature is present in the coalition while $z_j = 0$ means it is not. To obtain the dataset on which we train this model, +we first sample from this space of coalitions then compute the values of $f$ for each sample. We obtain weights for each +sample using the Shapley Kernel: -$$ -\pi_{x}(z') = \frac{M - 1}{\frac{M}{|z'|}|z'|(M - |z'|)} -$$ +$$ \pi_{x}(z') = \frac{M - 1}{\frac{M}{|z'|}|z'|(M - |z'|)} $$ -Once we have the data points, the values of $f$ for each data point, and the sample weights, we have everything we need to train a linear model. The paper shows that the coefficients of this linear model are the Shapley values. +Once we have the data points, the values of $f$ for each data point, and the sample weights, we have everything we need +to train a linear model. The paper shows that the coefficients of this linear model are the Shapley values. -There is some nuance to how we compute the value of a model given a specific coalition, as most models aren't built to accept input with arbitrary missing values. If $D$ is the underlying distribution the samples are drawn from, then ideally, we would use the conditional expectation: +There is some nuance to how we compute the value of a model given a specific coalition, as most models aren't built to +accept input with arbitrary missing values. If $D$ is the underlying distribution the samples are drawn from, then +ideally, we would use the conditional expectation: -$$ -f(S) = \mathbb{E}_{D}[f(x)|x_S] +$$ f(S) = \mathbb{E}_{D}[f(x)|x_S] $$ -Computing this value is very difficult. Instead, we can approximate the above using the interventional conditional expectation, which is defined as: +Computing this value is very difficult. Instead, we can approximate the above using the interventional conditional +expectation, which is defined as: -$$ -f(S) = \mathbb{E}_{D}[f(x)|do(x_S)] +$$ f(S) = \mathbb{E}_{D}[f(x)|do(x_S)] $$ -The $do$ operator here fixes the values of the features in $S$ and samples the remaining $\bar{S}$ feature values from the data. A Downside of interfering in the distribution like this can mean introducing unrealistic samples if there are dependencies between the features. +The $do$ operator here fixes the values of the features in $S$ and samples the remaining $\bar{S}$ feature values from +the data. A Downside of interfering in the distribution like this can mean introducing unrealistic samples if there are +dependencies between the features. **Pros** + - The Shapley values are fairly distributed among the feature values - Shapley values can be easily interpreted and visualized - Very general as is a blackbox method **Cons** + - KernalSHAP is slow owing to the number of samples required to estimate the Shapley values accurately - The interventional conditional probability introduces unrealistic data points - Requires access to the training dataset - -#### TreeSHAP +### TreeSHAP | Model-types | Task-types | Data-types | | ------------ | -------------- | ----------- | | Tree-based | Classification | Tabular | | | Regression | Categorical | +In the case of tree-based models, we can obtain a speed-up by exploiting the structure of trees. Alibi exposes two +white-box methods, Interventional and Path dependent feature perturbation. The main difference is that the +path-dependent method approximates the interventional conditional expectation, whereas the interventional method +calculates it directly. -In the case of tree-based models, we can obtain a speed-up by exploiting the structure of trees. Alibi exposes two white-box methods, Interventional and Path dependent feature perturbation. The main difference is that the path-dependent method approximates the interventional conditional expectation, whereas the interventional method calculates it directly. - -#### Path Dependent TreeSHAP +### Path Dependent TreeSHAP -Given a coalition, we want to approximate the interventional conditional expectation. We apply the tree to the features present in the coalition like we usually would, with the only difference being when a feature is missing from the coalition. In this case, we take both routes down the tree, weighting each by the proportion of samples from the training dataset that go each way. For this algorithm to work, we need the tree to record how it splits the training dataset. We don't need the dataset itself, however, unlike the interventional TreeSHAP algorithm. +Given a coalition, we want to approximate the interventional conditional expectation. We apply the tree to the features +present in the coalition like we usually would, with the only difference being when a feature is missing from the +coalition. In this case, we take both routes down the tree, weighting each by the proportion of samples from the +training dataset that go each way. For this algorithm to work, we need the tree to record how it splits the training +dataset. We don't need the dataset itself, however, unlike the interventional TreeSHAP algorithm. -Doing this for each possible set $S$ involves $O(TL2^M)$ time complexity. We can significantly improve the algorithm to polynomial-time by computing the path of all sets simultaneously. The intuition here is to imagine standing at the first node and counting the number of subsets that will go one way, the number that will go the other, and the number that will go both (in the case of missing features). Because we assign different sized subsets different weights, we also need to distinguish the above numbers passing into each tree branch by their size. Finally, we also need to keep track of the proportion of sets of each size in each branch that contains a feature $i$ and the proportion that don't. Once all these sets have flowed down to the leaves of the tree, then we can compute the Shapley values. Doing this gives us $O(TLD^2)$ time complexity. +Doing this for each possible set $S$ involves $O(TL2^M)$ time complexity. We can significantly improve the algorithm to +polynomial-time by computing the path of all sets simultaneously. The intuition here is to imagine standing at the first +node and counting the number of subsets that will go one way, the number that will go the other, and the number that +will go both (in the case of missing features). Because we assign different sized subsets different weights, we also +need to distinguish the above numbers passing into each tree branch by their size. Finally, we also need to keep track +of the proportion of sets of each size in each branch that contains a feature $i$ and the proportion that don't. Once +all these sets have flowed down to the leaves of the tree, then we can compute the Shapley values. Doing this gives us +$O(TLD^2)$ time complexity. **Pros** + - Very fast for a valuable category of models - Doesn't require access to the training data - The Shapley values are fairly distributed among the feature values - Shapley values can be easily interpreted and visualized **Cons** + - Only applies to Tree-based models - Uses an approximation of the interventional conditional expectation instead of computing it directly -#### Interventional Tree SHAP - -The interventional TreeSHAP method takes a different approach. Suppose we sample a reference data point, $r$, from the training dataset. Let $F$ be the set of all features. For each feature, $i$, we then enumerate over all subsets of $S\subset F \setminus \{i\}$. If a subset is missing a feature, we replace it with the corresponding one in the reference sample. We can then compute $f(S)$ directly for each coalition $S$ to get the Shapley values. One major difference here is combining each $S$ and $r$ to generate a data point. Enforcing independence of the $S$ and $F\setminus S$ in this way is known as intervening in the underlying data distribution and is where the algorithm's name comes from. Note that this breaks any independence between features in the dataset, which means the data points we're sampling won't be realistic. - -For a single Tree and sample $r$ if we iterate over all the subsets of $S \subset F \setminus \{i\}$, the interventional TreeSHAP method runs with $O(M2^M)$. Note that there are two paths through the tree of particular interest. The first is the instance path for $x$, and the second is the sampled/reference path for $r$. Computing the Shapley value estimate for the sampled $r$ will involve replacing $x$ with values of $r$ and generating a set of perturbed paths. Instead of iterating over the sets, we sum over the paths. Doing so is faster as many of the routes within the tree have overlapping components. We can compute them all at the same time instead of one by one. Doing this means the Interventional TreeSHAP algorithm obtains $O(LD)$ time complexity. - -Applied to a random forest with $T$ trees and using $R$ samples to compute the estimates, we obtain $O(TRLD)$ time complexity. The fact that we can sum over each tree in the random forest results from the linearity property of Shapley values. +### Interventional Tree SHAP + +The interventional TreeSHAP method takes a different approach. Suppose we sample a reference data point, $r$, from the +training dataset. Let $F$ be the set of all features. For each feature, $i$, we then enumerate over all subsets of +$S\subset F \setminus \{i\}$. If a subset is missing a feature, we replace it with the corresponding one in the +reference sample. We can then compute $f(S)$ directly for each coalition $S$ to get the Shapley values. One major +difference here is combining each $S$ and $r$ to generate a data point. Enforcing independence of the $S$ and +$F\setminus S$ in this way is known as intervening in the underlying data distribution and is where the algorithm's name +comes from. Note that this breaks any independence between features in the dataset, which means the data points we're +sampling won't be realistic. + +For a single Tree and sample $r$ if we iterate over all the subsets of $S \subset F \setminus \{i\}$, the interventional +TreeSHAP method runs with $O(M2^M)$. Note that there are two paths through the tree of particular interest. The first is +the instance path for $x$, and the second is the sampled/reference path for $r$. Computing the Shapley value estimate +for the sampled $r$ will involve replacing $x$ with values of $r$ and generating a set of perturbed paths. Instead of +iterating over the sets, we sum over the paths. Doing so is faster as many of the routes within the tree have +overlapping components. We can compute them all at the same time instead of one by one. Doing this means the +Interventional TreeSHAP algorithm obtains $O(LD)$ time complexity. + +Applied to a random forest with $T$ trees and using $R$ samples to compute the estimates, we obtain $O(TRLD)$ time +complexity. The fact that we can sum over each tree in the random forest results from the linearity property of Shapley +values. **Pros** + - Very fast for a valuable category of models - The Shapley values are fairly distributed among the feature values - Shapley values can be easily interpreted and visualized - Computes the interventional conditional expectation exactly unlike the path-dependent method **Cons** -- Less general as a white box method + +- Less general as a white-box method - Requires access to the dataset - Typically, slower than the path-dependent method ### Global Feature Attribution -Global Feature Attribution methods aim to show the dependency of model output on a subset of the input features. They are a global insight as it describes the behavior of the model over the entire input space. For instance, Accumulated Local Effects plots obtain graphs that directly visualize the relationship between feature and prediction. +Global Feature Attribution methods aim to show the dependency of model output on a subset of the input features. They +are a global insight as it describes the behavior of the model over the entire input space. For instance, Accumulated +Local Effects plots obtain graphs that directly visualize the relationship between feature and prediction. -Suppose a trained regression model that predicts the number of bikes rented on a given day depending on the temperature, humidity, and wind speed. A global feature attribution plot for the temperature feature might be a line graph plotted against the number of bikes rented. In the bikes rented case, one would anticipate an increase in rentals up until a specific temperature and then a decrease after it gets too hot. +Suppose a trained regression model that predicts the number of bikes rented on a given day depending on the temperature, +humidity, and wind speed. A global feature attribution plot for the temperature feature might be a line graph plotted +against the number of bikes rented. In the bikes rented case, one would anticipate an increase in rentals up until a +specific temperature and then a decrease after it gets too hot. -#### Accumulated Local Effects +### Accumulated Local Effects | Model-types | Task-types | Data-types | | ----------- | -------------- | ----------- | | Black-box | Classification | Tabular | | | Regression | | +Alibi only provides accumulated local effects plots because of the available global feature attribution methods they +give the most accurate insight. Alternatives include Partial Dependence Plots. ALE plots work by averaging the local +changes in a prediction at every instance in the data distribution. They then accumulate these differences to obtain a +plot of prediction over the selected feature dependencies. -Alibi only provides accumulated local effects plots because of the available global feature attribution methods they give the most accurate insight. Alternatives include Partial Dependence Plots. ALE plots work by averaging the local changes in a prediction at every instance in the data distribution. They then accumulate these differences to obtain a plot of prediction over the selected feature dependencies. +Suppose we have a model $f$ and features $X=\{x_1,... x_n\}$. Given a subset of the features $X_S$, we denote $X_C=X +\setminus X_S$. We want to obtain the ALE-plot for the features $X_S$, typically chosen to be at most a set of dimension +two to be visualized easily. For simplicity assume we have $X=\{x_1, x_2\}$ and let $X_S=\{x_1\}$ so $X_C=\{x_2\}$. The +ALE of $x_1$ is defined by: -Suppose we have a model $f$ and features $X=\{x_1,... x_n\}$. Given a subset of the features $X_S$, we denote $X_C=X \setminus X_S$. We want to obtain the ALE-plot for the features $X_S$, typically chosen to be at most a set of dimension two to be visualized easily. For simplicity assume we have $X=\{x_1, x_2\}$ and let $X_S=\{x_1\}$ so $X_C=\{x_2\}$. The ALE of $x_1$ is defined by: +$$ \hat{f}_{S, ALE}(x_1) = \int_{min(x_1)}^{x_1}\mathbb{E}\left[ +\frac{\partial f(X_1, X_2)}{\partial X_1} | X_1 = z_1 \right]dz_1 - c_1 $$ -$$ -\hat{f}_{S, ALE}(x_1) = -\int_{min(x_1)}^{x_1}\mathbb{E}\left[ -\frac{\partial f(X_1, X_2)}{\partial X_1} | X_1 = z_1 -\right]dz_1 - c_1 -$$ - -The term within the integral computes the expectation of the model derivative in $x_1$ over the random variable $X_2$ conditional on $X_1=z_1$. By taking the expectation for $X_2$, we factor out its dependency. So now we know how the prediction $f$ changes local to a point $X_1=z_1$ independent of $X_2$. Integrating these changes over $x_1$ from a minimum value to the value of interest, we obtain the global plot of how the model depends on $x_1$. ALE-plots get their names as they accumulate (integrate) the local effects (the expected partial derivatives). Note that here we have assumed $f$ is differentiable. In practice, however, we compute the various quantities above numerically, so this isn't a requirement. +The term within the integral computes the expectation of the model derivative in $x_1$ over the random variable $X_2$ +conditional on $X_1=z_1$. By taking the expectation for $X_2$, we factor out its dependency. So now we know how the +prediction $f$ changes local to a point $X_1=z_1$ independent of $X_2$. Integrating these changes over $x_1$ from a +minimum value to the value of interest, we obtain the global plot of how the model depends on $x_1$. ALE-plots get their +names as they accumulate (integrate) the local effects (the expected partial derivatives). Note that here we have +assumed $f$ is differentiable. In practice, however, we compute the various quantities above numerically, so this isn't +a requirement. __TODO__: + - Add picture explaining the above idea. For more details on accumulated local effects including a discussion on PDP-plots and M-plots see [Motivation-and-definition for ALE](../methods/ALE.ipynb#Motivation-and-definition) :::{admonition} **Note 4: Categorical Variables and ALE** -Note that because ALE plots require computing differences between variables, they don't naturally extend to categorical data unless there is a sensible ordering on the data. As an example, consider the months of the year. To be clear, this is only an issue if the variable you are taking the ALE for is categorical. +Note that because ALE plots require computing differences between variables, they don't naturally extend to categorical +data unless there is a sensible ordering on the data. As an example, consider the months of the year. To be clear, this +is only an issue if the variable you are taking the ALE for is categorical. ::: **Pros**: + - ALE-plots are easy to visualize and understand intuitively -- Very general as it is a black box algorithm +- Very general as it is a black-box algorithm - Doesn't struggle with dependencies in the underlying features, unlike PDP plots - ALE plots are fast **Cons**: + - Harder to explain the underlying motivation behind the method than PDP plots or M plots. - Requires access to the training dataset. - Unlike PDP plots, ALE plots do not work with Categorical data -### Counter Factuals: +### Counter Factuals -Given an instance of the dataset and a prediction given by a model, a question naturally arises how would the instance minimally have to change for a different prediction to be provided. Counterfactuals are local explanations as they relate to a single instance and model prediction. +Given an instance of the dataset and a prediction given by a model, a question naturally arises how would the instance +minimally have to change for a different prediction to be provided. Counterfactuals are local explanations as they +relate to a single instance and model prediction. -Given a classification model trained on the MNIST dataset and a sample from the dataset with a given prediction, a counterfactual would be a generated image that closely resembles the original but is changed enough that the model correctly classifies it as a different number. +Given a classification model trained on the MNIST dataset and a sample from the dataset with a given prediction, a +counterfactual would be a generated image that closely resembles the original but is changed enough that the model +correctly classifies it as a different number. __TODO__: + - Give example image to illustrate -Similarly, given tabular data that a model uses to make financial decisions about a customer, a counterfactual would explain how to change their behavior to obtain a different conclusion. Alternatively, it may tell the Machine Learning Engineer that the model is drawing incorrect assumptions if the recommended changes involve features that are irrelevant to the given decision. +Similarly, given tabular data that a model uses to make financial decisions about a customer, a counterfactual would +explain how to change their behavior to obtain a different conclusion. Alternatively, it may tell the Machine Learning +Engineer that the model is drawing incorrect assumptions if the recommended changes involve features that are irrelevant +to the given decision. A counterfactual, $x_{cf}$, needs to satisfy - The model prediction on $x_{cf}$ needs to be close to the predefined output. - The counterfactual $x_{cf}$ should be interpretable. -The first requirement is easy enough to satisfy. The second, however, requires some idea of what interpretable means. Intuitively it would require that the counterfactual construction makes sense as an instance of the dataset. Each of the methods available in alibi deals with interpretability slightly differently. All of them require that the perturbation $\delta$ that changes the original instance $x_0$ into $x_{cf} = x_0 + \delta$ should be sparse. Meaning, we prefer solutions that change a small subset of the features to construct $x_{cf}$. Requiring this limits the complexity of the solution making it more understandable. +The first requirement is easy enough to satisfy. The second, however, requires some idea of what interpretable means. +Intuitively it would require that the counterfactual construction makes sense as an instance of the dataset. Each of the +methods available in Alibi deals with interpretability slightly differently. All of them require that the perturbation +$\delta$ that changes the original instance $x_0$ into $x_{cf} = x_0 + \delta$ should be sparse. Meaning, we prefer +solutions that change a small subset of the features to construct $x_{cf}$. Requiring this limits the complexity of the +solution making it more understandable. :::{admonition} **Note 3: fit and explain method runtime differences** -Alibi explainers expose two methods, `fit` and `explain`. Typically, in machine learning, the method that takes the most time is the fit method, as that's where the model optimization conventionally takes place. In explainability, the explain step often requires the bulk of computation. However, this isn't always the case. - -Among the explainers in this section, there are two approaches taken. The first fits a counterfactual when the user requests the insight. This happens during the `.explain()` method call on the explainer class. This is done by running gradient descent on model inputs to find a counterfactual. The methods that take this approach are counterfactual instances, contrastive explanation, and counterfactuals guided by prototypes methods. Thus, the `fit` method in these cases are quick, but the `explain` method is slow. - -The other approach, however, uses reinforcement learning to train a model that produces explanations on demand. The training takes place during the `fit` method call, so this has a long runtime while the `explain` method is quick. If you want performant explanations in production environments, then the latter approach is preferable. +Alibi explainers expose two methods, `fit` and `explain`. Typically, in machine learning, the method that takes the most +time is the fit method, as that's where the model optimization conventionally takes place. In explainability, the +explain step often requires the bulk of computation. However, this isn't always the case. + +Among the explainers in this section, there are two approaches taken. The first fits a counterfactual when the user +requests the insight. This happens during the `.explain()` method call on the explainer class. This is done by running +gradient descent on model inputs to find a counterfactual. The methods that take this approach are counterfactual +instances, contrastive explanation, and counterfactuals guided by prototypes methods. Thus, the `fit` method in these +cases are quick, but the `explain` method is slow. + +The other approach, however, uses reinforcement learning to train a model that produces explanations on demand. The +training takes place during the `fit` method call, so this has a long runtime while the `explain` method is quick. If +you want performant explanations in production environments, then the latter approach is preferable. ::: __TODO__: + - schematic image explaining search for counterfactual as determined by loss - schematic image explaining difference between different approaches. -#### Counterfactuals Instances +### Counterfactuals Instances | Model-types | Task-types | Data-types | | ----------- | -------------- | ----------- | | TF/Kera | Classification | Tabular | | Black-box | | Image | -Let the model be given by $f$, and let $p_t$ be the target probability of class $t$. Let $0<\lambda<1$ be a hyperparameter. This method constructs counterfactual instances from an instance $X$ by running gradient descent on a new instance $X'$ to minimize the following loss. +Let the model be given by $f$, and let $p_t$ be the target probability of class $t$. Let $0<\lambda<1$ be a +hyperparameter. This method constructs counterfactual instances from an instance $X$ by running gradient descent on a +new instance $X'$ to minimize the following loss. $$L(X', X)= (f_{t}(X') - p_{t})^2 + \lambda L_{1}(X', X)$$ -The first term pushes the constructed counterfactual towards the desired class, and the use of the $L_{1}$ norm encourages sparse solutions. +The first term pushes the constructed counterfactual towards the desired class, and the use of the $L_{1}$ norm +encourages sparse solutions. -This method requires computing gradients of the loss in the model inputs. If we have access to the model and the gradients are available, this can be done directly. If not, we can use numerical gradients, although this comes at a considerable performance cost. +This method requires computing gradients of the loss in the model inputs. If we have access to the model and the +gradients are available, this can be done directly. If not, we can use numerical gradients, although this comes at a +considerable performance cost. -A problem arises here in that encouraging sparse solutions doesn't necessarily generate interpretable counterfactuals. This happens because the loss doesn't prevent the counterfactual solution from moving off the data distribution. Thus, you will likely get an answer that doesn't look like something that you'd expect to see from the data. +A problem arises here in that encouraging sparse solutions doesn't necessarily generate interpretable counterfactuals. +This happens because the loss doesn't prevent the counterfactual solution from moving off the data distribution. Thus, +you will likely get an answer that doesn't look like something that you'd expect to see from the data. __TODO:__ + - Picture example. Something similar to: https://github.com/interpretml/DiCE **Pros** -- Both a black and white box method + +- Both a black and white-box method - Doesn't require access to the training dataset **Cons** + - Not likely to give human interpretable instances - Requires configuration in the choice of $\lambda$ - -#### Contrastive Explanation Method +### Contrastive Explanation Method | Model-types | Task-types | Data-types | | ----------- | -------------- | ----------- | | TF/Kera | Classification | Tabular | | Black-box | | Image | +CEM follows a similar approach to the above but includes three new details. Firstly an elastic net $\beta L_{1} + L_{2}$ +regularizer term is added to the loss. This term causes the solutions to be both close to the original instance and +sparse. -CEM follows a similar approach to the above but includes three new details. Firstly an elastic net $\beta L_{1} + L_{2}$ regularizer term is added to the loss. This term causes the solutions to be both close to the original instance and sparse. +Secondly, we require that $\delta$ only adds new features rather than takes them away. We need to define what it means +for a feature to be present so that the perturbation only works to add and not remove them. In the case of the MNIST +dataset, an obvious choice of "present" feature is if the pixel is equal to 1 and absent if it is equal to 0. This is +simple in the case of the MNIST data set but more difficult in complex domains such as color images. -Secondly, we require that $\delta$ only adds new features rather than takes them away. We need to define what it means for a feature to be present so that the perturbation only works to add and not remove them. In the case of the MNIST dataset, an obvious choice of "present" feature is if the pixel is equal to 1 and absent if it is equal to 0. This is simple in the case of the MNIST data set but more difficult in complex domains such as color images. - -Thirdly, by training an optional autoencoder to penalize counter factual instances that deviate from the data distribution. This works by minimizing the reconstruction loss of the autoencoder applied to instances. If a generated instance is unlike anything in the dataset, the autoencoder will struggle to recreate it well, and its loss term will be high. We require two hyperparameters $\beta$ and $\gamma$ to define the following Loss, +Thirdly, by training an optional autoencoder to penalize counter factual instances that deviate from the data +distribution. This works by minimizing the reconstruction loss of the autoencoder applied to instances. If a generated +instance is unlike anything in the dataset, the autoencoder will struggle to recreate it well, and its loss term will be +high. We require two hyperparameters $\beta$ and $\gamma$ to define the following Loss, $$L(X'|X)= (f_{t}(X') - p_{t})^2 + \beta L_{1}(X', X) + L_{2}(X', X)^2 + \gamma L_{2} (X', AE(X'))^2$$ -This approach extends the definition of interpretable to include a requirement that the computed counterfactual be believably a member of the dataset. It turns out that minimizing this loss isn't enough to always get interpretable results. And in particular, the constructed counterfactual often doesn't look like a member of the target class. +This approach extends the definition of interpretable to include a requirement that the computed counterfactual be +believably a member of the dataset. It turns out that minimizing this loss isn't enough to always get interpretable +results. And in particular, the constructed counterfactual often doesn't look like a member of the target class. -Similar to the previous method, this method can apply to both black and white box models. In the black-box case, there is still a performance cost from computing the numerical gradients. +Similar to the previous method, this method can apply to both black and white-box models. In the black-box case, there +is still a performance cost from computing the numerical gradients. __TODO:__ + - Picture example of results including less interpretable ones. **Pros** + - Provides more interpretable instances than the counterfactual instances' method. **Cons** + - Requires access to the dataset to train the autoencoder - Requires setup and configuration in choosing $\gamma$ and $\beta$ and training the autoencoder - Requires domain knowledge when choosing what it means for a feature to be present or not -#### Counterfactuals Guided by Prototypes +### Counterfactuals Guided by Prototypes | Model-types | Task-types | Data-types | | ----------- | -------------- | ----------- | @@ -444,65 +697,86 @@ __TODO:__ | Black-box | | Image | | | | Categorical | - -- Black/white box method +- Black/white-box method - Classification models - Tabular, image and categorical data types -For this method, we add another term to the loss that optimizes for the distance between the counterfactual instance and close members of the target class. In doing this, we require interpretability also to mean that the generated counterfactual is believably a member target class and not just in the data distribution. +For this method, we add another term to the loss that optimizes for the distance between the counterfactual instance and +close members of the target class. In doing this, we require interpretability also to mean that the generated +counterfactual is believably a member target class and not just in the data distribution. With hyperparameters $c$, $\gamma$ and $\beta$, the loss is now given by: -$$ -L(X'|X)= c(f_{t}(X') - p_{t})^2 + \beta L_{1}(X', X) + L_{2}(X', X)^2 + \gamma L_{2} (X', AE(X'))^2 + -L_{2}(X', X_{proto}) +$$ L(X'|X)= c(f_{t}(X') - p_{t})^2 + \beta L_{1}(X', X) + L_{2}(X', X)^2 + \gamma L_{2} (X', AE(X'))^2 + L_{2}(X', X_ +{proto}) $$ __TODO:__ + - Picture example of results. -This method produces much more interpretable results. As well as this, because the proto term pushes the solution towards the target class, we can remove the prediction loss term and still obtain a viable counterfactual. This doesn't make much difference if we can compute the gradients directly from the model. If not, and we are using numerical gradients, then the $L_{pred}$ term is a significant bottleneck owing to repeated calls on the model to approximate the gradients. Thus, this method also applies to black-box models with a substantial performance gain on the previously mentioned approaches. +This method produces much more interpretable results. As well as this, because the proto term pushes the solution +towards the target class, we can remove the prediction loss term and still obtain a viable counterfactual. This doesn't +make much difference if we can compute the gradients directly from the model. If not, and we are using numerical +gradients, then the $L_{pred}$ term is a significant bottleneck owing to repeated calls on the model to approximate the +gradients. Thus, this method also applies to black-box models with a substantial performance gain on the previously +mentioned approaches. **Pros** + - Generates more interpretable instances that the CEM method - Blackbox version of the method doesn't require computing the numerical gradients - Applies to more data-types **Cons** + - Requires access to the dataset to train the auto encoder or k-d tree - Requires setup and configuration in choosing $\gamma$, $\beta$ and $c$ -#### Counterfactuals with Reinforcement Learning +### Counterfactuals with Reinforcement Learning | Model-types | Task-types | Data-types | | ----------- | -------------- | ----------- | -| Black Box | Classification | Tabular | +| Black-box | Classification | Tabular | | | | Image | | | | Categorical | - -This black box method splits from the approach taken by the above three significantly. Instead of minimizing a loss during the explain method call, it trains a new model when fitting the explainer called an actor that takes instances and produces counterfactuals. It does this using reinforcement learning. In reinforcement learning, an actor model takes some state as input and generates actions; in our case, the actor takes an instance with a target classification and attempts to produce an member of the target class. Outcomes of actions are assigned rewards dependent on a reward function designed to encourage specific behaviors. In our case, we reward correctly classified counterfactuals generated by the actor. As well as this, we reward counterfactuals that are close to the data distribution as modeled by an autoencoder. Finally, we require that they are sparse perturbations of the original instance. The reinforcement training step pushes the actor to take high reward actions. CFRL is a black-box method as the process by which we update the actor to maximize the reward only requires estimating the reward via sampling the counterfactuals. - -As well as this, CFRL actors can be trained to ensure that certain constraints can be taken into account when generating counterfactuals. This is highly desirable as a use case for counterfactuals is to suggest the necessary changes to an instance to obtain a different classification. In some cases, you want these changes to be constrained, for instance, when dealing with immutable characteristics. In other words, if you are using the counterfactual to advise changes in behavior, you want to ensure the changes are enactable. Suggesting that someone needs to be two years younger to apply for a loan isn't very helpful. - -The training process requires randomly sampling data instances, along with constraints and target classifications. We can then compute the reward and update the actor to maximize it. We do this without needing access to the model internals; we only need to obtain a prediction in each case. The end product is a model that can generate interpretable counterfactual instances at runtime with arbitrary constraints. +This black-box method splits from the approach taken by the above three significantly. Instead of minimizing a loss +during the explain method call, it trains a new model when fitting the explainer called an actor that takes instances +and produces counterfactuals. It does this using reinforcement learning. In reinforcement learning, an actor model takes +some state as input and generates actions; in our case, the actor takes an instance with a target classification and +attempts to produce an member of the target class. Outcomes of actions are assigned rewards dependent on a reward +function designed to encourage specific behaviors. In our case, we reward correctly classified counterfactuals generated +by the actor. As well as this, we reward counterfactuals that are close to the data distribution as modeled by an +autoencoder. Finally, we require that they are sparse perturbations of the original instance. The reinforcement training +step pushes the actor to take high reward actions. CFRL is a black-box method as the process by which we update the +actor to maximize the reward only requires estimating the reward via sampling the counterfactuals. + +As well as this, CFRL actors can be trained to ensure that certain constraints can be taken into account when generating +counterfactuals. This is highly desirable as a use case for counterfactuals is to suggest the necessary changes to an +instance to obtain a different classification. In some cases, you want these changes to be constrained, for instance, +when dealing with immutable characteristics. In other words, if you are using the counterfactual to advise changes in +behavior, you want to ensure the changes are enactable. Suggesting that someone needs to be two years younger to apply +for a loan isn't very helpful. + +The training process requires randomly sampling data instances, along with constraints and target classifications. We +can then compute the reward and update the actor to maximize it. We do this without needing access to the model +internals; we only need to obtain a prediction in each case. The end product is a model that can generate interpretable +counterfactual instances at runtime with arbitrary constraints. __TODO__: + - Example images **Pros** + - Generates more interpretable instances that the CEM method - Very fast at runtime - Can be trained to account for arbitrary constraints -- General as is a Black box algorithm +- General as is a black-box algorithm **Cons** + - Longer to fit the model - Requires to fit an autoencoder - Requires access to the training dataset - - -##### Example: - -__TODO__: -- Give example that applies to all the explainer methods. diff --git a/doc/source/overview/images/exp-aug.png b/doc/source/overview/images/exp-aug.png new file mode 100644 index 0000000000000000000000000000000000000000..6df89370c648b2b25eb23f2561f7b0ccf1800695 GIT binary patch literal 32103 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
  • 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 literal 0 HcmV?d00001 diff --git a/doc/source/overview/images/local-global.png b/doc/source/overview/images/local-global.png new file mode 100644 index 0000000000000000000000000000000000000000..55c327f1ebe81a3e7069a6c24feda1f544193d14 GIT binary patch literal 30633 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 I6W8GX1F%VGqyPW_ literal 0 HcmV?d00001 diff --git a/doc/source/overview/images/wine-quality-ds.png b/doc/source/overview/images/wine-quality-ds.png new file mode 100644 index 0000000000000000000000000000000000000000..779b10bd51ce89e4a1cc600d3eee3a9c0de57a63 GIT binary patch literal 32164 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 tAb\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    fixed acidityvolatile aciditycitric acidresidual sugarchloridesfree sulfur dioxidetotal sulfur dioxidedensitypHsulphatesalcoholclass
    07.40.7000.001.90.07611.034.00.997803.510.569.4bad
    17.80.8800.002.60.09825.067.00.996803.200.689.8bad
    27.80.7600.042.30.09215.054.00.997003.260.659.8bad
    311.20.2800.561.90.07517.060.00.998003.160.589.8good
    47.40.7000.001.90.07611.034.00.997803.510.569.4bad
    .......................................
    15946.20.6000.082.00.09032.044.00.994903.450.5810.5bad
    15955.90.5500.102.20.06239.051.00.995123.520.7611.2good
    15966.30.5100.132.30.07629.040.00.995743.420.7511.0good
    15975.90.6450.122.00.07532.044.00.995473.570.7110.2bad
    15986.00.3100.473.60.06718.042.00.995493.390.6611.0good
    \n", + "

    1599 rows × 12 columns

    \n", + "" + ], + "text/plain": [ + " fixed acidity volatile acidity citric acid residual sugar chlorides \\\n", + "0 7.4 0.700 0.00 1.9 0.076 \n", + "1 7.8 0.880 0.00 2.6 0.098 \n", + "2 7.8 0.760 0.04 2.3 0.092 \n", + "3 11.2 0.280 0.56 1.9 0.075 \n", + "4 7.4 0.700 0.00 1.9 0.076 \n", + "... ... ... ... ... ... \n", + "1594 6.2 0.600 0.08 2.0 0.090 \n", + "1595 5.9 0.550 0.10 2.2 0.062 \n", + "1596 6.3 0.510 0.13 2.3 0.076 \n", + "1597 5.9 0.645 0.12 2.0 0.075 \n", + "1598 6.0 0.310 0.47 3.6 0.067 \n", + "\n", + " free sulfur dioxide total sulfur dioxide density pH sulphates \\\n", + "0 11.0 34.0 0.99780 3.51 0.56 \n", + "1 25.0 67.0 0.99680 3.20 0.68 \n", + "2 15.0 54.0 0.99700 3.26 0.65 \n", + "3 17.0 60.0 0.99800 3.16 0.58 \n", + "4 11.0 34.0 0.99780 3.51 0.56 \n", + "... ... ... ... ... ... \n", + "1594 32.0 44.0 0.99490 3.45 0.58 \n", + "1595 39.0 51.0 0.99512 3.52 0.76 \n", + "1596 29.0 40.0 0.99574 3.42 0.75 \n", + "1597 32.0 44.0 0.99547 3.57 0.71 \n", + "1598 18.0 42.0 0.99549 3.39 0.66 \n", + "\n", + " alcohol class \n", + "0 9.4 bad \n", + "1 9.8 bad \n", + "2 9.8 bad \n", + "3 9.8 good \n", + "4 9.4 bad \n", + "... ... ... \n", + "1594 10.5 bad \n", + "1595 11.2 good \n", + "1596 11.0 good \n", + "1597 10.2 bad \n", + "1598 11.0 good \n", + "\n", + "[1599 rows x 12 columns]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[features + ['class']]" + ] + }, { "cell_type": "markdown", "id": "3a3ff7b6-50c7-4e8c-9436-188cefba608d", @@ -362,7 +626,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 38, "id": "533c5164-60f2-46e4-9154-381655854aa4", "metadata": {}, "outputs": [], @@ -429,7 +693,8 @@ "metadata": {}, "source": [ "## Integrated Gradients\n", - "\n" + "\n", + "We illustrate the apllication of integrated to the instance of interest" ] }, { @@ -697,14 +962,14 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 42, "id": "0e36d1c9-49e1-4da8-9bc8-da312e2b31b2", "metadata": {}, "outputs": [], "source": [ "from alibi.explainers import AnchorTabular\n", "\n", - "predict_fn = lambda x: model(scaler.transform(x))\n", + "predict_fn = lambda x: model.predict(scaler.transform(x))\n", "explainer = AnchorTabular(predict_fn, features)\n", "explainer.fit(X_train, disc_perc=(25, 50, 75))\n", "result = explainer.explain(scaler.inverse_transform(x), threshold=0.95)" @@ -712,7 +977,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 43, "id": "3b3722d3-f837-4343-a2de-c7f4d4849223", "metadata": {}, "outputs": [ @@ -721,7 +986,7 @@ "output_type": "stream", "text": [ "Anchor = ['alcohol > 11.00', 'sulphates > 0.73']\n", - "Precision = 0.9935483870967742\n", + "Precision = 0.9931506849315068\n", "Coverage = 0.0817347789824854\n" ] } @@ -991,26 +1256,10 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 64, "id": "80adef85-5100-489f-a5d6-888e9e932677", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING:tensorflow:From /home/alex/Development/alibi-explain/alibi/explainers/counterfactual.py:169: The name tf.keras.backend.get_session is deprecated. Please use tf.compat.v1.keras.backend.get_session instead.\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "`Model.state_updates` will be removed in a future version. This property should not be used in TensorFlow 2.0, as `updates` are applied automatically.\n" - ] - } - ], + "outputs": [], "source": [ "from alibi.explainers import Counterfactual\n", "\n", @@ -1040,7 +1289,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 65, "id": "56a4399b-659c-4d60-bd2c-e3c6ca259f28", "metadata": {}, "outputs": [ @@ -1048,22 +1297,22 @@ "name": "stdout", "output_type": "stream", "text": [ - "fixed acidity instance: 7.8 counter factual: 7.8 difference: 0.0 \n", - "volatile acidity instance: 0.62 counter factual: 0.594 difference: 0.0259061\n", - "citric acid instance: 0.05 counter factual: 0.05 difference: 0.0 \n", - "residual sugar instance: 2.3 counter factual: 2.3 difference: 0.0 \n", - "chlorides instance: 0.079 counter factual: 0.079 difference: 0.0 \n", - "free sulfur dioxide instance: 6.0 counter factual: 6.0 difference: 0.0 \n", - "total sulfur dioxide instance: 18.0 counter factual: 18.0 difference: 0.0 \n", - "density instance: 0.997 counter factual: 0.997 difference: 0.0 \n", - "pH instance: 3.29 counter factual: 3.29 difference: 0.0 \n", - "sulphates instance: 0.63 counter factual: 0.704 difference: -0.0743216\n", - "alcohol instance: 9.3 counter factual: 9.3 difference: 0.0 \n" + "fixed acidity instance: 7.8 counter factual: 7.84 difference: -0.0397391\n", + "volatile acidity instance: 0.62 counter factual: 0.618 difference: 0.0020646\n", + "citric acid instance: 0.05 counter factual: 0.049 difference: 0.0005868\n", + "residual sugar instance: 2.3 counter factual: 2.273 difference: 0.0272591\n", + "chlorides instance: 0.079 counter factual: 0.079 difference: -2.49e-05\n", + "free sulfur dioxide instance: 6.0 counter factual: 6.027 difference: -0.0270853\n", + "total sulfur dioxide instance: 18.0 counter factual: 17.292 difference: 0.708271\n", + "density instance: 0.997 counter factual: 0.997 difference: -1.56e-05\n", + "pH instance: 3.29 counter factual: 3.282 difference: 0.0077941\n", + "sulphates instance: 0.63 counter factual: 0.712 difference: -0.0823232\n", + "alcohol instance: 9.3 counter factual: 9.32 difference: -0.0202456\n" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAscAAAH0CAYAAADR8ICwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAB04klEQVR4nO3deZhcZZk3/u85VXVq6eru6n3f0ukknR0IBJRFQCCIEFxARnEHRER03nlf9B1REXUceGdwQX+D4jI6LsNkFBkQ2QIoouxZydbpLL1VV3VVV3V37afOOb8/qrtJyNbLWaqrvp/rypVeqp/nTgjJN0/ucz+CpmkaiIiIiIgIotUFEBERERHlC4ZjIiIiIqJJDMdERERERJMYjomIiIiIJjEcExERERFNYjgmIiIiIprEcExERERENMludQF6i0TiUFWObqaFY9ehCEpLXWipcuuyXmLXGygtdUFp6dRlPSIiokIiigIqKkpO+PmCC8eqqjEc04KSSmfhdCm6/brNptJQnSL/PyAiIpoDtlUQEREREU1iOCYiIiIimsRwTEREREQ0ieGYiIiIiGgSwzERERER0SSGYyIiIiKiSaaNcrvlllswMDAAURTh8Xjw5S9/Gd3d3Ue9RlEUfOMb38Dzzz8PQRBw00034ZprrjGrRCIiIiIqcqaF47vvvhulpaUAgKeffhr/+I//iIceeuio1zzyyCPo6+vDk08+iWg0iquvvhrnnHMOmpubzSqTiIiIiIqYaW0VU8EYAGKxGARBOOY1jz32GK655hqIoojKykq8853vxOOPP25WiURERERU5Ey9Ie9LX/oSXnjhBWiahh//+MfHfN7v96OxsXH6/YaGBgwPD5tZIhEREREVMVPD8Te/+U0AwO9//3vcc889eOCBB3Tfo6rKq/uaREYqD8YBADU1pad45czYyt26rkdERFRMTA3HU66++mp85StfQSQSQUVFxfTHGxoaMDQ0hNWrVwM49iR5JsLhGFRV07VeIiONjSVRXu7GyMiELuvFdF6PiIiokIiicNLDVFN6juPxOPx+//T7zzzzDMrLy+Hz+Y563YYNG7Bp0yaoqorR0VE8/fTTuOyyy8wokYiIiIjInJPjZDKJz33uc0gmkxBFEeXl5bj//vshCAJuvPFG3HbbbVi1ahU2btyIbdu24dJLLwUAfOYzn0FLS4sZJRIR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+9vftroMIiLLzP2mASIimpVYLIabb74Zd955Jy6//HLIsoxXX30VkiRZXRoREU3iyTERkUkOHjwIAHj3u98Nm80Gl8uFc889F8uWLcN9992H//2///f0awcGBrB06VJks9lj1vnd736H6667DnfddRfOOOMMbNiwAX/729+Oes3g4CCuu+46nHbaafjEJz6B0dHR6c/ddtttePvb344zzjgDH/rQh9DT0wMAePDBB/HII4/gJz/5CU477TTcfPPNAIBAIIDPfvazOPvss3HRRRfhF7/4xfRa27dvx3vf+16cfvrpeNvb3oZvfetb+v2EERFZgOGYiMgkHR0dsNls+MIXvoA//elPGBsbm/Na27dvR2trK1588UXcdtttuPXWWxGNRqc//+ijj+Jb3/oW/va3v0GWZfz0pz+d/tz555+PJ554An/729+wfPny6VD+gQ98AFdeeSU++clPYsuWLbj//vuhqio+/elPY+nSpfjzn/+Mn//85/j5z3+O559/HgDwzW9+Ex/5yEfw+uuv46mnnsLll18+5x8TEVE+YDgmIjKJ1+vFr3/9awiCgC9/+cs455xzcPPNNyMUCs16rcrKSnz0ox+Fw+HAu971LnR0dOC5556b/vx73/tedHR0wOVyYcOGDdi9e/f0597//vfD6/VCkiR89rOfxZ49ezAxMXHcfXbs2IHR0VHceuutkCQJLS0tuPbaa/HYY48BAOx2O/r6+jA6OoqSkhKsXbt21j8WIqJ8wp5jIiITdXZ24p//+Z8BAL29vfg//+f/4J/+6Z/Q0dExq3Xq6uogCML0+42NjQgGg9Pv19TUTL/tdruRSCQAAIqi4Nvf/jYef/xxjI6OQhRzZySRSASlpaXH7DM4OIhgMIh169ZNf0xRlOn3v/nNb+J73/seLr/8cjQ3N+PWW2/FhRdeOKsfCxFRPmE4JiKySGdnJ9773vfiwQcfxPLly5FKpaY/d6rT5EAgAE3TpgOy3+/HRRdddMo9H3nkEWzevBk/+9nP0NzcjImJCZx55pnQNA0AjgrcANDQ0IDm5mY8+eSTx12vvb0d9957L1RVxZNPPonbbrsNL730EjwezylrISLKR2yrICIySW9vL376059ieHgYQC7QPvroo1izZg26u7vxyiuvYGhoCBMTE/jhD3940rVGR0fxi1/8ArIs449//CN6e3txwQUXnLKGeDwOSZJQUVGBZDKJe++996jPV1VVYWBgYPr91atXo6SkBD/60Y+QSqWgKAr27ds3PX7u4Ycfnj6BLisrA4Dp02giooWIv4MREZnE6/Vi27ZtuOaaa7B27Vpce+21WLJkCb74xS/i7W9/O971rnfhqquuwnvf+95TtiasXr0ahw8fxtlnn43vfOc7+N73voeKiopT1nD11VejsbER5513Hq644opjeoTf//73Y//+/Vi3bh1uueUW2Gw23H///dizZw8uvvhinH322bjjjjsQi8UAAM8//zyuuOIKnHbaafjmN7+Jb3/723C5XHP+OSIispqgTf1bGhERLQi/+93vsGnTJvzmN7+xuhQiooLDk2MiIiIiokkMx0REREREk9hWQUREREQ0iSfHRERERESTGI6JiIiIiCYxHBMRERERTWI4JiIiIiKaxHBMRERERDSJ4ZiIiIiIaNL/D2ixqx9XA8p5AAAAAElFTkSuQmCC\n", + "image/png": "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n5359qF0ZvbPaFlFWs4F90w293YmoyIl534dpeX8r6EsUuks0hkZqczs12QVpOX5/ZoQATi07Fywt6lK7tvsf5cDQ7597r+VBhFa7vRbzLXrCIIAUXzzL2WiKEAQDvi4Tcj9+EURbpuGta4EbGLu/xtByLX7QBBy/y+Js21As68/5OP5diFg9nsBUmMjPMc5RGCxRFFATc2RH4I35a8Nfr8fTU1NsNly/6xms9nQ2NgIv99/UDj2+/1obW2de7+lpQXj4+PHtdfRfrBGqLvwnOP+mrcZUAcVr7OO8sTsYtWddZphaxMREZUiTmInIiIiIpplSjhuaWlBIBCAouTaABRFQTAYREtLyyGvGxsbm3vf7/ejuZm3shERERGROUwJx3V1dejv78fDDz8MAHj44YfR399/UEsFAGzYsAH3338/VFXF5OQknnzySVx00UVmlEhEREREZN4NeYODg/jiF7+I6elpVFVV4Y477sCSJUtw3XXX4eabb8aaNWugKApuv/12PP/88wCA6667Dh/4wAfMKI+IiIiIqPSujyYiIiIiWig+kEdERERENIvhmIiIiIhoFsMxEREREdEshmMiIiIiolkMx0REREREsxiOiYiIiIhmMRwTWWRwcBDnnHMORkdHAQDf//738fd///e6rb9x40b83d/9HS677DJcdtll+Mtf/qLb2kRERKWKc46JLPT73/8ev/71r3HzzTfj61//On7729/C6/Uuet1oNIpLLrkEd999N0466SQoioJYLIbq6modqiYiIipddqsLICpnV1xxBV544QV85jOfwa9+9StdgjEAbNq0Cb29vTjppJMAADabjcGYiIhoHthWQWShTCaDgYEBVFZWIhwOW10OERFR2WM4JrLQnXfeiVWrVuFnP/sZvvrVr2J8fFyXddetW4fBwUFs3LgRAKAoCqampnRZm4iIqJSx55jIIk8++SS+973v4f7774fT6cT999+PBx54AL/4xS9gty++4+m1117DHXfcgUQiAVEU8YUvfAFve9vbdKiciIiodDEcExERERHNYlsFEREREdEshmMiIiIiolkMx0REREREsxiOiYiIiIhmMRwTEREREc1iOCYiKgIf/vCHcf/99+v+WiIiOhjDMRGRiV555RVcffXVOPnkk3Hqqafi6quvxpYtW6wua84Xv/hFfPvb37a6DCIiyyz+pgEiIpqXWCyGG264AbfddhsuvvhiyLKMV155BZIkWV0aERHN4skxEZFJ9u7dCwB497vfDZvNBpfLhTPPPBMrVqzA3Xffjf/9v//33GtHRkawfPlyZLPZQ9b53e9+h6uvvhq33347Tj75ZGzYsAF/+9vfDnrN6Ogorr76apx44on4xCc+gcnJybnP3XzzzXj729+Ok08+GR/60IcwMDAAALjvvvvw0EMP4Sc/+QlOPPFE3HDDDQCAQCCAz372szj99NNx3nnn4Re/+MXcWlu2bMF73/tenHTSSXjb296Gb33rW/r9hBERWYDhmIjIJD09PbDZbPjCF76AP/3pT5iamlrwWlu2bEFnZydeeOEF3HzzzbjpppsQjUbnPv/www/jW9/6Fv72t79BlmX89Kc/nfvc2Wefjcceewx/+9vfsHLlyrlQ/oEPfACXXnopPvnJT2Ljxo245557oKoqPv3pT2P58uX485//jJ///Of4+c9/jueeew4A8M1vfhMf+chH8Nprr+GJJ57AxRdfvOAfExFRIWA4JiIyidfrxa9//WsIgoAvf/nLOOOMM3DDDTcgFAod91q1tbX46Ec/CofDgXe9613o6enBs88+O/f59773vejp6YHL5cKGDRuwffv2uc+9//3vh9frhSRJ+OxnP4sdO3ZgZmbmsPts3boVk5OTuOmmmyBJEjo6OnDVVVfhkUceAQDY7XYMDQ1hcnISFRUVWLdu3XH/WIiICgl7jomITNTb24t//ud/BgAMDg7i//yf/4N/+qd/Qk9Pz3Gt09TUBEEQ5t5vbW1FMBice7+hoWHubbfbjUQiAQBQFAXf/va38eijj2JychKimDsjiUQiqKysPGSf0dFRBINBrF+/fu5jiqLMvf/Nb34T3/ve93DxxRejvb0dN910E84999zj+rEQERUShmMiIov09vbive99L+677z6sXLkSqVRq7nPHOk0OBALQNG0uIPv9fpx33nnH3POhhx7CU089hZ/97Gdob2/HzMwMTjnlFGiaBgAHBW4AaGlpQXt7Ox5//PHDrtfd3Y277roLqqri8ccfx80334wXX3wRHo/nmLUQERUitlUQEZlkcHAQP/3pTzE+Pg4gF2gffvhhnHDCCejv78fLL7+MsbExzMzM4Ic//OFR15qcnMQvfvELyLKMP/7xjxgcHMQ555xzzBri8TgkSUJNTQ2SySTuuuuugz5fV1eHkZGRuffXrl2LiooK/OhHP0IqlYKiKNi1a9fc+LkHH3xw7gS6qqoKAOZOo4mIihF/ByMiMonX68XmzZtx5ZVXYt26dbjqqquwbNkyfPGLX8Tb3/52vOtd78Jll12G9773vcdsTVi7di3279+P008/Hd/5znfwve99DzU1Nces4YorrkBrayvOOussXHLJJYf0CL///e/H7t27sX79etx4442w2Wy45557sGPHDpx//vk4/fTTceuttyIWiwEAnnvuOVxyySU48cQT8c1vfhPf/va34XK5FvxzRERkNUHL/1saEREVhd/97ne4//778Zvf/MbqUoiISg5PjomIiIiIZjEcExERERHNYlsFEREREdEsnhwTEREREc1iOCYiIiIimsVwTEREREQ0i+GYiIiIiGgWwzERERER0SyGYyIiIiKiWf8/wqup/+jg0loAAAAASUVORK5CYII=\n", "text/plain": [ "
    " ] @@ -1080,6 +1329,26 @@ "plot_cf_and_feature_dist(x, cf, feature='sulphates')" ] }, + { + "cell_type": "code", + "execution_count": 66, + "id": "354eb18d-e16f-4e2a-a060-335f75911046", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0.72949547 0.27050447]]\n", + "[[0.80257004 0.19742996]]\n" + ] + } + ], + "source": [ + "print(model.predict(x))\n", + "print(model.predict(cf))\n" + ] + }, { "cell_type": "markdown", "id": "36ad53ba-d63e-4edc-b9d0-bc4ba305a593", @@ -1281,6 +1550,33 @@ "compare_instances(x, proto_cf)\n", "plot_cf_and_feature_dist(x, proto_cf, feature='volatile acidity')" ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "6a991f69-09fe-40ca-84a4-5b788267bf8b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0.72754335, 0.27245668]], dtype=float32)" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1d1e5206-cca6-4897-a486-8a4bf070e93f", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { From eba104c4d99f2286247cd1bafc07fd321153faa1 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Thu, 25 Nov 2021 13:48:46 +0000 Subject: [PATCH 29/60] Update section on Anchors --- doc/source/overview/high_level.md | 307 +++++++++++--------- doc/source/overview/images/anchor.png | Bin 0 -> 24396 bytes doc/source/overview/images/local-global.png | Bin 30633 -> 52466 bytes 3 files changed, 168 insertions(+), 139 deletions(-) create mode 100644 doc/source/overview/images/anchor.png diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index e87b8e9b7..fbb4ae538 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -114,104 +114,198 @@ conform to their expectations may prompt them to erroneously decide that the mod classifiers trained on image datasets to use the same structures humans naturally do when identifying the same classes. However, there is no reason to believe such models should behave the same way we do. -Interpretability of insights can also mislead. Some insights such as [anchors](/overview/high_level.html#anchors) give -conditions for a classifiers prediction. Ideally, the set of these conditions would be small. However, when obtaining -anchors close to decision boundaries, we may get a complex set of conditions to differentiate that instance from near -members of a different class. Because this is harder to understand, one might write the model off as incorrect, while in -reality, the model performs as desired. +Interpretability of insights can also mislead. Some insights such as [anchors](#anchors) give conditions for a +classifiers prediction. Ideally, the set of these conditions would be small. However, when obtaining anchors close to +decision boundaries, we may get a complex set of conditions to differentiate that instance from near members of a +different class. Because this is harder to understand, one might write the model off as incorrect, while in reality, the +model performs as desired. # Types of Insights Alibi provides several local and global insights with which to explore and understand models. The following gives the practitioner an understanding of which explainers are suitable in which situations. -| Explainer | Scope | Model types | Task types | Data types | Use | -| -------------------------------------------------------------------------------------------- | ------ | --------------------- | -------------------------- | ---------------------------------------- | --------------------------------------------------------------------------------- | -| [Anchors](#anchors) | Local | Black-box | Classification | Tabular, Categorical, Text and Image | What set of features cannot be changed in order to ensure the current prediction? | -| [Pertinent Positives](#pertinent-positives) | Local | Black-box/White-box | Classification | Tabular, Image | "" | -| [Integrated Gradients](#integrated-gradients) | Local | White-box | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | -| [Kernel SHAP](#kernelshap) | Local | Black-box | Classification, Regression | Tabular, Categorical | "" | -| [Tree SHAP (path-dependent)](#path-dependent-treeshap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | -| [Tree SHAP (interventional)](#interventional-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | -| [Accumulated Local Effects](#accumulated-local-effects) | Global | Black-box | Classification, Regression | Tabular | How does model prediction vary with respect to features of interest | -| [Counterfactuals Instances](#counterfactuals-instances) | Local | Black-box/White-box | Classification | Tabular, Image | What minimal change to features is required to reclassify the current prediction? | -| [Contrastive Explanation Method](#contrastive-explanation-method) | Local | Black-box/White-box | Classification | Tabular, Image | "" | -| [Counterfactuals Guided by Prototypes](#counterfactuals-guided-by-prototypes) | Local | Black-box/White-box | Classification | Tabular, Categorical, Image | "" | -| [counterfactuals-with-reinforcement-learning](#counterfactuals-with-reinforcement-learning) | Local | Black-box | Classification | Tabular, Categorical, Image | "" | - -## 1. Local Necessary Features - -Given a single instance and model prediction, local necessary features are local explanations that tell us what minimal -set of features needs to stay the same so that the model still gives the same or close prediction. - -In the case of a trained image classification model, local necessary features for a given instance would be a minimal -subset of the image that the model uses to make its decision. A machine learning engineer might use this insight to see -if the model concentrates on the correct features. Local necessary features are particularly advantageous for checking -erroneous model decisions. - -The following two explainer methods are available from Alibi for generating Local Necessary Features insights. Each -approaches the idea in slightly different ways. The main difference is that anchors give a picture of the size of the -area over the dataset for which the insight applies, whereas pertinent positives do not. +| Explainer | Scope | Model types | Task types | Data types | Use | +| -------------------------------------------------------------------------------------------- | ------ | --------------------- | -------------------------- | ---------------------------------------- | ----------------------------------------------------------------------------------------------- | +| [Accumulated Local Effects](#accumulated-local-effects) | Global | Black-box | Classification, Regression | Tabular | How does model prediction vary with respect to features of interest | +| [Anchors](#anchors) | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | +| [Pertinent Positives](#pertinent-positives) | Local | Black-box/White-box | Classification | Tabular, Image | "" | +| [Integrated Gradients](#integrated-gradients) | Local | White-box | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | +| [Kernel SHAP](#kernelshap) | Local | Black-box | Classification, Regression | Tabular, Categorical | "" | +| [Tree SHAP (path-dependent)](#path-dependent-treeshap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | +| [Tree SHAP (interventional)](#interventional-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | +| [Counterfactuals Instances](#counterfactuals-instances) | Local | Black-box/White-box | Classification | Tabular, Image | What minimal change to features is required to reclassify the current prediction? | +| [Contrastive Explanation Method](#contrastive-explanation-method) | Local | Black-box/White-box | Classification | Tabular, Image | "" | +| [Counterfactuals Guided by Prototypes](#counterfactuals-guided-by-prototypes) | Local | Black-box/White-box | Classification | Tabular, Categorical, Image | "" | +| [counterfactuals-with-reinforcement-learning](#counterfactuals-with-reinforcement-learning) | Local | Black-box | Classification | Tabular, Categorical, Image | "" | + +### 1. Global Feature Attribution + +Global Feature Attribution methods aim to show the dependency of model output on a subset of the input features. They +are a global insight as it describes the behavior of the model over the entire input space. For instance, Accumulated +Local Effects plots obtain graphs that directly visualize the relationship between feature and prediction. + +Suppose a trained regression model that predicts the number of bikes rented on a given day depending on the temperature, +humidity, and wind speed. A global feature attribution plot for the temperature feature might be a line graph plotted +against the number of bikes rented. In the bikes rented case, one would anticipate an increase in rentals up until a +specific temperature and then a decrease after it gets too hot. + +### Accumulated Local Effects + +| Explainer | Scope | Model types | Task types | Data types | Use | +| ---------------------------- | ------ | ------------ | -------------------------- | ----------- | ------------------------------------------------------------------- | +| Accumulated Local Effects | Global | Black-box | Classification, Regression | Tabular | How does model prediction vary with respect to features of interest | + +Alibi only provides accumulated local effects plots because of the available global feature attribution methods they +give the most accurate insight. Alternatives include Partial Dependence Plots. ALE plots work by averaging the local +changes in a prediction at every instance in the data distribution. They then accumulate these differences to obtain a +plot of prediction over the selected feature dependencies. + +Suppose we have a model $f$ and features $X=\{x_1,... x_n\}$. Given a subset of the features $X_S$, we denote $X_C=X +\setminus X_S$. We want to obtain the ALE-plot for the features $X_S$, typically chosen to be at most a set of dimension +two to be visualized easily. For simplicity assume we have $X=\{x_1, x_2\}$ and let $X_S=\{x_1\}$ so $X_C=\{x_2\}$. The +ALE of $x_1$ is defined by: + +$$ \hat{f}_{S, ALE}(x_1) = \int_{min(x_1)}^{x_1}\mathbb{E}\left[ +\frac{\partial f(X_1, X_2)}{\partial X_1} | X_1 = z_1 \right]dz_1 - c_1 $$ + +The term within the integral computes the expectation of the model derivative in $x_1$ over the random variable $X_2$ +conditional on $X_1=z_1$. By taking the expectation for $X_2$, we factor out its dependency. So now we know how the +prediction $f$ changes local to a point $X_1=z_1$ independent of $X_2$. Integrating these changes over $x_1$ from a +minimum value to the value of interest, we obtain the global plot of how the model depends on $x_1$. ALE-plots get their +names as they accumulate (integrate) the local effects (the expected partial derivatives). Note that here we have +assumed $f$ is differentiable. In practice, however, we compute the various quantities above numerically, so this isn't +a requirement. + +__TODO__: + +- Add picture explaining the above idea. + +For more details on accumulated local effects including a discussion on PDP-plots and M-plots +see [Motivation-and-definition for ALE](../methods/ALE.ipynb) + +:::{admonition} **Note 4: Categorical Variables and ALE** +Note that because ALE plots require computing differences between variables, they don't naturally extend to categorical +data unless there is a sensible ordering on the data. As an example, consider the months of the year. To be clear, this +is only an issue if the variable you are taking the ALE for is categorical. +::: + +**Pros**: + +- ALE-plots are easy to visualize and understand intuitively +- Very general as it is a black-box algorithm +- Doesn't struggle with dependencies in the underlying features, unlike PDP plots +- ALE plots are fast + +**Cons**: + +- Harder to explain the underlying motivation behind the method than PDP plots or M plots. +- Requires access to the training dataset. +- Unlike PDP plots, ALE plots do not work with Categorical data + +## 2. Local Necessary Features + +Local necessary features tell us what features need to stay the same for a specific instance in order for the model to +give the same classification. In the case of a trained image classification model, local necessary features for a given +instance would be a minimal subset of the image that the model uses to make its decision. Alibi provides two explainers +for computing local necessary features: [anchors](#anchors) and [pertinent positives](#pertinent-positives). ### Anchors -| Model-types | Task-types | Data-types | -| ----------- | -------------- | ---------------------------------------- | -| Black-box | Classification | Tabular, Text, Image and Categorical | +| Explainer | Scope | Model types | Task types | Data types | Use | +| ---------- | ------ | ------------ | --------------- | ------------------------------------ | ----------------------------------------------------------------------------------------------- | +| Anchors | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | -Anchors are a local blackbox method introduced in [Anchors: High-Precision Model-Agnostic Explanations]( -https://homes.cs.washington.edu/~marcotcr/aaai18.pdf). +Anchors are introduced +in [Anchors: High-Precision Model-Agnostic Explanations](https://homes.cs.washington.edu/~marcotcr/aaai18.pdf). Further, +more detailed documentation can be found [here](../methods/Anchors.ipynb). -Let A be a rule (set of predicates) acting on such an interpretable representation, such that $A(x)$ returns $1$ if all -its feature predicates are true. An example of such a rule, $A$, could be represented by the set $\{not, bad\}$ in which -case any sentence, $s$, with both $not$ and $bad$ in it would mean $A(s)=1$. As a more specific example consider the -[wine quality dataset](https://archive.ics.uci.edu/ml/datasets/wine+quality): +Let A be a rule (set of predicates) acting on input instances, such that $A(x)$ returns $1$ if all its feature +predicates are true. Consider the [wine quality dataset](https://archive.ics.uci.edu/ml/datasets/wine+quality): ```{image} images/wine-quality-ds.png :align: center :alt: first five rows of wine quality dataset ``` -In which case predicates would be of the form : `'alcohol > 11.00'`. Note that the more predicates we add to an anchor -the smaller it becomes as by doing so we filter out more cases. - -__TODO__: +An example of a predicate for this dataset would be a rule of the form: `'alcohol > 11.00'`. Note that the more +predicates we add to an anchor, the smaller it becomes, as by doing so, we filter out more instances of the data. +Anchors are sets of predicates associated to a specific instance $x$ such that $x$ is in the anchor ($A(x)=1$) and any +other point in the anchor has the same classification as $x$ ($z$ such that $A(z) = 1 \implies f(z) = f(x)$ where $f$ is +the model). We're interested in finding the largest possible Anchor that contains $x$. -- Include picture explanation of anchors +```{image} images/anchor.png +:align: center +:alt: Illustration of an anchor as a subset of two dimensional feature space. +``` -Alibi finds anchors by building them up from the bottom up. We start with an empty anchor $A=\{\}$ and then consider the -set of possible feature values from the instance of interest we can add. $\mathcal{A} = \{A \wedge a_0, A \wedge a_1, A -\wedge a_2, ..., A \wedge a_n\}$. For instance, in the case of textual data, the $a_i$ might be words from the instance -sentence. In the case of image data, we partition the image into super-pixels which we choose to be the $a_i$. At each -stage, we will look at the set of possible next anchors that can be made by adding in a feature $a_i$ from the instance. -We then compute the precision of each of the resulting anchors and choose the best. We iteratively build the anchor up -like this until the required precision is met. +To construct an anchor using Alibi for tabular data such as the wine quality dataset, we use: -As we construct the new set of anchors from the last, we need to compute the precisions of the next group to know which -one to choose. We can't calculate this directly; instead, we sample from $\mathcal{D}(z|A)$ to obtain an estimate. To do -this, we use several different methods for different data types. For instance, in the case of textual data, we want to -generate sentences with the anchor words and ensure that they make sense within the data distribution. One option is to -replace the missing words (those not in the anchor) from the instance with words with the same POS tag. This means the -resulting sample will make semantic sense rather than being a random set of words. Other methods are available. In the -case of images, we sample an image from the data set and then superimpose the super-pixels on top of it. +```ipython3 +from alibi.explainers import AnchorTabular -**Pros** +predict_fn = lambda x: model.predict(scaler.transform(x)) +explainer = AnchorTabular(predict_fn, features) +explainer.fit(X_train, disc_perc=(25, 50, 75)) +result = explainer.explain(scaler.inverse_transform(x), threshold=0.95) -- Easy to explain as rules are simple to interpret -- Is a black-box method as we just need to predict the value of an instance and don't need to access model internals -- Can be parallelized and made to be much more efficient as a result -- Although they apply to a local instance, the notion of coverage also gives a level of global insight +print('Anchor =', result.data['anchor']) +print('Coverage = ', result.data['coverage']) +``` -**Cons** +```ipython3 +Anchor = ['alcohol > 11.00', 'sulphates > 0.73'] +Coverage = 0.0817347789824854 +``` -- This algorithm is much slower for high dimensional feature spaces -- If choosing an anchor close to a decision boundary, the method may require a considerable number of samples from - $\mathcal{D}(z|A)$ and $\mathcal{D}(z|A')$ to distinguish two anchors $A$ and $A'$. -- High dimensional feature spaces such as images need to be reduced. Typically, this is done by segmenting the image - into superpixels. The choice of the algorithm used to obtain the superpixels has an effect on the anchor obtained. -- Practitioners need to make several choices concerning parameters and domain-specific setup. For instance, the - precision threshold or the method by which we sample $\mathcal{D}(z|A)$. Fortunately, Alibi provides default settings - for a lot of specific data types. +Note Alibi also gives an idea of the size (coverage) of the Anchor. + +To find anchors Alibi sequentially builds them by generating a set of candidates from an initial anchor candidate, +picking the best candidate of that set and then using that to generate the next set of candidates and repeating. +Candidates are favoured on the basis of the number of instances they contain that are in the same class as $x$ under +$f$. This is repeated until we obtain a candidate that satisfies the condition and is largest (in the case where there +are multiple). + +To compute which of two anchors is better, Alibi obtains an estimate by sampling from $\mathcal{D}(z|A)$ where +$\mathcal{D}$ is the data distribution. The sampling process is dependent on the type of data. For tabular data, this +process is easy; we can fix the values in the Anchor and replace the rest with values from a point sampled from the +dataset. + +In the case of textual data, anchors are sets of words that the sentence must include to be **in the** anchor. To sample +from $\mathcal{D}(z|A)$, we need to find realistic sentences that include those words. To help do this Alibi provides +support for three [transformer](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)) based language +models: `DistilbertBaseUncased`, `BertBaseUncased`, and `RobertaBase`. + +Image data being high dimensional means we first need to reduce it to a lower dimension. We can do this using image +segmentation algorithms (Alibi supports +[felzenszwalb](https://scikit-image.org/docs/dev/auto_examples/segmentation/plot_segmentations.html#felzenszwalb-s-efficient-graph-based-segmentation) +, +[slic](https://scikit-image.org/docs/dev/auto_examples/segmentation/plot_segmentations.html#slic-k-means-based-image-segmentation) +and [quickshift](https://scikit-image.org/docs/dev/auto_examples/segmentation/plot_segmentations.html#quickshift-image-segmentation)) +to find super-pixels. As a result, the anchors are made up of sets of these super-pixels, and so to sample from +$\mathcal{D}(z|A)$ we replace those super-pixels that aren't in $A$ with something else. Alibi supports superimposing +over the absent super-pixels with an image sampled from the dataset or taking the average value of the super-pixel. + +The fact that the method requires perturbing and comparing anchors at each stage leads to some issues. For instance, the +more features, the more candidate anchors you can obtain at each process stage. The algorithm uses +a [Beam search](https://en.wikipedia.org/wiki/Beam_search) among the candidate anchors and solves for the best $B$ +anchors at each stage in the process by framing the problem as +a [multi-armed bandit](https://en.wikipedia.org/wiki/Multi-armed_bandit). The runtime complexity is $\mathcal{O}(B \cdot +p^2 + p^2 \cdot \mathcal{O}_{MAB[B \cdot p, B]})$ where $p$ is the number of features and $\mathcal{O}_ +{MAB[B \cdot p, B]}$ is the runtime for the multi-armed bandit. ( +See [Molnar](https://christophm.github.io/interpretable-ml-book/anchors.html#complexity-and-runtime) for more details.) + +Similarly, comparing anchors that are close to decision boundaries can require many samples to obtain a clear winner +between the two. Also, note that anchors close to decision boundaries are likely to have many predicates to ensure the +required predictive property. This makes them less interpretable. + +| Pros | Cons | +| -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | +| Easy to explain as rules are simple to interpret | Time complexity scales as a function of features | +| Is a black-box method as we need to predict the value of an instance and don't need to access model internals | Requires a large number of samples to distinguish anchors close to decision boundaries | +| The coverage of an anchor gives a level of global insight as well | Anchors close to decision boundaries are less likely to be interpretable | +| | High dimensional feature spaces such as images need to be reduced to improve the runtime complexity | +| | Practitioners may need domain-specific knowledge to correctly sample from the conditional probability | ### Pertinent Positives @@ -490,71 +584,6 @@ values. - Requires access to the dataset - Typically, slower than the path-dependent method -### Global Feature Attribution - -Global Feature Attribution methods aim to show the dependency of model output on a subset of the input features. They -are a global insight as it describes the behavior of the model over the entire input space. For instance, Accumulated -Local Effects plots obtain graphs that directly visualize the relationship between feature and prediction. - -Suppose a trained regression model that predicts the number of bikes rented on a given day depending on the temperature, -humidity, and wind speed. A global feature attribution plot for the temperature feature might be a line graph plotted -against the number of bikes rented. In the bikes rented case, one would anticipate an increase in rentals up until a -specific temperature and then a decrease after it gets too hot. - -### Accumulated Local Effects - -| Model-types | Task-types | Data-types | -| ----------- | -------------- | ----------- | -| Black-box | Classification | Tabular | -| | Regression | | - -Alibi only provides accumulated local effects plots because of the available global feature attribution methods they -give the most accurate insight. Alternatives include Partial Dependence Plots. ALE plots work by averaging the local -changes in a prediction at every instance in the data distribution. They then accumulate these differences to obtain a -plot of prediction over the selected feature dependencies. - -Suppose we have a model $f$ and features $X=\{x_1,... x_n\}$. Given a subset of the features $X_S$, we denote $X_C=X -\setminus X_S$. We want to obtain the ALE-plot for the features $X_S$, typically chosen to be at most a set of dimension -two to be visualized easily. For simplicity assume we have $X=\{x_1, x_2\}$ and let $X_S=\{x_1\}$ so $X_C=\{x_2\}$. The -ALE of $x_1$ is defined by: - -$$ \hat{f}_{S, ALE}(x_1) = \int_{min(x_1)}^{x_1}\mathbb{E}\left[ -\frac{\partial f(X_1, X_2)}{\partial X_1} | X_1 = z_1 \right]dz_1 - c_1 $$ - -The term within the integral computes the expectation of the model derivative in $x_1$ over the random variable $X_2$ -conditional on $X_1=z_1$. By taking the expectation for $X_2$, we factor out its dependency. So now we know how the -prediction $f$ changes local to a point $X_1=z_1$ independent of $X_2$. Integrating these changes over $x_1$ from a -minimum value to the value of interest, we obtain the global plot of how the model depends on $x_1$. ALE-plots get their -names as they accumulate (integrate) the local effects (the expected partial derivatives). Note that here we have -assumed $f$ is differentiable. In practice, however, we compute the various quantities above numerically, so this isn't -a requirement. - -__TODO__: - -- Add picture explaining the above idea. - -For more details on accumulated local effects including a discussion on PDP-plots and M-plots see -[Motivation-and-definition for ALE](../methods/ALE.ipynb#Motivation-and-definition) - -:::{admonition} **Note 4: Categorical Variables and ALE** -Note that because ALE plots require computing differences between variables, they don't naturally extend to categorical -data unless there is a sensible ordering on the data. As an example, consider the months of the year. To be clear, this -is only an issue if the variable you are taking the ALE for is categorical. -::: - -**Pros**: - -- ALE-plots are easy to visualize and understand intuitively -- Very general as it is a black-box algorithm -- Doesn't struggle with dependencies in the underlying features, unlike PDP plots -- ALE plots are fast - -**Cons**: - -- Harder to explain the underlying motivation behind the method than PDP plots or M plots. -- Requires access to the training dataset. -- Unlike PDP plots, ALE plots do not work with Categorical data - ### Counter Factuals Given an instance of the dataset and a prediction given by a model, a question naturally arises how would the instance diff --git a/doc/source/overview/images/anchor.png b/doc/source/overview/images/anchor.png new file mode 100644 index 0000000000000000000000000000000000000000..ece85e2b03c82dcc32d262dfc4914b49c9903cd5 GIT binary patch literal 24396 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 literal 0 HcmV?d00001 diff --git a/doc/source/overview/images/local-global.png b/doc/source/overview/images/local-global.png index 55c327f1ebe81a3e7069a6c24feda1f544193d14..74f042a1816a6df2a770f06be97ad2bbbd74735d 100644 GIT binary patch literal 52466 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 D*P+`g literal 30633 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 I6W8GX1F%VGqyPW_ From 0927b15aed4a89727c172d4aa420ffad3bc5dacb Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Thu, 25 Nov 2021 16:56:45 +0000 Subject: [PATCH 30/60] Add progress on CEM --- doc/source/overview/high_level.md | 100 +++++++++++++----------- doc/source/overview/images/anchor.png | Bin 24396 -> 25328 bytes doc/source/overview/images/pp_mnist.png | Bin 0 -> 14974 bytes 3 files changed, 53 insertions(+), 47 deletions(-) create mode 100644 doc/source/overview/images/pp_mnist.png diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index fbb4ae538..dbdaaff03 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -45,13 +45,12 @@ several applications of importance. the machine learning systems we use. It allows us to justify their use in many contexts where an understanding of the basis of the decision is paramount. This is a common issue within machine learning in medicine, where acting on a model prediction may require expensive or risky procedures to be carried out. -- **Testing:**. Explainability might be used - to [audit financial models](https://dl.acm.org/doi/pdf/10.1145/3351095.3375624) that aid decisions about whether to - grant customer loans. By computing the attribution of each feature towards the prediction the model makes, - organisations can check that they are consistent with human decision-making. Similarly, explainability applied to a - model trained on image data can explicitly show the model's focus when making decisions, - aiding [debugging](http://proceedings.mlr.press/v70/sundararajan17a.html). Practitioners must be wary - of [misuse](#biases), however. + - **Testing:**. Explainability might be used to [audit financial models](https://arxiv.org/abs/1909.06342) that aid + decisions about whether to grant customer loans. By computing the attribution of each feature towards the + prediction the model makes, organisations can check that they are consistent with human decision-making. + Similarly, explainability applied to a model trained on image data can explicitly show the model's focus when + making decisions, aiding [debugging](http://proceedings.mlr.press/v70/sundararajan17a.html). Practitioners must be + wary of [misuse](#biases), however. - **Functionality:**. Insights can be used to augment model functionality. For instance, providing information on top of model predictions such as how to change model inputs to obtain desired outputs. - **Research:**. Explainability allows researchers to understand how and why opaque models make decisions. This can help @@ -221,7 +220,8 @@ in [Anchors: High-Precision Model-Agnostic Explanations](https://homes.cs.washin more detailed documentation can be found [here](../methods/Anchors.ipynb). Let A be a rule (set of predicates) acting on input instances, such that $A(x)$ returns $1$ if all its feature -predicates are true. Consider the [wine quality dataset](https://archive.ics.uci.edu/ml/datasets/wine+quality): +predicates are true. Consider the [wine quality dataset](https://archive.ics.uci.edu/ml/datasets/wine+quality) adjusted +by partitioning the data into good and bad wine based on a quality threshold of 0.5. ```{image} images/wine-quality-ds.png :align: center @@ -247,15 +247,17 @@ from alibi.explainers import AnchorTabular predict_fn = lambda x: model.predict(scaler.transform(x)) explainer = AnchorTabular(predict_fn, features) explainer.fit(X_train, disc_perc=(25, 50, 75)) -result = explainer.explain(scaler.inverse_transform(x), threshold=0.95) +result = explainer.explain(x, threshold=0.95) print('Anchor =', result.data['anchor']) print('Coverage = ', result.data['coverage']) ``` +where `x` is an instance of the dataset classified as good. + ```ipython3 -Anchor = ['alcohol > 11.00', 'sulphates > 0.73'] -Coverage = 0.0817347789824854 +Anchor = ['sulphates <= 0.55', 'volatile acidity > 0.52', 'alcohol <= 11.00', 'pH > 3.40'] +Coverage = 0.0316930775646372 ``` Note Alibi also gives an idea of the size (coverage) of the Anchor. @@ -309,50 +311,54 @@ required predictive property. This makes them less interpretable. ### Pertinent Positives -| Model-types | Task-types | Data-types | -| ----------- | -------------- | ----------- | -| Black-box | Classification | Tabular | -| | | Image | - -Informally a Pertinent Positive is the subset of an instance that still obtains the same classification. These differ -from anchors primarily in the fact that they aren't constructed to maximize coverage. The method to create them is also -substantially different. The rough idea is to define an absence of a feature and then perturb the instance to take away -as much information as possible while still retaining the original classification. +| Explainer | Scope | Model types | Task types | Data types | Use | +| ------------------- | ------ | -------------------- | --------------- | --------------- | ----------------------------------------------------------------------------------------------- | +| Pertinent Positives | Local | Black-box/White-box | Classification | Tabular, Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | -Given an instance $x_0$ we set out to find a $\delta$ that minimizes the following loss: +Introduced by [Amit Dhurandhar, et al](https://arxiv.org/abs/1802.07623), a Pertinent Positive is the subset of features +of an instance that still obtains the same classification as that instance. These differ from [anchors](#anchors) +primarily in the fact that they aren't constructed to maximize coverage. The method to create them is also substantially +different. The rough idea is to define an **absence of a feature** and then perturb the instance to take away as much +information as possible while still retaining the original classification. Note that these are a subset of +the [CEM](../methods/CEM.ipynb) method which is also used to +construct [pertinent negatives/counterfactuals](#counterfactuals). -$$ L = c\cdot L_{pred}(\delta) + \beta L_{1}(\delta) + L_{2}^{2}(\delta) + \gamma \|\delta - AE(\delta)\|^{2}_{2} $$ +```{image} images/pp_mnist.png +:align: center +:alt: Pertinent postive of an MNIST digit +``` -where +Given an instance $x$ we use gradient descent to find a $\delta$ that minimizes the following loss: -$$ L_{pred}(\delta) = max\left\{ max_{i\neq t_{0}}[Pred(\delta)]_{i} - [Pred(\delta)]_{t_0}, \kappa \right\} $$ +$$ L = c\cdot L_{pred}(\delta) + \beta L_{1}(\delta, x) + L_{2}^{2}(\delta, x) + \gamma \|\delta - AE(\delta)\|^{2}_{2} +$$ -$AE$ is an optional autoencoder generated from the training data. If delta strays from the original data distribution, -the autoencoder loss will increase as it will no longer reconstruct $\delta$ well. Thus, we ensure that $\delta$ remains -close to the original dataset distribution. +$AE$ is an [autoencoder](https://en.wikipedia.org/wiki/Autoencoder) generated from the training data. If $\delta$ strays +from the original data distribution, the autoencoder loss will increase as it will no longer reconstruct $\delta$ well. +Thus, we ensure that $\delta$ remains close to the original dataset distribution. -Note that $\delta$ is restrained to only take away features from the instance $x_0$. There is a slightly subtle point -here: removing features from an instance requires correctly defining non-informative feature values. In the case of -MNIST digits, it's reasonable to assume that the black background behind each digit represents an absence of -information. Similarly, in the case of color images, you might take the median pixel value to convey no information, and -moving away from this value adds information. +Note that $\delta$ is constrained to only "take away" features from the instance $x$. There is a slightly subtle point +here: removing features from an instance requires correctly defining non-informative feature values. For +the [MNIST digits](http://yann.lecun.com/exdb/mnist/), it's reasonable to assume that the black background behind each +digit represents an absence of information. Similarly, in the case of color images, you might take the median pixel +value to convey no information, and moving away from this value adds information. For numeric tabular data we can use +the feature mean. In general, having to choose a non-informative value for each feature is non-trivial and domain +knowledge is required. Note that we need to compute the loss gradient through the model. If we have access to the internals, we can do this directly. Otherwise, we need to use numerical differentiation at a high computational cost due to the extra model calls -we need to make. - -**Pros** - -- Both a black and white-box method -- We obtain more interpretable results using the autoencoder loss as $\delta$ will be in the data distribution - -**Cons** - -- Finding non-informative feature values to add or take away from an instance is often not trivial, and domain knowledge - is essential -- Need to tune hyperparameters $\beta$ and $\gamma$ -- The insight doesn't tell us anything about the coverage of the pertinent positive -- If using the autoencoder loss, then we need access to the original dataset +we need to make. This does however mean we can use this method for a wide range of black-box models but not all. We +require the model to be differentiable which isn't always true. For instance tree-based models have piece-wise constant +output. + +| Pros | Cons | +| -------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| Can be used with both white-box (TensorFlow) and some black-box models | Finding non-informative feature values to take away from an instance is often not trivial, and domain knowledge is essential | +| | The autoencoder loss requires access to the original dataset | +| | Need to tune hyperparameters $\beta$ and $\gamma$ | +| | The insight doesn't tell us anything about the coverage of the pertinent positive | +| | Slow for black-box models due to having to numerically evaluate gradients | +| | Only works for differentiable black-box models | ### Local Feature Attribution @@ -584,7 +590,7 @@ values. - Requires access to the dataset - Typically, slower than the path-dependent method -### Counter Factuals +### Counterfactuals Given an instance of the dataset and a prediction given by a model, a question naturally arises how would the instance minimally have to change for a different prediction to be provided. Counterfactuals are local explanations as they diff --git a/doc/source/overview/images/anchor.png b/doc/source/overview/images/anchor.png index ece85e2b03c82dcc32d262dfc4914b49c9903cd5..4695f8528661b04ad2f485ab16d1b504175b3e70 100644 GIT binary patch literal 25328 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 B5DEYQ literal 24396 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 diff --git a/doc/source/overview/images/pp_mnist.png b/doc/source/overview/images/pp_mnist.png new file mode 100644 index 0000000000000000000000000000000000000000..bad0df50619ea2b86bc8346b0b510729d038a46c GIT binary patch literal 14974 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 d+KKe~_Q-xVbRJ=Ik&eQfjQ{{b;8Ds%t< literal 0 HcmV?d00001 From bf0159c827e420f695df6cb22270c4ebab1538b5 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Thu, 25 Nov 2021 22:30:42 +0000 Subject: [PATCH 31/60] Fix incorrect spelling of black-box --- doc/source/overview/high_level.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index dbdaaff03..24ff87988 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -113,7 +113,7 @@ conform to their expectations may prompt them to erroneously decide that the mod classifiers trained on image datasets to use the same structures humans naturally do when identifying the same classes. However, there is no reason to believe such models should behave the same way we do. -Interpretability of insights can also mislead. Some insights such as [anchors](#anchors) give conditions for a +Interpretability of insights can also mislead. Some insights such as [**anchors**](#anchors) give conditions for a classifiers prediction. Ideally, the set of these conditions would be small. However, when obtaining anchors close to decision boundaries, we may get a complex set of conditions to differentiate that instance from near members of a different class. Because this is harder to understand, one might write the model off as incorrect, while in reality, the @@ -219,7 +219,7 @@ Anchors are introduced in [Anchors: High-Precision Model-Agnostic Explanations](https://homes.cs.washington.edu/~marcotcr/aaai18.pdf). Further, more detailed documentation can be found [here](../methods/Anchors.ipynb). -Let A be a rule (set of predicates) acting on input instances, such that $A(x)$ returns $1$ if all its feature +Let $A$ be a rule (set of predicates) acting on input instances, such that $A(x)$ returns $1$ if all its feature predicates are true. Consider the [wine quality dataset](https://archive.ics.uci.edu/ml/datasets/wine+quality) adjusted by partitioning the data into good and bad wine based on a quality threshold of 0.5. @@ -505,7 +505,7 @@ dependencies between the features. - The Shapley values are fairly distributed among the feature values - Shapley values can be easily interpreted and visualized -- Very general as is a blackbox method +- Very general as is a black-box method **Cons** @@ -760,7 +760,7 @@ mentioned approaches. **Pros** - Generates more interpretable instances that the CEM method -- Blackbox version of the method doesn't require computing the numerical gradients +- Black-box version of the method doesn't require computing the numerical gradients - Applies to more data-types **Cons** From 860418efbaa4b287a743ad34f3e33480a46fc31a Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Tue, 7 Dec 2021 17:34:50 +0000 Subject: [PATCH 32/60] Add PR changes for ALE section --- doc/source/overview/high_level.md | 129 +++++++++--------- .../overview/images/ale-wine-quality.png | Bin 0 -> 24300 bytes 2 files changed, 62 insertions(+), 67 deletions(-) create mode 100644 doc/source/overview/images/ale-wine-quality.png diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 24ff87988..0e3f27625 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -124,83 +124,78 @@ model performs as desired. Alibi provides several local and global insights with which to explore and understand models. The following gives the practitioner an understanding of which explainers are suitable in which situations. -| Explainer | Scope | Model types | Task types | Data types | Use | -| -------------------------------------------------------------------------------------------- | ------ | --------------------- | -------------------------- | ---------------------------------------- | ----------------------------------------------------------------------------------------------- | -| [Accumulated Local Effects](#accumulated-local-effects) | Global | Black-box | Classification, Regression | Tabular | How does model prediction vary with respect to features of interest | -| [Anchors](#anchors) | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | -| [Pertinent Positives](#pertinent-positives) | Local | Black-box/White-box | Classification | Tabular, Image | "" | -| [Integrated Gradients](#integrated-gradients) | Local | White-box | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | -| [Kernel SHAP](#kernelshap) | Local | Black-box | Classification, Regression | Tabular, Categorical | "" | -| [Tree SHAP (path-dependent)](#path-dependent-treeshap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | -| [Tree SHAP (interventional)](#interventional-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | -| [Counterfactuals Instances](#counterfactuals-instances) | Local | Black-box/White-box | Classification | Tabular, Image | What minimal change to features is required to reclassify the current prediction? | -| [Contrastive Explanation Method](#contrastive-explanation-method) | Local | Black-box/White-box | Classification | Tabular, Image | "" | -| [Counterfactuals Guided by Prototypes](#counterfactuals-guided-by-prototypes) | Local | Black-box/White-box | Classification | Tabular, Categorical, Image | "" | -| [counterfactuals-with-reinforcement-learning](#counterfactuals-with-reinforcement-learning) | Local | Black-box | Classification | Tabular, Categorical, Image | "" | +| Explainer | Scope | Model types | Task types | Data types | Use | +|---------------------------------------------------------------------------------------------|--------|------------------------|----------------------------|------------------------------------------|-------------------------------------------------------------------------------------------------| +| [Accumulated Local Effects](#accumulated-local-effects) | Global | Black-box | Classification, Regression | Tabular | How does model prediction vary with respect to features of interest | +| [Anchors](#anchors) | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | +| [Pertinent Positives](#pertinent-positives) | Local | Black-box/White-box | Classification | Tabular, Image | "" | +| [Integrated Gradients](#integrated-gradients) | Local | White-box | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | +| [Kernel SHAP](#kernelshap) | Local | Black-box | Classification, Regression | Tabular, Categorical | "" | +| [Tree SHAP (path-dependent)](#path-dependent-treeshap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | +| [Tree SHAP (interventional)](#interventional-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | +| [Counterfactuals Instances](#counterfactuals-instances) | Local | Black-box/White-box | Classification | Tabular, Image | What minimal change to features is required to reclassify the current prediction? | +| [Contrastive Explanation Method](#contrastive-explanation-method) | Local | Black-box/White-box | Classification | Tabular, Image | "" | +| [Counterfactuals Guided by Prototypes](#counterfactuals-guided-by-prototypes) | Local | Black-box/White-box | Classification | Tabular, Categorical, Image | "" | +| [counterfactuals-with-reinforcement-learning](#counterfactuals-with-reinforcement-learning) | Local | Black-box | Classification | Tabular, Categorical, Image | "" | ### 1. Global Feature Attribution Global Feature Attribution methods aim to show the dependency of model output on a subset of the input features. They -are a global insight as it describes the behavior of the model over the entire input space. For instance, Accumulated -Local Effects plots obtain graphs that directly visualize the relationship between feature and prediction. +provide global insight describing the model's behaviour over the input space. For instance, Accumulated Local Effects +plots obtain graphs that directly visualize the relationship between feature and prediction over a specific set of +samples. Suppose a trained regression model that predicts the number of bikes rented on a given day depending on the temperature, humidity, and wind speed. A global feature attribution plot for the temperature feature might be a line graph plotted -against the number of bikes rented. In the bikes rented case, one would anticipate an increase in rentals up until a -specific temperature and then a decrease after it gets too hot. +against the number of bikes rented. One would anticipate an increase in rentals until a specific temperature and then a +decrease after it gets too hot. ### Accumulated Local Effects -| Explainer | Scope | Model types | Task types | Data types | Use | -| ---------------------------- | ------ | ------------ | -------------------------- | ----------- | ------------------------------------------------------------------- | -| Accumulated Local Effects | Global | Black-box | Classification, Regression | Tabular | How does model prediction vary with respect to features of interest | +| Explainer | Scope | Model types | Task types | Data types | Use | +|---------------------------|--------|---------------|----------------------------|-------------------|---------------------------------------------------------------------| +| Accumulated Local Effects | Global | Black-box | Classification, Regression | Tabular (numeric) | How does model prediction vary with respect to features of interest | -Alibi only provides accumulated local effects plots because of the available global feature attribution methods they -give the most accurate insight. Alternatives include Partial Dependence Plots. ALE plots work by averaging the local -changes in a prediction at every instance in the data distribution. They then accumulate these differences to obtain a -plot of prediction over the selected feature dependencies. +Alibi only provides [accumulated local effects (ALE)](../methods/ALE.ipynb) plots because they give the most accurate +insight. Alternatives include Partial Dependence Plots (PDP), of which ALE is a natural extension. Suppose we have a +model $f$ and features $X=\{x_1,... x_n\}$. Given a subset of the features $X_S$, we denote $X_C=X \setminus X_S$. $X_S$ +is usually chosen to be of size at most 2 in order to make the generated plots easy to visualize. PDP works by +marginalizing the model's output over the features we are not interested in, $X_C$. The process of factoring out the +$X_C$ set causes the introduction of artificial data, which can lead to errors. ALE plots solve this by using the +conditional probability distribution instead of the marginal distribution and removing any incorrect output dependencies +due to correlated input variables by accumulating local differences in the model output instead of averaging them. See +the [following](../methods/ALE.ipynb) for a more expansive explanation. -Suppose we have a model $f$ and features $X=\{x_1,... x_n\}$. Given a subset of the features $X_S$, we denote $X_C=X -\setminus X_S$. We want to obtain the ALE-plot for the features $X_S$, typically chosen to be at most a set of dimension -two to be visualized easily. For simplicity assume we have $X=\{x_1, x_2\}$ and let $X_S=\{x_1\}$ so $X_C=\{x_2\}$. The -ALE of $x_1$ is defined by: +Considering the case of the wine dataset, we can compute the ALE with Alibi by simply using: -$$ \hat{f}_{S, ALE}(x_1) = \int_{min(x_1)}^{x_1}\mathbb{E}\left[ -\frac{\partial f(X_1, X_2)}{\partial X_1} | X_1 = z_1 \right]dz_1 - c_1 $$ - -The term within the integral computes the expectation of the model derivative in $x_1$ over the random variable $X_2$ -conditional on $X_1=z_1$. By taking the expectation for $X_2$, we factor out its dependency. So now we know how the -prediction $f$ changes local to a point $X_1=z_1$ independent of $X_2$. Integrating these changes over $x_1$ from a -minimum value to the value of interest, we obtain the global plot of how the model depends on $x_1$. ALE-plots get their -names as they accumulate (integrate) the local effects (the expected partial derivatives). Note that here we have -assumed $f$ is differentiable. In practice, however, we compute the various quantities above numerically, so this isn't -a requirement. +```ipython3 +from alibi.explainers import ALE, plot_ale -__TODO__: +predict_fn = lambda x: model(scaler.transform(x)).numpy()[:, 0] +ale = ALE(predict_fn, feature_names=features) +exp = ale.explain(X_train) +plot_ale(exp, features=['alcohol'], line_kw={'label': 'Probability of "good" class'}) +``` -- Add picture explaining the above idea. +Hence, we see the model predicts higher alcohol content wines as being better: -For more details on accumulated local effects including a discussion on PDP-plots and M-plots -see [Motivation-and-definition for ALE](../methods/ALE.ipynb) +```{image} images/ale-wine-quality.png +:align: center +:alt: ALE Plot of wine quality "good" class probability dependency on alcohol +``` :::{admonition} **Note 4: Categorical Variables and ALE** -Note that because ALE plots require computing differences between variables, they don't naturally extend to categorical -data unless there is a sensible ordering on the data. As an example, consider the months of the year. To be clear, this -is only an issue if the variable you are taking the ALE for is categorical. +Note that while ALE is well-defined on numeric tabular data, it isn't on categorical data. This is because it's unclear +what the difference between two categorical values should be. Note that if the dataset has a mix of categorical and +numerical features, we can always take the ALE of the numerical ones. ::: -**Pros**: - -- ALE-plots are easy to visualize and understand intuitively -- Very general as it is a black-box algorithm -- Doesn't struggle with dependencies in the underlying features, unlike PDP plots -- ALE plots are fast - -**Cons**: - -- Harder to explain the underlying motivation behind the method than PDP plots or M plots. -- Requires access to the training dataset. -- Unlike PDP plots, ALE plots do not work with Categorical data +| Pros | Cons | +|---------------------------------------------------------------------------------|------------------------------------------------------------------------------------------| +| ALE plots are easy to visualize and understand intuitively | Harder to explain the underlying motivation behind the method than PDP plots or M plots. | +| Very general as it is a black-box algorithm | Requires access to the training dataset. | +| Doesn't struggle with dependencies in the underlying features, unlike PDP plots | ALE of categorical variables is not well-defined. | +| ALE plots are fast | | ## 2. Local Necessary Features @@ -211,9 +206,9 @@ for computing local necessary features: [anchors](#anchors) and [pertinent posit ### Anchors -| Explainer | Scope | Model types | Task types | Data types | Use | -| ---------- | ------ | ------------ | --------------- | ------------------------------------ | ----------------------------------------------------------------------------------------------- | -| Anchors | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | +| Explainer | Scope | Model types | Task types | Data types | Use | +|------------|---------|---------------|------------------|---------------------------------------|--------------------------------------------------------------------------------------------------| +| Anchors | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | Anchors are introduced in [Anchors: High-Precision Model-Agnostic Explanations](https://homes.cs.washington.edu/~marcotcr/aaai18.pdf). Further, @@ -301,13 +296,13 @@ Similarly, comparing anchors that are close to decision boundaries can require m between the two. Also, note that anchors close to decision boundaries are likely to have many predicates to ensure the required predictive property. This makes them less interpretable. -| Pros | Cons | -| -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | -| Easy to explain as rules are simple to interpret | Time complexity scales as a function of features | -| Is a black-box method as we need to predict the value of an instance and don't need to access model internals | Requires a large number of samples to distinguish anchors close to decision boundaries | -| The coverage of an anchor gives a level of global insight as well | Anchors close to decision boundaries are less likely to be interpretable | -| | High dimensional feature spaces such as images need to be reduced to improve the runtime complexity | -| | Practitioners may need domain-specific knowledge to correctly sample from the conditional probability | +| Pros | Cons | +|-----------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------| +| Easy to explain as rules are simple to interpret | Time complexity scales as a function of features | +| Is a black-box method as we need to predict the value of an instance and don't need to access model internals | Requires a large number of samples to distinguish anchors close to decision boundaries | +| The coverage of an anchor gives a level of global insight as well | Anchors close to decision boundaries are less likely to be interpretable | +| | High dimensional feature spaces such as images need to be reduced to improve the runtime complexity | +| | Practitioners may need domain-specific knowledge to correctly sample from the conditional probability | ### Pertinent Positives diff --git a/doc/source/overview/images/ale-wine-quality.png b/doc/source/overview/images/ale-wine-quality.png new file mode 100644 index 0000000000000000000000000000000000000000..f11548803ee4433db1cb846f88acc9f0214d5a7a GIT binary patch literal 24300 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

  • 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 Date: Wed, 8 Dec 2021 13:56:48 +0000 Subject: [PATCH 33/60] Add PR changes for IG --- doc/source/overview/high_level.md | 224 ++++++++++-------- .../overview/images/husky-vs-wolves.png | Bin 0 -> 133256 bytes doc/source/overview/images/ig-lfa.png | Bin 0 -> 27065 bytes 3 files changed, 126 insertions(+), 98 deletions(-) create mode 100644 doc/source/overview/images/husky-vs-wolves.png create mode 100644 doc/source/overview/images/ig-lfa.png diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 0e3f27625..8d7898061 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -45,12 +45,12 @@ several applications of importance. the machine learning systems we use. It allows us to justify their use in many contexts where an understanding of the basis of the decision is paramount. This is a common issue within machine learning in medicine, where acting on a model prediction may require expensive or risky procedures to be carried out. - - **Testing:**. Explainability might be used to [audit financial models](https://arxiv.org/abs/1909.06342) that aid - decisions about whether to grant customer loans. By computing the attribution of each feature towards the - prediction the model makes, organisations can check that they are consistent with human decision-making. - Similarly, explainability applied to a model trained on image data can explicitly show the model's focus when - making decisions, aiding [debugging](http://proceedings.mlr.press/v70/sundararajan17a.html). Practitioners must be - wary of [misuse](#biases), however. +- **Testing:**. Explainability might be used to [audit financial models](https://arxiv.org/abs/1909.06342) that aid + decisions about whether to grant customer loans. By computing the attribution of each feature towards the prediction + the model makes, organisations can check that they are consistent with human decision-making. Similarly, + explainability applied to a model trained on image data can explicitly show the model's focus when making decisions, + aiding [debugging](http://proceedings.mlr.press/v70/sundararajan17a.html). Practitioners must be wary + of [misuse](#biases), however. - **Functionality:**. Insights can be used to augment model functionality. For instance, providing information on top of model predictions such as how to change model inputs to obtain desired outputs. - **Research:**. Explainability allows researchers to understand how and why opaque models make decisions. This can help @@ -124,19 +124,20 @@ model performs as desired. Alibi provides several local and global insights with which to explore and understand models. The following gives the practitioner an understanding of which explainers are suitable in which situations. -| Explainer | Scope | Model types | Task types | Data types | Use | -|---------------------------------------------------------------------------------------------|--------|------------------------|----------------------------|------------------------------------------|-------------------------------------------------------------------------------------------------| -| [Accumulated Local Effects](#accumulated-local-effects) | Global | Black-box | Classification, Regression | Tabular | How does model prediction vary with respect to features of interest | -| [Anchors](#anchors) | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | -| [Pertinent Positives](#pertinent-positives) | Local | Black-box/White-box | Classification | Tabular, Image | "" | -| [Integrated Gradients](#integrated-gradients) | Local | White-box | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | -| [Kernel SHAP](#kernelshap) | Local | Black-box | Classification, Regression | Tabular, Categorical | "" | -| [Tree SHAP (path-dependent)](#path-dependent-treeshap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | -| [Tree SHAP (interventional)](#interventional-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | -| [Counterfactuals Instances](#counterfactuals-instances) | Local | Black-box/White-box | Classification | Tabular, Image | What minimal change to features is required to reclassify the current prediction? | -| [Contrastive Explanation Method](#contrastive-explanation-method) | Local | Black-box/White-box | Classification | Tabular, Image | "" | -| [Counterfactuals Guided by Prototypes](#counterfactuals-guided-by-prototypes) | Local | Black-box/White-box | Classification | Tabular, Categorical, Image | "" | -| [counterfactuals-with-reinforcement-learning](#counterfactuals-with-reinforcement-learning) | Local | Black-box | Classification | Tabular, Categorical, Image | "" | +| Explainer | Scope | Model types | Task types | Data types | Use | +|---------------------------------------------------------------------------------------------|--------|---------------------|----------------------------|------------------------------------------|-------------------------------------------------------------------------------------------------| +| [Accumulated Local Effects](#accumulated-local-effects) | Global | Black-box | Classification, Regression | Tabular | How does model prediction vary with respect to features of interest | +| [Anchors](#anchors) | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | +| [Pertinent Positives](#pertinent-positives) | Local | Black-box/White-box | Classification | Tabular, Image | "" | +| [Integrated Gradients](#integrated-gradients) | Local | White-box | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | +| [Integrated Gradients](#integrated-gradients) | Local | White-box | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | +| [Kernel SHAP](#kernelshap) | Local | Black-box | Classification, Regression | Tabular, Categorical | "" | +| [Tree SHAP (path-dependent)](#path-dependent-treeshap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | +| [Tree SHAP (interventional)](#interventional-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | +| [Counterfactuals Instances](#counterfactuals-instances) | Local | Black-box/White-box | Classification | Tabular, Image | What minimal change to features is required to reclassify the current prediction? | +| [Contrastive Explanation Method](#contrastive-explanation-method) | Local | Black-box/White-box | Classification | Tabular, Image | "" | +| [Counterfactuals Guided by Prototypes](#counterfactuals-guided-by-prototypes) | Local | Black-box/White-box | Classification | Tabular, Categorical, Image | "" | +| [counterfactuals-with-reinforcement-learning](#counterfactuals-with-reinforcement-learning) | Local | Black-box | Classification | Tabular, Categorical, Image | "" | ### 1. Global Feature Attribution @@ -306,9 +307,9 @@ required predictive property. This makes them less interpretable. ### Pertinent Positives -| Explainer | Scope | Model types | Task types | Data types | Use | -| ------------------- | ------ | -------------------- | --------------- | --------------- | ----------------------------------------------------------------------------------------------- | -| Pertinent Positives | Local | Black-box/White-box | Classification | Tabular, Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | +| Explainer | Scope | Model types | Task types | Data types | Use | +|---------------------|-------|---------------------|----------------|----------------|-------------------------------------------------------------------------------------------------| +| Pertinent Positives | Local | Black-box/White-box | Classification | Tabular, Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | Introduced by [Amit Dhurandhar, et al](https://arxiv.org/abs/1802.07623), a Pertinent Positive is the subset of features of an instance that still obtains the same classification as that instance. These differ from [anchors](#anchors) @@ -346,101 +347,128 @@ we need to make. This does however mean we can use this method for a wide range require the model to be differentiable which isn't always true. For instance tree-based models have piece-wise constant output. -| Pros | Cons | -| -------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -| Can be used with both white-box (TensorFlow) and some black-box models | Finding non-informative feature values to take away from an instance is often not trivial, and domain knowledge is essential | -| | The autoencoder loss requires access to the original dataset | -| | Need to tune hyperparameters $\beta$ and $\gamma$ | -| | The insight doesn't tell us anything about the coverage of the pertinent positive | -| | Slow for black-box models due to having to numerically evaluate gradients | -| | Only works for differentiable black-box models | +| Pros | Cons | +|------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------| +| Can be used with both white-box (TensorFlow) and some black-box models | Finding non-informative feature values to take away from an instance is often not trivial, and domain knowledge is essential | +| | The autoencoder loss requires access to the original dataset | +| | Need to tune hyperparameters $\beta$ and $\gamma$ | +| | The insight doesn't tell us anything about the coverage of the pertinent positive | +| | Slow for black-box models due to having to numerically evaluate gradients | +| | Only works for differentiable black-box models | + +### 3. Local Feature Attribution + +Local feature attribution (LFA) asks how each feature in a given instance contributes to its prediction. In the case of +an image, this would highlight those pixels that are most responsible for the model prediction. Note that this differs +subtly from [Local Necessary Features](#2-local-necessary-features) which find the *minimal subset* of features required +to keep the same prediction. Local feature attribution instead assigns a score to each feature. + +A good example use of local feature attribution is to detect that an image classifier is focusing on the correct +features of an image to infer the class. In their +paper ["Why Should I Trust You?": Explaining the Predictions of Any Classifier](https://arxiv.org/abs/1602.04938), Marco +Tulio Ribeiro et al. train a logistic regression classifier on a small dataset of images of wolves and huskies. The data +set has been handpicked so that only the pictures of wolves have snowy backdrops while the huskies don't. LFA methods +reveal that the resulting misclassification of huskies in snow as wolves results from the network incorrectly focusing +on those images snowy backdrops. + +```{figure} images/husky-vs-wolves.png +:align: center +:alt: Husky with snowy backdrop misclassified as wolf. -### Local Feature Attribution +*Figure 11 from "Why Should I Trust You?": Explaining the Predictions of Any Classifier.* +``` -Local feature attribution asks how each feature in a given instance contributes to its prediction. In the case of an -image, this would highlight those pixels that make the model provide the output it does. Note that this differs subtly -from Local Necessary Features, which find the minimum subset of features required to give a prediction. Local feature -attribution instead assigns a score to each feature. +Let $f:\mathbb{R}^n \rightarrow \mathbb{R}$. $f$ might be a regression model, a single component of a multi-output +regression or a probability of a class in a classification model. If $x=(x_1,... ,x_n) \in \mathbb{R}^n$ then an +attribution of the prediction at input $x$ is a vector $a=(a_1,... ,a_n) \in \mathbb{R}^n$ where $a_i$ is the +contribution of $x_i$ to the prediction $f(x)$. -__TODO__: +For attribution methods to be relevant, we expect the attributes to behave consistently in certain situations. Hence, +they should satisfy the following properties. -- picture showing above. - -A good example use of local feature attribution is to detect that a classifier trained on images is focusing on the -correct features of an image to infer the class. Suppose you have a model trained to classify breeds of dogs. You want -to check that it focuses on the correct features of the dog in making its prediction. Suppose you compute the feature -attribution of a picture of a husky and discover that the model is only focusing on the snowy backdrop to the husky, -then you know two things. All the images of huskies in your dataset overwhelmingly have snowy backdrops, and also that -the model will fail to generalize. It will potentially incorrectly classify other dog breeds with snowy backdrops as -huskies and fail to recognize huskies that aren't in snowy locations. - -Each of the following methods defines local feature attribution slightly differently. In both, however, we assign -attribution values to each feature to indicate how significant those features were in making the model prediction. - -Let $f:\mathbb{R}^n \rightarrow \mathbb{R}$. $f$ might be a regression, a single component of a multi regression or a -probability of a class in a classification model. If $x=(x_1,... ,x_n) \in \mathbb{R}^n$ then an attribution of the -prediction at input $x$ is a vector $a=(a_1,... ,a_n) \in \mathbb{R}^n$ where $a_i$ is the contribution of $x_i$ to the -prediction $f(x)$. - -The attribution values should satisfy specific properties: - -1. Efficiency/Completeness: The sum of attributions equals the difference between the prediction and the - baseline/average. We're interested in understanding the difference each feature value makes in a prediction compared - to some uninformative baseline. -2. Symmetry: If the model behaves the same after swapping two variables $x$ and $y$, then $x$ and $y$ have equal - attribution. If this weren't the case, we would be biasing the attribution towards certain features over other ones. -3. Dummy/Sensitivity: If a variable does not change the output of the model, then it should have attribution 0. If this - were not the case, we'd be assigning value to a feature that provides no information. -4. Additivity/Linearity: The attribution for a feature $x_i$ of a linear composition of two models $f_1$ and $f_2$ given - by $c_1 f_1 + c_2 f_2$ is $c_1 a_{1, i} + c_2 a_{2, i}$ where $a_{1, i}$ and $a_{2, i}$ is the attribution for $x_1$ - and $f_1$ and $f_2$ respectively. +(lfa-properties)= -### Integrated Gradients +- **Efficiency/Completeness**: The sum of attributions should equal the difference between the prediction and the + baseline +- **Symmetry**: Variables that have identical effects on the model should have equal attribution +- **Dummy/Sensitivity**: Variables that don't change the model output should have attribution zero +- **Additivity/Linearity**: The attribution of a feature for a linear combination of two models should equal the linear + combination of attributions of that feature for each of those models -| Model-types | Task-types | Data-types | -| ----------- | -------------- | ----------- | -| TF/Kera | Classification | Tabular | -| | Regression | Image | -| | | Text | -| | | Categorical | +Not all LFA methods satisfy these +methods ([LIME](https://papers.nips.cc/paper/2017/file/8a20a8621978632d76c43dfd28b67767-Paper.pdf) for example) but the +ones provided by Alibi ([Integrated Gradients](#integrated-gradients), [Kernel SHAP](#kernelshap) +, [Path dependent](#path-dependent-treeshap) and [interventional](#interventional-tree-shap) tree SHAP) do. + +### Integrated Gradients -This method computes the attribution of each feature by integrating the model partial derivatives along a path from a -baseline point to the instance. Let $f$ be the model and $x$ the instance of interest. If $f:\mathbb{R}^{n} \rightarrow -\mathbb{R}^{m}$ where $m$ is the number of classes the model predicts then let $F=f_k$ where $k \in \{1,..., m\}$. If -$f$ is single-valued then $F=f$. We also need to choose a baseline value, $x'$. +| Explainer | Scope | Model types | Task types | Data types | Use | +|----------------------|-------|-----------------------|----------------------------|--------------------------------------|------------------------------------------------------------| +| Integrated Gradients | Local | White-box(TensorFlow) | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | -$$ IG_i(x) = (x_i - x_i')\int_{\alpha}^{1}\frac{\partial F (x' + \alpha (x - x'))}{ \partial x_i } d \alpha $$ +The integrated gradients (IG) method computes the attribution of each feature by integrating the model partial +derivatives along a path from a baseline point to the instance. This accumulates the changes in the prediction that +occur due to the changing feature values. These accumulated values represent how each feature contributes to the +prediction for the instance of interest. -The above sums partial derivatives for each feature over the path between the baseline and instance of interest. In -doing so, you accumulate the changes in the prediction that occur due to the changing feature value from the baseline to -the instance. +We need to choose a baseline which should capture a blank state in which the model makes essentially no prediction or +assigns the probability of each class equally. This is dependent on domain knowledge of the dataset. In the case of +MNIST for instance a common choice is an image set to black. For numerical tabular data we can set the baseline as the +average of each feature. :::{admonition} **Note 5: Choice of Baseline** -The main difficulty with this method is that as IG is very dependent on the baseline, it's essential to make sure you -choose it well. The choice of baseline should capture a blank state in which the model makes essentially no prediction -or assigns the probability of each class equally. A common choice for image classification is an image set to black, -which works well in many cases but sometimes fails to be a good choice. For instance, a model that classifies images -taken at night using an image with every pixel set to black means the attribution method will undervalue the use of dark -pixels in attributing the contribution of each feature to the classification. This is due to the contribution being -calculated relative to the baseline, which is already dark. + +(choice-of-baseline)= + +The main difficulty with this method is that as IG is +very [dependent on the baseline](https://distill.pub/2020/attribution-baselines/), it's essential to make sure you +choose it well. Choosing a black image baseline for a classifier trained to distinguish between photos taken at day or +night may not be the best choice. ::: -**Pros** +Note that IG is a white box method that requires access to the model internals in order to compute the partial +derivatives. Alibi provides support for TensorFlow models. For example given a Tensorflow classifier trained on the wine +quality dataset we can compute the IG attributions by doing: -- Simple to understand and visualize, especially with image data -- Doesn't require access to the training data +```ipython3 +from alibi.explainers import IntegratedGradients -**Cons** +ig = IntegratedGradients(model, # TensorFlow model + layer=None, + method="gausslegendre", + n_steps=50, + internal_batch_size=100) + +result = ig.explain(scaler.transform(x), target=0) + +plot_importance(result.data['attributions'][0], features, 0) +``` + +This gives: + +```{image} images/ig-lfa.png +:align: center +:alt: IG applied to Wine quality dataset for class "Good" +``` + +_Note_: The alcohol feature value contributes negatively here to the "Good" prediction which seems to contradict +the [ALE](#accumulated-local-effects) result. The instance $x$ we choose has an alcohol content of 9.4%, which is +reasonably low for a wine classed as "Good" and is consistent with the ALE plot. (The median for good wines is 10.8% and +bad wines 9.7%) + +| Pros | Cons | +|----------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------| +| Simple to understand and visualize, especially with image data | White-box method. Requires the partial derivatives of the model outputs with respect to inputs | +| Doesn't require access to the training data | Requires [choosing the baseline](choice-of-baseline) which can have a significant effect on the outcome (See Note 5) | +| [Satisfies several desirable properties](lfa-properties) | | -- white-box method. Requires the partial derivatives of the model outputs with respect to inputs -- Requires choosing the baseline which can have a significant effect on the outcome (See Note 5) ### KernelSHAP -| Model-types | Task-types | Data-types | -| ----------------- | -------------- | ----------- | -| Black-box | Classification | Tabular | -| | Regression | Categorical | +| Model-types | Task-types | Data-types | +|--------------------|-----------------|--------------| +| Black-box | Classification | Tabular | +| | Regression | Categorical | Kernel SHAP is a method of computing the Shapley values for a model around an instance $x_i$. Shapley values are a game-theoretic method of assigning payout to players depending on their contribution to an overall goal. In this case, diff --git a/doc/source/overview/images/husky-vs-wolves.png b/doc/source/overview/images/husky-vs-wolves.png new file mode 100644 index 0000000000000000000000000000000000000000..af3973c60012125a7fe1002ad770928ce83f1d2b GIT binary patch literal 133256 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%0AqXZ1Si*zU| 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 M07*qoM6N<$g1WPyi2wiq literal 0 HcmV?d00001 diff --git a/doc/source/overview/images/ig-lfa.png b/doc/source/overview/images/ig-lfa.png new file mode 100644 index 0000000000000000000000000000000000000000..9a7e6ea743e57f36f437feec4a015944ef9eae16 GIT binary patch literal 27065 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 literal 0 HcmV?d00001 From 53f74b4637325f9a9928a012afa42d724ba28855 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Wed, 8 Dec 2021 15:12:12 +0000 Subject: [PATCH 34/60] Add changes from PR for kernel shap section --- doc/source/overview/high_level.md | 125 +++++++++---------- doc/source/overview/images/kern-shap-lfa.png | Bin 0 -> 26617 bytes 2 files changed, 58 insertions(+), 67 deletions(-) create mode 100644 doc/source/overview/images/kern-shap-lfa.png diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 8d7898061..6855f270b 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -131,7 +131,7 @@ practitioner an understanding of which explainers are suitable in which situatio | [Pertinent Positives](#pertinent-positives) | Local | Black-box/White-box | Classification | Tabular, Image | "" | | [Integrated Gradients](#integrated-gradients) | Local | White-box | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | | [Integrated Gradients](#integrated-gradients) | Local | White-box | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | -| [Kernel SHAP](#kernelshap) | Local | Black-box | Classification, Regression | Tabular, Categorical | "" | +| [Kernel SHAP](#kernel-shap) | Local | Black-box | Classification, Regression | Tabular, Categorical | "" | | [Tree SHAP (path-dependent)](#path-dependent-treeshap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | | [Tree SHAP (interventional)](#interventional-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | | [Counterfactuals Instances](#counterfactuals-instances) | Local | Black-box/White-box | Classification | Tabular, Image | What minimal change to features is required to reclassify the current prediction? | @@ -180,6 +180,8 @@ plot_ale(exp, features=['alcohol'], line_kw={'label': 'Probability of "good" cla Hence, we see the model predicts higher alcohol content wines as being better: +(ale-plot)= + ```{image} images/ale-wine-quality.png :align: center :alt: ALE Plot of wine quality "good" class probability dependency on alcohol @@ -397,7 +399,7 @@ they should satisfy the following properties. Not all LFA methods satisfy these methods ([LIME](https://papers.nips.cc/paper/2017/file/8a20a8621978632d76c43dfd28b67767-Paper.pdf) for example) but the -ones provided by Alibi ([Integrated Gradients](#integrated-gradients), [Kernel SHAP](#kernelshap) +ones provided by Alibi ([Integrated Gradients](#integrated-gradients), [Kernel SHAP](#kernel-shap) , [Path dependent](#path-dependent-treeshap) and [interventional](#interventional-tree-shap) tree SHAP) do. ### Integrated Gradients @@ -406,10 +408,10 @@ ones provided by Alibi ([Integrated Gradients](#integrated-gradients), [Kernel S |----------------------|-------|-----------------------|----------------------------|--------------------------------------|------------------------------------------------------------| | Integrated Gradients | Local | White-box(TensorFlow) | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | -The integrated gradients (IG) method computes the attribution of each feature by integrating the model partial -derivatives along a path from a baseline point to the instance. This accumulates the changes in the prediction that -occur due to the changing feature values. These accumulated values represent how each feature contributes to the -prediction for the instance of interest. +The [integrated gradients](https://arxiv.org/abs/1703.01365) (IG) method computes the attribution of each feature by +integrating the model partial derivatives along a path from a baseline point to the instance. This accumulates the +changes in the prediction that occur due to the changing feature values. These accumulated values represent how each +feature contributes to the prediction for the instance of interest. We need to choose a baseline which should capture a blank state in which the model makes essentially no prediction or assigns the probability of each class equally. This is dependent on domain knowledge of the dataset. In the case of @@ -451,10 +453,15 @@ This gives: :alt: IG applied to Wine quality dataset for class "Good" ``` -_Note_: The alcohol feature value contributes negatively here to the "Good" prediction which seems to contradict -the [ALE](#accumulated-local-effects) result. The instance $x$ we choose has an alcohol content of 9.4%, which is +:::{admonition} **Note 6: Comparison to ALE** + +(comparison-to-ale)= + +The alcohol feature value contributes negatively here to the "Good" prediction which seems to contradict +the [ALE result](ale-plot). However, The instance $x$ we choose has an alcohol content of 9.4%, which is reasonably low for a wine classed as "Good" and is consistent with the ALE plot. (The median for good wines is 10.8% and bad wines 9.7%) +::: | Pros | Cons | |----------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------| @@ -462,79 +469,63 @@ bad wines 9.7%) | Doesn't require access to the training data | Requires [choosing the baseline](choice-of-baseline) which can have a significant effect on the outcome (See Note 5) | | [Satisfies several desirable properties](lfa-properties) | | +### Kernel SHAP -### KernelSHAP - -| Model-types | Task-types | Data-types | -|--------------------|-----------------|--------------| -| Black-box | Classification | Tabular | -| | Regression | Categorical | - -Kernel SHAP is a method of computing the Shapley values for a model around an instance $x_i$. Shapley values are a -game-theoretic method of assigning payout to players depending on their contribution to an overall goal. In this case, -the players are the features, and their payout is the model prediction. To compute these values, we have to consider the -marginal contribution of each feature over all the possible coalitions of feature players. - -Suppose we have a regression model $f$ that makes predictions based on four features $X = \{X_1, X_2, X_3, X_4\}$ as -input. A coalition is a group of features, say, the first and third features. For this coalition, its value is given by: - -$$ val({1,3}) = \int_{\mathbb{R}}\int_{\mathbb{R}} f(x_1, X_2, x_3, X_4)d\mathbb{P}_{X_{2}X_{4}} - \mathbb{E}_{X}(f(X)) -$$ - -Given a coalition, $S$, that doesn't include $x_i$, then the marginal contribution of $x_i$ is given by $val(S \cup x_i) - -- val(S)$. Intuitively this is the difference that the feature $x_i$ would contribute if it was to join that coalition. - We are interested in the marginal contribution of $x_i$ over all possible coalitions with and without $x_i$. A Shapley - value for the $x_i^{th}$ feature is given by the weighted sum - -$$ \psi_j = \sum_{S\subset \{1,...,p\} \setminus \{j\}} \frac{|S|!(p - |S| - 1)!}{p!}(val(S \cup x_i) - val(S)) -$$ +| Explainer | Scope | Model types | Task types | Data types | Use | +|--------------|-------|-------------|----------------------------|-----------------------|------------------------------------------------------------| +| Kernel SHAP | Local | Black-box | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | -The weights convey how much you can learn from a specific coalition. Large and Small coalitions mean more learned -because we've isolated more of the effect. At the same time, medium size coalitions don't supply us with as much -information because there are many possible such coalitions. +[Kernel SHAP](https://papers.nips.cc/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html) is a method of +computing the Shapley values for a model around an +instance. [Shapley values](https://christophm.github.io/interpretable-ml-book/shapley.html) are a game-theoretic method +of assigning payout to players depending on their contribution to an overall goal. In our case, the features are the +players, and the payouts are the attributions. -The main issue with the above is that there will be many possible coalitions, $2^M$ to be precise. Hence instead of -computing all of these, we use a sampling process on the space of coalitions and then estimate the Shapley values by -training a linear model. Because a coalition is a set of players/features that are contributing to a prediction, we -represent this as points in the space of binary codes $z' = \{z_0,...,z_m\}$ where $z_j = 1$ means that the $j^th$ -feature is present in the coalition while $z_j = 0$ means it is not. To obtain the dataset on which we train this model, -we first sample from this space of coalitions then compute the values of $f$ for each sample. We obtain weights for each -sample using the Shapley Kernel: +Given any subset of features, we can ask how a feature's presence in that set contributes to the model output. We do +this by computing the model output for the set with and without the specific feature. We obtain the Shapley value for +that feature by considering these contributions with and without it present for all possible subsets of features. -$$ \pi_{x}(z') = \frac{M - 1}{\frac{M}{|z'|}|z'|(M - |z'|)} $$ +Two problems arise. Most models are not trained to take a variable number of input features. And secondly, +the [power set](https://en.wikipedia.org/wiki/Power_set) is prohibitively large when there are many features. -Once we have the data points, the values of $f$ for each data point, and the sample weights, we have everything we need -to train a linear model. The paper shows that the coefficients of this linear model are the Shapley values. +To solve the former, we sample from the **interventional conditional expectation**. This replaces missing features with +values sampled from the training distribution. And to solve the latter, the kernel SHAP method samples on the space of +subsets to obtain an estimate. -There is some nuance to how we compute the value of a model given a specific coalition, as most models aren't built to -accept input with arbitrary missing values. If $D$ is the underlying distribution the samples are drawn from, then -ideally, we would use the conditional expectation: +A downside of interfering in the distribution like this is that doing so introduces unrealistic samples if there are +dependencies between the features. -$$ f(S) = \mathbb{E}_{D}[f(x)|x_S] -$$ +Alibi provides a wrapper to the [Shap library](https://github.com/slundberg/shap). We can use this explainer to compute +the Shapley values for +a [sklearn](https://scikit-learn.org/stable/) [random forest](https://en.wikipedia.org/wiki/Random_forest) model using +the following. -Computing this value is very difficult. Instead, we can approximate the above using the interventional conditional -expectation, which is defined as: +```ipython3 +from alibi.explainers import KernelShap -$$ f(S) = \mathbb{E}_{D}[f(x)|do(x_S)] -$$ +predict_fn = lambda x: rfc.predict_proba(scaler.transform(x)) +explainer = KernelShap(predict_fn, task='classification') +explainer.fit(X_train[0:100]) +result = explainer.explain(x) -The $do$ operator here fixes the values of the features in $S$ and samples the remaining $\bar{S}$ feature values from -the data. A Downside of interfering in the distribution like this can mean introducing unrealistic samples if there are -dependencies between the features. +plot_importance(result.shap_values[1], features, 1) +``` -**Pros** +This gives the following output: -- The Shapley values are fairly distributed among the feature values -- Shapley values can be easily interpreted and visualized -- Very general as is a black-box method +```{image} images/kern-shap-lfa.png +:align: center +:alt: Kernel SHAP applied to Wine quality dataset for class "Good" +``` -**Cons** +This result is similar to the one for [integrated gradients](comparison-to-ale) although there are differences due to +using different methods and models in each case. -- KernalSHAP is slow owing to the number of samples required to estimate the Shapley values accurately -- The interventional conditional probability introduces unrealistic data points -- Requires access to the training dataset +| Pros | Cons | +|----------------------------------------------------------|-------------------------------------------------------------------------------------------------------| +| [Satisfies several desirable properties](lfa-properties) | Kernal SHAP is slow owing to the number of samples required to estimate the Shapley values accurately | +| Shapley values can be easily interpreted and visualized | The interventional conditional probability introduces unrealistic data points | +| Very general as is a black-box method | Requires access to the training dataset | ### TreeSHAP diff --git a/doc/source/overview/images/kern-shap-lfa.png b/doc/source/overview/images/kern-shap-lfa.png new file mode 100644 index 0000000000000000000000000000000000000000..09bc94c83e6d5efc7ddb525c77b13f4cd22c4462 GIT binary patch literal 26617 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 Date: Wed, 8 Dec 2021 18:05:22 +0000 Subject: [PATCH 35/60] Add PR changes for path-dependent tree shap section --- doc/source/overview/high_level.md | 129 ++++++++++-------- .../overview/images/pd-tree-shap-lfa.png | Bin 0 -> 26765 bytes 2 files changed, 70 insertions(+), 59 deletions(-) create mode 100644 doc/source/overview/images/pd-tree-shap-lfa.png diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 6855f270b..edc8e953a 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -58,7 +58,7 @@ several applications of importance. ## Black-box vs White-box methods -Some explainers apply only to specific types of models such as the [Tree SHAP](#path-dependent-treeshap) methods which +Some explainers apply only to specific types of models such as the [Tree SHAP](#path-dependent-tree-shap) methods which can only be used with [tree-based models](https://en.wikipedia.org/wiki/Decision_tree_learning). This is the case when an explainer uses some aspect of that model's internal structure. If the model is a neural network then some methods require taking gradients of the model predictions with respect to the inputs. Methods that require access to the model @@ -130,9 +130,8 @@ practitioner an understanding of which explainers are suitable in which situatio | [Anchors](#anchors) | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | | [Pertinent Positives](#pertinent-positives) | Local | Black-box/White-box | Classification | Tabular, Image | "" | | [Integrated Gradients](#integrated-gradients) | Local | White-box | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | -| [Integrated Gradients](#integrated-gradients) | Local | White-box | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | | [Kernel SHAP](#kernel-shap) | Local | Black-box | Classification, Regression | Tabular, Categorical | "" | -| [Tree SHAP (path-dependent)](#path-dependent-treeshap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | +| [Tree SHAP (path-dependent)](#path-dependent-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | | [Tree SHAP (interventional)](#interventional-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | | [Counterfactuals Instances](#counterfactuals-instances) | Local | Black-box/White-box | Classification | Tabular, Image | What minimal change to features is required to reclassify the current prediction? | | [Contrastive Explanation Method](#contrastive-explanation-method) | Local | Black-box/White-box | Classification | Tabular, Image | "" | @@ -319,7 +318,7 @@ primarily in the fact that they aren't constructed to maximize coverage. The met different. The rough idea is to define an **absence of a feature** and then perturb the instance to take away as much information as possible while still retaining the original classification. Note that these are a subset of the [CEM](../methods/CEM.ipynb) method which is also used to -construct [pertinent negatives/counterfactuals](#counterfactuals). +construct [pertinent negatives/counterfactuals](#4-counterfactuals). ```{image} images/pp_mnist.png :align: center @@ -358,7 +357,7 @@ output. | | Slow for black-box models due to having to numerically evaluate gradients | | | Only works for differentiable black-box models | -### 3. Local Feature Attribution +## 3. Local Feature Attribution Local feature attribution (LFA) asks how each feature in a given instance contributes to its prediction. In the case of an image, this would highlight those pixels that are most responsible for the model prediction. Note that this differs @@ -385,11 +384,17 @@ regression or a probability of a class in a classification model. If $x=(x_1,... attribution of the prediction at input $x$ is a vector $a=(a_1,... ,a_n) \in \mathbb{R}^n$ where $a_i$ is the contribution of $x_i$ to the prediction $f(x)$. -For attribution methods to be relevant, we expect the attributes to behave consistently in certain situations. Hence, -they should satisfy the following properties. +Alibi exposes four explainers to compute LFAs. [Integrated gradients](#integrated-gradients) +, [kernel SHAP](#kernel-shap) +, [path-dependent tree SHAP](#path-dependent-tree-shap) and [interventional tree SHAP](#interventional-tree-shap). The +last three of these are implemented in The [SHAP library](https://github.com/slundberg/shap) and Alibi acts as a +wrapper. Interventional and path-dependent tree SHAP are white-box methods that apply to tree based models. (lfa-properties)= +For attribution methods to be relevant, we expect the attributes to behave consistently in certain situations. Hence, +they should satisfy the following properties. + - **Efficiency/Completeness**: The sum of attributions should equal the difference between the prediction and the baseline - **Symmetry**: Variables that have identical effects on the model should have equal attribution @@ -399,8 +404,8 @@ they should satisfy the following properties. Not all LFA methods satisfy these methods ([LIME](https://papers.nips.cc/paper/2017/file/8a20a8621978632d76c43dfd28b67767-Paper.pdf) for example) but the -ones provided by Alibi ([Integrated Gradients](#integrated-gradients), [Kernel SHAP](#kernel-shap) -, [Path dependent](#path-dependent-treeshap) and [interventional](#interventional-tree-shap) tree SHAP) do. +ones provided by Alibi ([integrated gradients](#integrated-gradients), [Kernel SHAP](#kernel-shap) +, [path-dependent](#path-dependent-tree-shap) and [interventional](#interventional-tree-shap) tree SHAP) do. ### Integrated Gradients @@ -458,9 +463,9 @@ This gives: (comparison-to-ale)= The alcohol feature value contributes negatively here to the "Good" prediction which seems to contradict -the [ALE result](ale-plot). However, The instance $x$ we choose has an alcohol content of 9.4%, which is -reasonably low for a wine classed as "Good" and is consistent with the ALE plot. (The median for good wines is 10.8% and -bad wines 9.7%) +the [ALE result](ale-plot). However, The instance $x$ we choose has an alcohol content of 9.4%, which is reasonably low +for a wine classed as "Good" and is consistent with the ALE plot. (The median for good wines is 10.8% and bad wines +9.7%) ::: | Pros | Cons | @@ -475,8 +480,8 @@ bad wines 9.7%) |--------------|-------|-------------|----------------------------|-----------------------|------------------------------------------------------------| | Kernel SHAP | Local | Black-box | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | -[Kernel SHAP](https://papers.nips.cc/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html) is a method of -computing the Shapley values for a model around an +[Kernel SHAP](https://papers.nips.cc/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html) is a method for +computing the Shapley values of a model around an instance. [Shapley values](https://christophm.github.io/interpretable-ml-book/shapley.html) are a game-theoretic method of assigning payout to players depending on their contribution to an overall goal. In our case, the features are the players, and the payouts are the attributions. @@ -513,6 +518,8 @@ plot_importance(result.shap_values[1], features, 1) This gives the following output: +(kern-shap-plot)= + ```{image} images/kern-shap-lfa.png :align: center :alt: Kernel SHAP applied to Wine quality dataset for class "Good" @@ -523,53 +530,63 @@ using different methods and models in each case. | Pros | Cons | |----------------------------------------------------------|-------------------------------------------------------------------------------------------------------| -| [Satisfies several desirable properties](lfa-properties) | Kernal SHAP is slow owing to the number of samples required to estimate the Shapley values accurately | +| [Satisfies several desirable properties](lfa-properties) | Kernel SHAP is slow owing to the number of samples required to estimate the Shapley values accurately | | Shapley values can be easily interpreted and visualized | The interventional conditional probability introduces unrealistic data points | | Very general as is a black-box method | Requires access to the training dataset | -### TreeSHAP +### Path-dependent tree SHAP -| Model-types | Task-types | Data-types | -| ------------ | -------------- | ----------- | -| Tree-based | Classification | Tabular | -| | Regression | Categorical | +| Explainer | Scope | Model types | Task types | Data types | Use | +|----------------------------|--------|-------------|----------------------------|----------------------|------------------------------------------------------------| +| Tree SHAP (path-dependent) | Local | White-box | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | -In the case of tree-based models, we can obtain a speed-up by exploiting the structure of trees. Alibi exposes two -white-box methods, Interventional and Path dependent feature perturbation. The main difference is that the -path-dependent method approximates the interventional conditional expectation, whereas the interventional method -calculates it directly. +Computing the Shapley values for a model requires computing the interventional conditional expectation for each member +of the [power set](https://en.wikipedia.org/wiki/Power_set) of instance features. For tree-based models we can +approximate this distribution by applying the tree as usual. However, for missing features, we take both routes down the +tree, weighting each path taken by the proportion of samples from the training dataset that go each way. The tree SHAP +method does this simultaneously for all members of the feature powerset, obtaining +a [significant speedup](https://www.researchgate.net/publication/333077391_Explainable_AI_for_Trees_From_Local_Explanations_to_Global_Understanding) +. Assume the random forest has $T$ trees, with a depth of $D$, let $L$ be the number of leaves and let $M$ be the size +of the feature set. If we compute the approximation for each member of the power set we obtain a time complexity of $O( +TL2^M)$. In contrast, computing for all sets simultaneously we achieve $O(TLD^2)$. -### Path Dependent TreeSHAP +To compute the path-dependent tree SHAP explainer for a random forest using Alibi we use: -Given a coalition, we want to approximate the interventional conditional expectation. We apply the tree to the features -present in the coalition like we usually would, with the only difference being when a feature is missing from the -coalition. In this case, we take both routes down the tree, weighting each by the proportion of samples from the -training dataset that go each way. For this algorithm to work, we need the tree to record how it splits the training -dataset. We don't need the dataset itself, however, unlike the interventional TreeSHAP algorithm. +```ipython3 +from alibi.explainers import TreeShap +path_dependent_explainer = TreeShap(rfc, model_output='raw', task='classification') +path_dependent_explainer.fit() +result = path_dependent_explainer.explain(scaler.transform(x)) -Doing this for each possible set $S$ involves $O(TL2^M)$ time complexity. We can significantly improve the algorithm to -polynomial-time by computing the path of all sets simultaneously. The intuition here is to imagine standing at the first -node and counting the number of subsets that will go one way, the number that will go the other, and the number that -will go both (in the case of missing features). Because we assign different sized subsets different weights, we also -need to distinguish the above numbers passing into each tree branch by their size. Finally, we also need to keep track -of the proportion of sets of each size in each branch that contains a feature $i$ and the proportion that don't. Once -all these sets have flowed down to the leaves of the tree, then we can compute the Shapley values. Doing this gives us -$O(TLD^2)$ time complexity. +plot_importance(result.shap_values[1], features, '"Good"') +``` -**Pros** +From this we obtain: -- Very fast for a valuable category of models -- Doesn't require access to the training data -- The Shapley values are fairly distributed among the feature values -- Shapley values can be easily interpreted and visualized +```{image} images/pd-tree-shap-lfa.png +:align: center +:alt: Path-dependent tree SHAP applied to Wine quality dataset for class "Good" +``` -**Cons** +This result is similar to the one for [integrated gradients](comparison-to-ale) and [kernel SHAP](kern-shap-plot) +although there are differences due to using different methods and models in each case. -- Only applies to Tree-based models -- Uses an approximation of the interventional conditional expectation instead of computing it directly +| Pros | Cons | +|----------------------------------------------------------|------------------------------------------------------------------------------------------------------| +| [Satisfies several desirable properties](lfa-properties) | Only applies to tree-based models | +| Very fast for a valuable category of models | Uses an approximation of the interventional conditional expectation instead of computing it directly | +| Doesn't require access to the training data | | +| Shapley values can be easily interpreted and visualized | | ### Interventional Tree SHAP +| Explainer | Scope | Model types | Task types | Data types | Use | +|----------------------------|-------|-------------|----------------------------|----------------------|------------------------------------------------------------| +| Tree SHAP (interventional) | Local | White-box | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | + +The main difference between this and the last method is that the path-dependent method approximates the interventional +conditional expectation, whereas the interventional method calculates it directly. + The interventional TreeSHAP method takes a different approach. Suppose we sample a reference data point, $r$, from the training dataset. Let $F$ be the set of all features. For each feature, $i$, we then enumerate over all subsets of $S\subset F \setminus \{i\}$. If a subset is missing a feature, we replace it with the corresponding one in the @@ -591,20 +608,14 @@ Applied to a random forest with $T$ trees and using $R$ samples to compute the e complexity. The fact that we can sum over each tree in the random forest results from the linearity property of Shapley values. -**Pros** - -- Very fast for a valuable category of models -- The Shapley values are fairly distributed among the feature values -- Shapley values can be easily interpreted and visualized -- Computes the interventional conditional expectation exactly unlike the path-dependent method - -**Cons** - -- Less general as a white-box method -- Requires access to the dataset -- Typically, slower than the path-dependent method +| Pros | Cons | +|-----------------------------------------------------------------------------------------------|---------------------------------------------------| +| [Satisfies several desirable properties](lfa-properties) | Less general as a white-box method | +| Very fast for a valuable category of models | Requires access to the dataset | +| Shapley values can be easily interpreted and visualized | Typically, slower than the path-dependent method | +| Computes the interventional conditional expectation exactly unlike the path-dependent method | | -### Counterfactuals +## 4. Counterfactuals Given an instance of the dataset and a prediction given by a model, a question naturally arises how would the instance minimally have to change for a different prediction to be provided. Counterfactuals are local explanations as they diff --git a/doc/source/overview/images/pd-tree-shap-lfa.png b/doc/source/overview/images/pd-tree-shap-lfa.png new file mode 100644 index 0000000000000000000000000000000000000000..5bc8856b1f855c3bf0a0b4b1d472d222c3b35575 GIT binary patch literal 26765 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 Date: Wed, 8 Dec 2021 18:38:45 +0000 Subject: [PATCH 36/60] Add PR changes for interventional tree SHAP method section --- doc/source/overview/high_level.md | 80 +++++++++++------- .../overview/images/int-tree-shap-lfa.png | Bin 0 -> 26600 bytes 2 files changed, 50 insertions(+), 30 deletions(-) create mode 100644 doc/source/overview/images/int-tree-shap-lfa.png diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index edc8e953a..e8675533b 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -563,6 +563,8 @@ plot_importance(result.shap_values[1], features, '"Good"') From this we obtain: +(pd-tree-shap-plot)= + ```{image} images/pd-tree-shap-lfa.png :align: center :alt: Path-dependent tree SHAP applied to Wine quality dataset for class "Good" @@ -584,36 +586,54 @@ although there are differences due to using different methods and models in each |----------------------------|-------|-------------|----------------------------|----------------------|------------------------------------------------------------| | Tree SHAP (interventional) | Local | White-box | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | -The main difference between this and the last method is that the path-dependent method approximates the interventional -conditional expectation, whereas the interventional method calculates it directly. - -The interventional TreeSHAP method takes a different approach. Suppose we sample a reference data point, $r$, from the -training dataset. Let $F$ be the set of all features. For each feature, $i$, we then enumerate over all subsets of -$S\subset F \setminus \{i\}$. If a subset is missing a feature, we replace it with the corresponding one in the -reference sample. We can then compute $f(S)$ directly for each coalition $S$ to get the Shapley values. One major -difference here is combining each $S$ and $r$ to generate a data point. Enforcing independence of the $S$ and -$F\setminus S$ in this way is known as intervening in the underlying data distribution and is where the algorithm's name -comes from. Note that this breaks any independence between features in the dataset, which means the data points we're -sampling won't be realistic. - -For a single Tree and sample $r$ if we iterate over all the subsets of $S \subset F \setminus \{i\}$, the interventional -TreeSHAP method runs with $O(M2^M)$. Note that there are two paths through the tree of particular interest. The first is -the instance path for $x$, and the second is the sampled/reference path for $r$. Computing the Shapley value estimate -for the sampled $r$ will involve replacing $x$ with values of $r$ and generating a set of perturbed paths. Instead of -iterating over the sets, we sum over the paths. Doing so is faster as many of the routes within the tree have -overlapping components. We can compute them all at the same time instead of one by one. Doing this means the -Interventional TreeSHAP algorithm obtains $O(LD)$ time complexity. - -Applied to a random forest with $T$ trees and using $R$ samples to compute the estimates, we obtain $O(TRLD)$ time -complexity. The fact that we can sum over each tree in the random forest results from the linearity property of Shapley -values. - -| Pros | Cons | -|-----------------------------------------------------------------------------------------------|---------------------------------------------------| -| [Satisfies several desirable properties](lfa-properties) | Less general as a white-box method | -| Very fast for a valuable category of models | Requires access to the dataset | -| Shapley values can be easily interpreted and visualized | Typically, slower than the path-dependent method | -| Computes the interventional conditional expectation exactly unlike the path-dependent method | | +Suppose we sample a reference data point, $r$, from the training dataset. Let $F$ be the set of all features. For each +feature, $i$, we then enumerate over all subsets of $S\subset F \setminus \{i\}$. If a subset is missing a feature, we +replace it with the corresponding one in the reference sample. We can then compute $f(S)$ directly for each member of +the power set of instance features to get the Shapley values. + +Enforcing independence of the $S$ and $F\setminus S$ in this way is known as intervening in the underlying data +distribution and is the source of the algorithm's name. Note that this breaks any independence between features in the +dataset, which means the data points we're sampling won't always be realistic. + +For a single tree and sample $r$ if we iterate over all the subsets of $S \subset F \setminus \{i\}$, it would give $O( +M2^M)$ time complexity. The interventional tree SHAP algorithm runs +with [$O(TLD)$](https://hughchen.github.io/its_blog/index.html) time complexity. + +The main difference between the interventional and the path-dependent tree SHAP methods is that the latter approximates +the interventional conditional expectation, whereas the former method calculates it directly. + +To compute the interventional tree SHAP explainer for a random forest using Alibi, we use: + +```ipython3 +from alibi.explainers import TreeShap + +tree_explainer_interventional = TreeShap(rfc, model_output='raw', task='classification') +tree_explainer_interventional.fit(scaler.transform(X_train[0:100])) +result = tree_explainer_interventional.explain(scaler.transform(x)) + +plot_importance(result.shap_values[1], features, '"Good"') +``` + +From this we obtain: + +```{image} images/int-tree-shap-lfa.png +:align: center +:alt: Interventional tree SHAP applied to Wine quality dataset for class "Good" +``` + +This result is similar to the one for [integrated gradients](comparison-to-ale), [kernel SHAP](kern-shap-plot) +, [path dependent tree SHAP](pd-tree-shap-plot) although there are differences due to using different methods and models +in each case. + +For a great interactive explanation of the interventional tree SHAP +method [see](https://hughchen.github.io/its_blog/index.html). + +| Pros | Cons | +|-----------------------------------------------------------------------------------------------|-------------------------------------------------| +| [Satisfies several desirable properties](lfa-properties) | Only applies to tree-based models | +| Very fast for a valuable category of models | Requires access to the dataset | +| Shapley values can be easily interpreted and visualized | Typically slower than the path-dependent method | +| Computes the interventional conditional expectation exactly unlike the path-dependent method | | ## 4. Counterfactuals diff --git a/doc/source/overview/images/int-tree-shap-lfa.png b/doc/source/overview/images/int-tree-shap-lfa.png new file mode 100644 index 0000000000000000000000000000000000000000..a43cb9a12fa1b6034c9e9190e8feae7e4413e1bd GIT binary patch literal 26600 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 Date: Thu, 9 Dec 2021 15:15:03 +0000 Subject: [PATCH 37/60] First draft PR changes to counterfactuals intro section --- doc/source/overview/high_level.md | 110 ++++++++++++------ .../images/interp-and-non-interp-cfs.png | Bin 0 -> 17308 bytes doc/source/overview/images/interp-cfs.png | Bin 0 -> 28882 bytes doc/source/overview/images/rlcf-digits.png | Bin 0 -> 23983 bytes 4 files changed, 73 insertions(+), 37 deletions(-) create mode 100644 doc/source/overview/images/interp-and-non-interp-cfs.png create mode 100644 doc/source/overview/images/interp-cfs.png create mode 100644 doc/source/overview/images/rlcf-digits.png diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index e8675533b..7833fd964 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -133,7 +133,7 @@ practitioner an understanding of which explainers are suitable in which situatio | [Kernel SHAP](#kernel-shap) | Local | Black-box | Classification, Regression | Tabular, Categorical | "" | | [Tree SHAP (path-dependent)](#path-dependent-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | | [Tree SHAP (interventional)](#interventional-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | -| [Counterfactuals Instances](#counterfactuals-instances) | Local | Black-box/White-box | Classification | Tabular, Image | What minimal change to features is required to reclassify the current prediction? | +| [Counterfactuals Instances](#counterfactual-instances) | Local | Black-box/White-box | Classification | Tabular, Image | What minimal change to features is required to reclassify the current prediction? | | [Contrastive Explanation Method](#contrastive-explanation-method) | Local | Black-box/White-box | Classification | Tabular, Image | "" | | [Counterfactuals Guided by Prototypes](#counterfactuals-guided-by-prototypes) | Local | Black-box/White-box | Classification | Tabular, Categorical, Image | "" | | [counterfactuals-with-reinforcement-learning](#counterfactuals-with-reinforcement-learning) | Local | Black-box | Classification | Tabular, Categorical, Image | "" | @@ -318,7 +318,7 @@ primarily in the fact that they aren't constructed to maximize coverage. The met different. The rough idea is to define an **absence of a feature** and then perturb the instance to take away as much information as possible while still retaining the original classification. Note that these are a subset of the [CEM](../methods/CEM.ipynb) method which is also used to -construct [pertinent negatives/counterfactuals](#4-counterfactuals). +construct [pertinent negatives/counterfactuals](#4-counterfactual-instances). ```{image} images/pp_mnist.png :align: center @@ -622,7 +622,7 @@ From this we obtain: ``` This result is similar to the one for [integrated gradients](comparison-to-ale), [kernel SHAP](kern-shap-plot) -, [path dependent tree SHAP](pd-tree-shap-plot) although there are differences due to using different methods and models +, [path-dependent tree SHAP](pd-tree-shap-plot) although there are differences due to using different methods and models in each case. For a great interactive explanation of the interventional tree SHAP @@ -635,59 +635,95 @@ method [see](https://hughchen.github.io/its_blog/index.html). | Shapley values can be easily interpreted and visualized | Typically slower than the path-dependent method | | Computes the interventional conditional expectation exactly unlike the path-dependent method | | -## 4. Counterfactuals +## 4. Counterfactual instances Given an instance of the dataset and a prediction given by a model, a question naturally arises how would the instance -minimally have to change for a different prediction to be provided. Counterfactuals are local explanations as they +minimally have to change for a different prediction to be provided. Such a generated instance is known as a +[counterfactual](https://en.wikipedia.org/wiki/Counterfactual_thinking). Counterfactuals are local explanations as they relate to a single instance and model prediction. -Given a classification model trained on the MNIST dataset and a sample from the dataset with a given prediction, a -counterfactual would be a generated image that closely resembles the original but is changed enough that the model -correctly classifies it as a different number. +Given a classification model trained on the MNIST dataset and a sample from the dataset, a counterfactual would be a +generated image that closely resembles the original but is changed enough that the model classifies it as a different +number from the original instance. -__TODO__: +```{figure} images/rlcf-digits.png +:align: center +:alt: Samples from MNIST and counterfactuals for each. + +*From Samoilescu RF et al., Model-agnostic and Scalable Counterfactual Explanations via Reinforcement Learning, 2021* +``` + +Counterfactuals can be used to +both [debug and augment](https://research-information.bris.ac.uk/en/publications/counterfactual-explanations-of-machine-learning-predictions-oppor) +model functionality. Given tabular data that a model uses to make financial decisions about a customer, a counterfactual +would explain how to change their behavior to obtain a different conclusion. Alternatively, it may tell the Machine +Learning Engineer that the model is drawing incorrect assumptions if the recommended changes involve features that are +irrelevant to the given decision. However, practitioners must still be wary of [bias](#biases). + +A counterfactual, $x_{\text{cf}}$, needs to satisfy + +- The model prediction on $x_{\text{cf}}$ needs to be close to the pre-defined output (e.g. desired class label). +- The counterfactual $x_{\text{cf}}$ should be interpretable. + +The first requirement is clear. The second, however, requires some idea of what interpretable means. Alibi exposes four +methods for finding counterfactuals: [**counterfactual instances** (CFI)](#counterfactual-instances), [**contrastive +explanations** (CEM)](#contrastive-explanation-method), [**counterfactuals guided by +prototypes** (CFP)](#counterfactuals-guided-by-prototypes), and [**counterfactuals with reinforcement +learning** (CFRL)](#counterfactuals-with-reinforcement-learning). Each of these methods deals with interpretability +slightly differently. However, all of them require sparsity of the solution. This means we prefer to only change a small +subset of the features which limits the complexity of the solution making it more understandable. + +Note that sparse changes to the instance of interest doesn't guarantee that the generated counterfactual is believably a +member of the data distribution. **[CEM](#contrastive-explanation-method)** +, **[CFP](#counterfactuals-guided-by-prototypes)**, and **[CFRL](#counterfactuals-with-reinforcement-learning)** also +require that the counterfactual be in distribution in order to be interpretable. -- Give example image to illustrate +```{figure} images/interp-and-non-interp-cfs.png +:align: center +:alt: Examples of counterfactuals constructed using CFI and CFP methods -Similarly, given tabular data that a model uses to make financial decisions about a customer, a counterfactual would -explain how to change their behavior to obtain a different conclusion. Alternatively, it may tell the Machine Learning -Engineer that the model is drawing incorrect assumptions if the recommended changes involve features that are irrelevant -to the given decision. +*Original MNIST 7 instance, Counterfactual instances constructed using 1) **counterfactual instances** method, +2) **counterfactual instances with prototypes** method* +``` -A counterfactual, $x_{cf}$, needs to satisfy +The first three methods **[CFI](#counterfactual-instances)**, **[CEM](#contrastive-explanation-method)** +, **[CFP](#counterfactuals-guided-by-prototypes)** all construct counterfactuals using a very similar method. They build +them by defining a loss that prefer interpretable instances close to the target class. They then use gradient descent to +move within the feature space until they obtain a counterfactual of sufficient quality. The main difference is the +**CEM** and **CFP** methods also train an autoencoder to ensure that the constructed counterfactuals are within the +data-distribution. -- The model prediction on $x_{cf}$ needs to be close to the predefined output. -- The counterfactual $x_{cf}$ should be interpretable. +```{figure} images/interp-cfs.png +:align: center +:alt: Construction of different types of interpretable counterfactuals + +*Obtaining counterfactuals using gradient descent with and without autoencoder trained on data distribution* +``` -The first requirement is easy enough to satisfy. The second, however, requires some idea of what interpretable means. -Intuitively it would require that the counterfactual construction makes sense as an instance of the dataset. Each of the -methods available in Alibi deals with interpretability slightly differently. All of them require that the perturbation -$\delta$ that changes the original instance $x_0$ into $x_{cf} = x_0 + \delta$ should be sparse. Meaning, we prefer -solutions that change a small subset of the features to construct $x_{cf}$. Requiring this limits the complexity of the -solution making it more understandable. +These three methods only realistically work for grayscale images and anything multi-channel will not be interpretable. +In order to get quality results for multi-channel images practitioners should +use [CFRL](#counterfactuals-with-reinforcement-learning). + +[CFRL](#counterfactuals-with-reinforcement-learning) uses a similar loss to CEM and CFP but applies reinforcement +learning to train a model which will generate counterfactuals on demand. :::{admonition} **Note 3: fit and explain method runtime differences** -Alibi explainers expose two methods, `fit` and `explain`. Typically, in machine learning, the method that takes the most +Alibi explainers expose two methods, `fit` and `explain`. Typically in machine learning the method that takes the most time is the fit method, as that's where the model optimization conventionally takes place. In explainability, the explain step often requires the bulk of computation. However, this isn't always the case. -Among the explainers in this section, there are two approaches taken. The first fits a counterfactual when the user +Among the explainers in this section, there are two approaches taken. The first finds a counterfactual when the user requests the insight. This happens during the `.explain()` method call on the explainer class. This is done by running -gradient descent on model inputs to find a counterfactual. The methods that take this approach are counterfactual -instances, contrastive explanation, and counterfactuals guided by prototypes methods. Thus, the `fit` method in these +gradient descent on model inputs to find a counterfactual. The methods that take this approach are **counterfactual +instances**, **contrastive explanation**, and **counterfactuals guided by prototypes**. Thus, the `fit` method in these cases are quick, but the `explain` method is slow. -The other approach, however, uses reinforcement learning to train a model that produces explanations on demand. The -training takes place during the `fit` method call, so this has a long runtime while the `explain` method is quick. If -you want performant explanations in production environments, then the latter approach is preferable. +The other approach, **counterfactuals with reinforcement learning**, trains a model that produces explanations on +demand. The training takes place during the `fit` method call, so this has a long runtime while the `explain` method is +quick. If you want performant explanations in production environments, then the latter approach is preferable. ::: -__TODO__: - -- schematic image explaining search for counterfactual as determined by loss -- schematic image explaining difference between different approaches. - -### Counterfactuals Instances +### Counterfactual Instances | Model-types | Task-types | Data-types | | ----------- | -------------- | ----------- | @@ -741,7 +777,7 @@ for a feature to be present so that the perturbation only works to add and not r dataset, an obvious choice of "present" feature is if the pixel is equal to 1 and absent if it is equal to 0. This is simple in the case of the MNIST data set but more difficult in complex domains such as color images. -Thirdly, by training an optional autoencoder to penalize counter factual instances that deviate from the data +Thirdly, by training an optional autoencoder to penalize counterfactual instances that deviate from the data distribution. This works by minimizing the reconstruction loss of the autoencoder applied to instances. If a generated instance is unlike anything in the dataset, the autoencoder will struggle to recreate it well, and its loss term will be high. We require two hyperparameters $\beta$ and $\gamma$ to define the following Loss, diff --git a/doc/source/overview/images/interp-and-non-interp-cfs.png b/doc/source/overview/images/interp-and-non-interp-cfs.png new file mode 100644 index 0000000000000000000000000000000000000000..845a5463ee003ccbfe7e8b713db243a11c8e47c4 GIT binary patch literal 17308 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 F{(r0@Dro=! literal 0 HcmV?d00001 diff --git a/doc/source/overview/images/rlcf-digits.png b/doc/source/overview/images/rlcf-digits.png new file mode 100644 index 0000000000000000000000000000000000000000..033741d98a8cc41e80e9aeaa633d7437c2fd0c37 GIT binary patch literal 23983 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 ezW0C3a*p!Xy_!PPCzVa)QuN) Date: Mon, 13 Dec 2021 19:44:44 +0000 Subject: [PATCH 38/60] Add changes for counterfactual section --- doc/source/overview/high_level.md | 357 ++++++++++++------ doc/source/overview/images/cem-non-interp.png | Bin 0 -> 9576 bytes 2 files changed, 235 insertions(+), 122 deletions(-) create mode 100644 doc/source/overview/images/cem-non-interp.png diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 7833fd964..32d07b86b 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -1,4 +1,4 @@ -## Introduction +# Introduction ```{contents} :depth: 3 @@ -128,13 +128,13 @@ practitioner an understanding of which explainers are suitable in which situatio |---------------------------------------------------------------------------------------------|--------|---------------------|----------------------------|------------------------------------------|-------------------------------------------------------------------------------------------------| | [Accumulated Local Effects](#accumulated-local-effects) | Global | Black-box | Classification, Regression | Tabular | How does model prediction vary with respect to features of interest | | [Anchors](#anchors) | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | -| [Pertinent Positives](#pertinent-positives) | Local | Black-box/White-box | Classification | Tabular, Image | "" | +| [Pertinent Positives](#contrastive-explanation-method-pertinent-positives) | Local | Black-box/White-box | Classification | Tabular, Image | "" | | [Integrated Gradients](#integrated-gradients) | Local | White-box | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | | [Kernel SHAP](#kernel-shap) | Local | Black-box | Classification, Regression | Tabular, Categorical | "" | | [Tree SHAP (path-dependent)](#path-dependent-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | | [Tree SHAP (interventional)](#interventional-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | | [Counterfactuals Instances](#counterfactual-instances) | Local | Black-box/White-box | Classification | Tabular, Image | What minimal change to features is required to reclassify the current prediction? | -| [Contrastive Explanation Method](#contrastive-explanation-method) | Local | Black-box/White-box | Classification | Tabular, Image | "" | +| [Contrastive Explanation Method](#contrastive-explanation-method-pertinent-negatives) | Local | Black-box/White-box | Classification | Tabular, Image | "" | | [Counterfactuals Guided by Prototypes](#counterfactuals-guided-by-prototypes) | Local | Black-box/White-box | Classification | Tabular, Categorical, Image | "" | | [counterfactuals-with-reinforcement-learning](#counterfactuals-with-reinforcement-learning) | Local | Black-box | Classification | Tabular, Categorical, Image | "" | @@ -186,7 +186,7 @@ Hence, we see the model predicts higher alcohol content wines as being better: :alt: ALE Plot of wine quality "good" class probability dependency on alcohol ``` -:::{admonition} **Note 4: Categorical Variables and ALE** +:::{admonition} **Note 2: Categorical Variables and ALE** Note that while ALE is well-defined on numeric tabular data, it isn't on categorical data. This is because it's unclear what the difference between two categorical values should be. Note that if the dataset has a mix of categorical and numerical features, we can always take the ALE of the numerical ones. @@ -204,7 +204,8 @@ numerical features, we can always take the ALE of the numerical ones. Local necessary features tell us what features need to stay the same for a specific instance in order for the model to give the same classification. In the case of a trained image classification model, local necessary features for a given instance would be a minimal subset of the image that the model uses to make its decision. Alibi provides two explainers -for computing local necessary features: [anchors](#anchors) and [pertinent positives](#pertinent-positives). +for computing local necessary features: [anchors](#anchors) +and [pertinent positives](#contrastive-explanation-method-pertinent-positives). ### Anchors @@ -306,7 +307,7 @@ required predictive property. This makes them less interpretable. | | High dimensional feature spaces such as images need to be reduced to improve the runtime complexity | | | Practitioners may need domain-specific knowledge to correctly sample from the conditional probability | -### Pertinent Positives +### Contrastive Explanation Method (Pertinent Positives) | Explainer | Scope | Model types | Task types | Data types | Use | |---------------------|-------|---------------------|----------------|----------------|-------------------------------------------------------------------------------------------------| @@ -340,7 +341,9 @@ the [MNIST digits](http://yann.lecun.com/exdb/mnist/), it's reasonable to assume digit represents an absence of information. Similarly, in the case of color images, you might take the median pixel value to convey no information, and moving away from this value adds information. For numeric tabular data we can use the feature mean. In general, having to choose a non-informative value for each feature is non-trivial and domain -knowledge is required. +knowledge is required. This is the reverse to +the [contrastive explanation method (pertinent-negatives)](#contrastive-explanation-method-pertinent-negatives) method +introduced in the section on [counterfactual instances](#4-counterfactual-instances). Note that we need to compute the loss gradient through the model. If we have access to the internals, we can do this directly. Otherwise, we need to use numerical differentiation at a high computational cost due to the extra model calls @@ -423,7 +426,7 @@ assigns the probability of each class equally. This is dependent on domain knowl MNIST for instance a common choice is an image set to black. For numerical tabular data we can set the baseline as the average of each feature. -:::{admonition} **Note 5: Choice of Baseline** +:::{admonition} **Note 3: Choice of Baseline** (choice-of-baseline)= @@ -458,7 +461,7 @@ This gives: :alt: IG applied to Wine quality dataset for class "Good" ``` -:::{admonition} **Note 6: Comparison to ALE** +:::{admonition} **Note 4: Comparison to ALE** (comparison-to-ale)= @@ -666,15 +669,16 @@ A counterfactual, $x_{\text{cf}}$, needs to satisfy - The counterfactual $x_{\text{cf}}$ should be interpretable. The first requirement is clear. The second, however, requires some idea of what interpretable means. Alibi exposes four -methods for finding counterfactuals: [**counterfactual instances** (CFI)](#counterfactual-instances), [**contrastive -explanations** (CEM)](#contrastive-explanation-method), [**counterfactuals guided by -prototypes** (CFP)](#counterfactuals-guided-by-prototypes), and [**counterfactuals with reinforcement -learning** (CFRL)](#counterfactuals-with-reinforcement-learning). Each of these methods deals with interpretability -slightly differently. However, all of them require sparsity of the solution. This means we prefer to only change a small -subset of the features which limits the complexity of the solution making it more understandable. +methods for finding counterfactuals: **[counterfactual instances (CFI)](#counterfactual-instances)** +, **[contrastive explanations (CEM)](#contrastive-explanation-method-pertinent-negatives)** +, **[counterfactuals guided by prototypes (CFP)](#counterfactuals-guided-by-prototypes)**, +and **[counterfactuals with reinforcement learning (CFRL)](#counterfactuals-with-reinforcement-learning)**. Each of +these methods deals with interpretability slightly differently. However, all of them require sparsity of the solution. +This means we prefer to only change a small subset of the features which limits the complexity of the solution making it +more understandable. Note that sparse changes to the instance of interest doesn't guarantee that the generated counterfactual is believably a -member of the data distribution. **[CEM](#contrastive-explanation-method)** +member of the data distribution. **[CEM](#contrastive-explanation-method-pertinent-negatives)** , **[CFP](#counterfactuals-guided-by-prototypes)**, and **[CFRL](#counterfactuals-with-reinforcement-learning)** also require that the counterfactual be in distribution in order to be interpretable. @@ -686,7 +690,8 @@ require that the counterfactual be in distribution in order to be interpretable. 2) **counterfactual instances with prototypes** method* ``` -The first three methods **[CFI](#counterfactual-instances)**, **[CEM](#contrastive-explanation-method)** +The first three methods **[CFI](#counterfactual-instances)** +, **[CEM](#contrastive-explanation-method-pertinent-negatives)** , **[CFP](#counterfactuals-guided-by-prototypes)** all construct counterfactuals using a very similar method. They build them by defining a loss that prefer interpretable instances close to the target class. They then use gradient descent to move within the feature space until they obtain a counterfactual of sufficient quality. The main difference is the @@ -707,7 +712,7 @@ use [CFRL](#counterfactuals-with-reinforcement-learning). [CFRL](#counterfactuals-with-reinforcement-learning) uses a similar loss to CEM and CFP but applies reinforcement learning to train a model which will generate counterfactuals on demand. -:::{admonition} **Note 3: fit and explain method runtime differences** +:::{admonition} **Note 5: fit and explain method runtime differences** Alibi explainers expose two methods, `fit` and `explain`. Typically in machine learning the method that takes the most time is the fit method, as that's where the model optimization conventionally takes place. In explainability, the explain step often requires the bulk of computation. However, this isn't always the case. @@ -725,14 +730,13 @@ quick. If you want performant explanations in production environments, then the ### Counterfactual Instances -| Model-types | Task-types | Data-types | -| ----------- | -------------- | ----------- | -| TF/Kera | Classification | Tabular | -| Black-box | | Image | +| Explainer | Scope | Model types | Task types | Data types | Use | +|----------------------------------------------|--------|---------------------|----------------------------|------------------------------------------|-------------------------------------------------------------------------------------------------| +| Counterfactuals Instances | Local | Black-box/White-box | Classification | Tabular, Image | What minimal change to features is required to reclassify the current prediction? | -Let the model be given by $f$, and let $p_t$ be the target probability of class $t$. Let $0<\lambda<1$ be a -hyperparameter. This method constructs counterfactual instances from an instance $X$ by running gradient descent on a -new instance $X'$ to minimize the following loss. +Let the model be given by $f$, and let $p_t$ be the target probability of class $t$. Let $\lambda$ be a hyperparameter. +This method constructs counterfactual instances from an instance $X$ by running gradient descent on a new instance $X'$ +to minimize the following loss: $$L(X', X)= (f_{t}(X') - p_{t})^2 + \lambda L_{1}(X', X)$$ @@ -745,28 +749,51 @@ considerable performance cost. A problem arises here in that encouraging sparse solutions doesn't necessarily generate interpretable counterfactuals. This happens because the loss doesn't prevent the counterfactual solution from moving off the data distribution. Thus, -you will likely get an answer that doesn't look like something that you'd expect to see from the data. +you will likely get an answer that doesn't look like something that you would expect to see from the data. -__TODO:__ +To use the counterfactual instances method from Alibi applied to the wine quality dataset use: -- Picture example. Something similar to: https://github.com/interpretml/DiCE +```ipython3 +from alibi.explainers import Counterfactual + +explainer = Counterfactual( + model, shape=(1,) + X_train.shape[1:], target_proba=0.51, tol=0.01, target_class='other', + max_iter=1000, lam_init=1e-1, max_lam_steps=10, learning_rate_init=0.1, + feature_range=(scaler.transform(X_train).min(), scaler.transform(X_train).max()) + +result_cf = explainer.explain(scaler.transform(x)) +) +``` -**Pros** +(cfi-results)= -- Both a black and white-box method -- Doesn't require access to the training dataset +This yields the following result: -**Cons** +| feature | instance | counterfactual | +|-----------------------------|----------|----------------| +| fixed acidity | 9.2 | 9.23 | +| volatile acidity | 0.36 | 0.36 | +| citric acid | 0.34 | 0.334 | +| residual sugar | 1.6 | 1.582 | +| chlorides | 0.062 | 0.061 | +| free sulfur dioxide | 5.0 | 4.955 | +| total sulfur dioxide | 12.0 | 11.324 | +| density | 0.997 | 0.997 | +| pH | 3.2 | 3.199 | +| sulphates | 0.67 | 0.64 | +| alcohol | 10.5 | 9.88 | -- Not likely to give human interpretable instances -- Requires configuration in the choice of $\lambda$ +| pros | cons | +|------------------------------------------------|---------------------------------------------------------------------------| +| Both a black-box and white-box method | Not likely to give human interpretable instances | +| Doesn't require access to the training dataset | Requires tuning of $\lambda$ hyperparameter | +| | Slow for black-box models due to having to numerically evaluate gradients | -### Contrastive Explanation Method +### Contrastive Explanation Method (Pertinent Negatives) -| Model-types | Task-types | Data-types | -| ----------- | -------------- | ----------- | -| TF/Kera | Classification | Tabular | -| Black-box | | Image | +| Explainer | Scope | Model types | Task types | Data types | Use | +|----------------------------------------------|--------|---------------------|----------------------------|-------------------------|-----------------------------------------------------------------------------------| +| Contrastive Explanation Method | Local | Black-box/White-box | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | CEM follows a similar approach to the above but includes three new details. Firstly an elastic net $\beta L_{1} + L_{2}$ regularizer term is added to the loss. This term causes the solutions to be both close to the original instance and @@ -775,124 +802,210 @@ sparse. Secondly, we require that $\delta$ only adds new features rather than takes them away. We need to define what it means for a feature to be present so that the perturbation only works to add and not remove them. In the case of the MNIST dataset, an obvious choice of "present" feature is if the pixel is equal to 1 and absent if it is equal to 0. This is -simple in the case of the MNIST data set but more difficult in complex domains such as color images. +simple in the case of the MNIST data set but more difficult in complex domains such as colour images. -Thirdly, by training an optional autoencoder to penalize counterfactual instances that deviate from the data -distribution. This works by minimizing the reconstruction loss of the autoencoder applied to instances. If a generated -instance is unlike anything in the dataset, the autoencoder will struggle to recreate it well, and its loss term will be -high. We require two hyperparameters $\beta$ and $\gamma$ to define the following Loss, +Thirdly, by training an autoencoder to penalize counterfactual instances that deviate from the data distribution. This +works by minimizing the reconstruction loss of the autoencoder applied to instances. If a generated instance is unlike +anything in the dataset, the autoencoder will struggle to recreate it well, and its loss term will be high. We require +three hyperparameters $c$, $\beta$ and $\gamma$ to define the following loss: -$$L(X'|X)= (f_{t}(X') - p_{t})^2 + \beta L_{1}(X', X) + L_{2}(X', X)^2 + \gamma L_{2} (X', AE(X'))^2$$ +$$ L = c\cdot L_{pred}(\delta) + \beta L_{1}(\delta, x) + L_{2}^{2}(\delta, x) + \gamma \|\delta - AE(\delta)\|^{2}_{2} +$$ -This approach extends the definition of interpretable to include a requirement that the computed counterfactual be -believably a member of the dataset. It turns out that minimizing this loss isn't enough to always get interpretable -results. And in particular, the constructed counterfactual often doesn't look like a member of the target class. +A subtle aspect of this method is that it requires defining the absence or presence of features as delta is restrained +only to allow you to add information. For the MNIST digits, it's reasonable to assume that the black background behind +each written number represents an absence of information. Similarly, in the case of colour images, you might take the +median pixel value to convey no information, and moving away from this value adds information. For numeric tabular data, +we can use the feature mean. In general, choosing a non-informative value for each feature is non-trivial, and domain +knowledge is required. This is the reverse process to +the [contrastive explanation method (pertinent-positives)](#contrastive-explanation-method-pertinent-positives) method +introduced in the section on [local necessary features](#2-local-necessary-features) in which they take away features +rather than add them. -Similar to the previous method, this method can apply to both black and white-box models. In the black-box case, there -is still a performance cost from computing the numerical gradients. +This approach extends the definition of interpretable to include a requirement that the computed counterfactual be +believably a member of the dataset. This isn't always satisfied (see image below). In particular, the constructed +counterfactual often doesn't look like a member of the target class. -__TODO:__ +```{image} images/cem-non-interp.png +:align: center +:alt: Example of less interpretable result obtained by CEM +``` -- Picture example of results including less interpretable ones. +To compute a pertinent-negative using Alibi we use: -**Pros** +```ipython3 +from alibi.explainers import CEM -- Provides more interpretable instances than the counterfactual instances' method. +feature_range = (scaler.transform(X_train).min(axis=0).reshape(shape)-.1, + scaler.transform(X_train).max(axis=0).reshape(shape)+.1) -**Cons** +cem = CEM(model, mode='PN', shape=(1,) + X_train.shape[1:], kappa=0.2, beta=0.1, + feature_range=feature_range, max_iterations=1000, c_init=10, c_steps=10, + learning_rate_init=1e-2, clip=(-1000, 1000), ae_model=ae) + +cem.fit(scaler.transform(X_train), no_info_type='median') +result_cem = cem.explain(scaler.transform(x), verbose=False) +``` -- Requires access to the dataset to train the autoencoder -- Requires setup and configuration in choosing $\gamma$ and $\beta$ and training the autoencoder -- Requires domain knowledge when choosing what it means for a feature to be present or not +This gives the following: + +| feature | instance | counterfactual | +|-----------------------------|----------|----------------| +| fixed acidity | 9.2 | 9.2 | +| volatile acidity | 0.36 | 0.36 | +| citric acid | 0.34 | 0.34 | +| residual sugar | 1.6 | 1.6 | +| chlorides | 0.062 | 0.062 | +| free sulfur dioxide | 5.0 | 5.0 | +| total sulfur dioxide | 12.0 | 12.0 | +| density | 0.997 | 0.997 | +| pH | 3.2 | 3.2 | +| sulphates | 0.67 | 0.57 | +| alcohol | 10.5 | 9.688 | + +This method can apply to both black-box and white-box models. There is a performance cost from computing the numerical +gradients in the black-box case due to having to numerically evaluate gradients. + +| pros | cons | +|----------------------------------------------------------------------------------|------------------------------------------------------------------------------------------| +| Provides more interpretable instances than the counterfactual instances' method. | Requires access to the dataset to train the autoencoder | +| Applies to both white and black-box models | Requires setup and configuration in choosing $c$, $\gamma$ and $\beta$ | +| | Requires training an autoencoder | +| | Requires domain knowledge when choosing what it means for a feature to be present or not | +| | Slow for black-box models | ### Counterfactuals Guided by Prototypes -| Model-types | Task-types | Data-types | -| ----------- | -------------- | ----------- | -| TF/Kera | Classification | Tabular | -| Black-box | | Image | -| | | Categorical | - -- Black/white-box method -- Classification models -- Tabular, image and categorical data types +| Explainer | Scope | Model types | Task types | Data types | Use | +|--------------------------------------|-------|---------------------|----------------|-----------------------------|-----------------------------------------------------------------------------------| +| Counterfactuals Guided by Prototypes | Local | Black-box/White-box | Classification | Tabular, Categorical, Image | What minimal change to features is required to reclassify the current prediction? | For this method, we add another term to the loss that optimizes for the distance between the counterfactual instance and -close members of the target class. In doing this, we require interpretability also to mean that the generated -counterfactual is believably a member target class and not just in the data distribution. +representative members of the target class. In doing this, we require interpretability also to mean that the generated +counterfactual is believably a member of the target class and not just in the data distribution. -With hyperparameters $c$, $\gamma$ and $\beta$, the loss is now given by: +With hyperparameters $c$, $\gamma$ and $\beta$, the loss is given by: -$$ L(X'|X)= c(f_{t}(X') - p_{t})^2 + \beta L_{1}(X', X) + L_{2}(X', X)^2 + \gamma L_{2} (X', AE(X'))^2 + L_{2}(X', X_ +$$ L(X'|X)= c\cdot L_{pred}(X') + \beta L_{1}(X', X) + L_{2}(X', X)^2 + \gamma L_{2} (X', AE(X'))^2 + L_{2}(X', X_ {proto}) $$ -__TODO:__ +This method produces much more interpretable results than [CFI](#counterfactual-instances) +and [CEM](#contrastive-explanation-method-pertinent-negatives). -- Picture example of results. +Because the prototype term steers the solution, we can remove the prediction loss term. This makes this method much +faster if we are using a black-box model as we don't need to compute the gradients numerically. However, occasionally +the prototype isn't a member of the target class. In this case you'll end up with an incorrect counterfactual. -This method produces much more interpretable results. As well as this, because the proto term pushes the solution -towards the target class, we can remove the prediction loss term and still obtain a viable counterfactual. This doesn't -make much difference if we can compute the gradients directly from the model. If not, and we are using numerical -gradients, then the $L_{pred}$ term is a significant bottleneck owing to repeated calls on the model to approximate the -gradients. Thus, this method also applies to black-box models with a substantial performance gain on the previously -mentioned approaches. +To use the counterfactual with prototypes method in Alibi we do: -**Pros** +```ipython3 +from alibi.explainers import CounterfactualProto -- Generates more interpretable instances that the CEM method -- Black-box version of the method doesn't require computing the numerical gradients -- Applies to more data-types +feature_range = (scaler.transform(X_train).min(axis=0).reshape(shape)-.1, + scaler.transform(X_train).max(axis=0).reshape(shape)+.1) -**Cons** +explainer = CounterfactualProto( + model, shape=(1,) + X_train.shape[1:], + ae_model=ae, enc_model=encoder, max_iterations=500, feature_range=feature_range, + c_init=1., c_steps=4, eps=(1e-2, 1e-2), update_num_grad=100 +) -- Requires access to the dataset to train the auto encoder or k-d tree -- Requires setup and configuration in choosing $\gamma$, $\beta$ and $c$ +explainer.fit(scaler.transform(X_train)) +result_proto = explainer.explain(scaler.transform(x), Y=None, target_class=None, k=20, k_type='mean', + threshold=0., verbose=False, print_every=100, log_every=100) +``` + +We get the following results: + +| feature | instance | counterfactual | +|-----------------------------|----------|----------------| +| fixed acidity | 9.2 | 9.2 | +| volatile acidity | 0.36 | 0.36 | +| citric acid | 0.34 | 0.34 | +| residual sugar | 1.6 | 1.6 | +| chlorides | 0.062 | 0.062 | +| free sulfur dioxide | 5.0 | 5.0 | +| total sulfur dioxide | 12.0 | 12.0 | +| density | 0.997 | 0.997 | +| pH | 3.2 | 3.2 | +| sulphates | 0.67 | 0.607 | +| alcohol | 10.5 | 9.998 | + + +| pros | cons | +|------------------------------------------------------------|------------------------------------------------------------------------| +| Generates more interpretable instances than the CEM method | Requires access to the dataset | +| Black-box version of the method is fast | Requires setup and configuration in choosing $\gamma$, $\beta$ and $c$ | +| Applies to more data-types | Requires training an autoencoder | ### Counterfactuals with Reinforcement Learning -| Model-types | Task-types | Data-types | -| ----------- | -------------- | ----------- | -| Black-box | Classification | Tabular | -| | | Image | -| | | Categorical | +| Explainer | Scope | Model types | Task types | Data types | Use | +|----------------------------------------------|--------|---------------------|----------------------------|------------------------------------------|-----------------------------------------------------------------------------------| +| counterfactuals-with-reinforcement-learning | Local | Black-box | Classification | Tabular, Categorical, Image | What minimal change to features is required to reclassify the current prediction? | This black-box method splits from the approach taken by the above three significantly. Instead of minimizing a loss -during the explain method call, it trains a new model when fitting the explainer called an actor that takes instances -and produces counterfactuals. It does this using reinforcement learning. In reinforcement learning, an actor model takes -some state as input and generates actions; in our case, the actor takes an instance with a target classification and -attempts to produce an member of the target class. Outcomes of actions are assigned rewards dependent on a reward -function designed to encourage specific behaviors. In our case, we reward correctly classified counterfactuals generated -by the actor. As well as this, we reward counterfactuals that are close to the data distribution as modeled by an -autoencoder. Finally, we require that they are sparse perturbations of the original instance. The reinforcement training -step pushes the actor to take high reward actions. CFRL is a black-box method as the process by which we update the -actor to maximize the reward only requires estimating the reward via sampling the counterfactuals. - -As well as this, CFRL actors can be trained to ensure that certain constraints can be taken into account when generating -counterfactuals. This is highly desirable as a use case for counterfactuals is to suggest the necessary changes to an -instance to obtain a different classification. In some cases, you want these changes to be constrained, for instance, -when dealing with immutable characteristics. In other words, if you are using the counterfactual to advise changes in -behavior, you want to ensure the changes are enactable. Suggesting that someone needs to be two years younger to apply -for a loan isn't very helpful. +during the explain method call, it trains a **new model** when **fitting** the explainer called an **actor** that takes +instances and produces counterfactuals. It does this using **reinforcement learning**. In reinforcement learning, an +actor model takes some state as input and generates actions; in our case, the actor takes an instance with a target +classification and attempts to produce a member of the target class. Outcomes of actions are assigned rewards dependent +on a reward function designed to encourage specific behaviors. In our case, we reward correctly classified +counterfactuals generated by the actor. As well as this, we reward counterfactuals that are close to the data +distribution as modeled by an autoencoder. Finally, we require that they are sparse perturbations of the original +instance. The reinforcement training step pushes the actor to take high reward actions. CFRL is a black-box method as +the process by which we update the actor to maximize the reward only requires estimating the reward via sampling the +counterfactuals. + +As well as this, CFRL actors can be trained to ensure that certain **constraints** can be taken into account when +generating counterfactuals. This is highly desirable as a use case for counterfactuals is to suggest the necessary +changes to an instance to obtain a different classification. In some cases, you want these changes to be constrained, +for instance, when dealing with immutable characteristics. In other words, if you are using the counterfactual to advise +changes in behavior, you want to ensure the changes are enactable. Suggesting that someone needs to be two years younger +to apply for a loan isn't very helpful. The training process requires randomly sampling data instances, along with constraints and target classifications. We can then compute the reward and update the actor to maximize it. We do this without needing access to the model internals; we only need to obtain a prediction in each case. The end product is a model that can generate interpretable counterfactual instances at runtime with arbitrary constraints. -__TODO__: - -- Example images - -**Pros** - -- Generates more interpretable instances that the CEM method -- Very fast at runtime -- Can be trained to account for arbitrary constraints -- General as is a black-box algorithm - -**Cons** +```ipython3 +from alibi.explainers import CounterfactualRL + +predict_fn = lambda x: model(x) + +explainer = CounterfactualRL(predictor=predict_fn, + encoder=ae.encoder, + decoder=ae.decoder, + latent_dim=ENCODING_DIM, + coeff_sparsity=7.5, + coeff_consistency=0, + train_steps=5000, + batch_size=100, + backend="tensorflow") + +explainer.fit(X=scaler.transform(X_train)) +``` -- Longer to fit the model -- Requires to fit an autoencoder -- Requires access to the training dataset +This gives the following results: + +| feature | instance | counterfactual | +|-----------------------------|----------|----------------| +| fixed acidity | 8.965 | 9.2 | +| volatile acidity | 0.349 | 0.36 | +| citric acid | 0.242 | 0.34 | +| residual sugar | 2.194 | 1.6 | +| chlorides | 0.059 | 0.062 | +| free sulfur dioxide | 6.331 | 5.0 | +| total sulfur dioxide | 14.989 | 12.0 | +| density | 0.997 | 0.997 | +| pH | 3.188 | 3.2 | +| sulphates | 0.598 | 0.67 | +| alcohol | 9.829 | 10.5 | + +| pros | cons | +|------------------------------------------------------------|------------------------------------------| +| Generates more interpretable instances than the CEM method | Longer to fit the model | +| Very fast at runtime | Requires to fit an autoencoder | +| Can be trained to account for arbitrary constraints | Requires access to the training dataset | +| General as is a black-box algorithm | | diff --git a/doc/source/overview/images/cem-non-interp.png b/doc/source/overview/images/cem-non-interp.png new file mode 100644 index 0000000000000000000000000000000000000000..6214e1311e0c4913a328589971b79ffa411a5ec1 GIT binary patch literal 9576 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 GxcgsNTVQkm literal 0 HcmV?d00001 From 04d28a6106da02c69eaa29f5ce5f6db0e87bc53a Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Mon, 13 Dec 2021 20:13:57 +0000 Subject: [PATCH 39/60] Add some explination to the notebook --- examples/overview.ipynb | 1242 +++++++++++++++++++++------------------ 1 file changed, 654 insertions(+), 588 deletions(-) diff --git a/examples/overview.ipynb b/examples/overview.ipynb index e169737d5..38876ecbe 100644 --- a/examples/overview.ipynb +++ b/examples/overview.ipynb @@ -35,7 +35,18 @@ "from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay\n", "from sklearn.preprocessing import StandardScaler\n", "from sklearn.model_selection import train_test_split\n", - "np.random.seed(0)" + "import joblib\n", + "import os.path\n", + "\n", + "import tensorflow as tf\n", + "np.random.seed(0)\n", + "tf.random.set_seed(0)\n", + "\n", + "FROM_SCRATCH = False\n", + "TF_MODEL_FNAME = 'tf-clf-wine'\n", + "RFC_FNAME = 'rfc-wine'\n", + "ENC_FNAME = 'wine_encoder'\n", + "DEC_FNAME = 'wine_decoder'\n" ] }, { @@ -80,7 +91,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 4, "id": "ae34b435-ed6c-4380-ba8b-1005cf7868ce", "metadata": {}, "outputs": [ @@ -90,7 +101,7 @@ "StandardScaler()" ] }, - "execution_count": 8, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -122,270 +133,6 @@ "scaler.fit(X_train)" ] }, - { - "cell_type": "code", - "execution_count": 15, - "id": "ec9c57c5-4738-4b60-8eda-a210252b48f7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    fixed acidityvolatile aciditycitric acidresidual sugarchloridesfree sulfur dioxidetotal sulfur dioxidedensitypHsulphatesalcoholclass
    07.40.7000.001.90.07611.034.00.997803.510.569.4bad
    17.80.8800.002.60.09825.067.00.996803.200.689.8bad
    27.80.7600.042.30.09215.054.00.997003.260.659.8bad
    311.20.2800.561.90.07517.060.00.998003.160.589.8good
    47.40.7000.001.90.07611.034.00.997803.510.569.4bad
    .......................................
    15946.20.6000.082.00.09032.044.00.994903.450.5810.5bad
    15955.90.5500.102.20.06239.051.00.995123.520.7611.2good
    15966.30.5100.132.30.07629.040.00.995743.420.7511.0good
    15975.90.6450.122.00.07532.044.00.995473.570.7110.2bad
    15986.00.3100.473.60.06718.042.00.995493.390.6611.0good
    \n", - "

    1599 rows × 12 columns

    \n", - "
    " - ], - "text/plain": [ - " fixed acidity volatile acidity citric acid residual sugar chlorides \\\n", - "0 7.4 0.700 0.00 1.9 0.076 \n", - "1 7.8 0.880 0.00 2.6 0.098 \n", - "2 7.8 0.760 0.04 2.3 0.092 \n", - "3 11.2 0.280 0.56 1.9 0.075 \n", - "4 7.4 0.700 0.00 1.9 0.076 \n", - "... ... ... ... ... ... \n", - "1594 6.2 0.600 0.08 2.0 0.090 \n", - "1595 5.9 0.550 0.10 2.2 0.062 \n", - "1596 6.3 0.510 0.13 2.3 0.076 \n", - "1597 5.9 0.645 0.12 2.0 0.075 \n", - "1598 6.0 0.310 0.47 3.6 0.067 \n", - "\n", - " free sulfur dioxide total sulfur dioxide density pH sulphates \\\n", - "0 11.0 34.0 0.99780 3.51 0.56 \n", - "1 25.0 67.0 0.99680 3.20 0.68 \n", - "2 15.0 54.0 0.99700 3.26 0.65 \n", - "3 17.0 60.0 0.99800 3.16 0.58 \n", - "4 11.0 34.0 0.99780 3.51 0.56 \n", - "... ... ... ... ... ... \n", - "1594 32.0 44.0 0.99490 3.45 0.58 \n", - "1595 39.0 51.0 0.99512 3.52 0.76 \n", - "1596 29.0 40.0 0.99574 3.42 0.75 \n", - "1597 32.0 44.0 0.99547 3.57 0.71 \n", - "1598 18.0 42.0 0.99549 3.39 0.66 \n", - "\n", - " alcohol class \n", - "0 9.4 bad \n", - "1 9.8 bad \n", - "2 9.8 bad \n", - "3 9.8 good \n", - "4 9.4 bad \n", - "... ... ... \n", - "1594 10.5 bad \n", - "1595 11.2 good \n", - "1596 11.0 good \n", - "1597 10.2 bad \n", - "1598 11.0 good \n", - "\n", - "[1599 rows x 12 columns]" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df[features + ['class']]" - ] - }, { "cell_type": "markdown", "id": "3a3ff7b6-50c7-4e8c-9436-188cefba608d", @@ -401,34 +148,13 @@ "execution_count": 5, "id": "af5d71d3-729a-4fee-9f5a-b60bbe8dadc0", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Text(0, 0.5, 'MSE-Loss')" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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zJn65JNPur9eVlame+65R5dccomuvvpqvfTSS91f83q9evrppzV9+nRdeOGFuuGGG1RSUtL99Y8//ljXXHONCgoK9PDDD4tzogD0NcwcA0AE2rZtm2bOnKm1a9fqb3/7m7773e/q3XffVVJSkn7wgx9o2LBh+vDDD3Xw4EHdcccd6tevnyZOnKglS5bojTfe0DPPPKNBgwZpz5493celS9L777+vl19+WY2Njbrhhht01VVX6YorrjDxOwWA0GLmGADC2He+8x0VFBR0f5yYBU5JSdE3vvEN2e12XXvttRo0aJDef/99lZSUaNOmTfrRj36k2NhY5efn66abbtKrr74qSVq2bJnuv/9+DR48WIZhaMSIEUpOTu5+v4ULFyohIUHZ2dmaMGGCdu/ebcr3DQBmYeYYAMLYk08+ecqa41deeUUZGRkyDKP7uezsbJWXl6u8vFyJiYlyuVwnfW3Hjh2SpNLSUvXv3/9L38/j8XT/2uFwqKmpqbe+FQCICMwcA0AEKisrO2k9cElJidLT05Wenq66ujo1Njae9LWMjAxJUmZmpg4fPhzyvAAQKSjHABCBqqur9cILL6ijo0NvvvmmDhw4oCuvvFJZWVm68MIL9dhjj6mtrU27d+/Wyy+/rLlz50qSbrrpJj3++OMqLi6W3+/X7t27VVNTY/J3AwDhg2UVABDG7rnnnpP2OZ40aZKmTZumsWPH6tChQ7r00kuVlpamJ554onvt8GOPPaZFixZp8uTJSkhI0H333de9NOOOO+5Qe3u77rzzTtXU1Gjw4MF68sknTfneACAcGX726QGAiPLKK69o2bJl+vOf/2x2FACIOiyrAAAAAAIoxwAAAEAAyyoAAACAAGaOAQAAgADKMQAAABBAOQYAAAACKMcAAABAAOUYAAAACPj/w1p2oHe1+SQAAAAASUVORK5CYII=\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "from tensorflow.keras.layers import Dense, Dropout\n", "from tensorflow.keras.models import Sequential, Model\n", "from tensorflow.keras import metrics, Input\n", "from tensorflow import keras\n", - "import tensorflow as tf\n", + "\n", "\n", "ENCODING_DIM = 7\n", "BATCH_SIZE = 64\n", @@ -446,83 +172,64 @@ " x_hat = self.decoder(z)\n", " return x_hat\n", " \n", - "len_input_output = X_train.shape[-1]\n", + "def make_ae():\n", + " len_input_output = X_train.shape[-1]\n", "\n", - "encoder = keras.Sequential()\n", - "encoder.add(Dense(units=ENCODING_DIM*2, activation=\"relu\", input_shape=(len_input_output, )))\n", - "encoder.add(Dense(units=ENCODING_DIM, activation=\"relu\"))\n", + " encoder = keras.Sequential()\n", + " encoder.add(Dense(units=ENCODING_DIM*2, activation=\"relu\", input_shape=(len_input_output, )))\n", + " encoder.add(Dense(units=ENCODING_DIM, activation=\"relu\"))\n", "\n", - "decoder = keras.Sequential()\n", - "decoder.add(Dense(units=ENCODING_DIM*2, activation=\"relu\", input_shape=(ENCODING_DIM, )))\n", - "decoder.add(Dense(units=len_input_output, activation=\"linear\"))\n", - " \n", - "ae = AE(encoder=encoder, decoder=decoder)\n", - " \n", - "ae.compile(optimizer='adam', loss='mean_squared_error')\n", - "history = ae.fit(\n", - " scaler.transform(X_train), \n", - " scaler.transform(X_train), \n", - " batch_size=BATCH_SIZE, \n", - " epochs=EPOCHS, \n", - " verbose=False,)\n", - "\n", - "loss = history.history['loss']\n", - "plt.plot(loss)\n", - "plt.xlabel('Epoch')\n", - "plt.ylabel('MSE-Loss')" + " decoder = keras.Sequential()\n", + " decoder.add(Dense(units=ENCODING_DIM*2, activation=\"relu\", input_shape=(ENCODING_DIM, )))\n", + " decoder.add(Dense(units=len_input_output, activation=\"linear\"))\n", + "\n", + " ae = AE(encoder=encoder, decoder=decoder)\n", + "\n", + " ae.compile(optimizer='adam', loss='mean_squared_error')\n", + " history = ae.fit(\n", + " scaler.transform(X_train), \n", + " scaler.transform(X_train), \n", + " batch_size=BATCH_SIZE, \n", + " epochs=EPOCHS, \n", + " verbose=False,)\n", + "\n", + " loss = history.history['loss']\n", + " plt.plot(loss)\n", + " plt.xlabel('Epoch')\n", + " plt.ylabel('MSE-Loss')\n", + "\n", + " ae.encoder.save(f'{ENC_FNAME}.h5')\n", + " ae.decoder.save(f'{DEC_FNAME}.h5')\n", + " return ae\n", + "\n", + "def load_ae_model():\n", + " encoder = load_model(f'{ENC_FNAME}.h5')\n", + " decoder = load_model(f'{DEC_FNAME}.h5')\n", + " return AE(encoder=encoder, decoder=decoder)" ] }, { "cell_type": "markdown", - "id": "c4969d4b-b4f2-4a33-a1f9-b6ac0c78d677", + "id": "91035836-4c13-489b-a865-bed0817aaeb0", "metadata": {}, "source": [ - "Later we'll use tensorflow version 1 as the counterfactual methods depend on this version of tensorflow. The easiest way to use a model built with tfv2 in tfv1 is to save and load it." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "0109cce2-6b54-4d05-8891-e437c18df24d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING:tensorflow:Compiled the loaded model, but the compiled metrics have yet to be built. `model.compile_metrics` will be empty until you train or evaluate the model.\n", - "WARNING:tensorflow:Compiled the loaded model, but the compiled metrics have yet to be built. `model.compile_metrics` will be empty until you train or evaluate the model.\n" - ] - } - ], - "source": [ - "ae.encoder.save('wine_encoder.h5')\n", - "ae.decoder.save('wine_decoder.h5')" + "# Random Forest Model" ] }, { "cell_type": "markdown", - "id": "91035836-4c13-489b-a865-bed0817aaeb0", + "id": "1371f3be-fafd-45c6-978b-d2c65924d21e", "metadata": {}, "source": [ - "# Random Forest Model" + "In order to get results for the tree shap model applied to the wine-quality data set we train a random forrest model." ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "id": "07246f62-3040-475e-843e-b0366c3d94fa", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "accuracy_score: 0.815\n", - "f1_score: [0.8 0.82790698]\n" - ] - } - ], + "outputs": [], "source": [ "from sklearn.pipeline import Pipeline\n", "from sklearn.preprocessing import StandardScaler\n", @@ -531,15 +238,23 @@ "from sklearn.metrics import accuracy_score, f1_score\n", "from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay\n", "\n", - "rfc = RandomForestClassifier(n_estimators=50)\n", - "rfc.fit(scaler.transform(X_train), y_train_lab)\n", - "y_pred = rfc.predict(scaler.transform(X_test))\n", + "def make_rfc():\n", + " rfc = RandomForestClassifier(n_estimators=50)\n", + " rfc.fit(scaler.transform(X_train), y_train_lab)\n", + " y_pred = rfc.predict(scaler.transform(X_test))\n", + "\n", + " print('accuracy_score:', accuracy_score(y_pred, y_test_lab))\n", + " print('f1_score:', f1_score(y_test_lab, y_pred, average=None))\n", + " \n", + " joblib.dump(rfc, f\"{RFC_FNAME}.joblib\")\n", + " return rfc\n", "\n", - "print('accuracy_score:', accuracy_score(y_pred, y_test_lab))\n", - "print('f1_score:', f1_score(y_test_lab, y_pred, average=None))\n", "\n", + "def load_rfc_model():\n", + " return joblib.load(f\"{RFC_FNAME}.joblib\")\n", + " \n", "# disp = ConfusionMatrixDisplay(confusion_matrix(y_test_lab, y_pred), display_labels=rfc.classes_)\n", - "# disp.plot()" + "# disp.plot()\n" ] }, { @@ -550,46 +265,97 @@ "# Tensorflow Model" ] }, + { + "cell_type": "markdown", + "id": "5c29f129-3e75-4fc7-8893-18ab09019ae9", + "metadata": {}, + "source": [ + "Finally we also train a tensorflow model" + ] + }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "id": "7a28547f-1e0a-4bf4-9f18-5451127ddb77", "metadata": {}, + "outputs": [], + "source": [ + "from tensorflow import keras\n", + "from tensorflow.keras import layers \n", + "\n", + "def make_tf_model():\n", + " inputs = keras.Input(shape=X_train.shape[1])\n", + " x = layers.Dense(6, activation=\"relu\")(inputs)\n", + " outputs = layers.Dense(2, activation=\"softmax\")(x)\n", + " model = keras.Model(inputs, outputs)\n", + "\n", + " model.compile(optimizer=\"adam\", loss=\"categorical_crossentropy\", metrics=['accuracy'])\n", + " history = model.fit(\n", + " scaler.transform(X_train), \n", + " y_train,\n", + " epochs=30, \n", + " verbose=False, \n", + " validation_data=(scaler.transform(X_test), y_test),\n", + " )\n", + "\n", + " y_pred = model(scaler.transform(X_test)).numpy().argmax(axis=1)\n", + " print('accuracy_score:', accuracy_score(y_pred, y_test.argmax(axis=1)))\n", + " print('f1_score:', f1_score(y_pred, y_test.argmax(axis=1), average=None))\n", + "\n", + " model.save(f'{TF_MODEL_FNAME}.h5')\n", + " \n", + " return model\n", + "\n", + "def load_tf_model():\n", + " return load_model(f'{TF_MODEL_FNAME}.h5')\n", + "\n", + "\n", + "# disp = ConfusionMatrixDisplay(confusion_matrix(y_pred, y_test.argmax(axis=1)))\n", + "# disp.plot()\n" + ] + }, + { + "cell_type": "markdown", + "id": "7c7e779e-656d-48be-91b2-14ae32e2838c", + "metadata": {}, + "source": [ + "# Load/Make models" + ] + }, + { + "cell_type": "markdown", + "id": "6faa7413-c589-45ed-9c64-96b8ddbac469", + "metadata": {}, + "source": [ + "In order to ensure stable results we save and load the same models each time unless they don't exist in which case we create new ones. If you want to generate new models on each run of the notebook then set `FROM_SCRATCH=True`" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "4dc61ede-5732-4641-b004-0be40fbf9e99", + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "accuracy_score: 0.74\n", - "f1_score: [0.75471698 0.72340426]\n" + "WARNING:tensorflow:No training configuration found in the save file, so the model was *not* compiled. Compile it manually.\n", + "WARNING:tensorflow:No training configuration found in the save file, so the model was *not* compiled. Compile it manually.\n" ] } ], "source": [ - "from tensorflow import keras\n", - "from tensorflow.keras import layers \n", - "\n", - "\n", - "inputs = keras.Input(shape=X_train.shape[1])\n", - "x = layers.Dense(6, activation=\"relu\")(inputs)\n", - "outputs = layers.Dense(2, activation=\"softmax\")(x)\n", - "model = keras.Model(inputs, outputs)\n", - "\n", - "model.compile(optimizer=\"adam\", loss=\"categorical_crossentropy\", metrics=['accuracy'])\n", - "history = model.fit(\n", - " scaler.transform(X_train), \n", - " y_train,\n", - " epochs=30, \n", - " verbose=False, \n", - " validation_data=(scaler.transform(X_test), y_test),\n", - ")\n", - "\n", - "y_pred = model(scaler.transform(X_test)).numpy().argmax(axis=1)\n", - "print('accuracy_score:', accuracy_score(y_pred, y_test.argmax(axis=1)))\n", - "print('f1_score:', f1_score(y_pred, y_test.argmax(axis=1), average=None))\n", + "from tensorflow.keras.models import Model, load_model\n", "\n", - "# disp = ConfusionMatrixDisplay(confusion_matrix(y_pred, y_test.argmax(axis=1)))\n", - "# disp.plot()" + "if FROM_SCRATCH or not os.path.isfile(f'{TF_MODEL_FNAME}.h5'):\n", + " model = make_tf_model()\n", + " rfc = make_rfc()\n", + " ae = make_ae()\n", + "else:\n", + " rfc = load_rfc_model()\n", + " model = load_tf_model() \n", + " ae = load_ae_model()" ] }, { @@ -597,9 +363,13 @@ "id": "f7a294d4-82f2-4729-ad66-872fd2925f4c", "metadata": {}, "source": [ - "# Select Instance \n", + "# Select Instance of good wine \n", "\n", - "We partition the dataset into good and bad portions and select an instance of interest." + "We partition the dataset into good and bad portions and select an instance of interest. I've chosen it to be a good quality wine. \n", + "\n", + "Note that \n", + "- bad => class 1 \n", + "- good => class 0." ] }, { @@ -607,12 +377,26 @@ "execution_count": 9, "id": "926bbabd-946b-4ef3-9aec-6e27df923504", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "class probs: [0.7731959 0.22680412]\n", + "result is class 0\n" + ] + } + ], "source": [ "bad_wines = np.array([a for a, b in zip(X_train, y_train) if b[1] == 1])\n", "good_wines = np.array([a for a, b in zip(X_train, y_train) if b[1] == 0])\n", + "# x = X_train[(model(X_train).numpy()[:, 0] > 0.7) & (model(X_train).numpy()[:, 0] < 0.9)][0][None]\n", "\n", - "x = X_train[(model(X_train).numpy()[:, 0] > 0.7) & (model(X_train).numpy()[:, 0] < 0.9)][0][None]" + "x = np.array([[9.2, 0.36, 0.34, 1.6, 0.062, 5., 12., 0.99667, 3.2, 0.67, 10.5]])\n", + "x_res = model.predict(x)[0]\n", + "print('class probs: ', x_res)\n", + "assert x_res.argmax() == 0, \"x_res.argmax() != 0, model should classisfy x as 0 but non-determinism of model training might mean it doesn't. You can choose a new x as you wish\"\n", + "print('result is class ', x_res.argmax())" ] }, { @@ -626,7 +410,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 10, "id": "533c5164-60f2-46e4-9154-381655854aa4", "metadata": {}, "outputs": [], @@ -706,7 +490,7 @@ { "data": { "text/plain": [ - "(,\n", + "(,\n", "
    )" ] }, @@ -716,7 +500,7 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAt0AAAFECAYAAAD7toLkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABmd0lEQVR4nO3de3zP9f//8ds2O7Gxjfe2JCXy5sOY44yJxljOZkT45JDThJyXYyiHtLA5K0VKo6T0yTn6dNCiiE8qIhWGNWY2O9j2/v3h5/3t3Q622d7D7tfLZZe8n6/n6/l6vB57N4+9PF6vt43JZDIhIiIiIiLFxrakAxARERERud+p6BYRERERKWYqukVEREREipmKbhERERGRYqaiW0RERESkmKnoFhEREREpZiq6RURERESKWZmSDkBKrytXksnKyv0x8RUruhAfn2TFiEov5dp6lGvrUa6tS/m2HuXaeipWdOHKlWTc3cvd8VoquqXEZGWZ8iy6b80R61CurUe5th7l2rqUb+tRrq2nqHKt9hIRERERkWKmoltEREREpJip6BYRERERKWYqukVEREREipmKbhERERGRYqaiW0RERESkmKnoFhEREREpZiq6RURERESKmYpuEREREZFipk+klPuWa3lnnBz1Fs8vg8G1pEMoNZRr61GurSf9RmZJhyByV1NFIvctJ8cydB7/UUmHISJSKmyL6FrSIYjc1dReIiIiIiJSzFR0i4iIiIgUMxXdd7ktW7ZgNBpJTk4u0nXDw8MJCQkpkrX69+/P6NGji2QtERERkfuRim4RERERkWKmoltEREREpJip6C5hhw8fZvjw4QQEBODr60vXrl35+OOP89wnNTWVV155hSeeeIK6desSGBhIRESEeXtmZiZRUVG0bt2aunXr0rFjR7Zt25bjWl999RWdO3fG19eXPn36cPLkSYvtKSkpvPTSS7Ro0QIfHx969OjBl19+eecnLiIiIlKK6JGBJez8+fM0bNiQPn364ODgwPfff8+UKVOwtbWlU6dO2eabTCbCwsI4fPgwYWFh1K1bl4sXL3Lo0CHznMjISF5//XVGjhyJj48Pu3btYsKECdjY2FisGRsbyyuvvMKIESNwdHTklVdeYezYsWzbtg0bGxsApk2bxmeffca4ceOoWrUqmzdvZtiwYaxbt47GjRsXf4JERERE7gMquktY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GAwGGjZsaNHO4O/vz5YtW3I9Vu3atXn//feJjIykdevW1KlTBzs7u6I+pQLz8vK6bcGdkZHB8ePHmT59usV4UFBQnkX3hQsXuHTpEsHBwRbjHTp0YOPGjfzyyy/Uq1cPNzc3XnrpJYYNG4a9vT0jR47Msz/9xIkTpKWl0aZNG/OYra0tbdq04fXXXzePHThwgDp16lClShWL71WTJk3M38/8qlgx9/sBbtEHW1iPcm09yrXcr/Teth7l2nryU6/kR5EX3f98ksmVK1c4cuQIn376aba5/v7+5jlxcXHUqVMn25y8iugePXqQnJxMdHQ0y5Ytw83Njd69ezN69OgSLb4rVap02zlXrlwhMzMzW75u9ySYWz3fue139epV81izZs2oVKkSCQkJ9OrVK891//rrrzzX/XvcR44cyfF7detfQPIrPj6JrCxTrtsNBlfi4q4VaE0pHOXaepTr3KmIuPfpvW0d+jliPQaDK/HxSUVSeBd50W1jY2PxukKFCgQGBhIWFpZt7q3WlAoVKuDl5cWyZcsKdCxbW1sGDBjAgAEDiI2NZdu2bSxatAhvb2/69OmDo6MjADdu3LDY7++FaX7ltZa7u3uB13N3d8fOzo74+HiL8X++/qdbPdO57ff3xxu++uqrZGZmUqlSJebOnUtERESu6976RSE+Pt7cBpTTcSpUqEDdunV58cUXs61xJ09oEREREbmfFfvHwPv7+7N9+3Yee+yxXB8f6O/vz5tvvknZsmWpXr16oY7zwAMPMHToUD744ANOnToF3GzzADh16hSNGjUC4IcffiApKanA63t7e5vXunWVNzY2ltOnT5t7mwuiTJky1K5dm71799KnTx/z+O7du28bh6enJzt27KBVq1bm8e3bt+Pi4mL+IJuYmBg2bNjA4sWLcXFxYfDgwbRr14727dvnuG7NmjVxdHRk79695u9BVlYWe/futZjn7+/PV199ReXKle+757OLiIiIFJdiL7oHDBjAxx9/zDPPPEO/fv3w8vLir7/+4uDBgzRq1IhOnTrRokULAgICGDRoEEOGDKFGjRokJSXx888/k5aWxvjx43Nce8aMGVSoUIH69evj6upKTEwMv//+OxMnTgSgXr16eHl58fLLLzNmzBgSEhJ4/fXX83y2eG68vb2pW7cuS5YswdnZmaysLFatWmVxVbighg8fznPPPcfMmTMJCgri4MGDfPHFF3nuY2try6hRo5gxYwZubm60aNGCgwcPsnHjRsaNG4ejoyPJyclMmTKFDh06mHu/n3rqKV588UWaNGmCh4dHtnXd3d3p1asXUVFRlClThho1arB582auX79uMa9bt26899579O/fn0GDBvHQQw+RkJDA0aNHMRgMDBgwoND5EBEREblfFXvR7eHhQXR0NIsXL2bevHkkJibi6elJw4YNzVdlbWxsWLp0KStXrmTdunXExsZSoUIFatWqledHsPv6+rJp0yaio6NJS0ujatWqzJkzh7Zt2wI32x2WLl3KrFmzGD16NNWqVePFF180F+UF9dprrzFt2jQmTpyIl5cXEydOZN26dYVaC27eNDl9+nRWr17N1q1badq0KS+//DKDBw/Oc79evXqRlpbG+vXrefvtt/Hy8iI8PNxc8C5YsIC0tDRmzJhh3mfy5Ml89dVXzJw5k6ioqBzXnTRpEhkZGSxbtgxbW1u6dOnCwIEDmT9/vnmOo6Mj69evZ8mSJURFRREfH4+Hhwf16tUjMDCw0LkQERERuZ/ZmEym3O9kEylGupHy7qFcW49ynTuDwZXO4z8q6TCkkLZFdNV720r0c8R6ivJGygJ/IqWIiIiIiBSMim4RERERkWJW7D3dIiIi+ZGalsG2iK4lHYYUUvqNzJIOQeSupqJbRETuCtcSUyjKLlX1vVqXPtxIJG9qLxERERERKWYqukVEREREipnaS0REpFRyLe+Mk6P+Giwq6ukWyZt+2oiISKnk5FhGzwUvQroJViRvai8RERERESlmKrpFRERERIqZiu4SEBMTg9Fo5MSJEwXab8uWLRiNRpKTk+84hi+//JK33nrrjtcRERERkdtT0V1KffXVV6xfv76kwxAREREpFVR0i4iIiIgUMxXdhXDy5EkGDx5M06ZN8fX15cknn+Sdd94BIDAwkAULFljMz09biNFo5M033+Sll16iadOmNG7cmDlz5pCenp5t7tmzZxk4cCC+vr4EBweza9cui+379+9n4MCB+Pv707BhQ3r16sWXX35p3h4VFcXatWs5d+4cRqMRo9FIeHi4efuhQ4fo168f9evXx8/Pj2nTppGUlGTenpiYyNSpUwkICMDHx4fWrVszbdq0giVRREREpBTRIwMLYfjw4VSvXp2FCxfi4ODA6dOni6TPeu3atfj6+rJw4UJ+/fVXFi1ahIODA5MnT7aYN2HCBHr16sXgwYPZsGED48aNY8+ePXh7ewM3i/InnniCQYMGYWtry3//+1+GDBnChg0baNSoET179uTMmTPExMSwdOlSADw8PAD47rvvGDBgAG3btiUyMpIrV64QERFBYmIikZGRAMybN4/Dhw8zZcoUKlWqRGxsLIcOHbrj8xcRERG5X6noLqDLly9z9uxZli9fjtFoBMDf379I1i5XrhxLlizB1taWVq1akZ6ezsqVKxk2bBhubm7mec888wyhoaEA1KlThxYtWrBv3z769OkDQL9+/cxzs7Ky8PPz49dff+X999+nUaNGeHt74+npiYODA76+vhYxRERE0KBBAxYvXmwe8/LyYsCAAZw4cYKaNWty7Ngx+vbtS4cOHcxzunbV81lFREREcqOiu4Dc3Nx44IEHmDlzJv/+97/x8/OjYsWKRbJ2mzZtsLX9v46fdu3asXjxYk6ePEmTJk3M4wEBAeY/u7u74+HhwYULF8xjFy5cYNGiRXz99dfExcVhMpkAaNiwYZ7HT0lJ4ciRI0ybNo2MjAzzeKNGjbC3t+fHH3+kZs2a1KpVizfeeANbW1uaN29OtWrVCnW+FSu63HaOweBaqLWl4JRr61GurUe5ti7l23qUa+vJT72SHyq6C8jW1pY33niDxYsXM2XKFFJTU2nYsCHTpk3jX//61x2t/c/i/VbLR1xcnMW4q6vl/2gODg7m3u+srCxGjBhBcnIyo0eP5uGHH8bZ2ZnIyEji4+PzPH5iYiKZmZnMmjWLWbNmZdseGxsLwIwZM4iMjGT58uXMnj2bhx9+mDFjxtCxY8cCnW98fBJZWaZctxsMrsTFXSvQmlI4yrX1KNfWc7tcq2gpenpvW4d+jliPweBKfHxSkRTeKroLoXr16kRFRXHjxg0OHTrEq6++ytChQ/nvf/+Lg4MDN27csJifmJiYr3X/WRRfvnwZAIPBkO/Yfv/9d44fP86aNWt4/PHHzeOpqam33dfV1RUbGxuee+45WrVqlW27p6cnAOXLl2fatGlMmzaNn3/+mddff50JEyZgNBqpUaNGvmMVERERKS309JI7YG9vj7+/PwMHDiQuLo7ExES8vb05deqUxby/PzkkL3v37iUrK8v8eteuXTg5OfHYY4/lO6a0tDTg5tXvW86dO8fhw4ezxX5r7i1ly5bF19eX3377DR8fn2xfXl5e2Y5Xq1YtJk2aRFZWFqdPn853nCIiIiKlia50F9DPP//MK6+8wpNPPslDDz1EYmIia9asoVatWri5uREUFMScOXNYuXIlPj4+7Ny5k19//TVfaycnJzNmzBh69uzJr7/+yvLly+nbt6/FTZS38+ijj+Lt7c2CBQsYM2YMycnJREZGmq9S/33eX3/9xZYtW3jsscdwd3enSpUqTJgwgQEDBmBra0v79u0pV64csbGx7N+/n7Fjx1KtWjX69OlDUFAQjz32GDY2NmzatImyZctSr169gqRSREREpNRQ0V1ABoOBihUrsnLlSi5dukT58uXx8/NjwoQJAPTq1Ys//viDt99+m/T0dLp27cqIESOYMWPGbdceNGgQf/75J+PHjycrK4vQ0FDGjRtXoPgcHByIiopi9uzZjB49Gm9vb4YPH863335r8bHzTz75JDExMSxcuJDLly/TvXt35s+fT+PGjXnnnXeIjIw0X8GuXLkyLVu2pFKlSgD4+vry4YcfcvbsWezs7KhduzZr1qwxP7JQRERERCzZmG492kJKlNFoZPr06RaP+7vf6UbKu4dybT3KtfXk50bKzuM/smJE97dtEV313rYS/RyxnqK8kVI93SIiIiIixUxFt4iIiIhIMVNP913il19+KekQRERKldS0DLZF6NN0i0r6jcySDkHkrqaiW0RESqVriSmoK7bo6MOGRPKm9hIRERERkWKmoltEREREpJipvURERKQEuZZ3xsnx3v/rWD3dInm79/8vFxERuYc5OZa5L54XrptSRfKm9hIRERERkWKmoltEREREpJiVqqJ76dKltGzZklq1ahEeHk5MTAxGo5ETJ05Y5fh+fn5ERUUV+3GioqLw8/O77byQkBDCw8PNr8PDwwkJCTG/Pnr0qFXiFREREbnflZqe7mPHjhEVFcW4ceNo2rQpFStWxMPDg+joaKpWrVrS4RWpnj178sQTTxR4v7CwMFJTU82vjx49ytKlSxk1alRRhiciIiJS6pSaovv06dMA9O3bFxcXF/O4r69vCUVUfLy9vfH29i7wfvfbLx8iIiIid4tS0V4SHh7OpEmTAGjUqBFGo5GYmJhs7SXbt2+nVq1aHDhwwLzv2bNnadiwIYsWLTKPHTp0iH79+lG/fn38/PyYNm0aSUlJFsc8ePAgXbp0wcfHh5CQEL7//vt8xbp27Vp69OhBo0aNaN68OcOHD+f333/PNm/37t2EhoZSr149/Pz8GDJkCOfOnQNybi85ceIEvXv3xsfHhyeffJK9e/fmmKdb7SVbtmxhzpw5ABiNRoxGI/379+fXX3815+/vkpOTadCgAevWrcvXeYqIiIiUJqXiSndYWBje3t6sWLGCdevW4eTkRI0aNfjxxx8t5j355JPs3r2bKVOmsG3bNsqVK8cLL7xAlSpVGDlyJADfffcdAwYMoG3btkRGRnLlyhUiIiJITEwkMjISgIsXLzJkyBB8fHyIjIzk0qVLTJgwwaJ1IzcXLlygX79+VK5cmaSkJN577z169+7Nrl27cHW9+RG7W7duZfLkyXTs2JGwsDBMJhPffPMNly9f5sEHH8y2ZmpqKoMHD8bd3Z2IiAhSU1OZO3cu169fp2bNmjnG0bp1awYNGsTatWuJjo4GwMXFhRo1auDr68uHH35oUdjv2LGDGzdu0KVLl3x8R0RERERKl1JRdFetWtXcOuHj40O5cuVynTtjxgw6derE3LlzqVWrFocPH+b999/HwcEBgIiICBo0aMDixYvN+3h5eTFgwABOnDhBzZo1WbduHY6OjqxevRpnZ2cAnJ2dmThx4m1jnTJlivnPmZmZtGjRAn9/f/bu3Uu3bt3IysoiIiKCoKAgXnvtNfPcNm3a5LrmBx98wOXLl9m8ebO57eTBBx/k6aefznUfDw8PcwH/zxac0NBQ5s6dy/Tp08253LJlC4GBgbi7u9/2HEVERERKm1JRdBeEm5sbL730EsOGDcPe3p6RI0dSq1YtAFJSUjhy5AjTpk0jIyPDvE+jRo2wt7fnxx9/pGbNmhw7dozmzZubC26AoKCgfB3/yJEjLFmyhOPHj5OQkGAe/+2338z/vXTpksVTRm7n2LFj1KlTx6LPu1GjRlSsWDHfa/zdk08+ydy5c9mxYwc9evTgjz/+4LvvvmPlypUFWqdiRZfbzjEYXAsVoxSccm09yrX1KNfWpXxbj3JtPfmpV/JDRXcOmjVrRqVKlUhISKBXr17m8cTERDIzM5k1axazZs3Ktl9sbCwAcXFxGI1Gi23Ozs6ULVs2z+OeP3+eQYMGUa9ePWbNmoWnpyf29vYMGzaM9PR0AK5cuQKAwWDI9/nExcXh4eGRbbywRbeLiwvBwcFs2bKFHj16sGXLFipVqkTLli0LtE58fBJZWaZctxsMrsTFXStUjFIwyrX1KNfWc6/k+n4qnu6FfN8P7pX39v3AYHAlPj6pSApvFd05ePXVV8nMzKRSpUrMnTuXiIgIAFxdXbGxseG5556jVatW2fbz9PQEbhbE8fHxFttSUlK4fv16nsf94osvSE1NZfny5eYCPSMjg6tXr5rn3GrfiIuLy/f5GAwG89Nb/u6fMRZEz549efrppzlz5gwfffQR3bp1w87OrtDriYiIiNzPVHT/Q0xMDBs2bGDx4sW4uLgwePBg2rVrR/v27Slbtiy+vr789ttvPPfcc7muUbduXbZs2UJKSoq5xWT37t23PXZqaiq2traUKfN/35bt27dbtLJUq1YNLy8vtm7dSmBgYL7OycfHh23btnHhwgVzi8l3331326Lb3t4egLS0NBwdHS22NWzYkGrVqjFlyhTOnz9P9+7d8xWLiIiISGlUKh4ZmF/JyclMmTKFDh06EBwcTEBAAE899RQvvvgily9fBmDChAns3LmTiRMnsmfPHg4cOMCWLVsYPXq0ue96wIABpKamMmzYMPbt20d0dDSLFy/Gyckpz+M3a9aMzMxMXnjhBQ4cOMD69euJiIigfPny5jm2trZMnDiRnTt3Mn78ePbt28f+/fuZP38+x44dy3HdkJAQ3N3dGTp0KLt372bbtm1Mnjz5tjc9PvroowCsW7eOo0ePZrtaHhoaynfffUeDBg2oXr163skVERERKcVUdP/NggULSEtLY8aMGeaxyZMnU7ZsWWbOnAlA48aNeeedd7h8+TKTJk1ixIgRvP766zzwwANUqlQJuPk0k9WrV3PlyhVGjRrFu+++y8KFC29bdBuNRubNm8cPP/zAsGHD+OSTT1iyZIn5UYG3dO7cmaioKH777TdGjx7N5MmTOX36dI5923Czn/z111+nbNmyjB07lqVLlxIeHk7lypXzjKdx48YMHjyY9evX06tXL3MObmnbti0APXr0yHMdERERkdLOxmQy5X4nm0ge3nnnHV599VW++OILi0/5zC/dSHn3UK6tR7m2nnsl1waDK53Hf1TSYdyxbRFd74l83w/ulff2/UA3UkqJOnv2LGfOnGHVqlV07969UAW3iIiISGmiolsKbOnSpXzyySc0adKEMWPGlHQ4IiIiInc9tZdIiVF7yd1DubYe5dp67pVcu5Z3xsnx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WlqaReH990JeRERERLLT00sKoGzZstSvX5+tW7ea2zVux97eHoC0tLRCHbNatWp4eXmxdevWfO9z61gODg7msXPnznH48GGLef7+/mzfvj3fsfn4+ACwd+9e81hycjJff/11vmMTERERKY10pbuAxo8fz8CBA3n22Wd56qmncHZ25siRI9StW5cnnngi2/zKlSvj5OTE1q1bcXV1pUyZMubiNT9sbW2ZOHEiEyZMYPz48XTq1AkbGxu++eYbOnbsmONajz76KN7e3ixYsIAxY8aQnJxMZGQknp6eFvNGjhxJaGgoffv2ZdCgQbi5uXH8+HHc3NwIDQ3Ntu5jjz1GYGAgL774IklJSRgMBt54441894SLiIiIlFa60l1ATZo0Ye3ataSmpjJx4kTGjh3Lt99+i7e3d47zHR0dmTNnDj/++CP9+/fPsZi9nc6dOxMVFcVvv/3G6NGjmTx5MqdPn871Q3gcHByIiorCzs6O0aNHs2TJEoYNG0bTpk0t5j366KO8++67uLu7M3XqVEaOHMnOnTtzfQwhwPz582nRogVz585l6tSpNGvWjI4dOxb4nERERERKExtTfvskRIqYnl5y91CurUe5th7l2roMBlc6j/+opMO472yL6Kqnl5Sgonx6ia50i4iIiIgUM/V0i4iIyB1Lv5HJtoiuJR3GfSc1LaOkQ5AioqJbRERE7piDvZ1aHkTyoPYSEREREZFipqJbRERERKSYqegWERERESlm6ukWERGRO5Z+IxODwbWkwyg1lOv/k5qWwbXElJIO47ZUdIuIiMgdc7C303O6pURsi+jKvXALr9pLRERERESK2W2L7k8//ZQtW7YUavEvv/ySt956q1D7btmyBaPRSHJycqH2Lwij0ciGDRvMr7Oyspg1axbNmzfHaDQSFRVV7DHcsmHDBoxGo/l1TEwMRqOREydOFOlx8pvf0aNH079//yI9toiIiEhpc9v2kh07dnDlyhVCQkIKvPhXX33Fzp07GTBgQGFiKzG7du3i3Xff5eWXX6ZGjRp4e3uXWCx16tQhOjqaqlWrFum6rVu3Jjo6Gmdn5yJdV0RERESyU093Dk6fPk2FChUIDQ2947VSU1NxcnIq9P4uLi74+vrecRz/5OHhgYeHR5GvKyIiIiLZ5dleEh4ezs6dO/n2228xGo3ZWi02bNhAu3btqFu3LkFBQRat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cT744INCpOnmzYpOTk5MmTKFgQMHcvbsWd57771CrQU3rwr36tWLqKgoypQpQ40aNdi8eTPXr1/Pc7/q1avTsWNHZs+eTXJyMg899BCbN2/m9OnT5ifMHD9+nJUrVzJt2jQeeughRo4cyWeffcaUKVNYt25djlfiW7VqRa1atRgzZgwTJkzAwcGBqKiobC0nzz33HD179mTo0KH06NEDd3d3Ll68yNdff0337t1zfKyiiIiISGl32yvdTz/9NC1atGDKlCmEhoayadMmAHr16sXUqVPZs2cPw4cP55NPPiE8PJyhQ4ea933yyScJCQlh4cKFhIaGmh8dGBERwUMPPcTkyZN5+eWXadeuHd26dStw8L6+vnz44YeMHj2a559/3txvfOuxhjVr1mTu3LkcOXKEESNGcPDgQebNm1fg48DNxx1GRkZy4cIFRo4cyccff0xERESh1rpl0qRJ9OjRg2XLljF+/Hg8PT0ZOHDgbfd76aWX6N69O8uWLSMsLIxz586xcuVKGjduTHp6OpMnT8bPz4/evXsD4ODgwCuvvML3339v8Uzxv7OxsWHFihVUr16dKVOmMG/ePPr27UuDBg0s5lWrVs38SZYzZsxgyJAhREVF4eDgwMMPP3xH+RARERG5X9mYTKbc72QTKUa6kfLuoVxbj3JtPcq1dRkMrnQe/1FJhyGl0LaIrvfEjZS3vdItIiIiIiJ3RkW3iIiIiEgxK9QjA0VERET+Lv1GJtsi7uxToUUKIzUto6RDyBcV3SIiInLHHOzt1ENvJbpf4d6k9hIRERERkWKmoltEREREpJip6BYRERERKWYqukVEREREipmKbhERERGRYqaiW0RERESkmKnoFhEREREpZiq6RURERESKmYpuEREREZFipk+klBJja2tTJHOkaCjX1qNcW49ybV3Kt/Uo19ZTVLm2MZlMpiJZSUREREREcqT2EhERERGRYqaiW0RERESkmKnoFhEREREpZiq6RURERESKmYpuEREREZFipqJbRERERKSYqegWERERESlmKrpFRERERIqZim4RERERkWKmoltKVEpKCs8//zxBQUEEBwezb9++HOft2bOHkJAQOnXqRMeOHVm7dq3F9mXLltG2bVvatm3LsmXLrBH6PSe/ub548SL9+/enUaNGhISEWGyLiYmhfv36dO3ala5du9KzZ09rhH7P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cuUsxqtXr55nsS5S6plERKTIREZGmmrWrJnt66uvvjJdu3bN5Ovra4qKirLYZ/HixabmzZubMjIysq2XlZVlunHjhmn69Omm/v37m8fffvttU82aNbPNnzx5sql79+4WY3/++aepZs2aps8++8w8VrNmTVO3bt0s5n399demmjVrmmJiYizGn376adOoUaNyPef87pdTbN98842pZs2apl9++aVA6129etVUr14909y5c3ONa9SoUaZ+/fpZjB09etRUs2ZN07Vr13LdLydPPPGEaf78+ebXmZmZpoCAAFN4eLjFvJkzZ5oaNmxoSk1NNZlM//d+2L17922PMXbsWFPLli1NKSkpOW7PKVd/l5GRYUpJSTH5+vqaPvzwQ5PJdPvz3b59u6lp06a3je3vpk6daurSpUu28ddee83UokWLAq0lUpqovUREpIi5urry/vvvW3zVq1ePw4cPc/36dYKDg8nIyDB/NWvWjL/++osLFy4AcPXqVV566SWeeOIJ6tSpQ506dYiOjubMmTNFGufjjz9u8frrr7/GYDDQsGFDi/j8/f353//+l+s6hd3vTtY7fPgwqampBb5JsmrVqpQtW5YJEyawZ88eEhMTCxwf3LzCfOnSJYKDgy3GO3ToQFJSEr/88ot5zMbGJluuc/LNN9/QoUOHAvXWHzlyhIEDB+Ln58e//vUv6tevz/Xr1/ntt9+A259vzZo1uXbtGpMnT+bLL7/k+vXr+T62iBSM2ktERIqYnZ0dPj4+2cavXLkCQMeOHXPcLzY2lgcffJDw8HB++OEHwsLCqF69Oi4uLmzcuJG9e/cWaZyVKlXKFl9cXBx16tTJNtfOzi7XdQq7352sl5CQAIDBYCjQ2hUqVODNN98kKiqK559/HpPJRIsWLZg+fToPPfRQvteJi4sDoGLFihbjt17/vT2jQoUKODg43HbNhISEAp3P+fPnGTRoEPXq1WPWrFl4enpib2/PsGHDSE9PNx87r/N99NFHWb58OatXr2bo0KGUKVOGoKAgpk6dioeHR47HLV++fI7tOImJiUX69BmR+42KbhERK7lVkKxatSpbsQZQrVo10tLS2L9/PzNmzKBPnz7mbe+++26+juHg4MCNGzcsxnK7mmtjY5MtPi8vL5YtW5avY93pfneynpubG3Cz+M2tOMyNr68vb7zxBqmpqXz99dfMnz+f8ePHs2nTpnyvcas4jo+Ptxi/9bowxaebm5u5mM+PL774gtTUVJYvX07ZsmWBm/cS/LMf+3bn27p1a1q3bs21a9fYv38/c+fOZc6cOSxatCjH4z766KNcuHCB69evm48LN3u9H3300YKetkipoaJbRMRKGjRogJOTE5cuXaJ169Y5zrl27RpZWVkWV0aTkpL47LPPLObZ29sDN5/y8ffHz3l7e3Pu3DmL8VtPm7gdf39/3nzzTcqWLUv16tXzfV6F3e9O1ruVy61btzJ58uQc59jb25OWlpbrcZycnAgMDOTkyZOsWrWqQDF6e3vj6enJjh07aNWqlXl8+/btuLi4YDQaC7Qe3Dzv7du3M3bs2Hw9UjA1NRVbW1vKlPm/v8q3b9+e7SbeW253vq6urnTu3JmDBw9y+PDhXI8bEBAAwO7du+natSsAFy9e5LvvvjPftCoi2anoFhGxkvLly/Pcc8/x8ssvc+7cOZo0aUJWVhZnzpwhJiaGZcuW4erqio+PD8uWLcPFxQVbW1tWr16Ni4sLSUlJ5rVuXVFct24dzZo1w8XFhUcffZS2bdsSGRnJ1KlTCQkJ4fjx43zwwQf5iq9FixYEBAQwaNAghgwZQo0aNUhKSuLnn38mLS2N8ePHF+l+dxJH+fLlCQsLY9GiRdy4cYPHH3+c9PR0Pv/8c5577jm8vLyoVq0ae/fuZc+ePXh5eeHp6clPP/3EBx98QJs2bahcuTIXL14kOjqaZs2aFShGW1tbRo0axYwZM3Bzc6NFixYcPHiQjRs3Mm7cuEI9h3vkyJGEhobSt29fBg0ahJubG8ePH8fNzY3Q0NBs85s1a0ZmZiYvvPACoaGhnDx5krVr11K+fHnznP379+d5vu+99x5HjhyhZcuWeHp6cubMGXbs2GEupnPi7e1NaGgoc+fOxWQy4eHhwdKlS6lcuTJdunQp8HmLlBYqukVErGjIkCF4enqybt063nzzTRwdHXnkkUfo0KGDeU5ERAQzZsxg8uTJuLm50bdvX1JTU9mwYYN5TuPGjRk8eDDr16/ntddeo0mTJrz99tvUrFmTuXPnsnz5cnbv3k2zZs2YN2+eRatKbmxsbFi6dCkrV65k3bp1xMbGUqFCBWrVqpXnx7MXdr87XW/YsGFUqFCB9evX895771GhQgUaN25sfpTd008/zU8//cSUKVO4evUqzz33HB07dsTGxoZFixYRHx+Ph4cHrVu3Zty4cQWOs1evXqSlpbF+/XrefvttvLy8CA8PZ8CAAQVeC27+IvXuu+8SERHB1KlTAahRo0ausRmNRubNm8fSpUvZvXs3tWrVYsmSJYwdO9Y8p2rVqnmer9Fo5LPPPmPevHlcvXoVg8FAz549GTNmTJ6xTps2DWdnZ+bPn09qaipNmjQhIiLinv7QH5HiZmMy/f+Hs4qIiIiISLHQIwNFRERERIqZim4RERERkWKmoltEREREpJip6BYRERERKWYqukVEREREipmKbhERERGRYqaiW0RERESkmKnoFhEREREpZiq6RURERESK2f8DqiZm0hf9S1oAAAAASUVORK5CYII=\n", + "image/png": "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9or169czY8YMevXqhb+/P1FRUcyePZuUlBT69etHx44dOXPmDFFRUSxYsADAfEb1/Pnz1KxZky5dumBvb8+PP/7I+PHjsbW1pXXr1tkOftasWRw+fJjx48dTqlQpoqOjOXToUK4ScceUKVN4//332b59OytWrADA3d09R2t88cUXVKxYkSlTppCWlpblvLfffpsNGzYwYsQIKlSowIYNG9i2bdt91584cSJ79uxh5MiRlCtXjg0bNtC/f39WrVpF7dq1GTNmDPv27WPy5MksXLiQ2NhYpk6dSufOnfH39890TZPJxKBBg4iLi+PNN9/EwcGBiIgIrl69yjPPPGOe9+eff9KlSxeqVq3K3LlzSUtLY/78+QwYMIBPPvkEGxubHOVKRERE5El3z4K7XLlyuLi4YDKZLNoa0tPTiYiIIDg42HzW2t/fn+vXr7N06VJeeeUVPD09cXd3x97ePkNLRKtWrcz/NplM1KlTh4sXL7J+/focFdzHjh2jW7dutGzZ0jzWtm3bbG+fmTs923Z2dg/UyrF06VIcHByyfD8uLo5169YxdOhQevfuDUCjRo0sjiUzp06d4r///S+zZs2iffv25u1efPFFFi9ezHvvvUfRokWZPXs23bt3Z9OmTezatYtixYoxbty4LNf9+uuvOX78OOvXr6d69erA7f7xwMBAi4J7wYIFlCpViuXLl2Nvbw/cPsv/wgsv8NVXX9GkSZPspAeAkiWdsj33QeXHgy0KEuXXupTfJ1NB+b4WlOPML8qv9eVFvZKrHu4LFy5w6dIlgoKCLMZbtmzJ2rVr+e2336hWrVqW21+7do2IiAh2797NxYsXzWeBPTw8chRH5cqVee+997C1taVBgwaUL18+5wdjBfXq1btnsQ232zKSk5Np2rSpeczW1pamTZuaz6xn5tixY5hMJovc29raEhQUZLFdrVq16NmzJ5MmTSI1NZUPP/yQokWLZrnu0aNHKVWqlLnYBihTpgze3t4W8w4cOEC7du2wtbU1t7+ULVuWMmXK8L///S9HBXdsbALp6aZsz88tg8GZmBg9YsJalF/rUn6tKz+LlYLwfdXn17qUX+szGJyJjU144KI7V/fhvtOvW7JkSYvxO6+vXbt2z+1DQ0PZsmULffr04b333uOTTz6hQ4cOJCcn5yiOyZMn06xZMxYtWkRQUBDNmzfnv//9b47W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++675jEPDw969uzJiRMn8PLyynS7Vq1amf9tMpmoU6cOFy9eZP369bRu3RqADz74gISEBDZu3Gj+BaB+/fpZxhIXF8e6desYOnQovXv3BqBRo0a0bNnynseQ1fG3bt2a2bNns23bNvP3ZevWrdy6dcsco4iIiIj8n0e24AZo2bIloaGhxMXF4erqyi+//MKZM2d48803Abhw4QKXLl0iKCgow3Zr167lt99+o1q1apmuvWnTJj744AP+/PNPbty4YR4/c+YMpUuXznXMN2/e5MiRI0ycONGibaNWrVoULlyYn3/+OcuC+9q1a0RERLB7924uXrxIWloacLtYv+O7776jUaNG2T7bfuLECZKTk2natKl5zNbWlqZNm7JixYocH5+TkxMtWrTgs88+Mxfcn332GQEBAbi6uuZorZIlnXK8/9zSgwGsS/m1LuVXROTerPlzMi/qlUe64A4ICKBQoULs2LGDl156iS1btuDp6Wm+A0dMTAwAJUuWtNjuzutr165luu7OnTsZN24cXbp0YcSIEbi4uBATE8PgwYNJTk5+oJjj4+NJS0tj2rRpFmfR77hX60doaCg//fQTgwYNokKFCjg5ObF27Vp2795tnnP16lXz2efsuHz5MpB1jnIjJCSEHj168Pfff2MymTh06NA9W3iyEhubQHq6KddxZJfB4ExMzKN+S/zHl/JrXcqvdemXGZEng7V+ThoMzsTGJjxw0f1IF9zFihWjcePGbNmyhZdeeomtW7cSFBSEjY0NAAaDAbjd13y3O69LlCiR6brbtm2jevXqTJ061Tz2/fff50nMzs7O2NjYMGTIEBo3bpzh/azOTCcnJ7N3714mT55Mly5dzOMff/yxxbw7vxxkV6lSpYDbOXFxcTGP/zNnOVGnTh3+9a9/sXHjRkwmE+7u7vj7++d6PREREZEn2SN70eQdrVq14uDBg+zZs4e///7bos/Z09MTd3d3tm3bZrHN1q1bcXJysniwy92SkpKwt7e3GLtzl487ChcuDJDjM95FixbF19eXP/74Ax8fnwxfd7eH3C0lJYX09HSLuBISEtizZ4/FvPr167Nv3z7zmev78fLywsHBweIseXp6usXrzNzv+Dt06MCmTZv4/PPPadeuHXZ2dtmKR0RERKSgeaTPcAM0btyYIkWKMHnyZMqWLWvRk21ra8vQoUOZPHkyLi4u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\n", "text/plain": [ "
    " ] @@ -736,7 +520,7 @@ "\n", "result = ig.explain(scaler.transform(x), target=0)\n", "\n", - "plot_importance(result.data['attributions'][0], features, 0)\n" + "plot_importance(result.data['attributions'][0], features, '\"good\"')\n" ] }, { @@ -744,19 +528,21 @@ "id": "91775149-0ff9-46d7-a71d-d32c910c2757", "metadata": {}, "source": [ - "## KernelSHAP" + "## Kernel SHAP\n", + "\n", + "Example of Kernel SHAP method applied to the Tensorflow model" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "id": "442a2603-1aed-4cd2-a3dc-f4965f5efaec", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "4a04c153bbf84b3f8883ff145cea2990", + "model_id": "6823b1d4d3404ed79bede1c93ed92ef7", "version_major": 2, "version_minor": 0 }, @@ -774,13 +560,13 @@ "
    )" ] }, - "execution_count": 14, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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165dY8KECbRp08ZcW/3ss8/y8ssv06BBAzw8PLKM6+7uTrdu3YiJiaFYsWJUqVKF9evXc/36dYt+nTp1Yu3atfTu3Zt+/frx2GOPkZiYyKFDh/D09KRPnz5W3w8RERGRouaeJ9MeHh7Exsby5ptvMmvWLJKSkvDy8qJu3brmVVQ7OzsWLFjAkiVLWLlyJefOnaN06dJUq1Yt16/y9vPzY926dcTGxpKamkqFChWYMWMGLVu2BG6VHSxYsIBp06YxYsQIKlasyMsvv2xOtvPrjTfeYNKkSYwbNw5vb2/GjRvHypUrrRoLbj1sOHnyZJYtW8bGjRtp2LAhr776Kv3798/1uG7dupGamsqqVat477338Pb2JjIy0pzIzpkzh9TUVKZMmWI+JiIigm+++YapU6cSExOT7bjjx48nPT2dhQsXYjAY6NChA3379mX27NnmPk5OTqxatYr58+cTExNDQkICHh4e1KpVi6CgIKvvhYiIiEhRZGcymYrGE2DywNEDiFIQNDe262GeG09PV9qP+aSww8jVpqiOD+382LqH+bNji+70AGK+vwFRRERERERuUTItIiIiImKle14zLSIi8rBJSU1nU1THwg4jV2k3Mwo7BJEHgpJpERGRAnY16Qa2XvFaVL5YRsTWqcxDRERERMRKSqZFRERERKykMg8REREb5FrKmeJO9+6fadVMixQMJdMiIiI2qLhTsXu6V7WtPyApUlSozENERERExEpKpkVERERErPRQJdMLFiygadOmVKtWjcjISOLi4jAajRw9evS+nN/f35+YmJh7fp6YmBj8/f3v2C80NJTIyEjz68jISEJDQ82vDx06dF/iFRERESmqHpqa6cOHDxMTE8Po0aNp2LAhZcqUwcPDg9jYWCpUqFDY4RWorl278vTTT+f7uPDwcFJSUsyvDx06xIIFCxg+fHhBhiciIiLywHhokukTJ04A0LNnT1xcXMztfn5+hRTRvePj44OPj0++j3vQfqgQERERudceijKPyMhIxo8fD0C9evUwGo3ExcVlKfPYvHkz1apVY+/eveZjT58+Td26dZk3b565bf/+/fTq1YvatWvj7+/PpEmTSE5Otjjnvn376NChA76+voSGhvLDDz/kKdYVK1bQpUsX6tWrR+PGjRk8eDC///57ln7bt28nLCyMWrVq4e/vz4ABAzhz5gyQfZnH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IiIiIg+yIp1MA7Rp04aSJUuydOlSPvroIwwGA4899hjNmzfHwcEBe3t7qlatyqpVqzh//jzFixfHz8+Pt99+O0tyfJu3tzfLli3jlVdeYfjw4VSuXNm8Jd/fdevWjT/++IP33nuPtLQ0OnbsyJAhQywe8OvevTunT59m1apVpKam0qRJE6KioujWrVu+rtPX15d3332X//znP1y7do1y5coxfPhwnn/+eXOfN954g0mTJjFu3Di8vb0ZN24cK1eutBinVatWTJo0ieXLl/PRRx/RsGFDxo8fz4svvoiLy616IKPRyKxZs1iwYAHbt2+nWrVqzJ8/n1GjRuUrZhEREZEHnZ3JZCoaT4DJPbNo0SKWLFnCd999l+MPGPeCHkCUgqC5sV2am3vD09OV9mM+uetxNkV11PzYKH12bMsD/QCi5N+lS5dYunQp/v7+ODs7s3//fpYvX05YWNh9TaRFREREHgRKph8yDg4OnDhxgo0bN5KcnIynpyf//ve/GTlyZGGHJiIiIlLkKJl+yLi6urJ8+fLCDkNERKyUkprOpqiOdz1O2s2MAohGRJRMi4iIFCFXk25QENW0+oY9kYJRpPeZFhEREREpTEqmRURERESspDIPERGRIsq1lDPFnaz7p1w10yIFQ8m0iIhIEVXcqZjVe04XxEOMIqIyDxERERERqymZFhERERGxkpJpG3P06FGMRiNxcXH39bxxcXEYjUaOHj0KQFpaGjExMfz888/3NQ4RERGRokTJtABQo0YNYmNjqVChAgA3b95kwYIFSqZFREREcqEHEAUAFxcX/Pz8CjsMERERkSJFK9OF7P3336dZs2b4+fkxePBg4uPjLd7PzMxk2bJlBAcHU7NmTVq3bs3HH39s0ad3796MGDGCTZs2ERwcTN26dXnhhRc4f/68Rb+lS5cSHByMr68vjRs3pn///ubz/bPMo27dugC89NJLGI1GjEYjp0+fJiwsjMjIyCzXERkZSadOnQrqtoiIiIgUCVqZLkQ7duxg+vTpdO/enZYtW7Jv3z4mTJhg0WfGjBls3LiR8PBwatSowTfffMOECRNwc3Pj6aefNvf78ccfuXjxIhEREaSmpvLqq68yefJkli9fDsDGjRtZsmQJY8eO5cknnyQxMZFvv/2WGzduZBvbypUref755xkyZAjNmzcHwMvLi7CwMObMmcPkyZMp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ERGxkpJpERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaRGRAhQTE4PRaMzyq0+fPgV6nkOHDhETE1OgY95r169fZ9SoUfj7+2M0GtmwYQMA69atIygoiH/961/07t27wM73+eefm89xt44fP85zzz2Hn58fRqOR06dPF8i4+REXF4fRaOTo0aP3/dz/lJaWxuzZswkICMDPz4+BAwcWyj0RsQX6BkQRkQLm6upq3k/5720F6dChQyxYsMC8j3ZRsGbNGnbt2sWcOXPw9vamQoUKxMfH8/LLL9OzZ09CQkIoXbp0gZ1vy5YtXL58mdDQ0Lse67XXXuPq1assXrwYZ2dnvLy8CiDCouuVV15h69atvPTSS7i7u7NgwQL69evHpk2bcHJyKuzwRO4rJdMiIgXM3t4ePz+/wg4jX1JSUihevPg9PceJEyeoWLGixbfp7d+/n4yMDLp06WLT33p44sQJgoKCCAgIuKtxTCYTaWlpRTrhPH/+PB9++CEzZ86kU6dOAFSrVo0WLVrw6aef0rVr18INUOQ+U5mHiMh9tn79etq2bUvNmjV5+umnWb58ucX7Bw4cYPDgwQQGBuLn50fHjh359NNPze9v2LCBGTNmAJjLSG6XR0RGRmZZiT19+jRGo5Fdu3aZ24xGI++88w6vvvoqjRo1on379gCkpqby2muv0axZM2rWrEmHDh348ssv73hNdzouKCiIDz/8kCNHjphjjomJoWfPngB07NjRovQjr3GsW7eO9u3b4+vrS+PGjRkxYgRXr14lMjKSrVu38t1331mcD24l8M899xx169albt26dOzYkc2bN2d7Xbfv3R9//MG7775rca8BVq9eTatWrahZsybBwcG8++67FsfHxMTg7+/P/v376dKlC76+vjmeC+CXX35h8ODB1K9fnzp16hAWFmb+JrzsrFixgi5dulCvXj0aN27M4MGD+f333y363Ol6d+7cSWhoKH5+fjRo0ICuXbvy3Xff5XjOr7/+GoDg4GBzm7e3N3Xr1uW///1vjseJPKi0Mi0icg+kp6dbvLa3t8fOzo633nqLefPm8cILL9CwYUN++ukn5s+fj7OzM7169QLg7Nmz1K1blx49euDo6MgPP/zAhAkTMBgMtGvXjubNm9OvXz9WrFhBbGwsAC4uLvmO8e2336Z+/fq89tpr3P4y3BEj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hYXRs2dP+vXrh5ubG0eOHMHNzY2wsLAs/Rs1akRGRgYvvfQSYWFhHDt2jBUrVlCqVClzn927d+d6vWvXruXgwYM0bdoULy8vTp06xZYtW8xJcnZ8fHwICwtj5syZmEwmPDw8WLBgAeXKlaNDhw75vm6Rok7JtIjIfTRgwAC8vLxYuXIl77zzDk5OTjzxxBO0adPG3CcqKoopU6YQERGBm5sbPXv2JCUlhdWrV5v71K9fn/79+7Nq1SreeOMNGjRowHvvvUfVqlWZOXMmixYtYvv27TRq1IhZs2ZZlIzkxM7OjgULFrBkyRJWrlzJuXPnKF26NNWqVcv1a76tPe5uxxs0aBClS5dm1apVrF27ltKlS1O/fn3zlm3PPfccP//8MxMmTODKlSsMGzaMtm3bYmdnx7x580hISMDDw4PmzZszevTofMfZrVs3UlNTWbVqFe+99x7e3t5ERkZa/dXxlSpV4oMPPiAqKoqJEycCUKVKlRxjMxqNzJo1iwULFrB9+3aqVavG/PnzGTVqlLlPhQoVcr1eo9HIF198waxZs7hy5Qqenp507dqVkSNH5hrrpEmTcHZ2Zvbs2aSkpNCgQQOioqKK9JfRiFjLzmT6/5uLioiIiIhIvmhrPBERERERKymZFhERERGxkpJpERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaRERERERKymZFhERERGxkpJpEREREREr/T+wmI9qpMS2xQAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAFECAYAAADlf7JXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABmNklEQVR4nO3deVxU5fv/8ReDgigooCyZWa5jH0VxRRTTUJTcRTTXcsk9NVfINbVcMlLB3bQ0y9Ayyz65m5VlpKXpJytNs3InXBAVEJjfH/6crxP7iA7g+/l48Mi55z73uc59aLg4XOc+diaTyYSIiIiIiOSawdYBiIiIiIgUVEqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkVsHYA8vC5fvk5aWsFY5rx0aWfi4hJsHcZDTefAtjT/tqX5ty3Nv23Zev4NBjvc3Epk+r6SabGZtDRTgUmmgQIVa2Glc2Bbmn/b0vzblubftvLz/KvMQ0RERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKegKiFFouJZ0o5ph33+IeHi55NpZYR+fAdpJvpdo6BBGRfEnJtBRaxRyL0G7MJ7YOQ6RQ2BzRwdYhiIjkSyrzEBERERGxkpJpERERERErWZ1ML1y4kCZNmlCtWjXCw8PzMqYHrnfv3owYMcKibf369QQGBvKf//yH3r17P7BYjh07htFoJCYmxtxmNBpZu3Ztnu7n9OnTGI1Gvvjiiyz7rV27FqPRmKf7FhERESksrKqZPnLkCFFRUYwePZoGDRpQunTpvI7LpmJjY3nllVfo2bMnwcHBlCpVyqbxREdHU65cuTwd09PTk+joaCpWrJin44qIiIg8TKxKpk+ePAlAz549cXZ2zrRfYmIixYoVsy4yG/rzzz9JTU2lc+fOVKtW7Z7GSk1NJTU1FQcHB6vH8PX1vacYMuLg4HBfxhURERF5mOS6zCM8PJzx48cDULduXXNJQkxMDEajka+//prBgwdTu3Ztpk+fDsDZs2cZNWoUDRo0oFatWvTv39+ckN+RlJTE66+/TtOmTalRowbt27fnyy+/zDaeZcuWERQUhI+PD40aNaJ///7ExsYCsHHjRoxGI9evX7fYJjAwkDlz5mQ4XlRUFD179gSgQ4cOGI1GNm7caD6+Y8eOWfT/d4lIeHg4ISEh7Ny5kzZt2lCzZk0OHz6cafzvvfceTZs2xdfXl8GDB5tjv1tGZR5r166lZcuW1KhRg6CgIN555x3ze1u2bKFatWrs27fP3Hb69Gnq1KnDvHnzzK//XeaRnJzM9OnTqVevHg0aNGDmzJmkpKSki+fKlStMnjyZRo0a4ePjQ7du3fjpp58yPUYRERGRwirXV6aHDh2Kt7c3S5YsYfXq1RQrVozKlSvz888/AzBx4kRCQkJ4/vnncXR05MqVK/To0QNXV1deeeUVnJycWL58OX379mXbtm3mK9cjRozg8OHDDB8+nPLly7NlyxaGDBnCRx99xJNPPplhLJs2bWLp0qWMHTuWKlWqcOXKFb777jtu3rxp9YR06dIFd3d3pk+fzhtvvMFjjz1G+fLlOX78eI7HOHPmDHPnzmXo0KF4eHhkWqKxc+dOpk+fTrdu3WjRogX79+9nwoQJ2Y6/fv16ZsyYQd++fQkICCAmJobZs2eTnJzMwIEDeeaZZ9ixYwcTJkxg8+bNlChRgpdffply5coxbNiwTMd944032LBhA6NGjaJSpUps2LCBrVu3WvRJTk6mb9++xMfHM378eNzd3Vm3bh19+vRh+/bteHh45HieRERERAq6XCfT5cuXp3z58gD4+PhQokQJi/eDg4N56aWXzK/nz5/PzZs32bRpE66urgDUqVOHwMBAPvroI3r27Mm+ffvYs2cP7777Lg0aNAAgICCAU6dOsWTJEiIjIzOM5fDhwwQEBJivJAO0bNkyt4dkwdvbm8qVKwO3rwhXrVo112NcuXKFd955J9NfAu5YunQpTZo0Ydq0aQA0adKES5cusWHDhky3SUtLIyoqipCQEPONnwEBAVy7do1ly5aZf4mZMmUKbdu2ZebMmVSrVo2DBw/y4YcfZlpucvnyZT744AOGDx9Ov379zPG0bt3aot8nn3zC8ePH+eyzz3jiiScAaNSoEcHBwaxatYqwsLAczRFA6dKZlwiJSP6jh+bYlubftjT/tpWf5z/PH9rSrFkzi9f79u2jUaNGODs7m0sGSpQoQfXq1fnf//4HwLfffouHhwd16tSxKCvw9/dn48aNme7rySef5MMPPyQyMpJmzZpRvXp17O3t8/qQcs3LyyvbRDolJYWjR48yefJki/agoKAsk+nz589z8eJFgoODLdpbt27NunXr+O2336hZsyaurq68+uqrDBo0iKJFizJs2LAs67+PHTtGUlISzZs3N7cZDAaaN2/OW2+9ZW7bt28f1atXp1y5chbnqn79+ubzmVNxcQmkpZlytU1u5Of/8UQKotjYa7YO4aHl4eGi+bchzb9t2Xr+DQa7LC8A5nky/e+VPS5fvsyhQ4f4/PPP0/X19/c394mNjaV69erp+mSVHHfu3Jnr168THR3NokWLcHV1pVu3bowYMcKmSXWZMmWy7XP58mVSU1PTzVd2K6PcqanObLurV6+a2xo2bEiZMmW4cuUKXbt2zXLcf/75J8tx74770KFDGZ6rO3+xEBEREXlY5HkybWdnZ/G6VKlSBAYGMnTo0HR975SIlCpVCi8vLxYtWpSrfRkMBvr06UOfPn04d+4cmzdvZt68eXh7e9O9e3ccHR0BuHXrlsV2dyecOZXVWG5ubrkez83NDXt7e+Li4iza//363+7UJGe23d3L+L3xxhukpqZSpkwZZs6cSURERKbj3vkFIC4uzlyOk9F+SpUqRY0aNXjllVfSjXEvK5aIiIiIFER5nkz/m7+/P1u2bKFKlSqZLpPn7+/P22+/TfHixalUqZJV+3nkkUcYOHAgH330ESdOnABul1sAnDhxgrp16wLw008/kZCQkOvxvb29zWPduSp77tw5Tp48aa4dzo0iRYrw5JNPsmvXLrp3725u37FjR7ZxeHp6snXrVpo2bWpu37JlC87OzuYHrMTExLB27Vrmz5+Ps7Mz/fv3p2XLlrRq1SrDcatWrYqjoyO7du0yn4O0tDR27dpl0c/f359vvvmGsmXLFrr1xUVERERy674n03369OHTTz/l+eefp1evXnh5efHPP/+wf/9+6tatS9u2bWncuDEBAQH069ePAQMGULlyZRISEvj1119JSkpizJgxGY49ZcoUSpUqRa1atXBxcSEmJoY///yTcePGAVCzZk28vLx47bXXGDlyJFeuXOGtt97Kcm3szHh7e1OjRg0WLFiAk5MTaWlpLFu2zOIqbm4NHjyYF198kalTpxIUFMT+/fv5+uuvs9zGYDAwfPhwpkyZgqurK40bN2b//v2sW7eO0aNH4+joyPXr15kwYQKtW7c211Y/++yzvPLKK9SvXx93d/d047q5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Bw/mww8/xM7OLldzJSIiIlKQZZlMly9fHldXV0wmk0WpQVpaGlFRUYSEhJivNgcEBHDt2jWWLVvG888/j7e3N56enjg4OKQrU2jTpo353yaTifr163PhwgXWr1+fq2T6yJEj9OzZk9atW5vbOnTokOPtM3KnRtre3v6eyiuWLVuGo6Njpu9fvnyZDz74gOHDh9OvXz8AmjRpYnEsGTlx4gT//e9/mTVrFp06dTJv1759e5YsWcLKlSspXrw4s2fPplevXmzatImdO3dSokQJwsLCMh33q6++4ujRo6xfv55atWoBt+u1g4KCLJLphQsXUqZMGVasWIGDgwNw++r8M888w5dffkmzZs1yMj0AlC7tnOO++cHDumB/fqJzICLy4OWHz978EENmrKqZPn/+PBcvXiQ4ONiivXXr1qxbt47ffvuNmjVrZrr91atXiYqKYteuXVy4cMF89dbLyytXcVSrVo2VK1diMBho1KgRFSpUyP3B3AcNGzbMMpGG26USSUlJNG/e3NxmMBho3ry5+Yp4Ro4cOYLJZLKYe4PBQHBwsMV2devWpU+fPkyePJmUlBTeffddihcvnum4hw8fpkyZMuZEGuDRRx+levXqFv327dtHx44dMRgM5pKUcuXK8eijj/K///0vV8l0XFwCaWmmHPe3JQ8PF2JjtWy9Lekc2FZ+/kEmIveXrT97bf35bzDYZXkB0Kp1pu/Ux5YuXdqi/c7rq1evZrl9eHg4n3/+Of3792flypV8+OGHdO7cmaSkpFzFMWXKFFq0aMHixYsJDg6mZcuW/Pe//83VGPdDmTJlsu3zzz//AJnPYWYuXrxI8eLF063CUbp0aW7evElycrK5rW3btiQnJ1OlShXq1auX5bixsbEZ3pD473guX77MihUrqF69usXX33//zblz57Lch4iIiEhhY9WVaQ8PDwCLG9zufl2qVKlMt01KSmLPnj1MmTKF7t27m9vff//9XMdRsmRJJk2axKRJk/j111956623GDt2LEajkcqVK+Pg4MCtW7cstomPj8/1fgAcHR3TjZXZLw05qRu+k3DHxcXh6upqbv/3nP6bp6cnN27c4ObNmxYJdVxcHE5OTubSi5SUFCZPnkzVqlX5/fffiY6O5tlnn810XA8PDy5dupSuPS4uzmI1klKlStGiRQu6dOmSrq+bm1uWsYuIiIgUNtlemS5atGi6K8Z36qH/fbPcli1bcHZ2Nj90JKNtk5OTSUtLMyd9AAkJCezevdvqg4DbJR/jx48nLS2NkydPmuM8c+aMRQx3r3qRG15eXly/fp0LFy6Y27755hur461atSqOjo7s2rXL3JaWlmbxOiM+Pj7Y2dmxbds2c5vJZGLbtm0WK4csXbqUP/74g8WLFzNgwADmzJnD6dOnsxz3n3/+4aeffjK3nT17lqNHj1r08/f35/fff6dGjRr4+PhYfJUrVy7Hxy8iIiJSGGR7ZbpChQrs2rWLnTt34uXlhaenJ15eXgwfPpwpU6bg6upK48aN2b9/P+vWrWP06NHmeuGKFSvyzz//sHHjRqpUqYKbmxvlypXDx8eHRYsW4ezsjMFgYPny5Tg7O5OQkJCr4Lt3705QUBBVqlTBzs6O9evXU7x4cXO9dosWLYiMjGTixImEhIRw9OhRPvroIyum6fZNfsWKFWPChAn07duX06dP88EHH1g1Fty+itu1a1eioqIoUqQIlStXZsOGDdy4cSPL7SpVqkSbNm2YPn06169f57HHHmPDhg2cPHnSvOLK0aNHWbp0KZMmTeKxxx5j2LBh7N69mwkTJrB69eoMr5w3bdqUatWqMXLkSMaOHYuDgwNRUVHpSj9efPFFunTpwsCBA+ncuTNubm5cuHCBb7/9lk6dOmW4fKCIiIhIYZXtlekePXrQuHFjJkyYQGhoKOvXrwega9euTJw4kZ07dzJ48GA+++wzwsPDGThwoHnbZ555hpCQEObOnUtoaKh5ibyIiAgee+wxwsLCeO2112jZsiUdO3bMdfC+vr58/PHHjBgxgpdeeslcz3tn+b6qVasyc+ZMDh06xJAhQ9i/fz+zZs3K9X7g9rJ+kZGRnD9/nmHDhvHpp58SERFh1Vh3jB8/ns6dO7No0SLGjBmDp6cnffv2zXa7V199lU6dOrFo0SKGDh3KmTNnWLp0KfXq1SM5OZmwsDD8/Pzo1q0bAA4ODrz++uv8+OOPFmti383Ozo4lS5ZQqVIlJkyYwKxZs+jZsye1a9e26FehQgXzkxOnTJnCgAEDiIqKwsHBgccff/ye5kNERESkoLEzmUwFYzkFKXS0mofkhs6BbXl4uNBuzCe2DkNEHrDNER1s/tlr68//+7Kah4iIiIiIWLmah4iIPFySb6WyOeLeHoolIgVPYlKKrUPI95RMi4hIthyK2tv8T70PM1v/mfthp/mXrKjMQ0RERETESkqmRURERESspGRaRERERMRKqpkWEZFsJd9KxcPDxdZhPNQ0/7al+betrOY/MSmFa/E3H2A0lpRMi4hIthyK2mudaRHJlzZHdMCWt4eqzENERERExEoPRTIdFRWFn59frrZJTk4mKiqKX375xaL99OnTGI1GvvjiC3NbYGAgc+bMyZNY71VG8WVk7dq1GI1G8+uYmBiMRiPHjh0DMj9+EREREfk/D0UybY1bt26xcOHCdMmkp6cn0dHR1K1b10aRZc3a+KpXr050dDTly5cHMj9+EREREfk/qpnOJQcHB3x9fW0dRqasjc/Z2TlfH5eIiIhIfpRvr0xv3LiRGjVqEB8fb9F+/PhxjEYj3377rblt7dq1tGzZkho1ahAUFMQ777yT5dg3btxg+vTptGrVilq1ahEYGMi0adNISEgw96lTpw4AL7/8MkajEaPRyOnTp3NcRnHgwAF69epFrVq18PPzY9KkSRbjZ+TgwYMMHjyYgIAAfH196dChA59++mm6fmfOnGH06NH4+flRq1Yt2rVrx+bNm4GMyzySk5OZPn069erVo0GDBsycOZOUFMvHg/67zCOz4w8NDSU8PDxdTOHh4XTs2DHL4xMREREpbPJtMt2iRQsAduzYYdH++eefU6ZMGXMN9Pr165kxYwaBgYEsXbqU4OBgZs+ezfLlyzMdOzExkdTUVEaNGsWKFSsYOXIk3333HSNHjjT3Wb16NQBDhgwhOjqa6OhoPD09cxT7Dz/8QJ8+fShTpgyRkZG8/PLLfPnll0yYMCHL7c6ePUudOnV47bXXWLJkCS1btmTChAl89tln5j5xcXE8++yzHDlyhLCwMJYuXUpoaCjnzp3LdNw33niDDRs2MHToUObOncvZs2dZtWpVlrFkdvyhoaFs27aN69evm/tev36dbdu20blz55xMj4iIiEihkW/LPEqWLEmTJk34/PPPLZK0zz//nFatWmFvb09aWhpRUVGEhISYr5YGBARw7do1li1bxvPPP4+jo2O6sd3d3Zk2bZr5dUpKCuXKlaNHjx6cPXuWsmXL4uPjA0D58uVzXf4QERFB7dq1mT9/vrnNy8uLPn36cOzYMapWrZrhdm3atDH/22QyUb9+fS5cuMD69etp27YtAO+88w4JCQls3LjRnNz7+/tnGsvly5f54IMPGD58OP369QOgSZMmtG7dOstjyOz427Zty+zZs9m6dav5vGzZsoVbt26ZYxQRERF5WOTbZBqgdevWhIeHc/nyZdzc3Pjll184deoUr732GgDnz5/n4sWLBAcHp9tu3bp1/Pbbb9SsWTPDsTdt2sQ777zDn3/+yY0bN8ztp06domzZslbHfPPmTQ4dOsSkSZMsSinq1q1L0aJF+fnnnzNNpq9evUpUVBS7du3iwoULpKamArcT8Tu+++47mjRpkuOr5MeOHSMpKYnmzZub2wwGA82bN+ett97K9fE5OzvTqlUrPv74Y3My/fHHHxMYGIibm1uuxipd2jnX+7clLdhvezoHIiKSEVv+fMjXyXRgYCBFihRh+/btPPvss3z++ed4e3ubV6qIjY0FoHTp0hbb3Xl99erVDMfdsWMHYWFhdO/enVGjRuHq6kpsbCzDhg0jKSnpnmKOj48nNTWVadOmWVz9viOrcozw8HB++uknhg4dSqVKlXB2dmbdunXs2rXL3OfKlSvmq8Y58c8//wCZz5E1QkND6d27N3///Tcmk4kDBw5kWVaTmbi4BNLSTFbH8SB5eLgQG2vLJeFF58C29IuMiORn9/Png8Fgl+UFwHydTJcoUYKmTZvy+eef8+yzz7JlyxaCg4Oxs7MDwMPDA7hdR3y3O69LlSqV4bhbt26lVq1avPLKK+a277//Pk9idnFxwc7OjhdffJGmTZumez+zK8pJSUns2bOHKVOm0L17d3P7+++/b9HvTuKfU2XKlAFuz4mrq6u5/d9zlhv169fn8ccfZ+PGjZhMJjw9PQkICLB6PBEREZGCKt/egHhHmzZt2L9/P7t37+bvv/+2qCv29vbG09OTrVu3WmyzZcsWnJ2dLR5KcrfExEQcHBws2u6shnFH0aJFAXJ9pbp48eL4+vryxx9/4OPjk+7r7pKNuyUnJ5OWlmYRV0JCArt377bo5+/vz969e81XnLNTtWpVHB0dLa5up6WlWbzOSHbH37lzZzZt2sQnn3xCx44dsbe3z1E8IiIiIoVJvr4yDdC0aVOKFSvGlClTKFeunEUNtMFgYPjw4UyZMgVXV1caN27M/v37WbduHaNHj87w5kOARo0aMX36dJYsWUKtWrX48ssv2bdvn0UfBwcHypUrx5YtW6hSpQqOjo6ZJuf/NnbsWPr06YPBYKBVq1aUKFGCc+fOsWfPHkaNGkWFChXSbePi4oKPjw+LFi3C2dkZg8HA8uXLcXZ2tlhSr0+fPmzatImePXsyePBgvL29OXnyJDdu3GDAgAHpxnVzc6Nr165ERUVRpEgRKleuzIYNGyzqxDOS2fHfSfY7derEggULSElJISQkJEfzIiIiIlLY5PtkulixYgQGBrJ582YGDhyY7v2uXbuSlJTEmjVrePfdd/Hy8iI8PJw+ffpkOma3bt04ffo0a9asISkpicaNGxMREUHXrl0t+k2bNo05c+bQt29fkpOTs72ae0e9evV47733iIyMZPz48aSlpVG2bFmaNGliLrvISEREBFOmTCEsLAxXV1d69uxJYmIia9euNfdxd3dn3bp1zJ07l5kzZ5KcnMzjjz/OoEGDMh13/PjxpKSksGjRIgwGA+3bt6dv377Mnj07y+PI6PjLlSsH3C6xufOLTUa/HIiIiIg8DOxMJlPBuANM8pUrV67w1FNPMXnyZLp06WLVGLoBUXJD58C2PDxcaDfmE1uHISKSzuaIDroBUQqOhIQETpw4wZo1ayhRooTWlhYREZGHmpJpyZWff/6Z5557jkcffZQ5c+bg5ORk65BEREREbEZlHmIzKvOQ3NA5sK1SrsVxKKpVe0Qk/0lMSuFa/M37Nr7KPERE5J45FLXXLzM2pF8mbUvzb1v5ff7z/TrTIiIiIiL5lZJpERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaRERERERKymZFhERERGxkpJpERERERErKZkWEREREbGSnoAoNmMw2Nk6hFwpaPEWRjoHtqX5ty3Nv21p/m3LlvOf3b7tTCaT6QHFIiIiIiJSqKjMQ0RERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKSqZF/r+bN2/y0ksvERQURHBwMF988UWmfdevX09QUBAtWrRg+vTppKWlWbyflJREmzZtCAkJud9hFxp5Mf87d+4kJCSEtm3b0qZNG1atWvWgwi+Q/vjjD5599llatWrFs88+y6lTp9L1SU1NZdq0abRo0YKgoCA2bNiQo/ckZ+71HCxatIg2bdrQrl07QkJC+Prrrx9g9AXfvc7/HSdPnqRWrVrMmTPnAURd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SUk3XlpamunWrVumyZMnm3r37m1uf/fdd01Vq1ZN1z8sLMzUqVMni7a///7bVLVqVdPu3bvNbVWrVjV17NjRot+3335rqlq1qikmJsaivUePHqbhw4dnesw53S6j2L777jtT1apVTb/99luuxrt69aqpZs2appkzZ2Ya1/Dhw029evWyaDt8+LCpatWqpmvXrmW6XUaefvpp0+zZs82vU1NTTQEBAabw8HCLflOnTjXVqVPHlJiYaDKZ/u/7YceOHdnuY9SoUaYmTZqYbt68meH7Gc3V3VJSUkw3b940+fr6mj7++GOTyZT98W7ZssXUoEGDbGO728SJE03t27dP1/7mm2+aGjdunKuxRAoDlXmIiOQxFxcXPvzwQ4uvmjVrcvDgQW7cuEFwcDApKSnmr4YNG/LPP/9w/vx5AK5evcqrr77K008/TfXq1alevTrR0dGcOnUqT+N86qmnLF5/++23eHh4UKdOHYv4/P39+d///pfpONZudy/jHTx4kMTExFzfXFi+fHmKFy/O2LFj2blzJ/Hx8bmOD25fEb548SLBwcEW7a1btyYhIYHffvvN3GZnZ5durjPy3Xff0bp161zVrh86dIi+ffvi5+fHf/7zH2rVqsWNGzf4448/gOyPt2rVqly7do2wsDD27t3LjRs3crxvEblNZR4iInnM3t4eHx+fdO2XL18GoE2bNhlud+7cOR599FHCw8P56aefGDp0KJUqVcLZ2Zl169axa9euPI2zTJky6eKLjY2levXq6fra29tnOo61293LeFeuXAHAw8MjV2OXKlWKt99+m6ioKF566SVMJhONGzdm8uTJPPbYYzkeJzY2FoDSpUtbtN95fXeZRKlSpXBwcMh2zCtXruTqeM6ePUu/fv2oWbMm06ZNw9PTk6JFizJo0CCSk5PN+87qeCtWrMjixYtZvnw5AwcOpEiRIgQFBTFx4kTc3d0z3G/JkiUzLIuJj4/P09VYRAoKJdMiIg/InURj2bJl6ZIwgAoVKpCUlMSePXuYMmUK3bt3N7/3/vvv52gfDg4O3Lp1y6Its6uvdnZ26eLz8vJi0aJFOdrXvW53L+O5uroCt5PazJK+zPj6+rJy5UoSExP59ttvmT17NmPGjGH9+vU5HuNO0hsXF2fRfue1NUmlq6urOUnPia+//prExEQWL15M8eLFgdu1+v+ud87ueJs1a0azZs24du0ae/bsYebMmcyYMYN58+ZluN+KFSty/vx5bty4Yd4v3K6lrlixYm4PW6TAUzItIvKA1K5dm2LFinHx4kWaNWuWYZ9r166RlpZmcSUzISGB3bt3W/QrWrQocHvVi7uXWfP29ubMmTMW7XdWX8iOv78/b7/9NsWLF6dSpUo5Pi5rt7uX8e7M5aZNmwgLC8uwT9GiRUlKSsp0P8WKFSMwMJDjx4+zbNmyXMXo7e2Np6cnW7dupWnTpub2LVu24OzsjNFozNV4cPu4t2zZwqhRo3K0dF5iYiIGg4EiRf7vR/mWLVvS3fx6R3bH6+LiQrt27di/fz8HDx7MdL8BAQEA7Nixgw4dOgBw4cIFfvjhB/PNniIPEyXTIiIPSMmSJXnxxRd57bXXOHPmDPXr1yctLY1Tp04RExPDokWLcHFxwcfHh0WLFuHs7IzBYGD58uU4OzuTkJBgHuvOFcDVq1fTsGFDnJ2dqVixIi1atCAyMpKJEycSEhLC0aNH+eijj3IUX+PGjQkICKBfv34MGDCAypUrk5CQwK+//kpSUhJjxozJ0+3uJY6SJUsydOhQ5s2bx61bt3jqqadITk7myy+/5MUXX8TLy4sKFSqwa9cudu7ciZeXF56envzyyy989NFHNG/enLJly3LhwgWio6Np2LBhrmI0GAwMHz6cKVOm4OrqSuPGjdm/fz/r1q1j9OjRVq0jPWzYMEJDQ+nZsyf9+vXD1dWVo0eP4urqSmhoaLr+DRs2JDU1lZdffpnQ0FCOHz/OqlWrKFmypLnPnj17sjzeDz74gEOHDtGkSRM8PT05deoUW7duNSfJGfH29iY0NJSZM2diMplwd3dn4cKFlC1blvbt2+f6uEUKOiXTIiIP0IABA/D09GT16tW8/fbbODo68sQTT9C6dWtzn4iICKZMmUJYWBiurq707NmTxMRE1q5da+5Tr149+vfvz5o1a3jzzTepX78+7777LlWrVmXmzJksXryYHTt20LBhQ2bNmmVRMpIZOzs7Fi5cyNKlS1m9ejXnzp2jVKlSVKtWLcvHfFu73b2ON2jQIEqVKsWaNWv44IMPKFWqFPXq1TMv2dajRw9++eUXJkyYwNWrV3nxxRdp06YNdnZ2zJs3j7i4ONzd3WnWrBmjR4/OdZxdu3YlKSmJNWvW8O677+Ll5UV4eLjVj46vWLEi77//PhEREUycOBGAypUrZxqb0Whk1qxZLFy4kB07dlCtWjUWLFjAqFGjzH3Kly+f5fEajUZ2797NrFmzuHr1Kh4eHnTp0oWRI0dmGeukSZNwcnJi9uzZJCYmUr9+fSIiIgr0w2hErGVnMv3/xUVFRERERCRXtDSeiIiIiIiVlEyLiIiIiFhJybSIiIiIiJWUTIuIiIiIWEnJtIiIiIiIlZRMi4iIiIhYScm0iIiIiIiVlEyLiIiIiFhJybSIiIiIiJX+H0Z4zQNPbvGYAAAAAElFTkSuQmCC\n", "text/plain": [ "
    " ] @@ -804,16 +590,24 @@ "plot_importance(result.shap_values[0], features, 0)\n" ] }, + { + "cell_type": "markdown", + "id": "53a6161f-13b6-4156-b378-bd689e68d00f", + "metadata": {}, + "source": [ + "Here we apply Kernel SHAP to the Tree-based model in order to compare to the tree-based methods we run later" + ] + }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "id": "77deef77-42c1-4450-b381-fde4b1079e24", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "19b564c2c960412980333e532dda6ecc", + "model_id": "b6c199c824754d3b803b4f677b70106c", "version_major": 2, "version_minor": 0 }, @@ -827,17 +621,17 @@ { "data": { "text/plain": [ - "(,\n", + "(,\n", "
    )" ] }, - "execution_count": 15, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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x8eHbdu2mYveW5o0acLMmTNZunQpderU4fPPP2ffvn02n2tERARXrlyhYcOGlC1blqNHj7J//37Gjh0LZBTZtWrVYuHChbi4uJCens7y5cvNV/tvGTRoECNGjGDmzJkEBgbyww8/8Pnnn5vzCRk97Wlpabz00kuEhoZy/PhxVq1aRenSpW2OW0RERKQouq+LbIC2bdtSqlQpli9fzsaNGzEYDDz00EO0aNGCEiVKUKxYMapXr86aNWs4d+4czs7O+Pr68vbbb2cqmm/x9vZmxYoVvPLKK4wYMYKqVauabx34T926dePPP//kvffeIyUlhY4dOzJkyBCrNxZ2796d06dPs2bNGpKTk2natCnh4eF069bNpvP08fHh3Xff5f/+7/+4fv06FStWZMSIETz//PPmOW+88QZTpkxh/PjxeHt7M378eFavXm21T+vWrZkyZQorV65k48aNNGzYkAkTJvDiiy/i6prR1G80GpkzZw6LFi1ix44d1KhRg4ULFzJ69GibYhYREREpqhxMJpNtt3eQQmfJkiUsW7aM/fv3Z/uLR37Q3UXujnJhoVxYKBcWyoWFcpGhqObB09ONDmM/sRrbHN6xSOYiK7q7iNjFxYsXWb58Of7+/ri4uPDdd9+xcuVKQkND/9UCW0RERKQwU5FdxJQoUYKTJ08SHR1NQkICnp6ePPfcc4waNaqgQxMREZF8kJScyubwjlZjKTfTCiiaokNFdhHj5ubGypUrCzoMERER+Zdcu5rI7c0Q+rTH/Hdf38JPRERERORepCJbRERERMTOVGSLiIiIiNiZerJFRERECjG30i44O1mXfHrjY/5TkS0iIiJSiDk7Fc/yPtmSv9QuIiIiIiJiZyqyRURERETsLM9F9qJFi2jWrBk1atQgLCzMnjH963r37s3IkSOtxtavX09gYCD/+c9/6N27978Wy7FjxzAajcTExJjHjEYja9eutetxTp8+jdFoZM+ePTnOW7t2LUaj0a7HFhERESns8tSTfeTIESIjIxkzZgwNGzakXLly9o6rQMXFxfHyyy/Ts2dPgoODKVOmTIHGExUVRaVKley6p5eXF1FRUTz66KN23VdERERE8lhknzx5EoCePXvi6uqa7bykpCScnZ3zFlkB+uOPP0hLS6NLly7UqFHjrvZKS0sjLS0NR0fHPO/h6+t7VzFkxdHRMV/2FRER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A1C7dm28vb159dVXGTVqFJcvX+att97K8d7e2alQoQK1atVi4cKFuLi4kJ6ezvLly62u+tpq8ODBDB8+nOnTpxMUFMSBAwf48ssvc1xjMBgYMWIE06ZNw93dnaZNm3LgwAHWrVvHmDFjcHJy4vr160yaNIm2bduae7efeeYZXn75ZRo0aICHh0emfcuWLUu3bt2IjIykePHiVKtWjQ0bNnDjxg2reZ06deLDDz+kd+/e9OvXj4ceeojLly9z+PBhPD096dOnT57zISIiIlJY5HuR7eHhQVRUFG+++SZz5szh6tWreHl54efnZ77q6uDgwKJFi1i2bBmrV68mNjaWMmXKUKNGjRw/0tzX15f169cTFRVFcnIylStXZtasWbRq1QrIaF9YtGgRM2bMYOTIkVSpUoWXX37ZXITb6o033mDKlCmMHz8eb29vxo8fz+rVq/O0F2S8yXHq1KmsWLGC6OhoGjZsyKuvvkr//v1zXNetWzeSk5NZs2YN7733Ht7e3oSFhZkL3Hnz5pGcnMy0adPMayZOnMjXX3/N9OnTiYyMzHLfCRMmkJqayuLFizEYDDz99NP07duXuXPnmuc4OTmxZs0aFi5cSGRkJPHx8Xh4eFC7dm0CAwPznAsRERGRwsTBZDLZdnsHETvR3UXujnJhoVxYKBcWyoWFcpGhqObB09ONDmM/sRrbHN6xSOYiK/l1dxGbP/FRRERERERylu/tIiIiIiJScJKSU9kc3tFqLOVmWgFFU3SoyBYREREpxK5dTeT2Zgh92mP+U7uIiIiIiIidqcgWEREREbEzFdkiIiIiInamnmwRERGRIiblZtp91ZedlJzKtauJBR2GTVRki4iIiBQxjiWKZbp39r1sc3jHTG/evNepXURERERExM5UZIuIiIiI2JmK7AIQExOD0Wjk2LFjNq3btGkTRqOR69ev33UMX331Fe++++5d7yMiIiIimanILqK+/vpr1qxZU9BhiIiIiBRKKrJFREREROxMRXYeHD9+nP79+9OwYUN8fX156qmneP/99wEIDAxk3rx5VvNz0+ZhNBp55513eOWVV2jYsCH169dn1qxZpKSkZJp7+vRp+vbti6+vL8HBwWzfvt3q+b1799K3b18aN26Mn58f3bp146uvvjI/HxkZyapVqzhz5gxGoxGj0UhYWJj5+e+++45evXpRp04d/P39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/ciPPvoof//9N5s2beKxxx6jbNmyVKpUCR8fHxYvXoyrqysGg4EVK1bg6upKQkKCTcH36NGDoKAgHnvsMRwcHFi/fj0lS5Y094O3atWKiIgIJk+eTEhICEePHmXjxo15SFPGmwudnZ2ZNGkSffv25fTp03z44Yd52gsyrvp269aNyMhIihcvTrVq1diwYQM3btzIcV3VqlVp164dM2fO5Pr16zz00ENs2LCBkydPmu8Ac/ToUZYtW8aUKVN46KGHGDZsGLt372bSpEmsXr06yyvtzZs3p0aNGowaNYpx48bh6OhIZGRkphaS4cOH07VrVwYOHEiXLl0oW7Ys58+f55tvvqFz585Z3uZQREREpKi545XsZ599lqZNmzJp0iRCQ0NZv349AN26dWPy5Mns3LmTwYMH8+mnnxIWFsbAgQPNa5966ilCQkKYP38+oaGh5lv5hYeH89BDDzFx4kReffVVWrduTadOnWwO3tfXl48//piRI0fy4osvmvuFb91msHr16syePZtDhw4xZMgQDhw4wJw5c2w+DmTcfjAiIoJz584xbNgw/vvf/xIeHp6nvW6ZMGECXbp0YfHixYwdOxYvLy/69u17x3WvvPIKnTt3ZvHixQwdOpQzZ86wbNky6tevT0pKChMnTsTf35/u3bsD4OjoyGuvvcYPP/xgdU/vf3JwcGDp0qVUrVqVSZMmMWfOHHr27EndunWt5lWpUsX8SZHTpk1jwIABREZG4ujoyMMPP3xX+RAREREpLBxMJpNt7zwTsRO98fHuKBcWyoWFcmGhXFgoFxmUBwtPTzc6jP2koMOwi83hHe/JNz7e8Uq2iIiIiIjYRkW2iIiIiIid5ekWfiIiIiJy/0q5mcbm8Lv7lOx7RVJyakGHkCUV2SIiIiJFjGOJYupPz2dqFxERERERsTMV2SIiIiIidqYiW0RERETEzlRki4iIiIjYmYpsERERERE7U5EtIiIiImJnKrJFREREROxMRbaIiIiIiJ2pyBYRERERsTN94qMUGIPB4V9dVxgpFxbKhYVyYaFcWCgXGZQHC+XCIqdc5DVPDiaTyZTXgEREREREJDO1i4iIiIiI2JmKbBERERERO1ORLSIiIiJiZyqyRURERETsTEW2iIiIiIidqcgWEREREbEzFdkiIiIiInamIltERERExM5UZIuIiIiI2JmKbClwiYmJvPjiiwQFBREcHMyePXuynHf+/Hl69+5NvXr1CAkJsXpuzZo1dOzY0fzl5+fHnDlzAIiJiaFOnTrm57p27Zrv55RX9sjFnc538eLFtGrVilatWrF48eJ8O5e7ZY9c7Ny5k5CQENq3b0+7du1YtWqV+blNmzZRv359c56GDRuWr+dzN+yRC4D169cTFBREq1atmDlzJunp6bl67l6S21xA9udUGF4v7JGHovZaAdnn4n5+rfj999955plnaNOmDc888wynTp3KNCctLY0ZM2bQqlUrgoKC2LBhw10/dy+621wsXryYdu3a0aFDB0JCQvjyyy/Nz4WFhfHEE0+Yfw6WLl1654BMIgUsMjLSNHnyZJPJZDL9/vvvpiZNmpgSEhIyzbt69arpwIEDpj179pg6d+6c7X4pKSmmRo0amQ4fPmwymUymb7/9Nsf59xJ75CKn892/f7+pffv2psTERFNiYqKpffv2pv3799v/ROzAHrk4dOiQ6dy5c+Z5rVq1Mh04cMBkMplMGzduNI0YMSKfz8I+7JGLP//809SsWTNTfHy8KS0tzdSvXz/Txx9/fMfn7jW5zUVuz+l+fb2wRx6K2mtFTrm4n18revfubYqOjjaZTCZTdHS0qXfv3pnmfPzxx6Z+/fqZ0tLSTPHx8aZmzZqZ/vrrr7t67l50t7n44osvTDdu3DCZTCbTzz//bKpXr54pMTHRZDKZTBMnTjS99957NsWjK9lS4LZs2cIzzzwDwCOPPEKtWrX44osvMs1zc3Ojfv36uLi45Ljfnj178PT0xMfHJ1/izU/2zsXtPvvsMzp16oSzszPOzs506tSJzz77zC6x25s9clGnTh28vb3N86pWrcqZM2fyN/B8YI9cbNu2jVatWuHh4YHBYKBr167m731Oz91rcpuL3J7T/fp6Ye883K4wvlbklIv79bUiPj6eo0eP0r59ewDat2/P0aNHuXjxotW8zz77jK5du2IwGPDw8KBVq1Zs3br1rp6719gjF82aNTO/fhqNRkwmE5cvX85zTCqypcCdPXuWBx980Pz4gQce4Ny5c3neb+PGjZn+V/mpU6fo3LkzXbt25eOPP87z3vnNXrnI7nxjY2OpWLGi1f6xsbF3F3Q+sffPxYkTJzh06BCNGjUyj+3fv5+OHTvSs2dP9u7dezfh5it75OL2733FihXN3/ucnrvX5DYXuT2n+/X1wl55KEqvFbn9mbifXitiY2Px9vamWLFiABQrVgwvL69M55XV9/NWjvL63L3GHrn4p+joaCpXrkyFChXMY++88w4dOnRg6NChnDhx4o4xFc/ryYjkVufOnTl79myWz33zzTd2PdaFCxf49ttvzf2VADVr1uTzzz/Hzc2Nv/76i759++Lt7U2TJk3seuzc+DdycS+db07+7Z+LoUOHMn36dPPVqhYtWtC2bVucnZ05evQoAwYMYM2aNVStWtWux86NfzMX9zq9XmTQa4WFXivk37Z//34WLlxo1Zs/evRoPD09MRgMREdH88ILL7Bz505zUZ8VFdmS7+50JahixYqcOXMGDw8PIOO3TH9//zwdKzo6mubNm5v3AnB1dTX/+aGHHqJVq1b88MMPBfIPyb+Ri5zO94EHHrD6xyo2NpYHHnjApv3t5d/6uYiPj6dv37688MILPPXUU+bxf/6M/Oc//8HPz4/Dhw8XyD+c/0Yubv/enz171vy9z+m5f5u9cpGbc7qXXy/+jTwUtdeKO/1M3A+vFbd74IEHOH/+PGlpaRQrVoy0tDQuXLiQ6Xt169xr164NWF/Nzetz9xp75ALg4MGDjB8/niVLlvDoo4+ax2/90gXQqVMn5syZw7lz56z+L8rt1C4iBS44OJioqCgg439dHjlyhGbNmuVpr40bN9KlSxersQsXLmAymQC4fPkyX3/9NTVq1Li7oPOJPXKR0/kGBwcTHR1NUlISSUlJREdHW/1jci+xRy4uXbpE37596dmzZ6Y7J5w/f9785zNnznDo0CGMRuPdB54P7JGLNm3asHPnTi5evEh6ejobNmwwf+9zeu5ek9tc5Oac7ufXC3vkoai9VuSUi/v1taJcuXI8/vjjfPrppwB8+umnPP7441a/GEBGjjZs2EB6ejoXL15k586dtGnT5q6eu9fYIxeHDx9m9OjRREREULNmTat1//w5+PLLLzEYDFaFd1YcTLf+hokUkBs3bhAWFsbPP/+MwWBg/PjxtGrVCoCFCxfi5eVFjx49SEtL48knnyQlJYWEhAQ8PDzo2rUrI0aMAOD777/nxRdfZO/evVb/+2bt2rWsW7eO4sWLk5aWRqdOnXjhhRcK5FzvxB65uNP5RkZGEh0dDWT8Nn4rf/cae+Ri3rx5vP/++1SpUsW873PPPUeXLl1444032LVrl/lnpW/fvnTu3LlAzvVO7PV35MMPP+Stt94CoGnTpkybNs18/jk9dy/JbS4g53O6318v7JGHovZaAdnn4n5+rThx4gRhYWFcvXqV0qVLM2/ePB599FEGDBjAyJEj8fHxIS0tjZkzZ/L1118DMGDAAPObRfP63L3obnPRpUsXzpw5Y1U8v/baaxiNRvr06UN8fDwODg64uroyYcIEfH19c4xHRbaIiIiIiJ2pXURERERExM5UZIuIiIiI2JmKbBERERERO1ORLSIiIiJiZyqyRURERETsTEW2iIgdRUZGYjQaM3316dPHrsc5fPgwkZGRdt0zv924cYPRo0fj7++P0Whk06ZNAKxfv57AwED+85//0Lt3b7sd77PPPjMf426dOHGCZ599Fl9fX4xGI6dPn7bLvraIiYnBaDRy7Nixf/3Yt1u8eDF9+vTBz8+vwPIhcq/TJz6KiNiZm5ub+V68/xyzp8OHD7No0aJ79t7FWVm3bh179uxh3rx5eHt7U7lyZeLi4nj55Zfp2bMnwcHBlClTxm7H27p1K5cuXSIkJOSu93rttde4du0aS5cuxcXFBS8vLztEeP+Kiori4Ycfxt/fn927dxd0OCL3JBXZIiJ2VqxYsTt+SMG9JikpCWdn53w9xsmTJ6lSpYrVJ8Z99913pKWl0aVLl3vykxVvOXnyJIGBgTRu3Piu9jGZTKSkpODk5GSnyArG3r17MRgM7NmzR0W2SDbULiIi8i/bsGED7dq1o1atWjz55JOsXLnS6vmDBw8yePBgAgIC8PX1pWPHjvz3v/81P79p0yZmzZoFYG5HudVmERYWlunK7enTpzEajezZs8c8ZjQaeeedd3j11Vdp1KgRHTp0ACA5OZnXXnuN5s2bU6tWLZ5++mk+//zzO57TndYFBgby0UcfcfToUXPMkZGR9OzZE4COHTtatZDkNo7169fToUMHfHx8aNKkCSNHjuTatWuEhYWxbds29u/fb3U8yCjsn332Wfz8/PDz86Njx45s2bIly/O6lbs///yTd9991yrXkPEJka1bt6ZWrVoEBQXx7rvvWq2PjIzE39+f7777ji5duuDj45PtsQB++eUXBg8eTP369albty6hoaHmT6bLyqpVq+jSpQv16tWjSZMmDB48mD/++MNqzp3Od9euXYSEhODr60uDBg3o2rUr+/fvz/aYAAaDygeRO9GV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\n", + "image/png": "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zpw5DBkyhLCwMOLj4+nXrx9JSUmmPkajkZSUlHRfIiIiIoWV9pkWAK5evcrSpUupU6cOAF5eXgQFBbF582a6d+8OwDvvvMM777yTa+csU8Yx18YSkcJJH8iTPZon69MaWF9erYGSaQGgTJkypkQa4PHHH8fLy4ujR4+akunnn3+eF198Md2xISEhFp0zNjaetDSjZQHnI/oGKpJ3YmL0sS334+bmpHmyMq2B9T3IGtja2mR5A1DJtAB3kumM2mJiYkyvy5Yti4+Pz8MMS0REROSRppppASA2NjbDNjc3NytEIyIiIpI/KJkW4E7i/NNPP5lenz9/nuPHj1OzZk0rRiUiIiLyaFOZhwDg4uLC2LFjefXVVylWrBjh4eG4uroSHBxs7dBEREREHllKpgWAcuXKMWjQIMLCwjh37hze3t6EhYVRtGhRa4cmIiIi8shSMi0mLVu2pGXLlhm+t3fv3kyP+/333/MqJBEREZFHmmqmRUREREQspDvTInks+XYqW8PaWzsMkQInMUmfwCoi1qdkWpg7d661QyjQHOzttFm/FenDEqxPayAiBZnKPERERERELKRkWkRERETEQkqmRUREREQspJppkTyWfDsVNzcna4dRqGn+rU9rYF0Pa/4Tk1K4cf3WQzmXyKNCybRIHnOwt6Pd6E+tHYaISJ7bGtYePWoqhY3KPERERERELKRkWkRERETEQkqmH3GbN2/GYDCQkJCQq+OGhoYSHBycK2P16tWL4cOH58pYIiIiIvmJkmkREREREQspmRYRERERsZCSaSs7fPgwgwYNIiAgAF9fX9q3b89///vfLI9JTEzkjTfe4JlnnsHb25vAwEDCwsJM76emphIREUGzZs3w9vamTZs2bN26NcOxvv32W9q1a4evry/du3fn5MmTZu/funWL119/ncaNG+Pj40OnTp3Yv3//g1+4iIiISAGgrfGs7Pz589SpU4fu3bvj4ODATz/9xIQJE7C1taVt27bp+huNRoYMGcLhw4cZMmQI3t7eXLx4kUOHDpn6hIeH8/bbbzN06FB8fHzYuXMnY8aMwcbGxmzM6Oho3njjDQYPHkzRokV54403GDlyJFu3bsXGxgaASZMmsXfvXkaNGkWFChXYtGkTAwcOZO3atdStWzfvJ0hERETkEaZk2sratGlj+rPRaKRevXpcvHiRjRs3ZphM79+/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Cps2bTKrE89IZtd/N9nv2LEjixYtIiUlheDg4GzNi4iIiEhB88gn08WKFSMwMJCtW7cyYMCAdO936dKFpKQk1q1bx3vvvYeHhwehoaH07t070zG7devG2bNnWbduHUlJSTRu3JiwsDC6dOli1m/69OnMmzePPn36kJycfN+7uXfVrVuX999/n/DwcMaNG0daWhrlypWjSZMmprKLjISFhTFlyhTGjx+Ps7MzPXr0IDExkfXr15v6uLq6smHDBubPn8/s2bNJTk7mySefZODAgZmOO27cOFJSUliyZAm2trY8//zz9OnTh7lz52Z5HRldf/ny5YE7JTZ3f7DJ6IcDERERkcLAxmg0FvwnwCTXxcXF8fTTTzN58mQ6d+5s0RiF6QHEdqM/tXYYIiIiBdLWsPZ6AFHyj/j4eE6dOsW6desoWbKk9pYWERGRQk3JtOTIL7/8wosvvsjjjz/OvHnzKF68uLVDEhEREbEalXmI1RSWMo/SziVwsNduJyIiInkhMSmFG9dvZdlHZR4i+ZiDvZ3F/wPLg3uQb6CSO7QG1qX5tz6tQcH2yO8zLSIiIiLyqFIyLSIiIiJiISXTIiIiIiIWUjItIiIiImIhJdMiIiIiIhZSMi0iIiIiYiEl0yIiIiIiFlIyLSIiIiJiISXTIiIiIiIW0icgitXY2tpYO4SHpjBd66NI8299WgPr0vxbn9bA+ixdg/sdZ2M0Go0WjSwiIiIiUsipzENERERExEJKpkVERERELKRkWkRERETEQkqmRUREREQspGRaRERERMRCSqZFRERERCykZFpERERExEJKpkVERERELKRkWkRERETEQkqmRSzw559/0rVrV5599lm6du3KmTNn0vVJTU1l+vTptGjRgqCgIDZt2pSt9yR7HnQNlixZQps2bWjXrh3BwcF88803DzH6guFB1+Cu06dPU6tWLebNm/cQoi44cmP+v/jiC9q1a0fbtm1p164dly9ffkjRFwwPugaxsbEMGDCAdu3a8dxzzzFt2jRSUlIe4hXkb9mZ//379xMcHIy3t3e67zG59m+xUURyrFevXsYtW7YYjUajccuWLcZevXql6/PJJ58Y+/bta0xNTTXGxsYamzRpYvznn3/u+55kz4Ouwddff228efOm0Wg0Gn/99Vejn5+f8datWw/vAgqAB10Do9FoTElJMfbs2dM4atQo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DxITE1m/fr2pT926denXrx/r1q3jzTffpF69erz33ntUq1aN2bNns3TpUnbt2kWDBg2YM2eOWclIZmxsbFi8eDHLly9n7dq1REdHU7p0aapXr57lx3xbetyDjjdw4EBKly7NunXr+PDDDyldujR169alZMmSALzwwgv8+uuvTJgwgWvXrvHKK6/Qpk0bbGxsWLhwIbGxsbi6utKsWTNGjRqV4zi7dOlCUlIS69at47333sPDw4PQ0FCLPzq+UqVKfPDBB4SFhTFx4kQAqlSpkmlsBoOBOXPmsHjxYnbt2kX16tVZtGgRI0eONPWpUKFCltdrMBjYu3cvc+bM4dq1a7i5udG5c2dGjBhh0TXAnb+bW7ZsYeXKlSxbtoyYmBiKFi1K1apVefHFF+nWrZupb0BAAAsXLmTZsmVs3boVV1dX+vbta/bJnq6urqxbt85UnmJvb0/Tpk157bXXTL/BsbGxYdmyZUyePJkJEyZQpkwZBg4cyHfffWd6VkEkv7ExGv//pqUiIiIiIpIjqpkWEREREbGQkmkREREREQspmRYRERERsZCSaRERERERCymZFhERERGxkJJpERERERELKZkWEREREbGQkmkREREREQspmRYRERERsdD/A5Mlx9KQEbSHAAAAAElFTkSuQmCC\n", "text/plain": [ "
    " ] @@ -858,7 +652,7 @@ "\n", "result = explainer.explain(x)\n", "\n", - "plot_importance(result.shap_values[1], features, 1)" + "plot_importance(result.shap_values[1], features, '\"Good\"')" ] }, { @@ -866,29 +660,31 @@ "id": "c9f0d0aa-f805-4ca7-9d26-4280548dd66b", "metadata": {}, "source": [ - "## Interventional treeSHAP" + "## Interventional treeSHAP\n", + "\n", + "Interventional tree SHAP applied to the random forest. Comparison with the kernel SHAP results above show very similar outcomes." ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "id": "2d3b1ce0-8d52-4a6f-b30c-40779b9b2a8c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(,\n", + "(,\n", "
    )" ] }, - "execution_count": 16, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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eHp6ZjvPzc36G+jo6EhycnKW82NjYylfvrzVWLFixXB3d8/QmlGuXLlsj/33339nOu/Ox5cvXyY2NpaaNWtm2ON2sf/oo4+ydOlSVq5cyaBBgyhevDiBgYFMmTIFDw+PbOP4p7i4eNLSTLmeD+l/CWJjr9u0prBSLiyUCwvlwkK5SKc8WNwPufg3C997PRf/lpx+LgwGhzxdGFSRbQelS5fGYDAQGxtr1309PT2Ji4uzGktNTeXKlSuUKVPGajy7K+iAuVi/c787H5cpUwZvb2+WLFmS7X4tW7akZcuWXL9+nX379jFnzhxmz57NwoULs10nIiIiUhTojY92ULJkSerUqUNUVBQmk21XZrNTp04ddu3aRWpqqnlsx44dpKSkUL9+fZv2euCBB/D09GT37t1W4zt37rR63KRJE/7++29KliyJj49Phq87ubm50bFjRwIDA/ntt99siklERESksNKVbDsZN24c/fr144UXXuCZZ57BxcWFw4cPU6tWrTzvOXToULp06cLw4cPp2bMn58+f5/XXX8ff39+qHzs3ihUrxgsvvMD8+fMpW7YsDRo0YMeOHZw8edJqXrNmzfD396d///4MHDiQatWqER8fzy+//EJSUhLjxo3jww8/5PDhwzRv3hwvLy9Onz7Ntm3b6NSpU57PVURERKQwUZFtJw0bNmT16tUsWrSICRMmUKJECR5//HFat27N5cuX87TnY489xqpVq3jjjTcYMWIErq6utG/fngkTJuRpv+eff54rV67w4YcfsmbNGgICApgwYQLjx483z3FwcGDx4sUsX76cNWvWEBMTQ5kyZahRowZ9+vQB0u+/vWfPHubOncvVq1fx9PSkW7dujB49Ok9xiYiIiBQ2DiZ79jeI2EBvfLw7yoWFcmGhXFgoF+mUB4v7IReenm50HPdJvh9nS1inez4X/5b8euOjerJFREREROxMRbaIiIiIiJ2pJ1tERETkHpGYlMKWsPy/kUDyrdScJ8ldUZEtIiIico+4fi2Bf6NTWp/2mP/ULiIiIiIiYmcqskVERERE7EztIiIiIiL3KbfSLjg72V7OqSc7/6nIFhEREblPOTsVz9N9tf+NN1cWdWoXERERERGxMxXZIiIiIiJ2piLbzjZv3ozRaOTGjRsAxMXFERERwZkzZ3K9h9FoZN26dfkVYq5FR0djNBo5fvx4tvPm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ffcdvXv3pk6dOvj5+TF16lTi4+Otjnnw4EGefvppfHx8CA4O5ocffshVrKtXr6Zr167Ur1+fpk2bMmTIEP74448M83bu3ElISAi1a9fGz8+PgQMHcvbsWSDzdpHjx4/To0cPfHx8eOqpp9i9e3emebrdLrJ582Zmz54NgNFoxGg00qdPH3777Tdz/v7pxo0b1K1blzVr1uTqPEVEREQKsyJxJXvYsGFUqFCBZcuWsWbNGpydnalWrRo//fST1bynnnqKnTt3MnnyZLZs2UKpUqV46aWXqFSpEsOHDwfg+++/p2/fvrRu3Zrw8HAuX75MWFgY165dIzw8HIALFy4wcOBAfHx8CA8P5+LFi4wfP96qFSMr58+fp3fv3lSsWJH4+Hg+/PBDevTowY4dO3BzS/8I1KioKCZNmkT79u0ZNmwYJpOJb7/9lkuXLvHggw9m2DMxMZEBAwZQtmxZwsLCSExMZM6cOdy8eZPq1atnGkfLli3p378/q1evJjIyEgBXV1eqVauGr68vH3/8sVUhv23bNm7dusXTTz+di++IiIiISOFWJIrsypUrm1shfHx8KFWqVJZzp0+fTocOHZgzZw41atTg0KFDfPTRRzg6OgIQFhZG3bp1efPNN81rvL296du3L8ePH6d69eqsWbMGJycnVq5ciYuLCwAuLi5MmDAhx1gnT55s/nNqairNmjWjSZMm7N69m86dO5OWlkZYWBiBgYG88cYb5rmtWrXKcs9NmzZx6dIlNm7caG4jefDBB3n22WezXOPh4WEu2O9sqQkJCWHOnDlMmzbNnMvNmzcTEBBA2bJlczzH28qVc815UiY8Pd3ytK4wUi4slAsL5cJCuUinPFgoFxbKhUV+5KJIFNm2cHd355VXXmHw4MGUKFGC4cOHU6NGDQASEhI4fPgwU6dOJSUlxbymfv36lChRgp9++onq1atz9OhRmjZtai6wAQIDA3N1/MOHD7No0SKOHTvGlStXzOO///67+b8XL160ugtITo4ePUrNmjWt+rTr169PuXLlcr3HPz311FPMmTOHbdu20bVrV/7880++//57li9fbtM+cXHxpKWZbFrj6elGbOx1m9YUVsqFhXJhoVxYKBfplAeLopaLnArHopSL7OT0c2EwOOTpwmCR6Mm2VePGjSlfvjwmk4nu3bubx69du0ZqaiozZ86kZs2a5i8fHx9u3bpFTEwMALGxsRkKWBcXF0qWLJntcc+dO0f//v0xmUzMnDmT9evX89FHH1GuXDmSk5MBuHz5MgCenp65Pp/Y2Fg8PDwyjOe1yHZ1dSUoKIjNmzcD6Vexy5cvT/PmzfO0n4iIiEhhoyvZmXj99ddJTU2lfPnyzJkzh7CwMADc3NxwcHBgxIgRtGjRIsM6Ly8vIL0AjouLs3ouISGBmzdvZnvcL7/8ksTERJYuXWouyFNSUrh69ap5zu12jNjY2Fyfj6enp/nuKv90Z4y26NatG88++yynT5/mk08+oXPnzhQrVizP+4mIiIgUJiqy7xAdHc26det48803cXV1ZcCAAbRp04a2bdtSsmRJfH19+f333xkxYkSWe9SqVYvNmzeTkJBgbhnZuXNnjsdOTEzEYDBQvLjl27J161ar1pQqVarg7e1NVFQUAQEBuTonHx8ftmzZwvnz580tI99//32ORXaJEiUASEpKwsnJyeq5evXqUaVKFSZPnsy5c+fo0qVLrmIRERERKQrULvIPN27cYPLkybRr146goCD8/f155plnePnll7l06RIA48ePZ/v27UyYMIFdu3axf/9+Nm/ezKhRo8x903379iUxMZHBgwezd+9eIiMjefPNN3F2ds72+I0bNyY1NZWXXnqJ/fv3s3btWsLCwihdurR5jsFgYMKECWzfvp1x48axd+9e9u3bx7x58zh69Gim+wYHB1O2bFkGDRrEzp072bJlC5MmTcrxTYqPPvooAGvWrOHIkSMZroaHhITw/fffU7duXapWrZp9ckVERESKEBXZ/zB//nySkpKYPn26eWzSpEmULFmSGTNmANCgQQPef/99Ll26xMSJExk6dChvvfUWDzzwAOXLlwfS7zaycuVKLl++zMiRI/nggw9YsGBBjkW20Whk7ty5/PjjjwwePJhPP/2URYsWmW/dd1vHjh2JiIjg999/Z9SoUUyaNIlTp05l2ncN6f3gb731FiVLlmTMmDEsXryY0NBQKlasmG08DRo0YMCAAaxdu5bu3bubc3Bb69atAejatWu2+4iIiIgUNQ4mk8m22zuI/H/vv/8+r7/+Ol9++aXVp2jmlu4ucneUCwvlwkK5sFAu0ikPFkUtF56ebnQc90mmz20J61SkcpGd/Lq7iHqyxWZnzpzh9OnTrFixgi5duuSpwBYREREpzFRki80W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jz+YMGECALVr18bb25tXX32V0aNHc+XKFd56661s7+2dlQoVKlCrVi0WLVqEi4sLaWlprFixwuqqr62GDBnCiBEjmDFjBoGBgRw8eJAvv/wy2zUGg4GRI0cyffp03N3dadasGQcPHmT9+vWMHTsWJycnbty4weTJk2nXrp25d/uZZ57h5ZdfpmHDhnh4eGTYt2zZsnTv3p2IiAiKFy9OtWrV2LhxIzdv3rSa17lzZz788EP69OlD//79eeihh7hy5QpHjhzB09OTvn375jkfIiIiIoVFvhfZHh4eREZG8uabbzJ37lyuXbuGl5cX9erVM191dXBwYPHixSxfvpw1a9YQExNDmTJlqFGjRrYfae7r68uGDRuIjIwkKSmJypUrM3v2bFq3bg2kty8sXryYmTNnMmrUKKpUqcLLL79sLsJt9cYbbzB16lQmTJiAt7c3EyZMYM2aNXnaC9Lf5Dht2jRWrlxJVFQUjRo14tVXX2XAgAHZruvevTtJSUmsXbuW9957D29vb0JDQ80F7vz580lKSmL69OnmNZMmTeLrr79mxowZREREZLrvxIkTSUlJYcmSJRgMBp5++mn69evHvHnzzHOcnJxYu3YtixYtIiIigri4ODw8PKhduzYBAQF5zoWIiIhIYeJgMplsu72DiJ3o7iJ3R7mwUC4slAsL5SKd8mBRVHPh6elGx3GfWI1tCetUJHORmfy6u4jNn/goIiIiIiLZy/d2EREREREpOIlJKWwJ62Q1lnwrtYCiKTpUZIuIiIgUYtevJXBnM4Q+7TH/qV1ERERERMTOVGSLiIiIiNiZimwRERERETtTT7aIiIhIEZN8K/W+6ctOTErh+rWEgg7DZiqyRURERIoYxxLFMtw7+161JaxThjdu3g/ULiIiIiIiYmcqskVERERE7ExFdgGIjo7GaDRy/Phxm9Zt3rwZo9HIjRs37jqGr776inffffeu9xERERGRjFRkF1Fff/01a9euLegwRERERAolFdkiIiIiInamIjsPTpw4wYABA2jUqBG+vr489dRTvP/++wAEBAQwf/58q/m5afMwGo288847vPLKKzRq1IgGDRowe/ZskpOTM8w9c+YM/fr1w9fXl6CgIHbs2GH1/L59++jXrx9NmjShXr16dO/ena+++sr8fEREBKtXr+bs2bMYjUaMRiOhoaHm57/77jt69+5N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sWPHmvuRH330Uf7++282b97MY489RtmyZalUqRI+Pj4sWbIEV1dXDAYDK1euxNXVlfj4eJuC79mzJ4GBgTz22GM4ODiwYcMGSpYsae4Hb926NeHh4UyZMoXg4GCOHTvGpk2b8pCm9DcXOjs7M3nyZPr168eZM2f48MMP87QXpF/17d69OxERERQvXpxq1aqxceNGbt68me26qlWr0r59e2bNmsWNGzd46KGH2LhxI6dOnTLfAebYsWMsX76cqVOn8tBDDzF8+HD27NnD5MmTWbNmTaZX2lu0aEGNGjUYPXo048ePx9HRkYiIiAwtJCNGjKBbt24MGjSIrl27UrZsWS5cuMA333xDly5dMr3NoYiIiEhRk+OV7GeffZZmzZoxefJkQkJC2LBhAwDdu3dnypQp7Nq1iyFDhvDpp58SGhrKoEGDzGufeuopgoODWbBgASEhIeZb+YWFhfHQQw8xadIkXn31Vdq0aUPnzp1tDt7X15ePP/6YUaNG8eKLL5r7hW/fZrB69erMmTOHw4cPM3ToUA4ePMjcuXNtPg6k334wPDyc8+fPM3z4cP773/8SFhaWp71umzhxIl27dmXJkiWMGzcOLy8v+vXrl+O6V155hS5durBkyRKGDRvG2bNnWb58OQ0aNCA5OZlJkybh5+dHjx49AHB0dOS1117jhx9+sLqn9z85ODiwbNkyqlatyuTJk5k7dy69evWibt26VvOqVKli/qTI6dOnM3DgQCIiInB0dOThhx++q3yIiIiIFBYOJpPJtneeidiJ3vh4d5QLC+XCQrmwUC7SKQ8WyoWFp6cbHcd9UtBh2MWWsE735Bsfc7ySLSIiIiIitlGRLSIiIiJiZ3m6hZ+IiIiI3L+Sb6WyJezuPiX7XpGYlFLQIWRKRbaIiIhIEeNYopj60/OZ2kVEREREROxMRbaIiIiIiJ2pyBYRERERsTMV2SIiIiIidqYiW0RERETEzlRki4iIiIjYmYpsERERERE7U5EtIiIiImJnKrJFREREROxMn/goBcZgcPhX1xVGyoWFcmGhXFgoF+mUBwvlwkK5sMguF3nNk4PJZDLlNSAREREREclI7SIiIiIiInamIltERERExM5UZIuIiIiI2JmKbBERERERO1ORLSIiIiJiZyqyRURERETsTEW2iIiIiIidqcgWEREREbEzFdkiIiIiInamIlsK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Pyv9+vWjS5cuBXKuObHX35EPP/yQt956C4BmzZoxffp08/ln99y9Ird5gOzPpyi9VkDWuShqrxWQdS7u59eKkydPEhoayrVr1yhdujTz58/n0UcfZeDAgYwaNQofHx9SU1OZNWsWX3/9NQADBw40v1k0r8/di+42F127duXs2bNWxfNrr72G0Wikb9++xMXF4eDggKurKxMnTsTX1zfbeFRki4iIiIjYmdpFRERERETsTEW2iIiIiIidqcgWEREREbEzFdkiIiIiInamIltERERExM5UZIuI2FFERARGozHDV9++fe16nCNHjhAREWHXPfPbzZs3GTNmDH5+fhiNRjZv3gzAhg0bCAgI4D//+Q99+vSx2/E+++wz8zHu1smTJ3n22Wfx9fXFaDRy5swZu+xri+joaIxGI8ePH//Xj32nJUuW0LdvX+rVq1dg+RC51+kTH0VE7MzNzc18L95/jtnTkSNHWLx48T177+LMrF+/nr179zJ//ny8vb2pXLkysbGxvPzyy/Tq1YugoCDKlCljt+Nt27aNy5cvExwcfNd7vfbaa1y/fp1ly5bh4uKCl5eXHSK8f0VGRvLwww/j5+fHnj17CjockXuSimwRETsrVqxYjh9ScK9JTEzE2dk5X49x6tQpqlSpYvWJcd999x2pqal07dr1nv10RUiPPSAggCZNmtzVPiaTieTkZJycnOwUWcHYt28fBoOBvXv3qsgWyYLaRURE/mUbN26kffv21KpViyeffJJVq1ZZPX/o0CGGDBmCv78/vr6+dOrUif/+97/m5zdv3szs2bMBzO0ot9ssQkNDM1y5PXPmDEajkb1795rHjEYj77zzDq+++iqNGzemY8eOACQlJfHaa6/RokULatWqxdNPP83nn3+e4znltC4gIICPPvqIY8eOmWOOiIigV69eAHTq1MmqhSS3cWzYsIGOHTvi4+ND06ZNGTVqFNevXyc0NJTt27dz4MABq+NBemH/7LPPUq9ePerVq0enTp3YunVrpud1O3d//vkn7777rlWuIf1TItu0aUOtWrUIDAzk3XfftVofERGBn58f3333HV27dsXHxyfLYwH88ssvDBkyhAYNGlC3bl1CQkLMn0yXmdWrV9O1a1fq169P06ZNGTJkCH/88YfVnJzOd/fu3QQHB+Pr60vDhg3p1q0bBw4cyPKYAAaDygeRnOhK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5EimT5+Ou7s7zZo14+DBg6xfv56xY8fm6T7Yw4cPJyQkhF69etG/f3/c3d05duwY7u7uhISEZJjfuHFjUlNTeemllwgJCeHEiROsXr2a0qVLm+fs27cv2/P98MMPOXz4MM2bN8fLy4vTp0+zbds2OnXqlG2sBw4c4NKlS/z0008AfPHFF3h4eFCtWjWqVatm87mLFEYqskVE/kUDBw7Ey8uLNWvW8M477+Dk5MQjjzxCu3btzHPCwsKYPn06kyZNwt3dnV69epGYmMi6devMcxo0aMCAAQNYu3Ytb7zxBg0bNuS9996jevXqzJkzh6VLl7Jz504aN27M3LlzrVpPsuLg4MDixYtZvnw5a9asISYmhjJlylCjRo1sP+48r+vudr/BgwdTpkwZ1q5dy4cffkiZMmVo0KABpUqVAuDZZ5/l559/ZvLkyVy9epURI0bQvn17HBwcWLhwIXFxcXh4eNCyZUvGjh1rc5zdu3cnKSmJtWvX8t577+Ht7U1oaCh9+/a1eS9I/8Xpgw8+ICwsjClTpgBQrVq1LGMzGo3MnTuXxYsXs3PnTmrUqMGiRYsYM2aMeU7lypWzPV+j0ciePXuYO3cuV69exdPTk27dujF69OhsY42IiLC6l/bMmTMBGDFixH31KaQi+cnBZPr/N0cVERERERG70C38RERERETsTEW2iIiIiIidqcgWEREREbEzFdkiIiIiInamIltERERExM5UZIuIiIiI2JmKbBERERERO1ORLSIiIiJiZyqyRURERETs7P8BD7Klm1YQYfIAAAAASUVORK5CYII=\n", + "image/png": "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MjKIiooiNDTUdLc5MDCQq1evsnTpUl566SW8vLzw8PDAwcEhU5lCq1atTH82Go3UqVOHc+fOsW7dujwl04cPH6Zbt260bNnS1Na2bdtc75+VWzXSdnZ291ResXTpUhwdHbP9/NKlS3z00UcMGTKE3r17A9C4cWOzc8nK8ePH+eKLL5g1axbt27c37ff888+zePFiVqxYQfHixZk9ezbdu3dn48aN7NixgxIlSjB27Nhsx/3mm284cuQI69ato0aNGsDNeu3g4GCzZHrBggWUKVOG5cuX4+DgANy8O//cc8/x9ddf07Rp09xcHgBKl3bKdV8Ra2bNL5W5Xx7Fc7Z2mhProzmxPvdjTiyqmT579iznz58nJCTErL1ly5asXbuWP/74g+rVq2e7/+XLl4mKimLnzp2cO3fOdPfW09MzT3FUrVqVFStWYGtrS8OGDalQoULeT+Y+qF+/fo6JNNwslUhJSaFZs2amNltbW5o1a2a6I56Vw4cPYzQaza69ra0tISEhZvsFBATQs2dPJk6cSFpaGu+//z7FixfPdtxDhw5RpkwZUyIN8Pjjj+Pj42PWb+/evbRr1w5bW1tTSUq5cuV4/PHH+d///penZDo+PpGMDGOu+z8I+sYnloiLe7Re2+Lu7vzInbO105xYH82J9bF0TmxtbXK8AWjROtO36mNLly5t1n5r+/LlyznuHx4ezpdffkmfPn1YsWIFH3/8MR06dCAlJSVPcUyaNInmzZuzaNEiQkJCaNGiBV988UWexrgfypQpc9c+Fy5cALK/htk5f/48xYsXz7QKR+nSpbl+/TqpqammttatW5OamkqVKlWoXbt2juPGxcVl+UDinfFcunSJ5cuX4+PjY/b177//Ehsbm+MxRERERAobi+5Mu7u7A5g94Hb7dqlSpbLdNyUlhd27dzNp0iS6du1qav/www/zHEfJkiWZMGECEyZM4Pfff+edd95h1KhRGAwGKleujIODAzdu3DDb58qVK3k+DoCjo2OmsbL7oSE3dcO3Eu74+HhcXFxM7Xde0zt5eHhw7do1rl+/bpZQx8fHU6xYMVPpRVpaGhMnTsTb25s///yT6OhoOnfunO247u7uXLx4MVN7fHy82WokpUqVonnz5nTs2DFTX1dX1xxjFxERESls7npn2t7ePtMd41v10Hc+LLd582acnJxMLx3Jat/U1FQy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cWm8Ui7FcbC3K+gwRETkEZKcksbVK9cLOoxC734tjacHEEVu42Bvp3WmRUTkgdoU0RY9PvrwUpmHiIiIiIiFlEyLiIiIiFhIyXQBiImJwWAwcPTo0Tztt2HDBgwGA0lJSfccw549e3jvvffueRwRERGRR5mS6UfUd999x+rVqws6DBEREZGHmpJpERERERELKZm2wLFjx+jTpw9169bF39+f5557jg8++ACAoKAg5syZY9Y/N+UZBoOBd999l9dff526detSu3Ztpk+fTmpqaqa+p06dolevXvj7+xMSEsK2bdvMPt+9eze9evWiQYMG1KpVi06dOrFnzx7T51FRUaxcuZLTp09jMBgwGAyEh4ebPt+/fz/du3enRo0a1KtXjwkTJpCYmGj6/MqVK4wfP57AwED8/Pxo2rQpEyZMyNtFFBERESkEtDSeBQYMGEClSpWYO3cuDg4OnDhxIl/qmFeuXIm/vz9z587lzz//ZN68eTg4ODB27FizfqNGjaJTp0706dOHNWvWMGLECHbs2IGXlxdwM9l+5pln6N27N7a2tnzzzTf07duXNWvWEBAQQMeOHTl58iQxMTEsWLAAADc3NwB++uknevbsSfPmzYmMjOTSpUtERERw5coVIiMjAZg1axYHDhxg3LhxlClThtjYWPbv33/P5y8iIiLysFEynUcXL17k1KlTLFq0CIPBAECDBg3yZewSJUowf/58bG1tadKkCampqSxZsoT+/fvj4uJi6vfSSy8RFhYGgI+PD40aNeKrr76ia9euAHTv3t3UNyMjg3r16vHnn3/y8ccfExAQgJeXFx4eHjg4OODv728WQ0REBDVr1uTtt982tXl6etKzZ0+OHj2Kt7c3hw8fplu3brRs2dLUp23btnk+35wWQBcREXmUuLs7F3QIj4T7cZ2VTOeRi4sLjz32GJMnT+bFF1+kXr16lC5dOl/GbtasGba2/1d506JFC95++22OHTtGnTp1TO2BgYGmP7u6uuLm5sbZs2dNbWfPnmXevHl8//33xMXFcesll7Vq1crx+NevX+fgwYNMmDCBtLQ0U3tAQAD29vb8+uuveHt7U7VqVVasWIGtrS0NGzakQoUKFp2vNb4BUd/MRESkIFjyZj7Jm/v1BkTVTOeRra0tK1aswN3dnXHjxtGoUSNeeOEFjhw5cs9j35mU3yq9iIuLM2t3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\n", "text/plain": [ "
    " ] @@ -899,13 +695,12 @@ ], "source": [ "from alibi.explainers import TreeShap\n", - "import shap\n", "\n", "tree_explainer_interventional = TreeShap(rfc, model_output='raw', task='classification')\n", "tree_explainer_interventional.fit(scaler.transform(X_train[0:100]))\n", "result = tree_explainer_interventional.explain(scaler.transform(x))\n", "\n", - "plot_importance(result.shap_values[1], features, 1)\n" + "plot_importance(result.shap_values[1], features, '\"Good\"')\n" ] }, { @@ -913,29 +708,31 @@ "id": "94c05d4f-13b8-4266-bced-510664ba7342", "metadata": {}, "source": [ - "## Path Dependent treeSHAP" + "## Path Dependent treeSHAP\n", + "\n", + "Path Dependent tree SHAP applied to random forest. Again very similar results to kernel SHAP and Interventional tree SHAP as expected." ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 19, "id": "aeef4572-2c4e-41ea-8298-80c95476be96", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(,\n", + "(,\n", "
    )" ] }, - "execution_count": 17, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAFECAYAAADlf7JXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABj4UlEQVR4nO3deXxN1/7/8VcOMpCQhCSqqjUeLiHGGKI0hNRQRExFa6h5qjk1Fq2hpEjMSku1hFb16q156O2gQUu51ZYa2iJIQ0QigyTn94ef8+1pBslpiBzv5+ORx3XWXnvtz97Luf1k++y17UwmkwkREREREck1Q34HICIiIiJSUCmZFhERERGxkpJpERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaRERERERKxXO7wDk8XXjRgLp6Vrm3BaVLOlMTEx8fochD5Dm2LZpfm2b5jd3DAY73NyKZbldybTkm/R0k5JpG6a5tX2aY9um+bVtmt+8ozIPERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaRERERERKymZFhERERGxkpJpERERERErKZkWEREREbGSkmkRERERESvZmUwmvQJH8kVMTPwDfQOTS3EnHB30kk8REZG/SrmTxs3Y2/kdRoFhMNhRsqRzltuVaYjNcnQoTPuxn+Z3GCIiIo+U7aEd8jsEm6IyDxERERERKymZFhERERGxkpLpR9zWrVsxGo0kJCTk6bghISEEBQXlyVi9e/dm5MiReTKWiIiISEGiZFpERERExEpKpkVERERErKRkOp8dO3aMwYMH4+fnh4+PDx06dODf//53tvskJSXx1ltv8dxzz1GjRg38/f0JDQ01b09LSyM8PJzmzZtTo0YN2rZty/bt2zMd6+uvv6Z9+/b4+PjQo0cPzpw5Y7E9MTGRN954gyZNmuDt7U3nzp356quv/vmJi4iIiNgALY2Xzy5fvkydOnXo0aMH9vb2fP/990yaNAmDwUC7du0y9DeZTAwdOpRjx44xdOhQatSowdWrVzl69Ki5T1hYGO+88w7Dhg3D29ub3bt3M27cOOzs7CzGjIqK4q233mLIkCE4ODjw1ltvMXr0aLZv346dnR0AU6ZMYf/+/YwZM4Zy5cqxZcsWBg0axLp166hXr96Dv0AiIiIijzAl0/msbdu25j+bTCbq16/P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sZLKPERERERywKW4E44OBT91Us103ir4fyNEREREHgJHh8I2sf60LT9cmR9U5iEiIiIiYiUl0yIiIiIiVlIyLTni7+/PvHnzMt1mNBrZsGHDQ45IREREJP8pmRYRERERsZKSaRERERERKymZFkJCQggKCmLv3r0EBgbi7e1Njx49+PXXX/M7NBEREZFHmpJpAeDy5cvMmTOHoUOHEhoaSnx8PP379yc5Odncx2QykZqamuFHRERE5HGldaYFgBs3brBs2TLq1KkDQPXq1QkICGDr1q306NEDgHfffZd33303P8MUEREReaQomRYASpYsaU6kAZ588kmqV6/OiRMnzMn0Cy+8wEsvvZRh3+DgYCuP6WxdsFIgeHi45HcI8oBpjm2b5te2aX7zjpJpAe4m05m1RUdHmz+XKlUKb2/vPDtmTEw86emmPBtPHh0eHi5ER9/K7zDkAdIc2zbNb+ZsKQHV/OacwWCX7Q1A1UwLADExMZm2eXh45EM0IiIiIgWDkmkB7ibO33//vfnz5cuXOXXqFDVr1szHqEREREQebSrzEADc3NwYP348r776Ko6OjoSFheHu7k5QUFB+hyYiIiLyyFIyLQCUKVOGwYMHExoayqVLl6hRowahoaE4ODjkd2giIiIijywl02LWqlUrWrVqlem2/fv3Z7nfL7/88qBCEhEREXmkqWZaRERERMRKSqZFRERERKxkZzKZtNCv5AutM227tEat7dMc2zbNb+Zcijvh6FDwK2RT7qRxM/Z2fodRYNxvnemC/zdCRERE5CG4FZeILfyKYUsvn3kUqMxDRERERMRKSqZFRERERKykMg8RERGRR8TDqMtOuZP2QMd/3CiZFhEREXlEODoUpv3YTx/oMbaHdnig4z9uVOYhIiIiImIlJdMiIiIiIlZSMv0QbN26FaPRSEJCQrb9evfuzciRI/PsuEajkQ0bNmTb58CBAxiNRi5evJhnxxURERF5XKhm2oZFRERQtmzZ/A5DRERExGYpmbZBSUlJODo64uPjk9+hiIiIiNg0lXnkoSNHjtC7d29q165N3bp16d27N6dOnTJvv3jxIn379sXHx4fAwEB279593zEPHTpEly5d8Pb2pnHjxrz++usW5SKRkZEYjUa+/PJLBg8eTO3atZk5cyaQsczDZDIRHh5Oo0aNqF27NhMmTCA+Pj7DMZOTk3nr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u5fBgwfz2WefERISwsCBA837Pv/88wQFBTF//nyCg4PNS+SFhoby1FNPMXHiRN58801atWpFx44dcx28j48Pn3zyCSNHjuTVV1811/PeW76vSpUqzJ49m+PHjzNkyBCOHDnCnDlzcn0cuLusX1hYGFeuXGHYsGH8+9//JjQ01Kqx7pkwYQKdO3dm6dKljB07Fk9PT/r27Xvf/d544w06derE0qVLGTp0KJcuXWLFihXUq1ePlJQUJk6ciK+vL927dwfA3t6et956i++//95iTey/srOzY/ny5VSsWJFJkyYxZ84cevbsSe3atS36lS9f3vzmxGnTpjFgwADCw8Oxt7fn6aef/kfXQ0RERKSgsTOZTFpOQfKFVvOwXVoJwPZpjm2b5te2eXi40H7sp/kdhlW2h3awjdU8RERERETEytU8RERERKRgSrmTxvbQf/aSu/ySlJya3yFkoGRaRERE5DFiX6SQynjykMo8RERERESspGRaRERERMRKSqZFRERERKykmmkRERGRx0jKnTQ8PFzyO4w8k5Scyq24xHw7vpJpERERkceIfZFCBXad6cxsD+1Afj5OqTIPERERERErKZnOB5GRkRiNRk6fPp2r/bZu3YrRaCQhIeEfx/DVV1/x3nvv/eNxRERERB5nSqYfU19//TXr16/P7zBERERECjQl0yIiIiIiVlIybYUzZ87Qv39/GjRogI+PD88//zwffPABAP7+/sybN8+if07KM4xGI++++y5vvPEGDRo0oF69esyaNYuUlJQMfS9evEjfvn3x8fEhMDCQ3bt3W2w/ePAgffv2pVGjRtSpU4euXbvy1VdfmbeHh4ezdu1aLl26hNFoxGg0EhISYt5+9OhRevXqRa1atfD19WXKlCnEx8ebt8fFxTF58mT8/Pzw9vamefPmTJkyJXcXUURERMQGaDUPKwwePJiKFSsyf/587O3tOXfuXJ7UMa9duxYfHx/mz5/Pr7/+ysKFC7G3t2fixIkW/caNG0fXrl3p378/GzZsYMyYMezdu5fSpUsDd5Pt5557jn79+mEwGPjvf//LgAED2LBhA3Xr1qVLly5cuHCByMhIlixZAoC7uzsA3333HX369KFly5aEhYVx48YNQkNDiYuLIywsDIA5c+Zw7NgxJk2aRKlSpYiKiuLo0aP/+PxFREREChol07l0/fp1Ll68yLJlyzAajQA0atQoT8YuVqwYixcvxmAw0KxZM1JSUlixYgWDBg3C1dXV3O/ll18mODgYgOrVq9OkSRMOHDhAjx49AOjVq5e5b3p6Or6+vvz666989NFH1K1bl9KlS+Pp6Ym9vT0+Pj4WMYSGhlK7dm0WLVpkbvPy8qJPnz6cPn2aKlWqcPLkSXr27EmbNm3MfTp06JAn10BERESkIFEynUuurq488cQTTJ8+nZdeeglfX19KliyZJ2O3aNECg+H/Km9atWrFokWLOHPmDPXr1ze3+/n5mf/s5uaGu7s7V65cMbdduXKFhQsX8s033xAdHY3JZAKgTp062R4/MTGR48ePM2XKFFJTU83tdevWpUiRIvz4449UqVKFqlWrsmbNGgwGA40bN6Z8+fJWnW/Jks5W7ScFgy29EEAypzm2bZpfKUjy8++rkulcMhgMrFmzhkWLFjFp0iSSkpKoU6cOU6ZM4V//+tc/GvvvSfm90ovo6GiLdhcXy78w9vb25trq9PR0hgwZQkJCAiNHjuTpp5/GycmJsLAwYmJisj1+XFwcaWlpzJgxgxkzZmTYHhUVBcC0adMICwtj2bJlzJw5k6effppRo0bRtm3bXJ1vTEw86emmXO0jBYOHhwvR0fm5hL48aJpj26b5tW22+IvSg/z7ajDYZXsDUMm0FSpWrEh4eDh37tzh6NGjLFiwgIEDB/Lf//4Xe3t77ty5Y9E/Li4uR+P+Pdm9fv06AB4eHjmO7bfffuPUqVOsXr2aZ5991tyelJR0331dXFyws7Nj+PDhNGvWLMN2T09PAIoXL86UKVOYMmUKP//8M++88w7jxo3DaDRSqVKlHMcqIiIiUtBpNY9/oEiRIjRq1Ii+ffsSHR1NXFwcpUuX5uzZsxb9/rqSRnb27dtHenq6+fPu3btxdHSkcuXKOY4pOTkZuHu3+p5Lly5x7NixDLHf63tP0aJF8fHx4fz583h7e2f48fLyynC8qlWrMmHCBNLT0zl37lyO4xQRERGxBboznUs///wzb731Fs8//zxPPfUUcXFxrF69mqpVq+Lq6kpAQACzZs1ixYoVeHt7s2vXLn799dccjZ2QkMCoUaPo0qULv/76K8uWLaNnz54WDx/eT4UKFShdujTz5s1j1KhRJCQkEBYWZr6r/Nd+f/75J1u3bqVy5cq4ublRtmxZxo0bR58+fTAYDLRu3ZpixYoRFRXFwYMHGT16NOXLl6dHjx4EBARQuXJl7Ozs2Lx5M0WLFqVmzZq5uZQiIiIiBZ6S6Vzy8PCgZMmSrFixgmvXrlG8eHF8fX0ZN24cAF27duX333/n/fffJyUlhQ4dOjBkyBCmTZt237H79evHH3/8wdixY0lPTyc4OJgxY8bkKj57e3vCw8OZOXMmI0eOpHTp0gwePJjDhw9bvL78+eefJzIykvnz53P9+nU6derE3LlzqVevHh988AFhYWHmO85lypShadOmlCpVCgAfHx8++eQTLl68SKFChahWrRqrV682L80nIiIi8riwM91b6kHyldFoZOrUqRbL2tk6PYBou/Twku3THNs2za9t8/Bwof3YT/M7jDyzPbRDvj6AqJppERERERErKZkWEREREbGSaqYfEb/88kt+hyAiIiKPgZQ7aWwPtZ03Fyclp96/0wOkZFpERETkMWJfpJBq4vOQyjxERERERKykZFpERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKQ3IEq+MRjs8jsEeYA0v7ZPc2zbNL+2TfObc/e7VnYmk8n0kGIREREREbEpKvMQEREREbGSkmkRERERESspmRYRERERsZKSaRERERERKymZFhERERGxkpJpERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaXlgEhMTefXVVwkICCAwMJADBw5k2m/v3r0EBQXRrl072rZty9q1ay22L126lJYtW9KyZUuWLl36MEKXHMjp/F69epXevXtTt25dgoKCLLZFRkZSq1YtOnToQIcOHejSpcvDCF1yIC/mF2Dz5s0EBATQsmVLZs6cSXp6+oMOXXIgp/MLWc+hvr+PlvPnz9OtWzdat25Nt27duHDhQoY+aWlpzJgxg5YtWxIQEMCWLVtytE3uwyTygISHh5smT55sMplMpvPnz5saN25sio+Pz9Dv+PHjpitXrphMJpMpLi7O1LJlS9ORI0dMJpPJdPjwYVO7du1MiYmJpsTERFO7du1Mhw8ffngnIVnK6fzGxcWZjhw5Yjpw4ICpU6dOFtu+/fbbDG3yaMiL+f39999NTZs2NcXExJjS0tJM/fr1M33yyScPI3y5j5zOb3ZzqO/vo6V3796mbdu2mUwmk2nbtm2m3r17Z+jzySefmPr162dKS0szxcTEmJo2bWr6448/7rtNsqc70/LA7Nixg27dugHwzDPPUKNGDf773/9m6FerVi28vLwAcHFxoWLFily6dAmAzz//nI4dO+Lo6IijoyMdO3bk888/f3gnIVnK6fy6uLhQr149nJycHnaI8g/kxfzu2rWLli1b4u7ujsFgoEuXLvr+PiJyOr+aw4IhJiaGU6dO0a5dOwDatWvHqVOnuH79ukW/zz//nC5dumAwGHB3d6dly5bs3Lnzvtske0qm5YG5fPkyTz75pPnzE088wZUrV7Ld5+zZsxw/fpyGDRsCEBUVRZkyZSzGiIqKejABS65YM7+ZuXDhAp06daJLly588skneRmi/AN5Mb9///6WKVNG399HRE7n935zqO/voyEqKgovLy8KFSoEQKFChfD09Mzwfcvsv6n35j27bZK9wvkdgBRcnTp14vLly5lu++abb3I93rVr1xg6dCjTp08336mW/JPX85uZ6tWr88UXX+Di4sIff/xB37598fLyonHjxnkyvmTtYcyv5B99f0UeHiXTYrX73YUoU6YMly5dwt3dHbj7W6+vr2+mfWNiYujbty+vvPIKzz//vLn9iSeesPgPQlRUFE888UQeRC/3k5fzmxVnZ2fzn5966ilatmzJ999/r/8YPwQPY37//v29fPmyvr8PSV7Nb3ZzqO/vo+OJJ57g6tWrpKWlUahQIdLS0rh27VqG79u9+axZsyZgeTc6u22SPZV5yAMTGBhIREQEcPefAk+ePEnTpk0z9Ltx4wZ9+/alZ8+eGZ4GDwwMZNu2bSQlJZGUlMS2bdsskm3JPzmd3+xcu3YNk8kEQGxsLF9//TVVq1bN81gl9/Jiflu3bs3evXu5fv066enpbNmyRd/fR0RO5ze7OdT399FRsmRJqlWrxmeffQbAZ599RrVq1cy/LN0TGBjIli1bSE9P5/r16+zdu5fWrVvfd5tkz85075sgksdu375NSEgIP/30EwaDgfHjx9OyZUsAFi9ejKenJz169GDevHl88MEHlC9f3rzvSy+9ROfOnQEIDw9n27ZtAHTs2JERI0Y89HORjHI6v2lpaTz33HOkpKQQHx+Pu7s7Xbp0YcSIEWzYsIGNGzdSuHBh0tLS6NixI6+88ko+n5lA3swvwKZNm3jnnXcAaNKkCdOmTTPXdUr+yen8QtZzqO/vo+Xs2bOEhIQQFxdH8eLFmTdvHhUqVGDAgAGMHDkSb29v0tLSmDlzJl9//TUAAwYMMD+Imt02yZ6SaRERERERK6nMQ0RERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVE8lB4eDhGozHDT58+ffL0OCdOnCA8PDxPx3zQbt++zejRo/H19cVoNLJ161YANm/ejL+/P//617/o3bt3nh3v888/Nx/jnzp79iwvvvgiPj4+GI1GLl68mCfj5kZkZCRGo5HTp08/9GP/3dKlS+nTpw916tTJt+sh8qjQGxBFRPKYi4uLeV3ev7blpRMnTrBkyZICte76xo0bOXDgAPPmzcPLy4ty5coRHR3N66+/Ts+ePQkMDKREiRJ5drydO3dy48YNgoKC/vFYb731Frdu3WL58uU4OTnh6emZBxEWXBERETz99NP4+vqyf//+/A5HJF8pmRYRyWOFChXCx8cnv8PIlaSkJBwdHR/oMc6dO0f58uUt3qp29OhR0tLS6Ny58yP99rxz587h7+9Po0aN/tE4JpOJlJQUHBwc8iiy/HHw4EEMBgMHDhxQMi2PPZV5iIg8ZFu2bKFt27bUqFGD5557jtWrV1tsP3bsGIMHD8bPzw8fHx86dOjAv//9b/P2rVu3MmvWLABzGcm98oiQkJAMd2IvXryI0WjkwIED5jaj0ci7777Lm2++ScOGDWnfvj0AycnJvPXWWzRr1owaNWrwwgsv8MUXX9z3nO63n7+/Px999BGnTp0yxxweHk7Pnj0B6NChg0XpR07j2Lx5M+3bt8fb25vGjRszcuRIbt26RUhICLt27eLw4cMWx4O7CfyLL75InTp1qFOnDh06dGDHjh2Znte9a/f777/z3nvvWVxrgA0bNtCqVStq1KhBQEAA7733nsX+4eHh+Pr6cvToUTp37oy3t3eWxwL4+eefGTx4MPXq1aN27doEBweb30iXmbVr19K5c2fq1q1L48aNGTx4ML/99ptFn/ud7759+wgKCsLHx4f69evTpUsXDh8+nOUxAQwGpQ8i9+jOtIjIA5CammrxuVChQtjZ2fHOO++wcOFCXnnlFRo0aMCPP/7I4sWLcXJyolevXgBcvnyZOnXq0KNHD+zt7fn++++ZNGkSBoOBdu3a0bx5c/r168fatWuJiIgAwNnZOdcxrlmzhnr16vHWW29x72W4I0eO5MSJE4wYMYJy5cqxY8cOhgwZwscff0y1atWyHOt++y1ZsoRFixbxxx9/MGfOHABKly6Nu7s7M2fOZMGCBTz11FOUK1cux3EsW7aMsLAwXnzxRcaPH09SUhIHDx7k9u3bDB06lMuXL3Pr1i2mT59uPl58fDyDBw+mRYsWDBs2DJPJxOnTp7l161am5+Xp6UlERATDhw/H19eX3r17m6/15s2bmTVrFn379sXPz4/IyEjmzp1LSkoKAwcONI+RlJRESEgIr7zyCs8880yWJSJnz56lR48elC9fnhkzZuDq6sr//vc/oqKisrzuV65coVevXpQpU4b4+Hg2bdpE9+7d2b17Ny4uLvc9399//51Ro0bRu3dvxo8fT0pKCv/73/+4efNmlscUkb8xiYhIngkLCzNVqVIlw8/XX39tunXrlsnHx8cUHh5usc+iRYtMjRs3NqWmpmYYLz093XTnzh3T1KlTTb179za3v//++6YqVapk6D9x4kRTp06dLNr++OMPU5UqVUz79+83t1WpUsXUsWNHi37ffPONqUqVKqbIyEiL9hdffNE0YsSILM85p/tlFtu3335rqlKliumXX37J1Xg3b9401axZ0zR79uws4xoxYoSpV69eFm0nTpwwValSxXTr1q0s98vMc889Z5o7d675c1pamsnPz88UEhJi0W/69OmmOnXqmJKSkkwm0//9fdizZ899jzF69GhT06ZNTYmJiZluz+xa/VVqaqopMTHR5OPjY/rkk09MJtP9z3fHjh2mBg0a3De2rOzfv99UpUoV0x9//GH1GCIFnf6dRkQkj7m4uPDRRx9Z/NSsWZNjx45x+/ZtAgMDSU1NNf80bNiQP//8kytXrgBw8+ZN3njjDZ577jmqV69O9erViYiI4MKFC3ka57PPPmvx+ZtvvsHDw4M6depYxNeoUSP+97//ZTmOtfv9k/GOHTtGUlJSrh8uLFeuHEWLFmXcuHHs3buXuLi4XMcHd+8IX7t2jcDAQIv2Nm3aEB8fzy+//GJus7Ozy3CtM/Ptt9/Spk2bXNWuHz9+nL59++Lr68u//vUvatWqxe3btzl//jxw//OtUqUKt27dYuLEiXz11Vfcvn07x8cWkbtU5iEikscKFSqEt7d3hvYbN24A0LZt20z3i4qK4sknnyQkJIQffviBoUOHUrFiRZydndm4cSP79u3L0zhLlSqVIb7o6GiqV6+eoW+hQoWyHMfa/f7JeLGxsQB4eHjkauwSJUrw7rvvEh4ezquvvorJZKJJkyZMnTqVp556KsfjREdHA1CyZEmL9nuf/1omUaJECezt7e87ZmxsbK7O5/Lly/Tr14+aNWsyY8YMPD09KVKkCIMGDSIlJcV87OzOt0KFCixbtoxVq1YxcOBAChcuTEBAAJMnT8bd3T3HsYg8zpRMi4g8JPeWfVu5cmWGJAygfPnyJCcnc/DgQaZNm0aPHj3M2z788MMcHcPe3p47d+5YtGV199XOzi5DfF5eXixdujRHx/qn+/2T8VxdXYG7SW1ukz4fHx/WrFlDUlIS33zzDXPnzmXs2LFs3rw5x2PcS3pjYmIs2u99tmaJP1dXV3OSnhNffvklSUlJLFu2jKJFiwJ3a/X/Xu98v/Nt3rw5zZs359atWxw8eJDZs2cza9YsFi5cmOtzEHkcKZkWEXlIateujaOjI9euXaN58+aZ9rl16xbp6ekWdzLj4+MzLD9WpEgR4O6qF39dZq106dJcunTJov2rr77KUXyNGjXi3XffpWjRolSsWDHH52Xtfv9kvHvXctu2bUycODHTPkWKFCE5OTnL4zg6OuLv78+ZM2dYuXJlrmIsXbo0np6e7Ny5k2bNmpnbd+zYgbOzM0ajMVfjwd3z3rFjB6NHj87R0nlJSUkYDAYKF/6//5Tv2LEjw8Ov99zvfF1cXGjfvj1Hjhzh2LFjuY5f5HGlZFpE5CEpXrw4w4cP58033+TSpUvUr1+f9PR0Lly4QGRkJEuXLsXFxQVvb2+WLl2Ks7MzBoOBVatW4ezsTHx8vHmsChUqALBu3ToaNmyIs7MzFSpUoGXLloSFhTF58mSCgoI4deoUH3/8cY7ia9KkCX5+fvTr148BAwZQqVIl4uPj+fnnn0lOTmbs2LF5ut8/iaN48eIMHTqUhQsXcufOHZ599llSUlL44osvGD58OF5eXpQvX559+/axd+9evLy88PT05KeffuLjjz+mRYsWlClThqtXrxIREUHDhg1zFaPBYGDEiBFMmzYNV1dXmjRpwpEjR9i4cSNjxoyxah3pYcOGERwcTM+ePenXrx+urq6cOnUKV1dXgoODM/Rv2LAhaWlpvPbaawQHB3PmzBnWrl1L8eLFzX0OHjyY7flu2rSJ48eP07RpUzw9Pblw4QI7d+6kQ4cO2cZ6+PBhrl+/zo8//gjAf//7X9zd3alUqRKVKlXK9bmLFGRKpkVEHqIBAwbg6enJunXrePfdd3FwcOCZZ56hTZs25j6hoaFMmzaNiRMn4urqSs+ePUlKSmLDhg3mPvXq1aN///6sX7+et99+m/r16/P+++9TpUoVZs+ezbJly9izZw8NGzZkzpw5FiUjWbGzs2PJkiWsWLGCdevWERUVRYkSJahatWq2r/m2dr9/Ot6gQYMoUaIE69evZ9OmTZQoUYJ69epRrFgxAF588UV++uknJk2axM2bNxk+fDht27bFzs6OhQsXEhMTg7u7O82bN2fMmDG5jrNr164kJyezfv163n//fby8vAgJCbH61fEVKlTgww8/JDQ0lMmTJwNQqVKlLGMzGo3MmTOHJUuWsGfPHqpWrcrixYsZPXq0uU+5cuWyPV+j0cj+/fuZM2cON2/exMPDgy5dujBq1KhsYw0PD7dYi3rGjBkADB8+vEC9lVMkL9iZTP9/cVEREREREckVLY0nIiIiImIlJdMiIiIiIlZSMi0iIiIiYiUl0yIiIiIiVlIyLSIiIiJiJSXTIiIiIiJWUjItIiIiImIlJdMiIiIiIlZSMi0iIiIiYqX/B085VuEWqJ6IAAAAAElFTkSuQmCC\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAFECAYAAADlf7JXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABmvElEQVR4nO3deVxV1f7/8RcHAQdQQBkys5w4ehVFUXHANBQzh1TEKfXmkBOm5kzOQzlkZIKzZWmWoWV27eZsVpaRlqY3K02zUlERRQQFBM7vD3+eb0cG4YhyxPfz8fDx9ayz9tqftVfX74fNZ69tZzKZTIiIiIiISL4ZCjsAEREREZEHlZJpERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaRERERERKymZFhERERGxUrHCDkAeXpcvJ5OZWXS2OS9b1pn4+KTCDkP+QWtim7QutknrYpu0LoXPYLDDza1Ujt8rmZZCk5lpKlLJNFDk5lMUaE1sk9bFNmldbJPWxbapzENERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESnoDohRZLqVLUNzp/v0nnnYj476dS0RERGyDkmkpsoo7FaPDmE/v2/k2R3S8b+cSERER26AyDxERERERKymZFhERERGxkpJpIDw8nJCQkDv2CwgIICoq6p7EYDQaWbt27T0ZW0RERETuDdVMA2FhYaSkpBR2GCIiIiLygHlgk+mMjAwyMjJwdHS867EqVqxYABHJjRs3MBgM2NvbF3YoIiIiIvfFA1PmcasUY+fOnbRr147atWtz+PBhAHbu3ElISAi+vr40bdqU1157jRs3bpiPPXfuHCNHjqRx48bUrl2bVq1a8eabb2YZ+5/279/Ps88+i6+vLyEhIfz4449ZYgoKCmLevHkWbRs3bsRoNJKcnAzAtWvXmDlzJk8//TR16tQhKCiIGTNmkJSUlO9rsGHDBtq2bUvt2rUJCAigd+/eHD9+HICYmBiMRiPHjh2zOKZPnz6MGDHCom3t2rU0b94cPz8/wsLC2LdvH0ajkZiYGHOfVatW0aVLF/z9/WnSpAlDhgzhzz//zHbs6OhoWrVqRe3atblw4UK+5yUiIiLyoHqg7kyfOXOG+fPnExYWhoeH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kYGHh0thhyG30ZrcvZTUdK4mXi/sMEREbJKSaZEC4uhgr32mpUjaHNERVZ6LiGRPZR4iIiIiIlZSMi0iIiIiYiUl05InQUFBzJs3L9vvjEYja9euvc8RiYiIiBQ+JdMiIiIiIlZSMi0iIiIiYiUl00J4eDghISHs3LmTNm3a4OvrS8+ePfn9998LOzQRERERm6ZkWgA4e/Ysc+bMISwsjIiICJKSkhgwYACpqanmPiaTifT09Cx/RERERB5W2mdaALh8+TJLliyhXr16ANSsWZPg4GA2btxIz549AXjnnXd45513CuycZcs6F9hYInJvFfTLb/QyHdukdbFNWhfbpmRaAChbtqw5kQZ49NFHqVmzJocPHzYn088++yz//ve/sxwbGhpq1Tnj45PIzDRZF7AN0j92UpTFxRXca1s8PFwKdDwpGFoX26R1KXwGg12uNwCVTAtwM5nOri0uLs78uVy5cvj6+t7PsERERERsmmqmBYD4+Phs2zw8PAohGhEREZEHg5JpAW4mzj/++KP589mzZzl69Ci1a9cuxKhEREREbJvKPAQANzc3xo0bx0svvUTx4sWJjIzE3d2dkJCQwg5NRERExGYpmRYAypcvz5AhQ4iIiODMmTPUqlWLiIgInJycCjs0EREREZulZFrMWrduTevWrbP9bvfu3Tke99tvv92rkERERERsmmqmRURERESspDvTIgUk7UYGmyM6FnYYIgUuJVVvOhURyYmSaWHu3LmFHUKR4Ohgr431bYxediAiIveayjxERERERKykZFpERERExEpKpkVERERErKSaaZECknYjAw8Pl8IOQ26jNSl8KanpXE28XthhiIjcE0qmRQqIo4M9HcZ8WthhiNiczREd0WOgIlJUqcxDRERERMRKSqZFRERERKykZPo+2LhxI0ajkeTk5Fz79enThxEjRhTYeY1GI2vXrs21zxdffIHRaOT06dMFdl4RERGRh4Vqpouw6OhoKlSoUNhhiIiIiBRZSqaLoJSUFIoXL46fn19hhyIiIiJSpKnMowDt37+fPn36ULduXfz9/enTpw9Hjx41f3/69Gn69euHn58fbdq0Yfv27Xccc9++fXTt2hVfX1+aNGnC9OnTLcpFYmJiMBqNfP311wwZMoS6desyc+ZMIGuZh8lkIioqisaNG1O3bl3Gjx9PUlJSlnOmpqby2muv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QkJC8nRdRERERIoam0+mixcvTlBQEJs3b2bQoEFZvu/WrRupqamsWbOG9957Dy8vL8LDw+nbt2+OY/bo0YPTp0+zZs0aUlNTadq0KREREXTr1s2i34wZM5g3bx79+vUjLS3tjndzb6lfvz7vv/8+kZGRjB8/nszMTMqXL0+zZs3MZRfZiYiIYOrUqUyYMAFXV1d69epFSkoKa9euNfdxd3dn3bp1zJ8/n9mzZ5OWlsbjjz/O4MGDcxx3/PjxpKens3jxYgwGA88++yz9+vVj7ty5uc4ju/lXqFABuFlic+sHm+x+OBARERF5GNiZTKai8wSY3DcJCQk8+eSTTJkyha5du1o1RlF8ALHDmE8LOwwREZGHyuaIjnoAUR4cSUlJnDhxgjVr1lCqVCntLS0iIiIPNSXTki8///wz//73v3n00UeZN28eJUqUKOyQRERERAqNyjyk0BS1Mo8yriVxdNCuJiIiIvdTSmo6VxOv37PxVeYhcp84Otjf05otyT8PDxetiQ3SutgmrYtt0rrYPpvfZ1pERERExFYpmRYRERERsZKSaRERERERKymZFhERERGxkpJpERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaRERERERK+kNiFJoDAa7wg6hwBXFOT3otCa2Setim7QutknrUrjudP3tTCaT6T7FIiIiIiJSpKjMQ0RERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKSqZFcvHHH3/QvXt3nn76abp3786pU6ey9MnIyGDGjBm0atWK4OBgNmzYkKfvxHp3uy6LFy+mXbt2dOjQgZCQEL7++uv7GH3RdbfrcsvJkyepU6cO8+bNuw9RF20FsSaff/45HTp0oH379nTo0IGLFy/ep+iLrrtdl/j4eAYNGkSHDh145plnmD59Ounp6fdxBmLBJCI56tOnj2nTpk0mk8lk2rRpk6lPnz5Z+nzyySem/v37mzIyMkzx8fGmZs2amf7+++87fifWu9t1+eqrr0zXrl0zmUwm0y+//GLy9/c3Xb9+/f5NoIi623UxmUym9PR0U+/evU2jR482zZ07977FXlTd7ZocPnzY9Mwzz5guXLhgMplMpsTERFNKSsr9m0ARdbfr8sor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G6yag4it0J1pEXmo3Z4M2NvbY2dnx1tvvcWCBQt44YUXaNiwIT///DMLFy6kRIkS9O7dG4CzZ89Sr149evbsiaOjIz/++CMTJ07EYDDQvn178x2+VatWER0dDYCzs3O+Y3z77bepX78+r732GrdeWjtixAgOHz7M8OHDqVixIlu2bGHo0KF8/PHH1KhRI8ex7nTcokWLePPNN/n777+ZM2cOAN7e3ri7uzNz5kxef/11HnvsMSpWrJjnOJYsWUJkZCTPPfcc48aNIyUlhT179nDt2jXCwsI4e/YsV69eZdq0aebzJSUlMWTIEFq2bMmwYcMwmUwcO3aMq1evZjsvT09PoqOjefHFFwkICKBPnz7ma71+/XpmzZpFv379CAwMJCYmhrlz55KWlsagQYPMY6SkpBAeHs4LL7zAE088kWOJyIkTJ+jZsyeVKlVixowZuLq68r///Y/Y2Ngcr/u5c+fo3bs35cuXJykpiQ8//JAePXqwfft2XFxc7jjfv/76i5EjR9KnTx/GjRtHWloa//vf/7hy5UqO56xQoQK//fab+e///OFt//79eHl5Ua1atRyP/6e9e/cyatQoOnXqxLhx4/jtt99YuHAhly9fZubMmQBcunSJPn36UKVKFSIiIkhOTiYiIoJ+/frx8ccf4+joiMlkIiwsjMuXL/Pqq6/i5OREVFQUCQkJPPHEE+bzhYSEmOOdO3dunmIUKTQmEZGHUGRkpMnHxyfLn2+++cZ09epVk5+fnykqKsrimDfffNPUpEkTU3p6epbxMjMzTTdu3DBNmTLF1KdPH3P7e++9Z/Lx8cnSf8KECabOnTtbtP39998mHx8f0+7du81tPj4+pk6dOln0+/bbb00+Pj6mmJgYi/bnnnvONHz48BznnNfjsovtu+++M/n4+Jh+++23fI135coVU+3atU2zZ8/OMa7hw4ebevfubdF2+PBhk4+Pj+nq1as5Hpedp556yjR37lzz54yMDFNgYKApPDzcot+0adNM9erVM6WkpJhMpv/772HHjh13PMeoUaNMzZo1M12/fj3b77O7Vv+Unp5uun79usnPz8/0ySefmEymO893y5YtpoYNG94xtrwaMGCAqVu3blnab9y4Yf7zz//Ou3btmmWNVqxYYapevbopNjbWZDKZTPPnzzf5+/tbzOHQoUMmHx8f0+bNm00mk8m0Z88e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\n", "text/plain": [ "
    " ] @@ -949,7 +746,17 @@ "path_dependent_explainer.fit()\n", "result = path_dependent_explainer.explain(scaler.transform(x))\n", "\n", - "plot_importance(result.shap_values[1], features, 1)\n" + "plot_importance(result.shap_values[1], features, '\"Good\"')\n" + ] + }, + { + "cell_type": "markdown", + "id": "d7ccd4c7-b4b9-4b3b-bf5e-75aeb8653bc7", + "metadata": {}, + "source": [ + "## Note:\n", + "\n", + "There is some difference between the kernel SHAP and integrated gradient applied to the tensorflow model and the SHAP methods applied to the random forest. This is to be exected due to the combination of different methods and different models. They are reasonably similar overall however. notably the ordering is nearly the same." ] }, { @@ -957,12 +764,14 @@ "id": "9c32759e-e66f-4af9-91af-e5d1deb01019", "metadata": {}, "source": [ - "## Anchors" + "## Anchors\n", + "\n", + "Here we apply Anchors to the tensor flow model" ] }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 19, "id": "0e36d1c9-49e1-4da8-9bc8-da312e2b31b2", "metadata": {}, "outputs": [], @@ -972,12 +781,12 @@ "predict_fn = lambda x: model.predict(scaler.transform(x))\n", "explainer = AnchorTabular(predict_fn, features)\n", "explainer.fit(X_train, disc_perc=(25, 50, 75))\n", - "result = explainer.explain(scaler.inverse_transform(x), threshold=0.95)" + "result = explainer.explain(x, threshold=0.95)" ] }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 20, "id": "3b3722d3-f837-4343-a2de-c7f4d4849223", "metadata": {}, "outputs": [ @@ -985,9 +794,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "Anchor = ['alcohol > 11.00', 'sulphates > 0.73']\n", - "Precision = 0.9931506849315068\n", - "Coverage = 0.0817347789824854\n" + "Anchor = ['alcohol > 10.10', 'volatile acidity <= 0.39']\n", + "Precision = 0.9629629629629629\n", + "Coverage = 0.16263552960800667\n" ] } ], @@ -1002,12 +811,14 @@ "id": "3a604116-6772-469d-b251-05fb920f6fb7", "metadata": {}, "source": [ - "## ALE " + "## ALE \n", + "\n", + "The following is the ALE plot for the alcohol feature" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 22, "id": "3596db3d-40bb-42e4-9b59-1ae18f6be64f", "metadata": {}, "outputs": [ @@ -1017,13 +828,13 @@ "array([[]], dtype=object)" ] }, - "execution_count": 20, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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Z88epyPhkDlz5mjq1KkaNGiQtm7d2vLxnTt3atasWbrgggs0a9YsFRUVORcSko4/Vsf7OJxzrDGprKzUjTfeqAsuuECXXHKJ/vu//1sVFRUOJ+3ajvd35+abb9all16qyy67TLNnz9amTZscTAnp87/P/e///i/fA6PE8cZq6tSpuvDCCzVjxgzNmDFDb7/9dofkofigQ1VXV+v222/XAw88oPnz5+uqq67S3Xff7XQsHHLuuefqiSeeUG5ubquP33XXXZo9e7YWLVqk2bNn684773QoIQ473lgd7+NwzrHGxDAMfeMb39CiRYs0f/589erVS7/97W8dTInj/d2ZM2eOXnzxRb3wwgv6+te/rh//+McOJcRhn/V9bsOGDVq9ejXfA6PEZ43V73//e82bN0/z5s3T5MmTOyQPxQcdateuXerWrZv69u0rSTrrrLO0bNkyftMZJcaOHavs7OxWHysvL9fGjRtVWFgoSSosLNTGjRsZM4cda6w+6+NwzrHGJDU1VRMmTGh5PGrUKJWUlHR0NBzheH93kpKSWv5cV1cnwzA6MhaO4XhjFQgEdM899/AL1SgSbT+TXE4HQNfSt29fHTx4UGvXrtWIESM0f/58SVJpaanS09MdTodjKS0tVVZWlizLkiRZlqXu3bszZkAbiUQievLJJzV16lSno+A4fvKTn2j58uWybVt/+9vfnI6D43jooYd06aWXqmfPnk5HwQn44Q9/KNu2ddppp+kHP/iBkpOT2/09mfFBh0pKStKDDz6oX/3qV7r88stVXl6u5OTkln9UA0BX84tf/EI+n0/XX3+901FwHPfee6/efPNNff/739d9993ndBwcw6pVq7R+/XrNnj3b6Sg4AU888YRefPFFPffcc7JtW/fcc0+HvC/FBx3ujDPO0JNPPqnnn39e119/vZqampSXl+d0LBxHdna2ysrKFA6HJUnhcFj79++PqqlrIFbNmTNHu3bt0u9+9zuZJj+So91ll12m999/X5WVlU5Hwad8+OGH2r59u84991xNnTpV+/bt0w033KBly5Y5HQ3HcPjfEB6PR7Nnz9bKlSs75H35LosOd+DAAUnNyzseeOABXXPNNfL5fA6nwvFkZGSooKBACxYskCQtWLBABQUFLHMDvqAHHnhA69ev18MPPyyPx+N0HBxDfX29SktLWx6//vrrSklJUWpqqnOhcEw33XSTli1bptdff12vv/66evTooUcffVRnnnmm09HwKQ0NDaqtrZUk2bathQsXqqCgoEPe27Bt2+6QdwIO+clPfqKVK1cqGAxq0qRJ+vGPfyyv1+t0LEj65S9/qVdffVUHDx5UWlqaUlNT9dJLL2n79u264447VFNTo+TkZM2ZM0f9+vVzOm6XdryxOt7H4Zxjjcnvfvc7FRYWqk+fPoqLi5Mk9ezZUw8//LDDabuuY43T//3f/+nmm29WY2OjTNNUSkqKbr/9dg0dOtTpuF3aiXyfmzp1qv70pz9p4MCBDqWEdOyx+tOf/qRvf/vbCofDikQi6t+/v37605+qe/fu/79de4dlfw/jOP5xyz+VDm4hGpeFiUQYRKtuSRP3LhZsNapNmFhIZ5NWDCoRI6ESAxLC1IShbDoYpMQlRNqQVHC2niMk/3/O4bR+eb+2X/M8v+f7TL988u23n4fgAwAAAMDw+KsbAAAAAMMj+AAAAAAwPIIPAAAAAMMj+AAAAAAwPIIPAAAAAMMj+AAAfoTV1VUNDAz8p3cEg0E1NzcnbT4AIHkIPgAAAAAMj+ADAAAAwPAIPgCAlDI/Py+Hw6Ha2lp1dXVpe3v707pwOCyXy6X6+nrZbDbNzc1JkuLxuDwej+x2u+x2uzwej+Lx+LvehYUFWa1W2e12raysJH6PRqMaHx9XQ0OD2tra5PV69fr6+n3LAgD+NwQfAEBKKS0t1fLyso6OjjQyMqKxsTFdX1+/q4nFYnK5XGpqatLBwYG2trZktVolST6fT6FQSOvr6woEAjo5OZHX60303t7eKhqNan9/Xx6PR1NTU3p4eJAkTU9PKxqNamdnR0tLS1pfX38XjAAAPxfBBwCQUjo7O1VUVKT09HR1dXWpvLxcx8fH72r29vZUUFCgoaEh/fr1S2azWTU1NZKkjY0Nud1u5efnKy8vT263W4FAINGbmZkpt9utrKwstbS0KDs7W2dnZ3p5edHm5qZGR0dlNptVUlIil8v1rhcA8HNlJvsAAAD809ramvx+vyKRiCTp8fFR9/f3ysjISNRcXl6qrKzs0/7r62tZLJbEs8VieXdjlJOTo8zMvz9/JpMpMeP5+flD79XV1ZftBgBIHm58AAApIxKJaGJiQpOTkwoGgzo8PFRlZeWHuuLiYp2fn3/6jsLCQl1cXCSeLy8vVVhY+NvZubm5ysrK+tBbVFT0LzYBAKQagg8AIGU8PT0pLS1NeXl5kqSVlRWFw+EPda2trbq5udHi4qLi8bhisZhCoZAkqbu7Wz6fT3d3d7q7u9Ps7Kx6e3t/OzsjI0MdHR2amZlRLBZTJBKR3++X0+n82iUBAElB8AEApIyKigoNDQ2pv79fNptNp6enqqur+1BnNpu1sLCg3d1dNTY2qr29XcFgUJI0PDys6upqOZ1OOZ1OVVVVaXh4+I/mT05OymQyyeFwaHBwUD09Perr6/vSHQEAyZH29vb2luxDAAAAAMB34sYHAAAAgOERfAAAAAAYHsEHAAAAgOERfAAAAAAYHsEHAAAAgOERfAAAAAAYHsEHAAAAgOERfAAAAAAY3l8lBBq2mNDH0QAAAABJRU5ErkJggg==\n", + "image/png": "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uKsnnnhC+fn5euqpp2S18ivZ1V122WXatGmTqqqqzI6Cb/niiy+0b98+TZo0SRMnTlRJSYluuukmbdy40exoOIavP0P4+flpzpw52rJlS7c8L++y6Hbl5eWS2pd3/PWvf9UPf/hDBQUFmZwKxxMdHa3MzEwtW7ZMkrRs2TJlZmayzA04Q3/961+1c+dOPfvss/Lz8zM7Do6hoaFBxcXFHZfXrl2r8PBwRUREmBcKx3Trrbdq48aNWrt2rdauXauEhAS98MILGjt2rNnR8C2NjY2qq6uTJBmGoeXLlyszM7NbnttiGIbRLc8EHPHb3/5WW7ZsUVtbm8aMGaP7779f/v7+ZseCpMcee0yrVq3S4cOHFRkZqYiICL333nvat2+f7rvvPtXW1iosLExPPPGEevfubXZcr3a8sTre9TDPscbkqaee0rRp05SWlqaAgABJUnJysp599lmT03qvY43TK6+8ottvv11NTU2yWq0KDw/Xb37zGw0cONDsuF7tZN7nJk6cqHnz5qlfv34mpYR07LGaN2+e7rrrLjkcDjmdTvXp00cPPPCA4uLiujwPxQcAAACAx2OpGwAAAACPR/EBAAAA4PEoPgAAAAA8HsUHAAAAgMej+AAAAADweBQfAIBbWLhwoa6++uozeoxNmzZp/Pjxpj0/AMA8FB8AAAAAHo/iAwAAAMDjUXwAAC7l+eef14UXXqjhw4frkksu0erVq495v5ycHN1www06++yzdd5552nevHmSpNbWVj3++OMaO3asxo4dq8cff1ytra1Hfe2LL76o0aNHa+zYsXrnnXc6rq+rq9Ovf/1rnXvuuZowYYLmzp0rp9PZdd8sAKDbUHwAAC6lZ8+eev311/Xll1/qzjvv1L333quysrKj7lNfX68bbrhB48aN04YNG7Rq1SqNHj1akvTcc89p27ZtWrJkid59913t2LFDc+fO7fjaw4cPq66uTuvXr9fjjz+uRx99VDU1NZKk3//+96qrq9OaNWv02muvacmSJUcVIwCA+6L4AABcytSpUxUfHy+r1apLLrlEqamp2r59+1H3WbdunWJiYnTjjTfK399fISEhGjp0qCRp6dKluuOOOxQdHa2oqCjdcccdevfddzu+1sfHR3fccYd8fX11/vnnKygoSAcOHJDD4dDy5cv1y1/+UiEhIUpOTtYNN9xw1NcCANyXj9kBAAD4psWLF+ull15SYWGhJKmxsVFVVVWy2Wwd9ykuLlZKSsoxv76srEw9evTouNyjR4+jZowiIiLk4/O/X3+BgYEdz9HW1vadry0tLe207w0AYB5mfAAALqOwsFAPPPCAfve732nTpk3avHmz+vbt+537JSYm6uDBg8d8jLi4OBUVFXVcLi4uVlxc3Pc+d2RkpHx9fb/ztfHx8afxnQAAXA3FBwDgMpqammSxWBQVFSVJeuedd5STk/Od+11wwQUqLy/Xyy+/rNbWVtXX12vbtm2SpEsvvVTPPfecKisrVVlZqWeffVbTp0//3ue22WyaMmWK/va3v6m+vl6FhYV66aWXNGPGjM79JgEApqD4AABcRnp6um688Ub98Ic/1Hnnnafs7GyNGDHiO/cLCQnRiy++qA8//FBjxozR5MmTtWnTJknS7bffrkGDBmnGjBmaMWOGBg4cqNtvv/2knv93v/udAgMDdeGFF2rOnDmaNm2arrjiik79HgEA5rAYhmGYHQIAAAAAuhIzPgAAAAA8HsUHAAAAgMej+AAAAADweBQfAAAAAB6P4gMAAADA41F8AAAAAHg8ig8AAAAAj0fxAQAAAODx/j/7aW7OnTz1SQAAAABJRU5ErkJggg==\n", "text/plain": [ "
    " ] @@ -1036,10 +847,20 @@ "from alibi.explainers import ALE\n", "from alibi.explainers import plot_ale\n", "\n", - "predict_fn = lambda x: model(scaler.transform(x)).numpy()\n", + "predict_fn = lambda x: model(scaler.transform(x)).numpy()[:, 0]\n", "ale = ALE(predict_fn, feature_names=features)\n", "exp = ale.explain(X_train)\n", - "plot_ale(exp, features=['alcohol'])" + "plot_ale(exp, features=['alcohol'], line_kw={'label': 'Probability of \"good\" class'})" + ] + }, + { + "cell_type": "markdown", + "id": "43934de4-cdb7-497c-9eb4-d83bb1a9a8c6", + "metadata": {}, + "source": [ + "# Counterfactuals\n", + "\n", + "Next we apply each of the counterfactual methods, counterfactuals with reinforcement learning, counterfactual instances, counterfacutals with prototypes and contrastive explanation methods. We also plot the kernel SHAP values to show how the counterfactual method changes hte" ] }, { @@ -1052,36 +873,29 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 23, "id": "b7fbd60a-64af-43f9-80d3-9b78cfde8079", "metadata": {}, "outputs": [], "source": [ "from alibi.explainers import CounterfactualRL \n", "\n", - "# Define constants\n", - "COEFF_SPARSITY = 7.5 # sparisty coefficient\n", - "COEFF_CONSISTENCY = 0 # consisteny coefficient -> no consistency\n", - "TRAIN_STEPS = 5000\n", - "# number of training steps -> consider increasing the number of steps\n", - "BATCH_SIZE = 100 # batch size\n", - "\n", "predict_fn = lambda x: model(x)\n", "\n", - "explainer = CounterfactualRL(predictor=predict_fn,\n", + "cfrl_explainer = CounterfactualRL(predictor=predict_fn,\n", " encoder=ae.encoder,\n", " decoder=ae.decoder,\n", - " latent_dim=ENCODING_DIM,\n", - " coeff_sparsity=COEFF_SPARSITY,\n", - " coeff_consistency=COEFF_CONSISTENCY,\n", - " train_steps=TRAIN_STEPS,\n", - " batch_size=BATCH_SIZE,\n", + " latent_dim=7,\n", + " coeff_sparsity=0.5,\n", + " coeff_consistency=0.5,\n", + " train_steps=10000,\n", + " batch_size=100,\n", " backend=\"tensorflow\")" ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 24, "id": "ce1ac845-d4f3-4f15-92c7-1b5a072bc4e8", "metadata": {}, "outputs": [ @@ -1089,7 +903,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 5000/5000 [00:47<00:00, 104.47it/s]\n" + "100%|██████████| 10000/10000 [02:11<00:00, 76.16it/s]\n" ] }, { @@ -1110,7 +924,7 @@ " 'exploration_steps': 100,\n", " 'update_every': 1,\n", " 'update_after': 10,\n", - " 'train_steps': 5000,\n", + " 'train_steps': 10000,\n", " 'backend': 'tensorflow',\n", " 'encoder_preprocessor': 'identity_function',\n", " 'decoder_inv_preprocessor': 'identity_function',\n", @@ -1130,8 +944,8 @@ " 'decoder': \"\",\n", " 'latent_dim': 7,\n", " 'predictor': '',\n", - " 'coeff_sparsity': 7.5,\n", - " 'coeff_consistency': 0,\n", + " 'coeff_sparsity': 0.5,\n", + " 'coeff_consistency': 0.5,\n", " 'seed': 0,\n", " 'sparsity_loss': 'sparsity_loss',\n", " 'consistency_loss': 'consistency_loss'}\n", @@ -1140,18 +954,18 @@ ")" ] }, - "execution_count": 22, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "explainer.fit(X=scaler.transform(X_train))" + "cfrl_explainer.fit(X=scaler.transform(X_train))" ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 25, "id": "6559f2e3-72db-4ca3-b949-8e3d7371a10a", "metadata": {}, "outputs": [ @@ -1159,29 +973,29 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 1/1 [00:00<00:00, 248.40it/s]\n" + "100%|██████████| 1/1 [00:00<00:00, 148.20it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "fixed acidity instance: 7.856 counter factual: 7.8 difference: 0.0557041\n", - "volatile acidity instance: 0.657 counter factual: 0.62 difference: 0.0365658\n", - "citric acid instance: 0.099 counter factual: 0.05 difference: 0.0491835\n", - "residual sugar instance: 2.075 counter factual: 2.3 difference: -0.2247791\n", - "chlorides instance: 0.061 counter factual: 0.079 difference: -0.0175778\n", - "free sulfur dioxide instance: 10.058 counter factual: 6.0 difference: 4.0575562\n", - "total sulfur dioxide instance: 24.849 counter factual: 18.0 difference: 6.8489075\n", - "density instance: 0.997 counter factual: 0.997 difference: -0.0001004\n", - "pH instance: 3.383 counter factual: 3.29 difference: 0.0931356\n", - "sulphates instance: 0.515 counter factual: 0.63 difference: -0.1146441\n", - "alcohol instance: 9.428 counter factual: 9.3 difference: 0.1283131\n" + "fixed acidity instance: 8.965 counter factual: 9.2 difference: -0.2350657\n", + "volatile acidity instance: 0.349 counter factual: 0.36 difference: -0.0108247\n", + "citric acid instance: 0.242 counter factual: 0.34 difference: -0.0977357\n", + "residual sugar instance: 2.194 counter factual: 1.6 difference: 0.5943643\n", + "chlorides instance: 0.059 counter factual: 0.062 difference: -0.0031443\n", + "free sulfur dioxide instance: 6.331 counter factual: 5.0 difference: 1.3312454\n", + "total sulfur dioxide instance: 14.989 counter factual: 12.0 difference: 2.9894428\n", + "density instance: 0.997 counter factual: 0.997 difference: 0.0003435\n", + "pH instance: 3.188 counter factual: 3.2 difference: -0.0118126\n", + "sulphates instance: 0.598 counter factual: 0.67 difference: -0.0718592\n", + "alcohol instance: 9.829 counter factual: 10.5 difference: -0.6712008\n" ] }, { "data": { - "image/png": "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QXV1NVauXInrrrsOb731Vk+wJiIabNj+QUQUBG63G4888gimTJmCKVOm4JFHHoHb7YbdbsfixYvR3NyMiRMnYuLEiWhqasLevXuxcOFCTJo0CVOmTMHvfvc7uN3uPu9jNptRV1eHBQsWQKVSQaVS4fzzz8ekSZMAAG+99RZ+8IMfnPSe07WSVFVVYebMmQCACy64ADfffDPq6uowatQoeL3envNuuukmrFmzpufa3//+9/Hoo4/ioosuwsqVK3utValUYsSIEXjyySeh0+nw0ksvATi1NaOyshI33XQTJk2ahNmzZ+PDDz8E0LVT6UUXXQSj0QgAOHjwIC644AJUVlYC6PpHzeeffw4AcDqdePDBB3HBBRdg1qxZ2Ldv30m1NDU14ac//SkuvvhiXHXVVVi1alVf/6mJiPqFoZqIKAj+9re/Yc+ePXj33Xfx3nvvYd++fXj22WcRHx+PF154ARkZGdi1axd27dqFzMxMyGQy/L//9/+wbds2vPrqq/jiiy/wyiuv9Hmf1NRUDBkyBPfddx82bdqE1tbWs6p36NChKCsrAwB8+eWXAYfMvXv3Ii8vD5999hnuvPPOgN4jl8tx9dVXY+fOnacc83g8uOOOO3DppZfi888/x29/+1v86le/wtGjR3Heeefh+9//Ph544AE4nU7cd999uOeee1BYWHjKdZ5++mnU1NTggw8+wD//+U+88847Pcf8fj/uvPNOjBo1Cp9++ilefvllvPzyy9iyZUtA9RMRBYKhmogoCNauXYslS5ZAr9dDp9NhyZIleO+99854/rhx4zBhwgQoFArk5uZi4cKF+PLLL/u8jyAIWLVqFXJycvDYY49hypQpuOGGG1BdXR3ET3NmGRkZuOmmm6BQKBAXF9ev97W3t5/y+p49e2C323H77bdDpVJh8uTJuPLKK3v6pe+++250dHRg/vz5yMjIwA033HDa67///vu44447kJKSAoPBgJtuuqnn2L59+2A2m3H33XdDpVIhLy8PCxYswLp16/r56YmIzow91UREQdDc3Izs7Oyer7Ozs9Hc3HzG86uqqvDYY49h//79cDgc8Pl8GDt2bED3ysrKwtKlSwEARqMRDz30EB544AG89tprA/sQAd77bDQ1NUGr1Z7yenNzM7KysiCTfbvGk52djaamJgBdLSTXXnstfv/73+PBBx+EIAinvX5zczMMBsNJ1+hWX1+P5ubmnhYZAPD5fCd9TUQ0UFypJiIKgoyMDDQ0NPR8bTQaex7KO10QXL58OYYNG4YNGzbg66+/xr333ntWDxsaDAbccMMNOHz4MABAo9HA6XT2HG9paQn4WvHx8QDQ6/vPFGp74/f78dFHH502xGZkZKCxsRF+v7/nNaPRiMzMTABdYfzpp5/Gddddh8cee+yMfefp6ek9vdfd1+hmMBiQm5uLnTt39vzYtWsXXnjhhX5/FiKiM2GoJiIKgtmzZ+Nvf/sbzGYzzGYznnnmGcyZMwcAoNfrYbFYYLPZes7v7OxEQkICEhISUFlZif/+978B3ae9vR1PPfUUjh07Br/fD7PZjDfffBMTJkwAAIwePRpHjhzBgQMH4HK5+nyY8EQ6nQ6ZmZl499134fP58MYbb6C2tjbw/wjf4fV6UVlZiV/84hdobW3FLbfccso548ePR1xcHP7xj3/A4/Fg+/bt2Lx5M2bNmgVRFPHggw/i+uuvx6OPPoqMjAz85S9/Oe29rrnmGjz//PNob29HY2Mj/v3vf590j4SEBDz//PNwOp3w+Xw4fPgw9u7de9afjYjouxiqiYiC4K677sK4ceMwd+5czJ07F2PHjsVdd90FACgsLMTs2bMxbdo0TJo0CU1NTXjggQdQVlaG8847Dw899BBmzZoV0H2USiXq6+vxox/9COeffz7mzJkDlUqFxx57DEDXA4hLlizBLbfcghkzZuD888/v1+d4+OGH8c9//hMXXXQRKioqTprLHaj3338fEydOxKRJk3DnnXciJSUFb731Vs/q84lUKhWee+45fPrpp7j44ouxYsUKPPHEEygsLMSqVatgMplwzz33QBAEPProo3jrrbdO+8Dj3XffjezsbFx99dW49dZbUVpa2nNMLpfjueeew8GDB3H11Vfj4osvxm9/+1t0dHT0+7MREZ2JIJ7N9xuJiIiIiKgHV6qJiIiIiAaIoZqIiIiIaIAYqomIiIiIBoihmoiIiIhogBiqiYiIiIgGiKGaiIiIiGiAGKqJiIiIiAaIoZqIiIiIaIAYqomIiIiIBuj/A6Eq4xam9sItAAAAAElFTkSuQmCC\n", + "image/png": "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vJqamu7HZrMZaWlpQzpGRERERBRsIQnVBoMBeXl5KCoqAgAUFRUhLy+vR+sHAMydOxfr1q2D3++HxWLBli1bkJ+fP6RjRERERETBFrKReqWlpXjwwQfR1taGhIQEPP744xg1ahSWLVuGn/70pzjrrLPg8/nw29/+Fp999hkAYNmyZViyZAkADPoYEREREVGwcfMXIiIiIqIh4o2KRERERERDxFBNRERERDREDNVEREREREPEUE1ERERENEQM1UREREREQ8RQTUREREQ0RAzVFHVKS0tx6aWXorq6GgDw9NNP495778WePXvwgx/8AAsWLMCCBQuwfft2iSslIiKiSME51RSV3nnnHbz66qv46U9/iocffhgvvvgiFi9ejDVr1uCcc86Bz+eDzWaDTqeTulQiIiKKAAqpCyCSwsKFC7Fjxw4sX74c//73v3Hs2DHk5ubinHPOAQDI5XIGaiIiIuo3tn9QVHK73Th27Bji4+PR1NQkdTlEREQU4RiqKSo98cQTmDhxIl566SWsXLkS6enpKC0txZ49ewAAPp8Pra2tEldJREREkYI91RR1tmzZgqeeegrr1q2DWq3GunXr8N///hf33nsv/vjHP8Jut0Mmk+GBBx7ARRddJHW5REREFAEYqomIiIiIhojtH0REREREQ8RQTUREREQ0RAzVRERERERDxFBNRERERDREDNVEREREREPEUE1EFIbGjRuHEydOBPy6Dz74IJ588snux6+++iouuugiTJ06Fc3NzQF/v9PZvXs38vPzh3ydefPmYefOnac9tnPnTsycOXPI70FE1F/cppyIaACmTp3a/bXD4YBKpYJcLgcArF69GgsWLDjlNTt37sR9992HTz/9NCA1HDt2DL///e9x8OBB+P1+ZGdn45577sGll146oOt4PB489thjeOONNzB+/PiA1LZmzRo899xzUKlUAACj0YiLL74Yd9xxB4xGIwBg2rRp2LRp05Df63//+9+Qr0FEFCgM1UREA9C16yYAXHHFFfjd734X8k2C7rjjDvzgBz/Ac889BwA4cOAABrPlQFNTE1wuF0aPHj2oOrxeLxSKU/8aueqqq/DHP/4RHo8H5eXlWLNmDa699lq8/fbb3cGaiGi4YfsHEVEAuN1uPPLII5gxYwZmzJiBRx55BG63G3a7HcuWLUN9fT2mTp2KqVOnoq6uDvv378eSJUswbdo0zJgxA7/97W/hdrv7fB+LxYKqqiosXrwYKpUKKpUK5557LqZNmwYAePvtt/GDH/ygx2tO10pSVlaGuXPnAgDOO+883HTTTaiqqsK4cePg9Xq7z7vxxhuxbt267mt///vfx6OPPooLLrgAa9as6bVWpVKJMWPG4Mknn4Rer8dLL70E4NTWjNLSUtx4442YNm0a5s2bhw8//BAA8PXXX+OCCy6A2WwGABw+fBjnnXceSktLAXT8o+bzzz8HADidTjz44IM477zzcPXVV+PAgQM9aqmrq8NPfvITXHjhhbjiiivwyiuv9PWfmohoQBiqiYgC4K9//Sv27duHd999F++99x4OHDiAZ599FrGxsXjhhRdgNBqxZ88e7NmzB6mpqZDJZPh//+//YceOHXjttdfwxRdf4NVXX+3zfZKSkjBixAjcd9992LJlCxobGwdV78iRI1FUVAQA+PLLL/sdMvfv34+srCx89tlnuPPOO/v1GrlcjiuvvBK7d+8+5ZjH48Edd9yBiy++GJ9//jl+85vf4Je//CWOHz+Oc845B9///vfxwAMPwOl04r777sM999yD3NzcU67z9NNPo6KiAh988AH+8Y9/4J133uk+5vf7ceedd2LcuHH49NNP8fLLL+Pll1/Gtm3b+lU/EVF/MFQTEQXA+vXrsXz5chgMBuj1eixfvhzvvffeGc+fNGkSpkyZAoVCgczMTCxZsgRffvlln+8jCAJeeeUVZGRk4LHHHsOMGTNw/fXXo7y8PICf5syMRiNuvPFGKBQKxMTEDOh1ra2tpzy/b98+2O123H777VCpVJg+fTouv/zy7n7pu+++GzabDYsWLYLRaMT1119/2uu///77uOOOO5CYmAiTyYQbb7yx+9iBAwdgsVhw9913Q6VSISsrC4sXL8aGDRsG+OmJiM6MPdVERAFQX1+P9PT07sfp6emor68/4/llZWV47LHHcPDgQTgcDvh8PkycOLFf75WWloYVK1YAAMxmMx566CE88MADeP3114f2Ifr53oNRV1cHnU53yvP19fVIS0uDTPbtGk96ejrq6uoAdLSQXHPNNfjd736HBx98EIIgnPb69fX1MJlMPa7Rpbq6GvX19d0tMgDg8/l6PCYiGiquVBMRBYDRaERNTU33Y7PZ3H1T3umC4KpVqzBq1Chs2rQJX3/9Ne69995B3WxoMplw/fXX4+jRowAAjUYDp9PZfbyhoaHf14qNjQWAXl9/plDbG7/fj48++ui0IdZoNKK2thZ+v7/7ObPZjNTUVAAdYfzpp5/Gtddei8cee+yMfecpKSndvddd1+hiMpmQmZmJ3bt3d//Ys2cPXnjhhQF/FiKiM2GoJiIKgHnz5uGvf/0rLBYLLBYLnnnmGcyfPx8AYDAY0NLSAqvV2n1+e3s74uLiEBcXh9LSUvznP//p1/u0trbiqaeewokTJ+D3+2GxWPDWW29hypQpAIDx48fj2LFjOHToEFwuV583E55Mr9cjNTUV7777Lnw+H958801UVlb2/z/Cd3i9XpSWluLnP/85GhsbcfPNN59yzuTJkxETE4O///3v8Hg82LlzJ7Zu3Yqrr74aoijiwQcfxHXXXYdHH30URqMRf/7zn0/7XldddRWef/55tLa2ora2Fv/61796vEdcXByef/55OJ1O+Hw+HD16FPv37x/0ZyMi+i6GaiKiALjrrrswadIkLFiwAAsWLMDEiRNx1113AQByc3Mxb948zJo1C9OmTUNdXR0eeOABFBUV4ZxzzsFDDz2Eq6++ul/vo1QqUV1djR/96Ec499xzMX/+fKhUKjz22GMAOm5AXL58OW6++WbMmTMH55577oA+x8MPP4x//OMfuOCCC1BSUtJjLnd/vf/++5g6dSqmTZuGO++8E4mJiXj77be7V59PplKp8Nxzz+HTTz/FhRdeiNWrV+OJJ55Abm4uXnnlFTQ1NeGee+6BIAh49NFH8fbbb5/2hse7774b6enpuPLKK3HLLbegsLCw+5hcLsdzzz2Hw4cP48orr8SFF16I3/zmN7DZbAP+bEREZyKIg/l+IxERERERdeNKNRERERHREDFUExERERENEUM1EREREdEQMVQTEREREQ0RQzURERER0RAxVBMRERERDRFDNRERERHREDFUExERERENEUM1EREREdEQ/X85gMuG+0Ll3QAAAABJRU5ErkJggg==\n", "text/plain": [ "
    " ] @@ -1191,12 +1005,94 @@ } ], "source": [ - "result_cfrl = explainer.explain(X=scaler.transform(x), Y_t=np.array([1]))\n", + "result_cfrl = cfrl_explainer.explain(X=scaler.transform(x), Y_t=np.array([1]))\n", "cfrl = scaler.inverse_transform(result_cfrl.data['cf']['X'])\n", "compare_instances(cfrl, x)\n", "plot_cf_and_feature_dist(x, cfrl, feature='total sulfur dioxide')" ] }, + { + "cell_type": "code", + "execution_count": 26, + "id": "ce1c7e49-c6dc-41c5-9214-d33f42569231", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "176eaefda22b46258288df79e157dbf0", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/1 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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SEggKSnJrKD+d4EuIiIiUpRoN49sKFGiBLVr12bLli2mtol7KV68OABJSUlWnbNixYp4eXmxZcsWi4+5ey57e3vT2Llz5zh06JDZPH9/f7Zt22ZxbD4+PgDs2bPHNJaQkMC3335rcWwiIiIihYnuTGfTmDFj6Nu3Ly+88ALPPPMMTk5OHD58mJo1a/LUU0+lm1+uXDkcHR3ZsmULLi4uFCtWzFSUWsLW1pZx48YxduxYxowZQ7t27bCxseG7776jbdu2Ga5VqVIlvL29mTdvHiNHjiQhIYGIiAg8PT3N5g0bNozQ0FB69uxJv379cHV15dixY7i6uhIaGppu3apVqxIYGMj06dOJj4/Hw8ODt956y+KeaxEREZHCRnems6lBgwasXr2axMRExo0bx6hRo/j+++/x9vbOcL6DgwOzZs3i559/pnfv3hkWqffSvn17IiMjOX36NCNGjGDChAmcOnUq0w+Hsbe3JzIyEjs7O0aMGMGiRYsYNGgQDRs2NJtXqVIl3n//fdzc3Jg0aRLDhg1jx44dmW63BzB37lyaNGnC7NmzmTRpEo0aNaJt27bZviYRERGRwsDGaGm/gkgO024eBZ9yZTnlynKFPVceHi60H/Nxjqy1Nbxjoc5VTivsX1s5Sbn6x71289CdaRERERERK6lnWkREJBclJqWwNbxjjqyVfDs1R9YREeupmBYREclFN+JukVP/eK5PqBPJe2rzEBERERGxkoppERERERErqZgWEREREbGSeqZFREQKqOTbqUWubzoxKYUbcbfyOgwRExXTIiIiBZR9cbsc27O6oNga3jHHHuAUyQlq8xARERERsZKKaRERERERKxWpYnrx4sU0bdqU6tWrExYWRnR0NAaDgePHj+fK+f38/IiMjHzg54mMjMTPz++e80JCQggLCzO9DgsLIyQkxPT6yJEjuRKviIiISEFVZHqmjx49SmRkJKNHj6Zhw4aUKVMGd3d3oqKiqFChQl6Hl6O6du3KU089le3jhg4dSmJioun1kSNHWLx4McOHD8/J8EREREQKjSJTTJ86dQqAnj174uzsbBr39fXNo4geHG9vb7y9vbN9XGH7oUJERETkQSsSbR5hYWGMHz8egHr16mEwGIiOjk7X5rFt2zaqV6/O/v37TceePXuWunXrsmDBAtPYwYMH6dWrF7Vr18bPz4/JkycTHx9v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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import shap\n", + "from alibi.explainers import KernelShap\n", + "\n", + "predict_fn = lambda x: model(scaler.transform(x))\n", + "\n", + "explainer = KernelShap(predict_fn, task='classification')\n", + "\n", + "explainer.fit(X_train[0:100])\n", + "\n", + "result_x = explainer.explain(x)\n", + "result_cfrl = explainer.explain(cfrl)\n", + "\n", + "plot_importance(result_x.shap_values[0], features, 0)\n", + "print(result_x.shap_values[0].sum())\n", + "plot_importance(result_cfrl.shap_values[0], features, 0)\n", + "print(result_cfrl.shap_values[0].sum())" + ] + }, { "cell_type": "markdown", "id": "6d142f8a-c97f-4965-8b76-840b0aed5164", @@ -1207,7 +1103,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 27, "id": "4fc13edf-3e05-4a7f-b5d6-f822923df98d", "metadata": {}, "outputs": [ @@ -1222,14 +1118,13 @@ } ], "source": [ - "model.save('wine_clf.h5')\n", "import tensorflow.compat.v1 as tf\n", "tf.disable_v2_behavior()" ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 28, "id": "38105a7b-b86e-4720-9015-e7838ed82e0c", "metadata": {}, "outputs": [ @@ -1237,13 +1132,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "WARNING:tensorflow:OMP_NUM_THREADS is no longer used by the default Keras config. To configure the number of threads, use tf.config.threading APIs.\n" + "WARNING:tensorflow:OMP_NUM_THREADS is no longer used by the default Keras config. To configure the number of threads, use tf.config.threading APIs.\n", + "WARNING:tensorflow:No training configuration found in the save file, so the model was *not* compiled. Compile it manually.\n", + "WARNING:tensorflow:No training configuration found in the save file, so the model was *not* compiled. Compile it manually.\n" ] } ], "source": [ "from tensorflow.keras.models import Model, load_model\n", - "model = load_model('wine_clf.h5')" + "model = load_tf_model() \n", + "ae = load_ae_model()" ] }, { @@ -1256,40 +1154,39 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 29, "id": "80adef85-5100-489f-a5d6-888e9e932677", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:tensorflow:From /home/alex/Development/alibi-explain/alibi/explainers/counterfactual.py:169: The name tf.keras.backend.get_session is deprecated. Please use tf.compat.v1.keras.backend.get_session instead.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "`Model.state_updates` will be removed in a future version. This property should not be used in TensorFlow 2.0, as `updates` are applied automatically.\n" + ] + } + ], "source": [ "from alibi.explainers import Counterfactual\n", "\n", - "shape = (1,) + X_train.shape[1:]\n", - "target_proba = 0.51\n", - "tol = 0.01 # want counterfactuals with p(class)>0.99\n", - "target_class = 'other'\n", - "max_iter = 1000\n", - "lam_init = 1e-1\n", - "max_lam_steps = 10\n", - "learning_rate_init = 0.1\n", - "feature_range = (scaler.transform(X_train).min(), scaler.transform(X_train).max())\n", - "\n", "explainer = Counterfactual(\n", - " model,\n", - " shape=shape, \n", - " target_proba=target_proba,\n", - " tol=tol,\n", - " target_class=target_class,\n", - " max_iter=max_iter, \n", - " lam_init=lam_init,\n", - " max_lam_steps=max_lam_steps,\n", - " learning_rate_init=learning_rate_init,\n", - " feature_range=feature_range\n", + " model, shape=(1,) + X_train.shape[1:], target_proba=0.51, tol=0.01, target_class='other', \n", + " max_iter=1000, lam_init=1e-1, max_lam_steps=10, learning_rate_init=0.1,\n", + " feature_range=(scaler.transform(X_train).min(), scaler.transform(X_train).max())\n", ")" ] }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 30, "id": "56a4399b-659c-4d60-bd2c-e3c6ca259f28", "metadata": {}, "outputs": [ @@ -1297,22 +1194,22 @@ "name": "stdout", "output_type": "stream", "text": [ - "fixed acidity instance: 7.8 counter factual: 7.84 difference: -0.0397391\n", - "volatile acidity instance: 0.62 counter factual: 0.618 difference: 0.0020646\n", - "citric acid instance: 0.05 counter factual: 0.049 difference: 0.0005868\n", - "residual sugar instance: 2.3 counter factual: 2.273 difference: 0.0272591\n", - "chlorides instance: 0.079 counter factual: 0.079 difference: -2.49e-05\n", - "free sulfur dioxide instance: 6.0 counter factual: 6.027 difference: -0.0270853\n", - "total sulfur dioxide instance: 18.0 counter factual: 17.292 difference: 0.708271\n", - "density instance: 0.997 counter factual: 0.997 difference: -1.56e-05\n", - "pH instance: 3.29 counter factual: 3.282 difference: 0.0077941\n", - "sulphates instance: 0.63 counter factual: 0.712 difference: -0.0823232\n", - "alcohol instance: 9.3 counter factual: 9.32 difference: -0.0202456\n" + "fixed acidity instance: 9.2 counter factual: 9.23 difference: -0.030319\n", + "volatile acidity instance: 0.36 counter factual: 0.36 difference: 0.0004017\n", + "citric acid instance: 0.34 counter factual: 0.334 difference: 0.0064294\n", + "residual sugar instance: 1.6 counter factual: 1.582 difference: 0.0179322\n", + "chlorides instance: 0.062 counter factual: 0.061 difference: 0.0011683\n", + "free sulfur dioxide instance: 5.0 counter factual: 4.955 difference: 0.0449123\n", + "total sulfur dioxide instance: 12.0 counter factual: 11.324 difference: 0.6759205\n", + "density instance: 0.997 counter factual: 0.997 difference: -5.08e-05\n", + "pH instance: 3.2 counter factual: 3.199 difference: 0.0012383\n", + "sulphates instance: 0.67 counter factual: 0.64 difference: 0.0297857\n", + "alcohol instance: 10.5 counter factual: 9.88 difference: 0.6195097\n" ] }, { "data": { - "image/png": "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n5359qF0ZvbPaFlFWs4F90w293YmoyIl534dpeX8r6EsUuks0hkZqczs12QVpOX5/ZoQATi07Fywt6lK7tvsf5cDQ7597r+VBhFa7vRbzLXrCIIAUXzzL2WiKEAQDvi4Tcj9+EURbpuGta4EbGLu/xtByLX7QBBy/y+Js21As68/5OP5diFg9nsBUmMjPMc5RGCxRFFATc2RH4I35a8Nfr8fTU1NsNly/6xms9nQ2NgIv99/UDj2+/1obW2de7+lpQXj4+PHtdfRfrBGqLvwnOP+mrcZUAcVr7OO8sTsYtWddZphaxMREZUiTmInIiIiIpplSjhuaWlBIBCAouTaABRFQTAYREtLyyGvGxsbm3vf7/ejuZm3shERERGROUwJx3V1dejv78fDDz8MAHj44YfR399/UEsFAGzYsAH3338/VFXF5OQknnzySVx00UVmlEhEREREZN4NeYODg/jiF7+I6elpVFVV4Y477sCSJUtw3XXX4eabb8aaNWugKApuv/12PP/88wCA6667Dh/4wAfMKI+IiIiIqPSujyYiIiIiWig+kEdERERENIvhmIiIiIhoFsMxEREREdEshmMiIiIiolkMx0REREREsxiOiYiIiIhmMRwTWWRwcBDnnHMORkdHAQDf//738fd///e6rb9x40b83d/9HS677DJcdtll+Mtf/qLb2kRERKWKc46JLPT73/8ev/71r3HzzTfj61//On7729/C6/Uuet1oNIpLLrkEd999N0466SQoioJYLIbq6modqiYiIipddqsLICpnV1xxBV544QV85jOfwa9+9StdgjEAbNq0Cb29vTjppJMAADabjcGYiIhoHthWQWShTCaDgYEBVFZWIhwOW10OERFR2WM4JrLQnXfeiVWrVuFnP/sZvvrVr2J8fFyXddetW4fBwUFs3LgRAKAoCqampnRZm4iIqJSx55jIIk8++SS+973v4f7774fT6cT999+PBx54AL/4xS9gty++4+m1117DHXfcgUQiAVEU8YUvfAFve9vbdKiciIiodDEcExERERHNYlsFEREREdEshmMiIiIiolkMx0REREREsxiOiYiIiIhmMRwTEREREc1iOCYiKgIf/vCHcf/99+v+WiIiOhjDMRGRiV555RVcffXVOPnkk3Hqqafi6quvxpYtW6wua84Xv/hFfPvb37a6DCIiyyz+pgEiIpqXWCyGG264AbfddhsuvvhiyLKMV155BZIkWV0aERHN4skxEZFJ9u7dCwB497vfDZvNBpfLhTPPPBMrVqzA3Xffjf/9v//33GtHRkawfPlyZLPZQ9b53e9+h6uvvhq33347Tj75ZGzYsAF/+9vfDnrN6Ogorr76apx44on4xCc+gcnJybnP3XzzzXj729+Ok08+GR/60IcwMDAAALjvvvvw0EMP4Sc/+QlOPPFE3HDDDQCAQCCAz372szj99NNx3nnn4Re/+MXcWlu2bMF73/tenHTSSXjb296Gb33rW/r9hBERWYDhmIjIJD09PbDZbPjCF76AP/3pT5iamlrwWlu2bEFnZydeeOEF3HzzzbjpppsQjUbnPv/www/jW9/6Fv72t79BlmX89Kc/nfvc2Wefjcceewx/+9vfsHLlyrlQ/oEPfACXXnopPvnJT2Ljxo245557oKoqPv3pT2P58uX485//jJ///Of4+c9/jueeew4A8M1vfhMf+chH8Nprr+GJJ57AxRdfvOAfExFRIWA4JiIyidfrxa9//WsIgoAvf/nLOOOMM3DDDTcgFAod91q1tbX46Ec/CofDgXe9613o6enBs88+O/f59773vejp6YHL5cKGDRuwffv2uc+9//3vh9frhSRJ+OxnP4sdO3ZgZmbmsPts3boVk5OTuOmmmyBJEjo6OnDVVVfhkUceAQDY7XYMDQ1hcnISFRUVWLdu3XH/WIiICgl7jomITNTb24t//ud/BgAMDg7i//yf/4N/+qd/Qk9Pz3Gt09TUBEEQ5t5vbW1FMBice7+hoWHubbfbjUQiAQBQFAXf/va38eijj2JychKimDsjiUQiqKysPGSf0dFRBINBrF+/fu5jiqLMvf/Nb34T3/ve93DxxRejvb0dN910E84999zj+rEQERUShmMiIov09vbive99L+677z6sXLkSqVRq7nPHOk0OBALQNG0uIPv9fpx33nnH3POhhx7CU089hZ/97Gdob2/HzMwMTjnlFGiaBgAHBW4AaGlpQXt7Ox5//PHDrtfd3Y277roLqqri8ccfx80334wXX3wRHo/nmLUQERUitlUQEZlkcHAQP/3pTzE+Pg4gF2gffvhhnHDCCejv78fLL7+MsbExzMzM4Ic//OFR15qcnMQvfvELyLKMP/7xjxgcHMQ555xzzBri8TgkSUJNTQ2SySTuuuuugz5fV1eHkZGRuffXrl2LiooK/OhHP0IqlYKiKNi1a9fc+LkHH3xw7gS6qqoKAOZOo4mIihF/ByMiMonX68XmzZtx5ZVXYt26dbjqqquwbNkyfPGLX8Tb3/52vOtd78Jll12G9773vcdsTVi7di3279+P008/Hd/5znfwve99DzU1Nces4YorrkBrayvOOussXHLJJYf0CL///e/H7t27sX79etx4442w2Wy45557sGPHDpx//vk4/fTTceuttyIWiwEAnnvuOVxyySU48cQT8c1vfhPf/va34XK5FvxzRERkNUHL/1saEREVhd/97ne4//778Zvf/MbqUoiISg5PjomIiIiIZjEcExERERHNYlsFEREREdEsnhwTEREREc1iOCYiIiIimsVwTEREREQ0i+GYiIiIiGgWwzERERER0SyGYyIiIiKiWf8/wqup/+jg0loAAAAASUVORK5CYII=\n", + "image/png": "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wN13340LL7wQV1xxBdasWdPXf2oiogFhqCYiCoK//OUv2Lt3L95++22888472L9/P5599lnEx8fjhRdegNFoxJ49e7Bnzx6kp6dDJpPh//2//4cdO3bglVdewWeffYZ///vffb5PSkoKRowYgXvvvRdbtmxBc3PzoOodOXIkSkpKAACff/55v0Pmvn37kJOTg08++QR33HFHv14jl8tx5ZVXYvfu3acc83q9uP3223HxxRfj008/xa9+9Sv8/Oc/x7Fjx3DOOefgu9/9Lu6//364XC7ce++9uOeee5Cfn3/Kdf785z+jqqoK7733Hv7+97/jrbfe6j4WCARwxx13YNy4cfj444/x8ssv4+WXX8a2bdv6VT8RUX8wVBMRBcH69euxYsUKGAwG6PV6rFixAu+8884Zz580aRLOPvtsKBQKZGdnY+nSpfj888/7fB9BELBmzRpkZWXhsccew4wZM3DdddehsrIyiJ/mzIxGI2644QYoFArExcUN6HWtra2nPL937144HA7cdtttUKlUmD59Oi6//PLufum77roL7e3tWLx4MYxGI6677rrTXv/dd9/F7bffjuTkZJhMJtxwww3dx/bv3w+LxYK77roLKpUKOTk5WLJkCTZs2DDAT09EdGbsqSYiCoLGxkZkZmZ2P87MzERjY+MZz6+oqMBjjz2GAwcOwOl0wu/3Y+LEif16r4yMDKxcuRIAYDab8eCDD+L+++/Hq6++OrQP0c/3HoyGhgYkJSWd8nxjYyMyMjIgk32zxpOZmYmGhgYAnS0kV199NX7zm9/ggQcegCAIp71+Y2MjTCZTj2t0qa2tRWNjY3eLDAD4/f4ej4mIhoor1UREQWA0GlFXV9f92Gw2d9+Ud7oguGrVKowaNQqbNm3Cl19+iZ/85CeDutnQZDLhuuuuw5EjRwAAGo0GLper+3hTU1O/rxUfHw8Avb7+TKG2N4FAAB988MFpQ6zRaER9fT0CgUD3c2azGenp6QA6w/if//xnXHPNNXjsscfO2HeelpbW3XvddY0uJpMJ2dnZ2L17d/ePPXv24IUXXhjwZyEiOhOGaiKiIJg/fz7+8pe/wGKxwGKx4JlnnsGCBQsAAAaDATabDXa7vfv8jo4OJCQkICEhAeXl5fjPf/7Tr/dpbW3FU089hePHjyMQCMBiseCNN97A2WefDQAYP348jh49ioMHD8Ltdvd5M+HJ9Ho90tPT8fbbb8Pv9+P1119HdXV1//8jfIvP50N5eTl++tOform5GTfddNMp50yZMgVxcXH429/+Bq/Xi507d2Lr1q2YN28eRFHEAw88gGuvvRaPPvoojEYj/vjHP572va666io8//zzaG1tRX19Pf75z3/2eI+EhAQ8//zzcLlc8Pv9OHLkCPbt2zfoz0ZE9G0M1UREQXDnnXdi0qRJWLhwIRYuXIiJEyfizjvvBADk5+dj/vz5mDVrFqZNm4aGhgbcf//9KCkpwTnnnIMHH3wQ8+bN69f7KJVK1NbW4gc/+AHOPfdcLFiwACqVCo899hiAzhsQV6xYgZtuuglz5szBueeeO6DP8fDDD+Pvf/87LrjgApSVlfWYy91f7777LqZOnYpp06bhjjvuQHJyMt58883u1eeTqVQqPPfcc/j4449x4YUXYvXq1XjiiSeQn5+PNWvWoKWlBffccw8EQcCjjz6KN99887Q3PN51113IzMzElVdeiZtvvhnFxcXdx+RyOZ577jkcOnQIV155JS688EL86le/Qnt7+4A/GxHRmQjiYL7fSERERERE3bhSTUREREQ0RAzVRERERERDxFBNRERERDREDNVEREREREPEUE1ERERENEQM1UREREREQ8RQTUREREQ0RAzVRERERERDxFBNRERERDRE/x/9AnxK6CQJ7gAAAABJRU5ErkJggg==\n", "text/plain": [ "
    " ] @@ -1326,27 +1223,92 @@ "cf = result_cf.data['cf']['X']\n", "cf = scaler.inverse_transform(cf)\n", "compare_instances(x, cf)\n", - "plot_cf_and_feature_dist(x, cf, feature='sulphates')" + "plot_cf_and_feature_dist(x, cf, feature='total sulfur dioxide')" ] }, { "cell_type": "code", - "execution_count": 66, - "id": "354eb18d-e16f-4e2a-a060-335f75911046", + "execution_count": 31, + "id": "0d7becb3-3006-468a-9b98-1ebd02dc7288", "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[0.72949547 0.27050447]]\n", - "[[0.80257004 0.19742996]]\n" - ] + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "8957ddd00a12420a9707111ff52db24e", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/1 [00:00,\n", + "
    )" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAFECAYAAADlf7JXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABmNklEQVR4nO3deVxU5fv/8ReDgigooCyZWa5jH0VxRRTTUJTcRTTXcsk9NVfINbVcMlLB3bQ0y9Ayyz65m5VlpKXpJytNs3InXBAVEJjfH/6crxP7iA7g+/l48Mi55z73uc59aLg4XOc+diaTyYSIiIiIiOSawdYBiIiIiIgUVEqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkVsHYA8vC5fvk5aWsFY5rx0aWfi4hJsHcZDTefAtjT/tqX5ty3Nv23Zev4NBjvc3Epk+r6SabGZtDRTgUmmgQIVa2Glc2Bbmn/b0vzblubftvLz/KvMQ0RERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKegKiFFouJZ0o5ph33+IeHi55NpZYR+fAdpJvpdo6BBGRfEnJtBRaxRyL0G7MJ7YOQ6RQ2BzRwdYhiIjkSyrzEBERERGxkpJpERERERErWZ1ML1y4kCZNmlCtWjXCw8PzMqYHrnfv3owYMcKibf369QQGBvKf//yH3r17P7BYjh07htFoJCYmxtxmNBpZu3Ztnu7n9OnTGI1Gvvjiiyz7rV27FqPRmKf7FhERESksrKqZPnLkCFFRUYwePZoGDRpQunTpvI7LpmJjY3nllVfo2bMnwcHBlCpVyqbxREdHU65cuTwd09PTk+joaCpWrJin44qIiIg8TKxKpk+ePAlAz549cXZ2zrRfYmIixYoVsy4yG/rzzz9JTU2lc+fOVKtW7Z7GSk1NJTU1FQcHB6vH8PX1vacYMuLg4HBfxhURERF5mOS6zCM8PJzx48cDULduXXNJQkxMDEajka+//prBgwdTu3Ztpk+fDsDZs2cZNWoUDRo0oFatWvTv39+ckN+RlJTE66+/TtOmTalRowbt27fnyy+/zDaeZcuWERQUhI+PD40aNaJ///7ExsYCsHHjRoxGI9evX7fYJjAwkDlz5mQ4XlRUFD179gSgQ4cOGI1GNm7caD6+Y8eOWfT/d4lIeHg4ISEh7Ny5kzZt2lCzZk0OHz6cafzvvfceTZs2xdfXl8GDB5tjv1tGZR5r166lZcuW1KhRg6CgIN555x3ze1u2bKFatWrs27fP3Hb69Gnq1KnDvHnzzK//XeaRnJzM9OnTqVevHg0aNGDmzJmkpKSki+fKlStMnjyZRo0a4ePjQ7du3fjpp58yPUYRERGRwirXV6aHDh2Kt7c3S5YsYfXq1RQrVozKlSvz888/AzBx4kRCQkJ4/vnncXR05MqVK/To0QNXV1deeeUVnJycWL58OX379mXbtm3mK9cjRozg8OHDDB8+nPLly7NlyxaGDBnCRx99xJNPPplhLJs2bWLp0qWMHTuWKlWqcOXKFb777jtu3rxp9YR06dIFd3d3pk+fzhtvvMFjjz1G+fLlOX78eI7HOHPmDHPnzmXo0KF4eHhkWqKxc+dOpk+fTrdu3WjRogX79+9nwoQJ2Y6/fv16ZsyYQd++fQkICCAmJobZs2eTnJzMwIEDeeaZZ9ixYwcTJkxg8+bNlChRgpdffply5coxbNiwTMd944032LBhA6NGjaJSpUps2LCBrVu3WvRJTk6mb9++xMfHM378eNzd3Vm3bh19+vRh+/bteHh45HieRERERAq6XCfT5cuXp3z58gD4+PhQokQJi/eDg4N56aWXzK/nz5/PzZs32bRpE66urgDUqVOHwMBAPvroI3r27Mm+ffvYs2cP7777Lg0aNAAgICCAU6dOsWTJEiIjIzOM5fDhwwQEBJivJAO0bNkyt4dkwdvbm8qVKwO3rwhXrVo112NcuXKFd955J9NfAu5YunQpTZo0Ydq0aQA0adKES5cusWHDhky3SUtLIyoqipCQEPONnwEBAVy7do1ly5aZf4mZMmUKbdu2ZebMmVSrVo2DBw/y4YcfZlpucvnyZT744AOGDx9Ov379zPG0bt3aot8nn3zC8ePH+eyzz3jiiScAaNSoEcHBwaxatYqwsLAczRFA6dKZlwiJSP6jh+bYlubftjT/tpWf5z/PH9rSrFkzi9f79u2jUaNGODs7m0sGSpQoQfXq1fnf//4HwLfffouHhwd16tSxKCvw9/dn48aNme7rySef5MMPPyQyMpJmzZpRvXp17O3t8/qQcs3LyyvbRDolJYWjR48yefJki/agoKAsk+nz589z8eJFgoODLdpbt27NunXr+O2336hZsyaurq68+uqrDBo0iKJFizJs2LAs67+PHTtGUlISzZs3N7cZDAaaN2/OW2+9ZW7bt28f1atXp1y5chbnqn79+ubzmVNxcQmkpZlytU1u5Of/8UQKotjYa7YO4aHl4eGi+bchzb9t2Xr+DQa7LC8A5nky/e+VPS5fvsyhQ4f4/PPP0/X19/c394mNjaV69erp+mSVHHfu3Jnr168THR3NokWLcHV1pVu3bowYMcKmSXWZMmWy7XP58mVSU1PTzVd2K6PcqanObLurV6+a2xo2bEiZMmW4cuUKXbt2zXLcf/75J8tx74770KFDGZ6rO3+xEBEREXlY5HkybWdnZ/G6VKlSBAYGMnTo0HR975SIlCpVCi8vLxYtWpSrfRkMBvr06UOfPn04d+4cmzdvZt68eXh7e9O9e3ccHR0BuHXrlsV2dyecOZXVWG5ubrkez83NDXt7e+Li4iza//363+7UJGe23d3L+L3xxhukpqZSpkwZZs6cSURERKbj3vkFIC4uzlyOk9F+SpUqRY0aNXjllVfSjXEvK5aIiIiIFER5nkz/m7+/P1u2bKFKlSqZLpPn7+/P22+/TfHixalUqZJV+3nkkUcYOHAgH330ESdOnABul1sAnDhxgrp16wLw008/kZCQkOvxvb29zWPduSp77tw5Tp48aa4dzo0iRYrw5JNPsmvXLrp3725u37FjR7ZxeHp6snXrVpo2bWpu37JlC87OzuYHrMTExLB27Vrmz5+Ps7Mz/fv3p2XLlrRq1SrDcatWrYqjoyO7du0yn4O0tDR27dpl0c/f359vvvmGsmXLFrr1xUVERERy674n03369OHTTz/l+eefp1evXnh5efHPP/+wf/9+6tatS9u2bWncuDEBAQH069ePAQMGULlyZRISEvj1119JSkpizJgxGY49ZcoUSpUqRa1atXBxcSEmJoY///yTcePGAVCzZk28vLx47bXXGDlyJFeuXOGtt97Kcm3szHh7e1OjRg0WLFiAk5MTaWlpLFu2zOIqbm4NHjyYF198kalTpxIUFMT+/fv5+uuvs9zGYDAwfPhwpkyZgqurK40bN2b//v2sW7eO0aNH4+joyPXr15kwYQKtW7c211Y/++yzvPLKK9SvXx93d/d047q5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Bw/mww8/xM7OLldzJSIiIlKQZZlMly9fHldXV0wmk0WpQVpaGlFRUYSEhJivNgcEBHDt2jWWLVvG888/j7e3N56enjg4OKQrU2jTpo353yaTifr163PhwgXWr1+fq2T6yJEj9OzZk9atW5vbOnTokOPtM3KnRtre3v6eyiuWLVuGo6Njpu9fvnyZDz74gOHDh9OvXz8AmjRpYnEsGTlx4gT//e9/mTVrFp06dTJv1759e5YsWcLKlSspXrw4s2fPplevXmzatImdO3dSokQJwsLCMh33q6++4ujRo6xfv55atWoBt+u1g4KCLJLphQsXUqZMGVasWIGDgwNw++r8M888w5dffkmzZs1yMj0AlC7tnOO++cHDumB/fqJzICLy4OWHz978EENmrKqZPn/+PBcvXiQ4ONiivXXr1qxbt47ffvuNmjVrZrr91atXiYqKYteuXVy4cMF89dbLyytXcVSrVo2VK1diMBho1KgRFSpUyP3B3AcNGzbMMpGG26USSUlJNG/e3NxmMBho3ry5+Yp4Ro4cOYLJZLKYe4PBQHBwsMV2devWpU+fPkyePJmUlBTeffddihcvnum4hw8fpkyZMuZEGuDRRx+levXqFv327dtHx44dMRgM5pKUcuXK8eijj/K///0vV8l0XFwCaWmmHPe3JQ8PF2JjtWy9Lekc2FZ+/kEmIveXrT97bf35bzDYZXkB0Kp1pu/Ux5YuXdqi/c7rq1evZrl9eHg4n3/+Of3792flypV8+OGHdO7cmaSkpFzFMWXKFFq0aMHixYsJDg6mZcuW/Pe//83VGPdDmTJlsu3zzz//AJnPYWYuXrxI8eLF063CUbp0aW7evElycrK5rW3btiQnJ1OlShXq1auX5bixsbEZ3pD473guX77MihUrqF69usXX33//zblz57Lch4iIiEhhY9WVaQ8PDwCLG9zufl2qVKlMt01KSmLPnj1MmTKF7t27m9vff//9XMdRsmRJJk2axKRJk/j111956623GDt2LEajkcqVK+Pg4MCtW7cstomPj8/1fgAcHR3TjZXZLw05qRu+k3DHxcXh6upqbv/3nP6bp6cnN27c4ObNmxYJdVxcHE5OTubSi5SUFCZPnkzVqlX5/fffiY6O5tlnn810XA8PDy5dupSuPS4uzmI1klKlStGiRQu6dOmSrq+bm1uWsYuIiIgUNtlemS5atGi6K8Z36qH/fbPcli1bcHZ2Nj90JKNtk5OTSUtLMyd9AAkJCezevdvqg4DbJR/jx48nLS2NkydPmuM8c+aMRQx3r3qRG15eXly/fp0LFy6Y27755hur461atSqOjo7s2rXL3JaWlmbxOiM+Pj7Y2dmxbds2c5vJZGLbtm0WK4csXbqUP/74g8WLFzNgwADmzJnD6dOnsxz3n3/+4aeffjK3nT17lqNHj1r08/f35/fff6dGjRr4+PhYfJUrVy7Hxy8iIiJSGGR7ZbpChQrs2rWLnTt34uXlhaenJ15eXgwfPpwpU6bg6upK48aN2b9/P+vWrWP06NHmeuGKFSvyzz//sHHjRqpUqYKbmxvlypXDx8eHRYsW4ezsjMFgYPny5Tg7O5OQkJCr4Lt3705QUBBVqlTBzs6O9evXU7x4cXO9dosWLYiMjGTixImEhIRw9OhRPvroIyum6fZNfsWKFWPChAn07duX06dP88EHH1g1Fty+itu1a1eioqIoUqQIlStXZsOGDdy4cSPL7SpVqkSbNm2YPn06169f57HHHmPDhg2cPHnSvOLK0aNHWbp0KZMmTeKxxx5j2LBh7N69mwkTJrB69eoMr5w3bdqUatWqMXLkSMaOHYuDgwNRUVHpSj9efPFFunTpwsCBA+ncuTNubm5cuHCBb7/9lk6dOmW4fKCIiIhIYZXtlekePXrQuHFjJkyYQGhoKOvXrwega9euTJw4kZ07dzJ48GA+++wzwsPDGThwoHnbZ555hpCQEObOnUtoaKh5ibyIiAgee+wxwsLCeO2112jZsiUdO3bMdfC+vr58/PHHjBgxgpdeeslcz3tn+b6qVasyc+ZMDh06xJAhQ9i/fz+zZs3K9X7g9rJ+kZGRnD9/nmHDhvHpp58SERFh1Vh3jB8/ns6dO7No0SLGjBmDp6cnffv2zXa7V199lU6dOrFo0SKGDh3KmTNnWLp0KfXq1SM5OZmwsDD8/Pzo1q0bAA4ODrz++uv8+OOPFmti383Ozo4lS5ZQqVIlJkyYwKxZs+jZsye1a9e26FehQgXzkxOnTJnCgAEDiIqKwsHBgccff/ye5kNERESkoLEzmUwFYzkFKXS0mofkhs6BbXl4uNBuzCe2DkNEHrDNER1s/tlr68//+7Kah4iIiIiIWLmah4iIPFySb6WyOeLeHoolIgVPYlKKrUPI95RMi4hIthyK2tv8T70PM1v/mfthp/mXrKjMQ0RERETESkqmRURERESspGRaRERERMRKqpkWEZFsJd9KxcPDxdZhPNQ0/7al+betrOY/MSmFa/E3H2A0lpRMi4hIthyK2mudaRHJlzZHdMCWt4eqzENERERExEoPRTIdFRWFn59frrZJTk4mKiqKX375xaL99OnTGI1GvvjiC3NbYGAgc+bMyZNY71VG8WVk7dq1GI1G8+uYmBiMRiPHjh0DMj9+EREREfk/D0UybY1bt26xcOHCdMmkp6cn0dHR1K1b10aRZc3a+KpXr050dDTly5cHMj9+EREREfk/qpnOJQcHB3x9fW0dRqasjc/Z2TlfH5eIiIhIfpRvr0xv3LiRGjVqEB8fb9F+/PhxjEYj3377rblt7dq1tGzZkho1ahAUFMQ777yT5dg3btxg+vTptGrVilq1ahEYGMi0adNISEgw96lTpw4AL7/8MkajEaPRyOnTp3NcRnHgwAF69epFrVq18PPzY9KkSRbjZ+TgwYMMHjyYgIAAfH196dChA59++mm6fmfOnGH06NH4+flRq1Yt2rVrx+bNm4GMyzySk5OZPn069erVo0GDBsycOZOUFMvHg/67zCOz4w8NDSU8PDxdTOHh4XTs2DHL4xMREREpbPJtMt2iRQsAduzYYdH++eefU6ZMGXMN9Pr165kxYwaBgYEsXbqU4OBgZs+ezfLlyzMdOzExkdTUVEaNGsWKFSsYOXIk3333HSNHjjT3Wb16NQBDhgwhOjqa6OhoPD09cxT7Dz/8QJ8+fShTpgyRkZG8/PLLfPnll0yYMCHL7c6ePUudOnV47bXXWLJkCS1btmTChAl89tln5j5xcXE8++yzHDlyhLCwMJYuXUpoaCjnzp3LdNw33niDDRs2MHToUObOncvZs2dZtWpVlrFkdvyhoaFs27aN69evm/tev36dbdu20blz55xMj4iIiEihkW/LPEqWLEmTJk34/PPPLZK0zz//nFatWmFvb09aWhpRUVGEhISYr5YGBARw7do1li1bxvPPP4+jo2O6sd3d3Zk2bZr5dUpKCuXKlaNHjx6cPXuWsmXL4uPjA0D58uVzXf4QERFB7dq1mT9/vrnNy8uLPn36cOzYMapWrZrhdm3atDH/22QyUb9+fS5cuMD69etp27YtAO+88w4JCQls3LjRnNz7+/tnGsvly5f54IMPGD58OP369QOgSZMmtG7dOstjyOz427Zty+zZs9m6dav5vGzZsoVbt26ZYxQRERF5WOTbZBqgdevWhIeHc/nyZdzc3Pjll184deoUr732GgDnz5/n4sWLBAcHp9tu3bp1/Pbbb9SsWTPDsTdt2sQ777zDn3/+yY0bN8ztp06domzZslbHfPPmTQ4dOsSkSZMsSinq1q1L0aJF+fnnnzNNpq9evUpUVBS7du3iwoULpKamArcT8Tu+++47mjRpkuOr5MeOHSMpKYnmzZub2wwGA82bN+ett97K9fE5OzvTqlUrPv74Y3My/fHHHxMYGIibm1uuxipd2jnX+7clLdhvezoHIiKSEVv+fMjXyXRgYCBFihRh+/btPPvss3z++ed4e3ubV6qIjY0FoHTp0hbb3Xl99erVDMfdsWMHYWFhdO/enVGjRuHq6kpsbCzDhg0jKSnpnmKOj48nNTWVadOmWVz9viOrcozw8HB++uknhg4dSqVKlXB2dmbdunXs2rXL3OfKlSvmq8Y58c8//wCZz5E1QkND6d27N3///Tcmk4kDBw5kWVaTmbi4BNLSTFbH8SB5eLgQG2vLJeFF58C29IuMiORn9/Png8Fgl+UFwHydTJcoUYKmTZvy+eef8+yzz7JlyxaCg4Oxs7MDwMPDA7hdR3y3O69LlSqV4bhbt26lVq1avPLKK+a277//Pk9idnFxwc7OjhdffJGmTZumez+zK8pJSUns2bOHKVOm0L17d3P7+++/b9HvTuKfU2XKlAFuz4mrq6u5/d9zlhv169fn8ccfZ+PGjZhMJjw9PQkICLB6PBEREZGCKt/egHhHmzZt2L9/P7t37+bvv/+2qCv29vbG09OTrVu3WmyzZcsWnJ2dLR5KcrfExEQcHBws2u6shnFH0aJFAXJ9pbp48eL4+vryxx9/4OPjk+7r7pKNuyUnJ5OWlmYRV0JCArt377bo5+/vz969e81XnLNTtWpVHB0dLa5up6WlWbzOSHbH37lzZzZt2sQnn3xCx44dsbe3z1E8IiIiIoVJvr4yDdC0aVOKFSvGlClTKFeunEUNtMFgYPjw4UyZMgVXV1caN27M/v37WbduHaNHj87w5kOARo0aMX36dJYsWUKtWrX48ssv2bdvn0UfBwcHypUrx5YtW6hSpQqOjo6ZJuf/NnbsWPr06YPBYKBVq1aUKFGCc+fOsWfPHkaNGkWFChXSbePi4oKPjw+LFi3C2dkZg8HA8uXLcXZ2tlhSr0+fPmzatImePXsyePBgvL29OXnyJDdu3GDAgAHpxnVzc6Nr165ERUVRpEgRKleuzIYNGyzqxDOS2fHfSfY7derEggULSElJISQkJEfzIiIiIlLY5PtkulixYgQGBrJ582YGDhyY7v2uXbuSlJTEmjVrePfdd/Hy8iI8PJw+ffpkOma3bt04ffo0a9asISkpicaNGxMREUHXrl0t+k2bNo05c+bQt29fkpOTs72ae0e9evV47733iIyMZPz48aSlpVG2bFmaNGliLrvISEREBFOmTCEsLAxXV1d69uxJYmIia9euNfdxd3dn3bp1zJ07l5kzZ5KcnMzjjz/OoEGDMh13/PjxpKSksGjRIgwGA+3bt6dv377Mnj07y+PI6PjLlSsH3C6xufOLTUa/HIiIiIg8DOxMJlPBuANM8pUrV67w1FNPMXnyZLp06WLVGLoBUXJD58C2PDxcaDfmE1uHISKSzuaIDroBUQqOhIQETpw4wZo1ayhRooTWlhYREZGHmpJpyZWff/6Z5557jkcffZQ5c+bg5ORk65BEREREbEZlHmIzKvOQ3NA5sK1SrsVxKKpVe0Qk/0lMSuFa/M37Nr7KPERE5J45FLXXLzM2pF8mbUvzb1v5ff7z/TrTIiIiIiL5lZJpERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaRERERERKymZFhERERGxkpJpERERERErKZkWEREREbGSnoAoNmMw2Nk6hFwpaPEWRjoHtqX5ty3Nv21p/m3LlvOf3b7tTCaT6QHFIiIiIiJSqKjMQ0RERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKSqZF/r+bN2/y0ksvERQURHBwMF988UWmfdevX09QUBAtWrRg+vTppKWlWbyflJREmzZtCAkJud9hFxp5Mf87d+4kJCSEtm3b0qZNG1atWvWgwi+Q/vjjD5599llatWrFs88+y6lTp9L1SU1NZdq0abRo0YKgoCA2bNiQo/ckZ+71HCxatIg2bdrQrl07QkJC+Prrrx9g9AXfvc7/HSdPnqRWrVrMmTPnAURd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SUk3XlpamunWrVumyZMnm3r37m1uf/fdd01Vq1ZN1z8sLMzUqVMni7a///7bVLVqVdPu3bvNbVWrVjV17NjRot+3335rqlq1qikmJsaivUePHqbhw4dnesw53S6j2L777jtT1apVTb/99luuxrt69aqpZs2appkzZ2Ya1/Dhw029evWyaDt8+LCpatWqpmvXrmW6XUaefvpp0+zZs82vU1NTTQEBAabw8HCLflOnTjXVqVPHlJiYaDKZ/u/7YceOHdnuY9SoUaYmTZqYbt68meH7Gc3V3VJSUkw3b940+fr6mj7++GOTyZT98W7ZssXUoEGDbGO728SJE03t27dP1/7mm2+aGjdunKuxRAoDlXmIiOQxFxcXPvzwQ4uvmjVrcvDgQW7cuEFwcDApKSnmr4YNG/LPP/9w/vx5AK5evcqrr77K008/TfXq1alevTrR0dGcOnUqT+N86qmnLF5/++23eHh4UKdOHYv4/P39+d///pfpONZudy/jHTx4kMTExFzfXFi+fHmKFy/O2LFj2blzJ/Hx8bmOD25fEb548SLBwcEW7a1btyYhIYHffvvN3GZnZ5durjPy3Xff0bp161zVrh86dIi+ffvi5+fHf/7zH2rVqsWNGzf4448/gOyPt2rVqly7do2wsDD27t3LjRs3crxvEblNZR4iInnM3t4eHx+fdO2XL18GoE2bNhlud+7cOR599FHCw8P56aefGDp0KJUqVcLZ2Zl169axa9euPI2zTJky6eKLjY2levXq6fra29tnOo61293LeFeuXAHAw8MjV2OXKlWKt99+m6ioKF566SVMJhONGzdm8uTJPPbYYzkeJzY2FoDSpUtbtN95fXeZRKlSpXBwcMh2zCtXruTqeM6ePUu/fv2oWbMm06ZNw9PTk6JFizJo0CCSk5PN+87qeCtWrMjixYtZvnw5AwcOpEiRIgQFBTFx4kTc3d0z3G/JkiUzLIuJj4/P09VYRAoKJdMiIg/InURj2bJl6ZIwgAoVKpCUlMSePXuYMmUK3bt3N7/3/vvv52gfDg4O3Lp1y6Its6uvdnZ26eLz8vJi0aJFOdrXvW53L+O5uroCt5PazJK+zPj6+rJy5UoSExP59ttvmT17NmPGjGH9+vU5HuNO0hsXF2fRfue1NUmlq6urOUnPia+//prExEQWL15M8eLFgdu1+v+ud87ueJs1a0azZs24du0ae/bsYebMmcyYMYN58+ZluN+KFSty/vx5bty4Yd4v3K6lrlixYm4PW6TAUzItIvKA1K5dm2LFinHx4kWaNWuWYZ9r166RlpZmcSUzISGB3bt3W/QrWrQocHvVi7uXWfP29ubMmTMW7XdWX8iOv78/b7/9NsWLF6dSpUo5Pi5rt7uX8e7M5aZNmwgLC8uwT9GiRUlKSsp0P8WKFSMwMJDjx4+zbNmyXMXo7e2Np6cnW7dupWnTpub2LVu24OzsjNFozNV4cPu4t2zZwqhRo3K0dF5iYiIGg4EiRf7vR/mWLVvS3fx6R3bH6+LiQrt27di/fz8HDx7MdL8BAQEA7Nixgw4dOgBw4cIFfvjhB/PNniIPEyXTIiIPSMmSJXnxxRd57bXXOHPmDPXr1yctLY1Tp04RExPDokWLcHFxwcfHh0WLFuHs7IzBYGD58uU4OzuTkJBgHuvOFcDVq1fTsGFDnJ2dqVixIi1atCAyMpKJEycSEhLC0aNH+eijj3IUX+PGjQkICKBfv34MGDCAypUrk5CQwK+//kpSUhJjxozJ0+3uJY6SJUsydOhQ5s2bx61bt3jqqadITk7myy+/5MUXX8TLy4sKFSqwa9cudu7ciZeXF56envzyyy989NFHNG/enLJly3LhwgWio6Np2LBhrmI0GAwMHz6cKVOm4OrqSuPGjdm/fz/r1q1j9OjRVq0jPWzYMEJDQ+nZsyf9+vXD1dWVo0eP4urqSmhoaLr+DRs2JDU1lZdffpnQ0FCOHz/OqlWrKFmypLnPnj17sjzeDz74gEOHDtGkSRM8PT05deoUW7duNSfJGfH29iY0NJSZM2diMplwd3dn4cKFlC1blvbt2+f6uEUKOiXTIiIP0IABA/D09GT16tW8/fbbODo68sQTT9C6dWtzn4iICKZMmUJYWBiurq707NmTxMRE1q5da+5Tr149+vfvz5o1a3jzzTepX78+7777LlWrVmXmzJksXryYHTt20LBhQ2bNmmVRMpIZOzs7Fi5cyNKlS1m9ejXnzp2jVKlSVKtWLcvHfFu73b2ON2jQIEqVKsWaNWv44IMPKFWqFPXq1TMv2dajRw9++eUXJkyYwNWrV3nxxRdp06YNdnZ2zJs3j7i4ONzd3WnWrBmjR4/OdZxdu3YlKSmJNWvW8O677+Ll5UV4eLjVj46vWLEi77//PhEREUycOBGAypUrZxqb0Whk1qxZLFy4kB07dlCtWjUWLFjAqFGjzH3Kly+f5fEajUZ2797NrFmzuHr1Kh4eHnTp0oWRI0dmGeukSZNwcnJi9uzZJCYmUr9+fSIiIgr0w2hErGVnMv3/xUVFRERERCRXtDSeiIiIiIiVlEyLiIiIiFhJybSIiIiIiJWUTIuIiIiIWEnJtIiIiIiIlZRMi4iIiIhYScm0iIiIiIiVlEyLiIiIiFhJybSIiIiIiJX+H0Z4zQNPbvGYAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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RYs4e/ZsjteIjo4mODj4foWYYzVr1iQ6OpqKFSvmdygiIiIiDxVd+Ghj7u7uuLu752nbxMRESpQoga+vr22DyiNnZ+cCE4uIiIjIw0RnsvPgwIED9O3bl7p161K/fn369u3LsWPHAMt2kTNnztChQwcA/vOf/2A0GjEajcD/tWJ89dVXDB06lLp16zJz5kwg83aRnTt3EhoaSu3atfHz82PQoEHZnh3fu3cv/fv3x9/fn3r16tG9e3f27duXYd4vv/zC0KFDadCgAXXr1iU0NJSvv/7aIsZ/tovEx8czbtw46tatS0BAAEuXLrUikyIiIiKFk85k51JMTAwDBgzAz8+PuXPn4uTkxA8//MDFixf597//bTHX09OT1157jfHjxzNt2jRq1qyZYb3JkycTEhLCs88+i6OjY6b73Lx5M2FhYbRr147hw4djMpn49ttvuXz5Mo8++mim25w5c4annnqKAQMGYDAY+PLLLxk0aBBr166lfv36AJw8eZKePXtSqVIlZsyYgaurK//73/84f/58lsf/4osv8t133/Hiiy9Srlw5Vq1axZ9//kmxYvooiYiIiKRTZZRLr7/+Okajkbfeegs7OzsAnnzyyUznOjg4mM9cV61aNdPWi+DgYF544YUs95eWlkZERARBQUG8/vrr5vGWLVtmG2efPn0s1vDz8+O3337jgw8+MBfZixcvxsXFhffff58SJUoA0LRp0yzXPHHiBLt27WLBggW0bdsWAD8/P5566imcnZ2zjSczZcvmfpvCriA9xOJhpRxaR/krfB627+nDFm9BpBxax1b5U5GdCzdv3uTHH39k8uTJ5gLbWi1atMj2/d9//51Lly4REhKSq3UvXLjAggUL+Oabb4iNjcVkMgFQr14985xvv/2Wjh07mgvsezl69ChgWeCXKlWKJk2acOTIkVzFBxAXl0BaminX2xVWHh4uxMbqsRHWUA6to/xZryAWNw/T91SfQesph9bJLH8Gg12eTgyqyM6F+Ph4TCYTHh4eNluzbNmy2b5/5coVgFztMy0tjWHDhnHjxg1GjRrFv/71L5ycnIiMjCQuLs487+rVq7la9++//6ZUqVIZ2lrudQwiIiIiRY2K7FwoXbo0BoOB2NhYm615rzPibm5uALna5x9//MGxY8dYuXKlRStLYmKixTxXV9dcrVuuXDlu3LhBUlKSRaH9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586dY8CAAZhMJmbMmMG6dev44IMPKFu2LMnJyQBcuXIFAA8PjxwfT2xsLO7u7hnG81pkOzs7ExwczKZNm4A7Z7HLlStHs2bN8rSeiIiISGGjM9mZeO2110hNTaVcuXLMnj2biIgIAFxcXLCzs+P555+nefPmGbbz9PQE7hTAcXFxFu/dunWLmzdvZrvfr776isTERJYsWWIuyFNSUrh27Zp5Tno7RmxsbI6Px8PDw3x3lX+6O8bc6NatG7169eL06dN8/PHHdO7cGXt7+zyvJyIiIlKYqMi+S0xMDGvXruWNN97A2dmZgQMH0rp1a9q0aUPJkiXx9fXl999/5/nnn89yjVq1arFp0yZu3bplbhnZuXPnPfedmJiIwWCgWLH/+7Zs3brVojWlUqVKeHl5sXnzZgIDA3N0TD4+PmzZsoULFy6YW0a+//77exbZxYsXByApKQlHR0eL9+rVq0elSpWYNGkS586do0uXLjmKRURERKQoULvIP9y4cYNJkybRtm1bgoODCQgI4JlnnuGll17i8uXLAIwfP57t27czYcIEdu3axf79+9m0aROjRo0y903369ePxMREhgwZwueff050dDRvvPEGJUqUyHb/jRs3JjU1lRdffJH9+/ezZs0aIiIiKF26tHmOwWBgwoQJbN++nXHjxvH555+zd+9e5s6dy9GjRzNdNyQkBDc3NwYPHszOnTvZsmULYWFh97xIsXLlygCsXr2aI0eOZDgbHhoayvfff0/dunWpUqVK9skVERERKUJUZP/DvHnzSEpKYtq0aeaxsLAwSpYsyfTp0wFo0KAB7733HpcvX2bixIkMGzaMN998k0ceeYRy5coBd+42smLFCq5cucLIkSN5//33mT9//j2LbKPRyJw5c/jxxx8ZMmQIn376KQsXLjTfui9dhw4diIqK4vfff2fUqFGEhYVx6tSpTPuu4U4/+JtvvknJkiUZM2YMixYtIjw8nPLly2cbT4MGDRg4cCBr1qyhe/fu5hyka9WqFQBdu3bNdh0RERGRosbOZDLp9g6SJ++99x6vvfYaX331lcVTNHNKdxexpCvCraccWkf5s56Hhwsdxn2c32EUKVsiOulz+w/6/9g6try7iHqyJdfOnDnD6dOnWb58OV26dMlTgS0iIiJSmKnIllxbtGgRn376KQ0bNmT06NH5HY6ISIGRfDuVLRGd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tGnTcHV1pWnTphw4cIB169YxduzYTC96BGjSpAkzZ85k6dKl1KlThy+++IL9+/dbzHFwcKBChQps3bqVatWq4ejomGXRfrfx48fTr18/DAYDbdq0oVSpUpw/f569e/cyZswYKlWqlGEbFxcXfHx8WLx4Mc7OzhgMBlasWIGzs7PFrf/69evH5s2b6d27N0OHDsXb25tTp05x8+ZNBg0alGFdNzc3unfvTlRUFMWKFaNq1aps3LjRog89M1kdf/ovAV26dGHhwoWkpKQQEhKSo7yIiIiIFBUFvsguUaIEgYGBbNmyhcGDB2d4v3v37iQlJbFmzRreffddvLy8CA8Pp1+/flmu2aNHD86cOcOaNWtISkqiadOmRERE0L17d4t5M2bMYN68efTv35/k5OR7nv1N16BBA9577z0iIyOZOHEiaWlplC9fnmbNmpnbNzITERHBtGnTCAsLw9XVld69e5OYmMjatWvNc9zd3Vm3bh3z589n9uzZJCcn869//YshQ4Zkue7EiRNJSUlh8eLFGAwGOnbsSP/+/Zk7d262x5HZ8VeoUAG406qT/gtPZr80iIiIiBRldiaTSVeeSa5dvXqVJ598kqlTp9KtW7c8raELHy3pojPrKYfWUf6s5+HhQodxH+d3GCJFypaITrrwUR5+CQkJnDx5kjVr1lCqVCndG1tEREQkEyqyJVd++ukn/vOf//Doo48yb948nJyc8jskERERkQJHRbbkip+fH7/++mt+hyEiUiAl305lS0Sn/A5DpEhJTEq596R8oCJbRETERhyK26uv3Qq6LsB6ymHBUeDvky0iIiIi8rBRkS0iIiIiYmMqskVEREREbExFtoiIiIiIjanIFhERERGxMRXZIiIiIiI2piJbRERERMTGVGSLiIiIiNiYimwRERERERvTEx8l3xgMdvkdQoGjnFhPObSO8mc95dA6yp/1lEPr3J2/vObTzmQymWwRkIiIiIiI3KF2ERERERERG1ORLSIiIiJiYyqyRURERERsTEW2iIiIiIiNqcgWEREREbExFdkiIiIiIjamIltERERExMZUZIuIiIiI2JiKbBERERERG1ORLfKA3Lp1ixdeeIGgoCCCg4P5/PPPs5y7YcMGgoKCaNWqFTNnziQtLc383s8//0zv3r1p27Ytbdu25YsvvngQ4RcItsohQFJSEu3atSMkJOR+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R4iKirLpmvfbzZs3GTNmDH5+fhiNRvOtEzds2EBgYCD//ve/6du3r83299lnn9ns9ownT56kV69e+Pr6YjQaOXPmjE3WzY2YmBiMRiPHjx9/4Pu+W3JyMnPnzsXf3x9fX18GDx6cLzkRKcj0xEcRERtzcXEx32P6n2O2dOTIERYtWsTIkSNtuu79tG7dOj7//HPmzZuHl5cXFStWJDY2lpdeeonevXsTHBxMmTJlbLa/bdu2ceXKFUJCQqxe69VXX+X69essXboUJycn81NXi6qXX36Z7du38+KLL+Lm5saiRYsYMGAAW7ZswdHRMb/DEykQVGSLiNiYvb09vr6++R1GriQmJlKiRIn7uo9Tp05RqVIli6cdHjx4kNTUVLp27XrPp6flp1OnThEYGIi/v79V65hMJpKTkx/qQvTChQt88MEHzJ492/xI6Ro1atCyZUs++eSTIvEkUJGcULuIiMgDtnHjRtq1a0etWrV46qmnWLlypcX7hw4dYujQoQQEBODr60unTp345JNPzO9v2rTJ/Ejk9HaU9DaL8PDwDGduz5w5g9Fo5PPPPzePGY1G3n77bV555RUaN25Mhw4dAEhKSuLVV1+lefPm1KpVi44dO/LFF1/c85jutV1gYCAffPABx44dM8ccFRVF7969AejUqZNFC0lO49iwYQMdOnTAx8eHJk2aMGrUKK5fv054eDjbt2/nu+++s9gf3Cnse/XqRb169ahXrx6dOnVi69atmR5Xeu7+/PNP3nnnHYtcA6xdu5bWrVtTq1YtgoKCeOeddyy2j4qKws/Pj4MHD9K1a1d8fHyy3BfAL7/8wtChQ2nQoAF169YlNDTU/PS5zKxatYquXbtSv359mjRpwtChQ/njjz8s5tzreHfv3k1ISAi+vr40bNiQbt268d1332W5z3379gEQFBRkHvPy8qJevXp8+eWXWW4nUtToTLaIyH2QkpJi8dre3h47OzvefPNNFixYwHPPPUejRo346aefWLhwIU5OTvTp0weAc+fOUa9ePXr27ImDgwM//PADkyZNwmAw0L59e1q0aMGAAQNYtWoV0dHRADg7O+c6xrfeeosGDRrw6quvkv7w31GjRnHkyBFGjhxJxYoV2bp1K8OGDePDDz/kiSeeyHKte223aNEi3njjDf766y/mzJkDgLe3N+7u7sycOZPXXnuNxx57jIoVK+Y4jiVLlhAZGUmvXr2YMGECiYmJ7N27l5s3bzJ8+HDOnTvH9evXmT59unl/CQkJDB06lJYtWzJixAhMJhPHjx/n+vXrmR6Xp6cn0dHRPP/88/j5+dG3b19zrjds2MCsWbPo378/AQEBxMTEMHfuXJKTkxk8eLB5jcTERMLDw3nuued4/PHHs2w1OXnyJD179qRSpUrMmDEDV1dX/ve//3H+/Pks837hwgX69OlD+fLlSUhIYP369fTo0YMdO3bg4uJyz+P9888/GT16NH379mXChAkkJyfzv//9j2vXrmW5z1OnTuHt7U2pUqUsxqtUqZJtcS5S5JhERMRmIiMjTdWrV8/w9fXXX5uuX79u8vX1NUVFRVls88Ybb5iaNGliSklJybBeWlqa6fbt26apU6ea+vbtax5/9913TdWrV88wPywszNSlSxeLsb/++stUvXp10549e8xj1atXN3Xu3Nli3jfffGOqXr26KSYmxmK8V69eppEjR2Z5zDndLrPYvv32W1P16tVNv/76a67Wu3btmql27dqm2bNnZxnXyJEjTX369LEYO3LkiKl69eqm69evZ7ldZp566inT3Llzza9TU1NNAQEBpvDwcIt506dPN9WrV8+UmJhoMpn+7/Owc+fOe+5jzJgxpmbNmplu3bqV6fuZ5eqfUlJSTLdu3TL5+vqaPvroI5PJdO/j3bp1q6lRo0b3jO2fJk+ebOrYsWOG8ddff93UtGnTXK0lUpipXURExMZcXFz44IMPLL5q167NoUOHuHnzJsHBwaSkpJi/GjduzN9//82FCxcAuHbtGi+//DJPPfUUNWvWpGbNmkRHR3P69Gmbxvnkk09avP7mm2/w8PCgXr16FvH5+/vzv//9L8t18rqdNesdOnSIxMTEXF/UWLFiRUqWLMn48ePZtWsX8fHxuY4P7pxBvnTpEsHBwRbjbdu2JSEhgV9//dU8ZmdnlyHXmfn2229p27ZtrnrjDx8+TP/+/fHz8+Pf//43derU4ebNm/z+++/AvY+3evXqXL9+nbCwMPbt28fNmzdzvG8RyZ7aRUREbMze3h4fH58M41euXAGgXbt2mW53/vx5Hn30UcLDw/nxxx8ZPnw4VapUwdnZmXXr1rF7926bxlmuXLkM8cXGxlKzZs0Mc+3t7bNcJ6/bWbPe1atXAfDw8MjV2mXKlOHtt98mKiqKF154AZPJRNOmTZk6dSqPPfZYjteJjY0FoGzZshbj6a//2W5RpkwZHBwc7rnm1atXc3U8586dY8CAAdSuXZsZM2bg6elJ8eLFGTJkCMnJyeZ9Z3e8lStXZsmSJaxYsYLBgwdTrFgxgoKCmDx5Mu7u7pnut3Tp0pm218THx9v07jAiDzsV2SIiD0h6AbJ8+fIMxRlApUqVSEpKYu/evUybNo2ePXua33v//fdztA8HBwdu375tMZbV2Vo7O7sM8Xl5ebF48eIc7cva7axZz9XVFbhT7GZVDGbF19eXt956i8TERL755hvmzp3LuHHj2LBhQ47XSC+G4+LiLMbTX+el2HR1dTUX7znx1VdfkZiYyJIlSyhZsiRw51qAu/up73W8LVq0oEWLFly/fp29e/cye/ZsZs2axYIFCzLdb+XKlblw4QI3b9407xfu9GpXrlw5t4ctUmipyBYReUDq1q1LiRIluHTpEi1atMh0zvXr10lLS7M485mQkMCePXss5hUvXhy4cxeOf94Oztvbm7Nnz1qMp98N4l78/f15++23KVmyJFWqVMnxceV1O2vWS8/l5s2bCQsLy3RO8eLFSUpKynI/JUqUIDAwkBMnTrB8+fJcxejt7Y2npyfbtm2jefPm5vGtW7fi7OyM0WjM1Xpw57i3bt3KmDFjcnSLv8TERAwGA8WK/d9f5Vu3bs1w0W26ex2vi4sLHTp04MCBAxw6dCjL/QYEBACwc+dOOnXqBMDFixf5/vvvzReZioiKbBGRB6Z06dI8//zzvPLKK5w9e5aGDRuSlpbG6dOniYmJYfHixbi4uODj48PixYtxdnbGYDCwYsUKnJ2dSUhIMK+VfsZw9erVNG7cGGdnZypXrkyrVq2IjIxk8uTJhISEcOzYMT788MMcxde0aVMCAgIYMGAAgwYNomrVqiQkJPDLL7+QlJTEuHHjbLqdNXGULl2a4cOHs2DBAm7fvs2TTz5JcnIyX3zxBc8//zxeXl5UqlSJ3bt3s2vXLry8vPD09OTnn3/mww8/pGXLlpQvX56LFy8SHR1N48aNcxWjwWBg5MiRTJs2DVdXV5o2bcqBAwdYt24dY8eOzdN9sEeMGEFoaCi9e/dmwIABuLq6cuzYMVxdXQkNDc0wv3HjxqSmpvLiiy8SGhrKiRMnWLVqFaVLlzbP2bt3b7bHu379eg4fPkyzZs3w9PTk9OnTbNu2zVw8Z8bb25vQ0FBmz56NyWTC3d2dRYsWUb58eTp27Jjr4xYprFRki4g8QIMGDcLT05PVq1fz9ttv4+joyOOPP07btm3NcyIiIpg2bRphYWG4urrSu3dvEhMTWbt2rXlOgwYNGDhwIGvWrOH111+nYcOGvPvuu1SvXp3Zs2ezZMkSdu7cSePGjZkzZ45F60lW7OzsWLRoEcuWLWP16tWcP3+eMmXKUKNGjWwfd57X7axdb8iQIZQpU4Y1a9awfv16ypQpQ4MGDcy3luvVqxc///wzkyZN4tq1azz//PO0a9cOOzs7FixYQFxcHO7u7rRo0YKxY8fmOs7u3buTlJTEmjVrePfdd/Hy8iI8PJx+/frlei2484vT+++/T0REBJMnTwagatWqWcZmNBqZM2cOixYtYufOndSoUYOFCxcyZswY85yKFStme7xGo5E9e/YwZ84crl27hoeHB926dWP06NHZxjplyhScnJyYO3cuiYmJNGzYkIiIiIf6ITsitmZnMv3/m6OKiIiIiIhN6BZ+IiIiIiI2piJbRERERMTGVGSLiIiIiNiYimwRERERERtTkS0iIiIiYmMqskVEREREbExFtoiIiIiIjanIFhERERGxMRXZIiIiIiI29v8A3UG7/EyY1zAAAAAASUVORK5CYII=\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "print(model.predict(x))\n", - "print(model.predict(cf))\n" + "import shap\n", + "from alibi.explainers import KernelShap\n", + "\n", + "predict_fn = lambda x: model.predict(scaler.transform(x))\n", + "\n", + "explainer = KernelShap(predict_fn, task='classification')\n", + "\n", + "explainer.fit(X_train[0:100])\n", + "\n", + "result_x = explainer.explain(x)\n", + "result_cf = explainer.explain(cf)\n", + "\n", + "plot_importance(result_x.shap_values[0], features, 0)\n", + "# print(result_x.shap_values[0].sum())\n", + "plot_importance(result_cf.shap_values[0], features, 0)\n", + "# print(result_cf.shap_values[0].sum())" ] }, { @@ -1359,46 +1321,27 @@ }, { "cell_type": "code", - "execution_count": 28, - "id": "d32d1873-5321-4f50-9666-3d3875d178cd", + "execution_count": 32, + "id": "7aa6351b-01fd-4f6b-8f05-92f187b2737a", "metadata": {}, "outputs": [], "source": [ "from alibi.explainers import CEM\n", + "shape = (1,) + X_train.shape[1:]\n", "\n", - "mode = 'PN' # 'PN' (pertinent negative) or 'PP' (pertinent positive)\n", - "shape = (1,) + X_train.shape[1:] # instance shape\n", - "kappa = .2 # minimum difference needed between the prediction probability for the perturbed instance on the\n", - " # class predicted by the original instance and the max probability on the other classes\n", - " # in order for the first loss term to be minimized\n", - "beta = .1 # weight of the L1 loss term\n", - "c_init = 10. # initial weight c of the loss term encouraging to predict a different class (PN) or\n", - " # the same class (PP) for the perturbed instance compared to the original instance to be explained\n", - "c_steps = 10 # nb of updates for c\n", - "max_iterations = 1000 # nb of iterations per value of c\n", "feature_range = (scaler.transform(X_train).min(axis=0).reshape(shape)-.1, # feature range for the perturbed instance\n", " scaler.transform(X_train).max(axis=0).reshape(shape)+.1) # can be either a float or array of shape (1xfeatures)\n", - "clip = (-1000.,1000.) # grXdient clipping\n", - "lr_init = 1e-2 # initial learning rate" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "7aa6351b-01fd-4f6b-8f05-92f187b2737a", - "metadata": {}, - "outputs": [], - "source": [ - "cem = CEM(model, mode, shape, kappa=kappa, beta=beta, feature_range=feature_range,\n", - " max_iterations=max_iterations, c_init=c_init, c_steps=c_steps,\n", - " learning_rate_init=lr_init, clip=clip)\n", + "cem = CEM(model, mode='PN', shape=(1,) + X_train.shape[1:], kappa=0.2, beta=0.1, \n", + " feature_range=feature_range, max_iterations=1000, c_init=10, c_steps=10,\n", + " learning_rate_init=1e-2, clip=(-1000, 1000), ae_model=ae)\n", + "\n", "cem.fit(scaler.transform(X_train), no_info_type='median')\n", "result_cem = cem.explain(scaler.transform(x), verbose=False)" ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 33, "id": "96abe72c-2e01-402d-b2ed-9b61f208a95b", "metadata": {}, "outputs": [ @@ -1406,22 +1349,22 @@ "name": "stdout", "output_type": "stream", "text": [ - "fixed acidity instance: 7.8 counter factual: 7.8 difference: 0.0 \n", - "volatile acidity instance: 0.62 counter factual: 0.62 difference: 0.0 \n", - "citric acid instance: 0.05 counter factual: 0.05 difference: 0.0 \n", - "residual sugar instance: 2.3 counter factual: 2.3 difference: 0.0 \n", - "chlorides instance: 0.079 counter factual: 0.079 difference: 0.0 \n", - "free sulfur dioxide instance: 6.0 counter factual: 6.0 difference: 0.0 \n", - "total sulfur dioxide instance: 18.0 counter factual: 17.107 difference: 0.8926582\n", - "density instance: 0.997 counter factual: 0.997 difference: 0.0 \n", - "pH instance: 3.29 counter factual: 3.29 difference: 0.0 \n", - "sulphates instance: 0.63 counter factual: 0.781 difference: -0.1507046\n", - "alcohol instance: 9.3 counter factual: 9.3 difference: 0.0 \n" + "fixed acidity instance: 9.2 counter factual: 9.2 difference: 2e-07\n", + "volatile acidity instance: 0.36 counter factual: 0.36 difference: -0.0 \n", + "citric acid instance: 0.34 counter factual: 0.34 difference: -0.0 \n", + "residual sugar instance: 1.6 counter factual: 1.6 difference: 1e-07\n", + "chlorides instance: 0.062 counter factual: 0.062 difference: 0.0 \n", + "free sulfur dioxide instance: 5.0 counter factual: 5.0 difference: 0.0 \n", + "total sulfur dioxide instance: 12.0 counter factual: 12.0 difference: 1.9e-06\n", + "density instance: 0.997 counter factual: 0.997 difference: -0.0 \n", + "pH instance: 3.2 counter factual: 3.2 difference: -0.0 \n", + "sulphates instance: 0.67 counter factual: 0.57 difference: 0.100164\n", + "alcohol instance: 10.5 counter factual: 9.688 difference: 0.8119287\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAscAAAH0CAYAAADR8ICwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAB0yElEQVR4nO3deXhkZZk3/u85VXVqSSVV2VPZOul0uju90awNCiIg0IgsLiyjuI2AiIjOO++rviMqoo4D7wwujL9RGXXGcRmGUWRAZAdFlL036C2dXrJVqlKVqiS1nzrn/P6oVOimt3RylkrV93NdfWWrPM/d0NDffvo+9yNomqaBiIiIiIggWl0AEREREVGpYDgmIiIiIprBcExERERENIPhmIiIiIhoBsMxEREREdEMhmMiIiIiohkMx0REREREM+xWF6C3WCwJVeXoZjJPavsbqK52QenoMXyv7ftjqK52oaPebfheRERE5UgUBdTWVh3162UXjlVVYzgmU+UzWahO0ZRfd5lsHk6Xwl/jREREBmFbBRERERHRDIZjIiIiIqIZDMdERERERDMYjomIiIiIZjAcExERERHNYDgmIiIiIpph2ii3m2++GcPDwxBFER6PB1/+8pfR19d3yGsURcE3vvENPPfccxAEATfeeCOuuuoqs0okIiIiogpnWji+8847UV1dDQB48skn8Xd/93d44IEHDnnNQw89hMHBQTz++OOIx+O48sorcdZZZ6G9vd2sMomIiIiogpnWVlEMxgCQSCQgCMJhr3nkkUdw1VVXQRRF1NXV4V3vehceffRRs0okIiIiogpn6g15X/rSl/D8889D0zT867/+62FfDwaDaG1tnf04EAhgbGzMzBKJiIiIqIKZGo6/+c1vAgB++9vf4q677sK9996r+x719V7d1yQ6FpvPDQBobKw+zisXzhdOmrYXERFRJTI1HBddeeWV+MpXvoJYLIba2trZzwcCAYyOjmLdunUADj9JnotoNAFV1XStl+hYEpNp+HxujI9PG77XpIl7ERERlSNRFI55mGpKz3EymUQwGJz9+Omnn4bP54Pf7z/kdRs3bsT9998PVVUxMTGBJ598EhdffLEZJRIRERERmXNynE6n8dnPfhbpdBqiKMLn8+EHP/gBBEHADTfcgFtvvRVr167FFVdcgS1btuCiiy4CAHz6059GR0eHGSUS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QnDP5Qvv53IqMnLh11FWLv4ayiOTzSObk5HJzXxPXkFWntuvCRGAQ8vPBnubqhR+zPx7OTjk22f/XWkQoRVOv8VCu44gCBDFN/9QJooCBOGgz9uEws9fFOG2aVjnSsEmFv67EYRCuw8EofDfkjjTBjTz+sM+X2wXAmbeCpCamuA5wSECCyWKAmprj/5guyl/bAgGg2hubobNVvhrNZvNhqamJgSDwUPCcTAYRGtr6+zHgUAAY2NjJ7TXsX6yRqi/6NwT/p63GVAHWaf+nA2m7XXOMZ6uJSIiooXjJHYiIiIiohmmhONAIIBQKARFKbQBKIqCcDiMQCBw2OtGR0dnPw4Gg2hp4a1sRERERGQOU8JxfX09+vr68PDDDwMAHn74YfT19R3SUgEAGzduxP333w9VVTExMYEnn3wSF198sRklEhERERGZd0PewMAAvvjFL2Jqago1NTW48847sXTpUtxwww249dZbsXbtWiiKgjvuuAPPP/88AOCGG27ANddcY0Z5RERERETld300EREREdF88YE8IiIiIqIZDMdERERERDMYjomIiIiIZjAcExERERHNYDgmIiIiIprBcExERERENIPhmGgBNm3ahL/6q7/C5Zdfjssvvxx/+tOfDNlnYGAA5557LkZGRgAA//zP/4y/+Zu/MWQvIiKiSsY5x0TzFI/Hcemll+Kee+7BKaecAkVRkEgk4PP5DNnvt7/9LX75y1/i1ltvxde//nX8+te/htfrNWQvIiKiSmW3ugCixWrz5s3o6enBKaecAgCw2WyGBWMAuPLKK/HCCy/g05/+NH7xi18wGBMRERmAbRVEi0Qul0N/fz+qq6sRjUatLoeIiKgsMRwTzdP69esxMDCATZs2AQAURcHk5KRh+911111YvXo1fvrTn+KrX/0qxsbGDNuLiIioUrHnmGgBXnvtNdx5551IpVIQRRFf+MIX8La3vU33fZ588kl873vfw/333w+n04n7778fDzzwAH72s5/Bbmd3FBERkV4YjomIiIiIZrCtgoiIiIhoBsMxEREREdEMhmMiIiIiohkMx0REREREMxiOiYiIiIhmMBwTES0CH/7wh3H//ffr/loiIjoUwzERkYleeeUVXHvttTj11FNxxhln4Nprr8XWrVutLmvWF7/4RXz729+2ugwiIsvw9gAiIpMkEgncdNNNuP3223HJJZdAlmW88sorkCTJ6tKIiGgGT46JiEyyb98+AMB73vMe2Gw2uFwunH322Vi5ciXuuece/O///b9nXzs8PIwVK1Ygn88fts5vfvMbXHvttbjjjjtw6qmnYuPGjfjLX/5yyGtGRkZw7bXX4uSTT8Zf//VfY2JiYvZrt956K97+9rfj1FNPxYc+9CH09/cDAO677z489NBD+PGPf4yTTz4ZN910EwAgFArhM5/5DM4880ycf/75+NnPfja71tatW/G+970Pp5xyCt72trfhW9/6ln7/wIiILMBwTERkku7ubthsNnzhC1/AH/7wB0xOTs57ra1bt6KzsxMvvPACbr31Vtxyyy2Ix+OzX3/44YfxrW99C3/5y18gyzJ+8pOfzH7tHe94Bx577DH85S9/wapVq2ZD+TXXXIPLLrsMn/jEJ7Bp0yb84Ac/gKqq+NSnPoUVK1bgj3/8I/793/8d//7v/47nnnsOAPDNb34TH/nIR/Daa6/hiSeewCWXXDLvnxMRUSlgOCYiMonX68Uvf/lLCIKAL3/5yzjrrLNw0003IRKJnPBadXV1+OhHPwqHw4F3v/vd6O7uxrPPPjv79fe9733o7u6Gy+XCxo0bsWPHjtmvfeADH4DX64UkSfjMZz6DnTt3Ynp6+oj7bNu2DRMTE7jlllsgSRI6Ojpw9dVX45FHHgEA2O12DA4OYmJiAlVVVVi/fv0J/1yIiEoJe46JiEzU09ODf/iHfwAADAwM4P/8n/+Dv//7v0d3d/cJrdPc3AxBEGY/bm1tRTgcnv24sbFx9n23241UKgUAUBQF3/72t/Hoo49iYmIColg4I4nFYqiurj5sn5GREYTDYZx22mmzn1MUZfbjb37zm/je976HSy65BO3t7bjllltw3nnnndDPhYiolDAcExFZpKenB+973/tw3333YdWqVchkMrNfO95pcigUgqZpswE5GAzi/PPPP+6eDz30EJ566in89Kc/RXt7O6anp3H66adD0zQAOCRwA0AgEEB7ezsef/zxI67X1dWFu+++G6qq4vHHH8ett96KF198ER6P57i1EBGVIrZVEBGZZGBgAD/5yU8wNjYGoBBoH374YZx00kno6+vDyy+/jNHRUUxPT+OHP/zhMdeamJjAz372M8iyjN///vcYGBjAueeee9wakskkJElCbW0t0uk07r777kO+Xl9fj+Hh4dmP161bh6qqKvzoRz9CJpOBoijYvXv37Pi5Bx98cPYEuqamBgBmT6OJiBYj/h+MiMgkXq8XW7ZswVVXXYX169fj6quvxvLly/HFL34Rb3/72/Hud78bl19+Od73vvcdtzVh3bp1OHDgAM4880x85zvfwfe+9z3U1tYet4Yrr7wSra2tOOecc3DppZce1iP8gQ98AHv27MFpp52Gm2++GTabDT/4wQ+wc+dOXHDBBTjzzDNx2223IZFIAACee+45XHrppTj55JPxzW9+E9/+9rfhcrnm/c+IiMhqglb8uzQiIloUfvOb3+D+++/Hr371K6tLISIqOzw5JiIiIiKawXBMRERERDSDbRVERERERDN4ckxERERENIPhmIiIiIhoBsMxEREREdEMhmMiIiIiohkMx0REREREMxiOiYiIiIhm/P+DP6yA9pxuvwAAAABJRU5ErkJggg==\n", "text/plain": [ "
    " ] @@ -1437,37 +1380,99 @@ "plot_cf_and_feature_dist(x, cem_cf, feature='sulphates')" ] }, - { - "cell_type": "markdown", - "id": "07f58f8b-944a-4a5d-8d74-fc2fce4b0f6d", - "metadata": {}, - "source": [ - "## Counterfactual With Prototypes" - ] - }, { "cell_type": "code", - "execution_count": 31, - "id": "626490a0-c1af-43bb-82e8-d3e89a38daa6", + "execution_count": 34, + "id": "298651d6-de8b-405e-a174-a207df37ffe9", "metadata": {}, "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "b8ca4dce45c843d188247428afae0d8f", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/1 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAFECAYAAADlf7JXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABo6UlEQVR4nO3deVxUdfv/8ReoIAoKKEtmluvYrSiuuGAaipK7iOZaLrmn5k6uqeWSkQrulqVZipZZdue+VJaSlqZ3VppL5U64ICggML8//DnfJhaZkU3m/Xw8eNR85nM+57oO28XxOufYGY1GIyIiIiIiYjH7vA5ARERERORRpWJaRERERMRKKqZFRERERKykYlpERERExEoqpkVERERErKRiWkRERETESiqmRURERESsVDivAxDbdf16PKmp+e8256VKORMTE5fXYeQJW83dVvMG283dVvMG5W6Ludtq3pA9udvb2+HmVjzD91VMS55JTTXmy2IayLdx5QZbzd1W8wbbzd1W8wblbotsNW/I+dzV5iEiIiIiYiUV0yIiIiIiVlIxLSIiIiJiJRXTIiIiIiJWUjEtIiIiImIlFdMiIiIiIlZSMS0iIiIiYiUV0yIiIiIiVlIxLSIiIiJiJT0BUQoslxJOFHW07kvcw8Mlm6N5dNhq7raaN9hu7raad9LdlLwOQaRAUTEtBVZRx8K0G/NZXochIpKvbAnrkNchiBQoavMQEREREbGSimkRERERESupmM7nNm3ahMFgID4+PlvXDQ0NJTg4OFvW6t27NyNGjMiWtUREREQeJSqmRURERESspGJaRERERMRKKqbz2JEjRxg8eDD+/v74+vrSoUMHPv/880y3SUhI4M033+TZZ5+levXqBAQEEBYWZno/JSWFiIgImjVrRvXq1WnTpg1btmxJd61vv/2Wdu3a4evrS/fu3Tl16pTZ+3fu3OH111+ncePG+Pj40LlzZ/bv3//wiYuIiIgUALo1Xh67ePEitWvXpnv37jg4OPDjjz8yceJE7O3tadu2bZr5RqORoUOHcuTIEYYOHUr16tW5cuUKhw8fNs0JDw/nnXfeYdiwYfj4+LBjxw7Gjh2LnZ2d2ZqXLl3izTffZMiQITg6OvLmm28yatQotmzZgp2dHQCTJ09mz549jB49mnLlyrFx40YGDRrE6tWrqVu3bs4fIBEREZF8TMV0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76233iIlJYXSpUsza9YswsLCMlz3/h8AMTExpnac9PZTsmRJqlevzmuvvZZmjYe5Y4mIiIjIoyjHHyfesGFDtm7dSuXKlTO8TV7Dhg157733KFasGBUrVrRqP4899hgDBw7kk08+4fTp08C9dguA06dPU6dOHQB++ukn4uLiLF7f29vbtNb9s7KXLl3izJkzpt5hSxQuXJinn36a3bt30717d9P4zp07HxiHp6cn27Zto2nTpqbxrVu34uzsbHrASlRUFGvXrmXBggU4OzvTv39/WrZsSatWrdJdt0qVKjg6OrJ7927T5yA1NZXdu3ebzWvYsCHffvstZcqUKXD3FxcRERGxVI4X03369OHzzz/nxRdfpFevXnh5efH3339z6NAh6tSpQ9u2bWncuDH+/v7069ePAQMGUKlSJeLi4vj1119JTExkzJgx6a49depUSpYsSc2aNXFxcSEqKoo//viDcePGAVCjRg28vLx44403GDlyJDdu3OCdd97J9N7YGfH29qZ69eosXLgQJycnUlNTWb58udlZXEsNHjyYl19+mWnTphEYGMihQ4f45ptvMt3G3t6e4cOHM3XqVFxdXWncuDGHDh1i3bp1jB49GkdHR+Lj45k4cSKtW7c29VY///zzvPbaa9SrVw93d/c067q5udG1a1ciIiIoXLgwlSpVYuPGjdy+fdtsXseOHVm/fj29e/emX79+PPHEE9y4cYNjx47h4eFBnz59rD4eIiIiIo+aHC+m3d3diYyMZMGCBcyePZvY2Fg8PT2pXbu26SyqnZ0dixYtYtmyZaxevZpLly5RsmRJqlatmumjvH19fdmwYQORkZEkJiZSrlw5Zs6cSYsWLYB7bQeLFi1i+vTpjBgxgvLly/Paa6+Zim1Lvf3220yePJlx48bh5eXFuHHjWL16tVVrwb2LDadMmcKKFSvYvHkz9evX54033qB///6Zbte1a1cSExNZs2YNH3zwAV5eXoSGhpoK2blz55KYmMjUqVNN20yYMIFvv/2WadOmERERke6648ePJzk5mcWLF2Nvb0/79u3p27cvc+bMMc1xdHRkzZo1LFy4kIiICGJiYnB3d6dGjRoEBARYfSxEREREHkV2RqMx/10BJjZBFyDmP7aae05egNhuzGfZvq7Iw9gS1sEmv89BP+NsUW5cgGjxExBFREREROQeFdMiIiIi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ODZs2EC7du3w8fGhUaNGjBgxglu3bhEaGsr27dv5/vvvzfYH9wr4Hj16ULt2bWrXrk2HDh3YunVrunndP3Z//vkn77//vtmxBli7di0tW7akevXqBAYG8v7775ttHxERgZ+fH4cPH6Zz5874+PhkuC+AX3/9lcGDB1O3bl1q1apFSEgI3377bYbzV61aRefOnalTpw6NGjVi8ODB/PHHH2ZzHpTv7t27CQ4OxtfXl3r16tGlSxe+//77DPe5f/9+AAIDA01jXl5e1K5dm6+//jrD7UQKKp2ZFhHJAcnJyWavCxUqhJ2dHe+88w7z58/npZdeon79+vz8888sXLgQJycnevXqBcDFixepXbs23bt3x8HBgR9//JGJEydib29P27ZtadasGf369WPVqlVERkYC4OzsbHGM7777LnXr1uXNN9/k/sNwR4wYwbFjxxg+fDjlypVj69atDBkyhE8++YSnn346w7UetN2iRYtYsGABf/31F7NnzwbA29sbd3d3ZsyYwVtvvcUTTzxBuXLlshzHkiVLCA8Pp0ePHowbN46EhAT27dvH7du3GTp0KBcvXuTWrVtMmzbNtL+4uDgGDx5M8+bNGTZsGEajkZMnT3Lr1q108/L09CQyMpKXX34ZPz8/evfubTrWGzZsYObMmfTt2xd/f3+ioqKYM2cOSUlJDBw40LRGQkICoaGhvPTSSzz11FMZtoicPn2a7t27U758eaZPn46rqyv/+9//uHTpUobH/fLly/Tq1YsyZcoQFxfH+vXr6datGzt27MDFxeWB+f7555+MHDmS3r17M27cOJKSkvjf//7HzZs3M9znmTNn8Pb2pnjx4mbjFStWzLQIFymwrH4QuYiIpBEeHm6sUqVKmo9vv/3WeOvWLaOvr68xIiLCbJsFCxYYGzVqZExOTk6zXmpqqvHu3bvGKVOmGHv37m0a/+CDD4xVqlRJM3/ChAnGTp06mY399ddfxipVqhj37NljGqtSpYqxY8eOZvO+++47Y5UqVYxRUVFm4z169DAOHz48w5yzul16sR08eNBYpUoV42+//WbRejdv3jTWqFHDOGvWrAzjGj58uLFXr15mY8eOHTNWqVLFeOvWrQy3S8+zzz5rnDNnjul1SkqK0d/f3xgaGmo2b9q0acbatWsbExISjEbj/3097Ny584H7GDVqlLFJkybGO3fupPt+esfqn5KTk4137twx+vr6Gj/99FOj0fjgfLdu3WqsX7/+A2P7p0mTJhnbt2+fZvztt982Nm7c2KK1RAoCtXmIiGQzFxcXPv74Y7OPGjVqcOTIEW7fvk1QUBDJycmmjwYNGvD3339z+fJlAG7evMnrr7/Os88+S7Vq1ahWrRqRkZGcO3cuW+N85plnzF5/9913eHh4ULt2bbP4GjZsyP/+978M17F2u4dZ78iRIyQkJFh8cWG5cuUoVqwYY8eOZdeuXcTGxlocH9w7I3z16lWCgoLMxlu3bk1cXBy//fabaczOzi7NsU7PwYMHad26tUW960ePHqVv3774+fnxn//8h5o1a3L79m3Onj0LPDjfKlWqcOvWLSZMmMD+/fu5fft2lvctIveozUNEJJsVKlQIHx+fNOPXr18HoE2bNulud+nSJR5//HFCQ0P56aefGDp0KBUrVsTZ2Zl169axe/fubI2zdOnSaeKLjo6mWrVqaeYWKlQow3Ws3e5h1rtx4wYAHh4eFq1dsmRJ3nvvPSIiInjllVcwGo00btyYKVOm8MQTT2R5nejoaABKlSplNn7/9T/bJEqWLImDg8MD17xx44ZF+Vy8eJF+/fpRo0YNpk+fjqenJ0WKFGHQoEEkJSWZ9p1ZvhUqVGDJkiWsWLGCgQMHUrhwYQIDA5k0aRLu7u7p7rdEiRLptsXExsZm691YRB4VKqZFRHLJ/UJj+fLlaYowgPLly5OYmMi+ffuYOnUq3bt3N7330UcfZWkfDg4O3L1712wso7OvdnZ2aeLz8vJi8eLFWdrXw273MOu5uroC94rajIq+jPj6+vLuu++SkJDAd999x5w5cxgzZgwbNmzI8hr3i96YmBiz8fuvrSkqXV1dTUV6VnzzzTckJCSwZMkSihUrBtzr1f93v/OD8m3WrBnNmjXj1q1b7Nu3j1mzZjFz5kzmz5+f7n4rVKjA5cuXuX37tmm/cK+XukKFCpamLfLIUzEtIpJLatWqRdGiRbl69SrNmjVLd86tW7dITU01O5MZFxfHnj17zOYVKVIEuHfXi3/eZs3b25sLFy6Yjd+/+8KDNGzYkPfee49ixYpRsWLFLOdl7XYPs979Y7l582YmTJiQ7pwiRYqQmJiY4X6KFi1KQEAAp06dYvny5RbF6O3tjaenJ9u2baNp06am8a1bt+Ls7IzBYLBoPbiX99atWxk1alSWbp2XkJCAvb09hQv/36/yrVu3prn49b4H5evi4kK7du04dOgQR44cyXC//v7+AOzcuZMOHToAcOXKFX744QfTxZ4itkTFtIhILilRogQvv/wyb7zxBhcuXKBevXqkpqZy7tw5oqKiWLx4MS4uLvj4+LB48WKcnZ2xt7dnxYoVODs7ExcXZ1rr/hnA1atX06BBA5ydnalQoQItWrQgPDycSZMmERwczIkTJ/jkk0+yFF/jxo3x9/enX79+DBgwgEqVKhEXF8evv/5KYmIiY8aMydbtHiaOEiVKMHToUObPn8/du3d55plnSEpK4quvvuLll1/Gy8uL8uXLs3v3bnbt2oWXlxeenp788ssvfPLJJzRv3pwyZcpw5coVIiMjadCggUUx2tvbM3z4cKZOnYqrqyuNGzfm0KFDrFu3jtGjR1t1H+lhw4YREhJCz5496devH66urpw4cQJXV1dCQkLSzG/QoAEpKSm8+uqrhISEcOrUKVatWkWJEiVMc/bt25dpvuvXr+fo0aM0adIET09Pzp07x7Zt20xFcnq8vb0JCQlh1qxZGI1G3N3dWbRoEWXKlKF9+/YW5y3yqFMxLSKSiwYMGICnpyerV6/mvffew9HRkaeeeorWrVub5oSFhTF16lQmTJiAq6srPXv2JCEhgbVr15rm1K1bl/79+7NmzRrefvtt6tWrxwcffECVKlWYNWsWS5YsYefOnTRo0IDZs2ebtYxkxM7OjkWLFrFs2TJWr17NpUuXKFmyJFWrVs30Md/Wbvew6w0aNIiSJUuyZs0a1q9fT8mSJalbt67plm09evTgl19+YeLEidy8eZOXX36ZNm3aYGdnx/z584mJicHd3Z1mzZoxevRoi+Ps2rUriYmJrFmzhg8++AAvLy9CQ0OtfnR8hQoV+OijjwgLC2PSpEkAVKpUKcPYDAYDs2fPZtGiRezcuZOqVauycOFCRo0aZZpTrly5TPM1GAzs2bOH2bNnc/PmTTw8POjSpQsjR47MNNbJkyfj5OTEnDlzSEhIoF69eoSFhT3SD6MRsZad0fj/by4qIiIiIiIW0a3xRERERESspGJaRERERMRKKqZFRERERKykYlpERERExEoqpkVERERErKRiWkRERETESiqmRURERESspGJaRERERMRKKqZFRERERKz0/wDBXlt7E3lHUQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "encoder = load_model('wine_encoder.h5')\n", - "decoder = load_model('wine_decoder.h5')" + "import shap\n", + "from alibi.explainers import KernelShap\n", + "\n", + "predict_fn = lambda x: model.predict(scaler.transform(x))\n", + "\n", + "explainer = KernelShap(predict_fn, task='classification')\n", + "\n", + "explainer.fit(X_train[0:100])\n", + "\n", + "result_x = explainer.explain(x)\n", + "result_cem_cf = explainer.explain(cem_cf)\n", + "\n", + "plot_importance(result_x.shap_values[0], features, 0)\n", + "print(result_x.shap_values[0].sum())\n", + "plot_importance(result_cem_cf.shap_values[0], features, 0)\n", + "print(result_cem_cf.shap_values[0].sum())" + ] + }, + { + "cell_type": "markdown", + "id": "07f58f8b-944a-4a5d-8d74-fc2fce4b0f6d", + "metadata": {}, + "source": [ + "## Counterfactual With Prototypes" ] }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 35, "id": "a556375d-bd5d-475a-9e1c-e71f66f23ecd", "metadata": {}, "outputs": [ @@ -1482,13 +1487,11 @@ "source": [ "from alibi.explainers import CounterfactualProto\n", "\n", - "ae = AE(encoder=encoder, decoder=decoder)\n", - "\n", "explainer = CounterfactualProto(\n", " model,\n", " shape=shape,\n", " ae_model=ae,\n", - " enc_model=encoder,\n", + " enc_model=ae.encoder,\n", " max_iterations=500,\n", " feature_range=feature_range,\n", " c_init=1., \n", @@ -1500,7 +1503,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 36, "id": "a6e5ff2b-0fab-4fcd-9b52-f454bd68acf6", "metadata": {}, "outputs": [], @@ -1520,22 +1523,22 @@ "name": "stdout", "output_type": "stream", "text": [ - "fixed acidity instance: 7.8 counter factual: 7.8 difference: 0.0 \n", - "volatile acidity instance: 0.62 counter factual: 0.594 difference: 0.0259061\n", - "citric acid instance: 0.05 counter factual: 0.05 difference: 0.0 \n", - "residual sugar instance: 2.3 counter factual: 2.3 difference: 0.0 \n", - "chlorides instance: 0.079 counter factual: 0.079 difference: 0.0 \n", - "free sulfur dioxide instance: 6.0 counter factual: 6.0 difference: 0.0 \n", - "total sulfur dioxide instance: 18.0 counter factual: 18.0 difference: 0.0 \n", - "density instance: 0.997 counter factual: 0.997 difference: 0.0 \n", - "pH instance: 3.29 counter factual: 3.29 difference: 0.0 \n", - "sulphates instance: 0.63 counter factual: 0.704 difference: -0.0743216\n", - "alcohol instance: 9.3 counter factual: 9.3 difference: 0.0 \n" + "fixed acidity instance: 9.2 counter factual: 9.2 difference: 2e-07\n", + "volatile acidity instance: 0.36 counter factual: 0.36 difference: -0.0 \n", + "citric acid instance: 0.34 counter factual: 0.34 difference: -0.0 \n", + "residual sugar instance: 1.6 counter factual: 1.6 difference: 1e-07\n", + "chlorides instance: 0.062 counter factual: 0.062 difference: 0.0 \n", + "free sulfur dioxide instance: 5.0 counter factual: 5.0 difference: 0.0 \n", + "total sulfur dioxide instance: 12.0 counter factual: 12.0 difference: 1.9e-06\n", + "density instance: 0.997 counter factual: 0.997 difference: -0.0 \n", + "pH instance: 3.2 counter factual: 3.2 difference: -0.0 \n", + "sulphates instance: 0.67 counter factual: 0.607 difference: 0.0627938\n", + "alcohol instance: 10.5 counter factual: 9.998 difference: 0.5016718\n" ] }, { "data": { - "image/png": "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xx134N5778XMmTMRjUbx2GOPYcuWLQCAO+64A9dddx0AnPQ5IiIiIqJ4m1QXoBARERERnS5uDiQiIiIiGgcGZyIiIiKicWBwJiIiIiIaBwZnIiIiIqJxYHAmIiIiIhoHBmciIiIionFgcCaipLNz50589atfxTXXXINrrrkGmzdvBjB8Xvz555+P9vZ2AMBvfvMbfP/731ezVSIimkB4jjMRJZWBgQFcddVVePLJJzFv3jxEo1F4PB7YbDYAwOrVq/HXv/4V9957L3784x/j5ZdfhsViUblrIiKaCLRqN0BEdCp27dqF8vJyzJs3DwCg0WhGQzMArFy5Eh9//DHuuecePP/88wzNREQUMxzVIKIJJRQKoba2FlarFS6XS+12iIhoAmFwJqKkMmfOHNTX12Pnzp0AgGg0CrfbPfr8448/junTp+OZZ57Bww8/jM7OTrVaJSKiCYYzzkSUdHbs2IFVq1bB5/NBFEXcf//9OOecc7BhwwY88cQTePHFF2EwGPDiiy/ilVdewXPPPQetlpNpRER0ZhiciYiIiIjGgaMaRERERETjwOBMRERERDQODM5EREREROPA4ExERERENA4MzkRERERE48DgTESUAD755BOcd955p/35Dz30EH7729/G5L1OR0dHB+bOnYtoNHrc55988kn84Ac/GNdriYgSFYMzEVGMfOMb38Cvf/3rYx7fsGEDzj33XEQikZjU+ec//4mvfvWrRz322GOP4Z577onJ+wPDQbeyshK7d+8e1+vz8vKwc+dOaDSaU37t1772Nbz44otn1C8RkRIYnImIYuTaa6/Fq6++in89Hv/VV1/F8uXLk+YSFlmWsXr1aqSlpWH16tVqt0NElDAYnImIYuSSSy7BwMAAtm3bNvqY2+3Gxo0bsXLlSoRCIfzHf/wHlixZgiVLluA//uM/EAqFjvte//M//4NLLrkEc+fOxZVXXom3334bAFBfX4+HH34Yu3btwty5c7FgwQIAwAMPPID//u//Pu57dXV14Tvf+Q7OPvtsXHTRRXjuuedO+uvYtm0benp68KMf/Qjr168/qsdAIICf/exnuPDCCzF//nx89atfRSAQQFtbGyorK0dX1VtbW3HTTTdh7ty5uPXWW9Hf3z/6Hp9/7X//939j27ZteOyxxzB37lw89thjePTRR/Gzn/3sqJ7uuusuPPvssyftm4go3hiciYhixGg04oorrjhqlfb1119HWVkZqqqq8NRTT2H37t1Ys2YNXn31Vezduxe/+93vjvtehYWFeP7557F9+3Z8+9vfxg9/+EN0d3ejvLwcjz76KObMmYOdO3ceFdKPR5IkfOtb30JlZSU++OAD/PnPf8af//xnbNq06YSf88orr+DCCy/EFVdcAQDYuHHj6HOrVq3C/v378fe//x1bt27FD3/4Q4jisV9KfvCDH2D69On45JNPcPfdd+OVV145bq3vf//7WLBgAR566CHs3LkTDz30EK699lqsXbsWkiQBAPr6+vDRRx/h6quvPumvlYgo3hiciYhiaOXKlXjzzTcRDAYBAKtXr8a1114LAHjttddwzz33wG63IyMjA/fccw9effXV477PFVdcgZycHIiiiCuvvBLFxcXYs2fPKfezd+9e9PX14dvf/jb0ej0KCwvxla98BevXrz/u6/1+P9544w0sX74cOp0Ol19++ehfBCRJwssvv4wf/ehHyMnJgUajwbx586DX6496j46ODuzduxff/e53odfrsXDhQlx00UXj7nnWrFmwWq346KOPAADr16/HokWLkJmZecq/fiKiWEqOgTsioiSxYMECpKenY8OGDZg5cyb27t2L3/zmNwCA7u5u5OXljb42Ly8P3d3dx32f1atX45lnnkF7ezsAwOfzHTXuMF7t7e3o7u4eHekAgGg0etTPP+/tt9+GVqsdPZVj+fLluPXWW9HX1wdZlhEMBlFYWHjSmt3d3UhNTYXZbB59LC8vD06nc9x9j8yLn3vuuXj11Vdx8803j/tziYjihcGZiCjGVqxYgdWrV6OxsRFLliwZXSnNzs5GR0cHpkyZAgBwOp3Izs4+5vPb29vx4IMP4tlnn8XcuXOh0WiwYsWK0ecFQRh3Lw6HAwUFBXjrrbfG9frVq1fD5/PhwgsvBDC8UTAcDuO1117D1772NRgMBrS2tqKqquqE7/H/t3P/IMnEcRzHP9YitFVCUKMEkgUJ/iHclJbqONChpQihxV1cGoOWmkKSxsZA8MYmR4cCabMLJyE4AoeIDEWeZztSnz8XFDm8X3DL93c/+N72uR/fu0AgoJeXF729vbnh+enp6VN9G4ah7e1tNZtNtVotpdNpz3sB4LswqgEAX8w0TdXrdV1fX8s0Tbe+tbWli4sLdToddTodlUol7ezsjO3vdrvy+XyanZ2VJFUqFT0+Prrrc3Nzchznrx8WfrS2tqaZmRldXl7q/f1dg8FAtm3/cezDcRzV63WVy2VVq1VVq1VZlqXDw0NZlqWpqSllMhmdnJzIcRwNBgM1Go2xPhYXFxUOh3V+fq5er6e7u7uhOelR8/PzarfbQ7WFhQWtrq6qUChoc3NTfr//v88KAN+N4AwAX2xpaUnr6+vqdrtKpVJuPZ/PKxwOyzAMGYahlZUV5fP5sf3BYFC5XE67u7va2NiQbduKRCLueiKRUDAYVDKZVDwe/2cv09PTKpfLajabSqVSSiQSOjo60uvr69i9lmUpFAopmUwqEAi4197enh4eHmTbtorFopaXl5XNZhWLxXR6eup+xPfR2dmZ7u/vFY/HVSqVhl4gRu3v7+vm5kbRaFTHx8du3TRN2bY9dNoOAD/J92v0h6MAAEyA29tbFQoF1Wq1T415AMB34cQZADBx+v2+rq6ulM1mCc0AJgbBGQAwUVqtlqLRqJ6fn3VwcPDT7QCAi1ENAAAAwANOnAEAAAAPCM4AAACABwRnAAAAwAOCMwAAAOABwRkAAADwgOAMAAAAePAbGShb2LUoLgEAAAAASUVORK5CYII=\n", + "image/png": "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d955qKqqwubNm9VujYiIaNJicCaKQ6Wlpbj77rvxne98B0uXLoXVasXbb7+NmTNnqt0aERHRpKVVuwEiOr6cnBykpqbi5z//OZ5//nmkpKSo3RIREdGkxhVnojgVDofh8/lgtVrhcrnUboeIiGjSY3AmilPvv/8+IpEIHnjgATz66KNob2/H4OCg2m0RERFNWgzORHFo48aN2LNnD37/+9/j+eefhyRJuPrqq7F37161WyMiIpq0BFmWZbWbICIiIiKKd1xxJiIiIiIaBwZnIiIiIqJxYHAmIiIiIhoHBmciIiIionFgcCYiIiIiGgcGZyKiOPDxxx/jggsuOOP3P/LII/j1r38dlc86Ex0dHZg7dy4ikchxn3/66afx3e9+d1yvJSKKVwzORERR8rWvfQ2//OUvj3l848aNOP/88xEOh6NS51//+he+/OUvH/XYE088gfvuuy8qnw+MBN3y8nLs2bNnXK/PycnBrl27oNFoTvu1X/nKV/Diiy+eVb9EREpgcCYiipLrrrsOr776Kv79ePxXX30Vy5cvh1arVamz0yPLMlavXo3U1FSsXr1a7XaIiOIGgzMRUZRcdtllGBgYwPbt28ceGxwcxLvvvouVK1ciGAziv/7rv7B48WIsXrwY//Vf/4VgMHjcz/r973+Pyy67DHPnzsVVV12Ft956CwBQX1+PRx99FLt378bcuXNRVVUFAHjooYfw85///Lif1dXVhW9+85s499xzcckll+Avf/nLSX8f27dvR09PD77//e9j/fr1R/Xo9/vx4x//GBdffDHmz5+PL3/5y/D7/Whra0N5efnYqnpraytuvvlmzJ07F7fddhv6+/vHPuOzr/35z3+O7du344knnsDcuXPxxBNP4PHHH8ePf/zjo3q655578Kc//emkfRMRxRqDMxFRlBiNRlx55ZVHrdK+/vrrKCkpQUVFBZ555hns2bMHa9aswauvvop9+/bhN7/5zXE/Kz8/H88//zx27NiBb3zjG/je976H7u5ulJaW4vHHH8ecOXOwa9euo0L68UiShK9//esoLy/HBx98gD//+c/485//jE2bNp3wPa+88gouvvhiXHnllQCAd999d+y5VatW4cCBA/jHP/6Bbdu24Xvf+x5E8dhvJd/97ncxffp0fPzxx7j33nvxyiuvHLfWd77zHVRVVeGRRx7Brl278Mgjj+C6667D2rVrIUkSAKCvrw9bt27FNddcc9LfKxFRrDE4ExFF0cqVK/Hmm28iEAgAAFavXo3rrrsOAPDaa6/hvvvug81mQ3p6Ou677z68+uqrx/2cK6+8EllZWRBFEVdddRUKCwuxd+/e0+5n37596Ovrwze+8Q3o9Xrk5+fjS1/6EtavX3/c1/t8PrzxxhtYvnw5dDodli5dOvYXAUmS8PLLL+P73/8+srKyoNFoMG/ePOj1+qM+o6OjA/v27cO3vvUt6PV6LFiwAJdccsm4e541axasViu2bt0KAFi/fj0WLlyIjIyM0/79ExFFU2IM3BERJYiqqiqkpaVh48aNmDlzJvbt24df/epXAIDu7m7k5OSMvTYnJwfd3d3H/ZzVq1fjueeeQ3t7OwDA6/UeNe4wXu3t7eju7h4b6QCASCRy1K8/66233oJWqx07lWP58uW47bbb0NfXB1mWEQgEkJ+ff9Ka3d3dSE5OhtlsHnssJycHTqdz3H2Pzouff/75ePXVV3HLLbeM+71ERLHC4ExEFGUrVqzA6tWr0djYiMWLF4+tlGZmZqKjowNTpkwBADidTmRmZh7z/vb2djz88MP405/+hLlz50Kj0WDFihVjzwuCMO5eHA4H8vLysGHDhnG9fvXq1fB6vbj44osBjGwUDIVCeO211/CVr3wFBoMBra2tqKioOOFn2O12DA0Nwev1joXnjo6O0+r72muvxTXXXIPDhw+jvr4el1122bjfS0QUKxzVICKKspUrV2Lr1q345z//iZUrV449fvXVV+OZZ55BX18f+vr68Otf/xrLly8/5v0+nw+CICA9PR0A8PLLL6O2tnbseZvNhq6urhNuLPysWbNmISkpCb///e/h9/sRiURQU1Nz3LGPrq4ubN26Fb/97W+xevVqrF69GmvWrMGdd96JNWvWQBRFfP7z/387d8iqOgCGcfy5nOIHUBA0DkGcQUE3xCYYRbgLFkWM68NiFCyaRDD7DYwmP4CC2HRgMolVEBQ5t8lV4d5duIdj+P9g5d0G79qzl3f7qV6vp8PhoNvtptVq9dJHLBaTaZoaDoe6XC5aLpcPe9LPwuGw9vv9Qy0ajSqdTsvzPJXLZYVCob8+KwB8NYIzAPxn8XhcmUxG5/NZpVLpXnddV6ZpqlKpqFKpKJVKyXXdl/sNw1Cr1VKtVlOhUJDv+8pms/fztm3LMAwVi0VZlvXHXj4+PjQej7XZbFQqlWTbtjqdjk6n08u10+lUyWRSxWJRkUjkftTrdW23W/m+r3a7rUQiIcdxlM/n1e/37x/x/W4wGGi9XsuyLI1Go4cXiGeNRkOz2Uy5XE7dbvder1ar8n3/YdoOAN/px+fzD0cBAHgDi8VCnudpPp//05oHAHwVJs4AgLdzvV41mUzkOA6hGcDbIDgDAN7KbrdTLpfT8XhUs9n87nYA4I5VDQAAACAAJs4AAABAAARnAAAAIACCMwAAABAAwRkAAAAIgOAMAAAABEBwBgAAAAL4BSE/m9sIuRi+AAAAAElFTkSuQmCC\n", "text/plain": [ "
    " ] @@ -1553,27 +1556,90 @@ }, { "cell_type": "code", - "execution_count": 54, - "id": "6a991f69-09fe-40ca-84a4-5b788267bf8b", + "execution_count": 38, + "id": "1d1e5206-cca6-4897-a486-8a4bf070e93f", "metadata": {}, "outputs": [ { "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "efb45278337641baa0aaf8ea013d30a2", + "version_major": 2, + "version_minor": 0 + }, "text/plain": [ - "array([[0.72754335, 0.27245668]], dtype=float32)" + " 0%| | 0/1 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAFECAYAAADlf7JXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABo6UlEQVR4nO3deVxUdfv/8ReoIAoKKEtmluvYrSiuuGAaipK7iOZaLrmn5k6uqeWSkQrulqVZipZZdue+VJaSlqZ3VppL5U64ICggML8//DnfJhaZkU3m/Xw8eNR85nM+57oO28XxOufYGY1GIyIiIiIiYjH7vA5ARERERORRpWJaRERERMRKKqZFRERERKykYlpERERExEoqpkVERERErKRiWkRERETESiqmRURERESsVDivAxDbdf16PKmp+e8256VKORMTE5fXYeQJW83dVvMG283dVvMG5W6Ludtq3pA9udvb2+HmVjzD91VMS55JTTXmy2IayLdx5QZbzd1W8wbbzd1W8wblbotsNW/I+dzV5iEiIiIiYiUV0yIiIiIiVlIxLSIiIiJiJRXTIiIiIiJWUjEtIiIiImIlFdMiIiIiIlZSMS0iIiIiYiUV0yIiIiIiVlIxLSIiIiJiJT0BUQoslxJOFHW07kvcw8Mlm6N5dNhq7raaN9hu7raad9LdlLwOQaRAUTEtBVZRx8K0G/NZXochIpKvbAnrkNchiBQoavMQEREREbGSimkRERERESupmM7nNm3ahMFgID4+PlvXDQ0NJTg4OFvW6t27NyNGjMiWtUREREQeJSqmRURERESspGJaRERERMRKKqbz2JEjRxg8eDD+/v74+vrSoUMHPv/880y3SUhI4M033+TZZ5+levXqBAQEEBYWZno/JSWFiIgImjVrRvXq1WnTpg1btmxJd61vv/2Wdu3a4evrS/fu3Tl16pTZ+3fu3OH111+ncePG+Pj40LlzZ/bv3//wiYuIiIgUALo1Xh67ePEitWvXpnv37jg4OPDjjz8yceJE7O3tadu2bZr5RqORoUOHcuTIEYYOHUr16tW5cuUKhw8fNs0JDw/nnXfeYdiwYfj4+LBjxw7Gjh2LnZ2d2ZqXLl3izTffZMiQITg6OvLmm28yatQotmzZgp2dHQCTJ09mz549jB49mnLlyrFx40YGDRrE6tWrqVu3bs4fIBEREZF8TMV0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76233iIlJYXSpUsza9YswsLCMlz3/h8AMTExpnac9PZTsmRJqlevzmuvvZZmjYe5Y4mIiIjIoyjHHyfesGFDtm7dSuXKlTO8TV7Dhg157733KFasGBUrVrRqP4899hgDBw7kk08+4fTp08C9dguA06dPU6dOHQB++ukn4uLiLF7f29vbtNb9s7KXLl3izJkzpt5hSxQuXJinn36a3bt30717d9P4zp07HxiHp6cn27Zto2nTpqbxrVu34uzsbHrASlRUFGvXrmXBggU4OzvTv39/WrZsSatWrdJdt0qVKjg6OrJ7927T5yA1NZXdu3ebzWvYsCHffvstZcqUKXD3FxcRERGxVI4X03369OHzzz/nxRdfpFevXnh5efH3339z6NAh6tSpQ9u2bWncuDH+/v7069ePAQMGUKlSJeLi4vj1119JTExkzJgx6a49depUSpYsSc2aNXFxcSEqKoo//viDcePGAVCjRg28vLx44403GDlyJDdu3OCdd97J9N7YGfH29qZ69eosXLgQJycnUlNTWb58udlZXEsNHjyYl19+mWnTphEYGMihQ4f45ptvMt3G3t6e4cOHM3XqVFxdXWncuDGHDh1i3bp1jB49GkdHR+Lj45k4cSKtW7c29VY///zzvPbaa9SrVw93d/c067q5udG1a1ciIiIoXLgwlSpVYuPGjdy+fdtsXseOHVm/fj29e/emX79+PPHEE9y4cYNjx47h4eFBnz59rD4eIiIiIo+aHC+m3d3diYyMZMGCBcyePZvY2Fg8PT2pXbu26SyqnZ0dixYtYtmyZaxevZpLly5RsmRJqlatmumjvH19fdmwYQORkZEkJiZSrlw5Zs6cSYsWLYB7bQeLFi1i+vTpjBgxgvLly/Paa6+Zim1Lvf3220yePJlx48bh5eXFuHHjWL16tVVrwb2LDadMmcKKFSvYvHkz9evX54033qB///6Zbte1a1cSExNZs2YNH3zwAV5eXoSGhpoK2blz55KYmMjUqVNN20yYMIFvv/2WadOmERERke6648ePJzk5mcWLF2Nvb0/79u3p27cvc+bMMc1xdHRkzZo1LFy4kIiICGJiYnB3d6dGjRoEBARYfSxEREREHkV2RqMx/10BJjZBFyDmP7aae05egNhuzGfZvq7Iw9gS1sEmv89BP+NsUW5cgGjxExBFREREROQeFdMiIiIi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ODZs2EC7du3w8fGhUaNGjBgxglu3bhEaGsr27dv5/vvvzfYH9wr4Hj16ULt2bWrXrk2HDh3YunVrunndP3Z//vkn77//vtmxBli7di0tW7akevXqBAYG8v7775ttHxERgZ+fH4cPH6Zz5874+PhkuC+AX3/9lcGDB1O3bl1q1apFSEgI3377bYbzV61aRefOnalTpw6NGjVi8ODB/PHHH2ZzHpTv7t27CQ4OxtfXl3r16tGlSxe+//77DPe5f/9+AAIDA01jXl5e1K5dm6+//jrD7UQKKp2ZFhHJAcnJyWavCxUqhJ2dHe+88w7z58/npZdeon79+vz8888sXLgQJycnevXqBcDFixepXbs23bt3x8HBgR9//JGJEydib29P27ZtadasGf369WPVqlVERkYC4OzsbHGM7777LnXr1uXNN9/k/sNwR4wYwbFjxxg+fDjlypVj69atDBkyhE8++YSnn346w7UetN2iRYtYsGABf/31F7NnzwbA29sbd3d3ZsyYwVtvvcUTTzxBuXLlshzHkiVLCA8Pp0ePHowbN46EhAT27dvH7du3GTp0KBcvXuTWrVtMmzbNtL+4uDgGDx5M8+bNGTZsGEajkZMnT3Lr1q108/L09CQyMpKXX34ZPz8/evfubTrWGzZsYObMmfTt2xd/f3+ioqKYM2cOSUlJDBw40LRGQkICoaGhvPTSSzz11FMZtoicPn2a7t27U758eaZPn46rqyv/+9//uHTpUobH/fLly/Tq1YsyZcoQFxfH+vXr6datGzt27MDFxeWB+f7555+MHDmS3r17M27cOJKSkvjf//7HzZs3M9znmTNn8Pb2pnjx4mbjFStWzLQIFymwrH4QuYiIpBEeHm6sUqVKmo9vv/3WeOvWLaOvr68xIiLCbJsFCxYYGzVqZExOTk6zXmpqqvHu3bvGKVOmGHv37m0a/+CDD4xVqlRJM3/ChAnGTp06mY399ddfxipVqhj37NljGqtSpYqxY8eOZvO+++47Y5UqVYxRUVFm4z169DAOHz48w5yzul16sR08eNBYpUoV42+//WbRejdv3jTWqFHDOGvWrAzjGj58uLFXr15mY8eOHTNWqVLFeOvWrQy3S8+zzz5rnDNnjul1SkqK0d/f3xgaGmo2b9q0acbatWsbExISjEbj/3097Ny584H7GDVqlLFJkybGO3fupPt+esfqn5KTk4137twx+vr6Gj/99FOj0fjgfLdu3WqsX7/+A2P7p0mTJhnbt2+fZvztt982Nm7c2KK1RAoCtXmIiGQzFxcXPv74Y7OPGjVqcOTIEW7fvk1QUBDJycmmjwYNGvD3339z+fJlAG7evMnrr7/Os88+S7Vq1ahWrRqRkZGcO3cuW+N85plnzF5/9913eHh4ULt2bbP4GjZsyP/+978M17F2u4dZ78iRIyQkJFh8cWG5cuUoVqwYY8eOZdeuXcTGxlocH9w7I3z16lWCgoLMxlu3bk1cXBy//fabaczOzi7NsU7PwYMHad26tUW960ePHqVv3774+fnxn//8h5o1a3L79m3Onj0LPDjfKlWqcOvWLSZMmMD+/fu5fft2lvctIveozUNEJJsVKlQIHx+fNOPXr18HoE2bNulud+nSJR5//HFCQ0P56aefGDp0KBUrVsTZ2Zl169axe/fubI2zdOnSaeKLjo6mWrVqaeYWKlQow3Ws3e5h1rtx4wYAHh4eFq1dsmRJ3nvvPSIiInjllVcwGo00btyYKVOm8MQTT2R5nejoaABKlSplNn7/9T/bJEqWLImDg8MD17xx44ZF+Vy8eJF+/fpRo0YNpk+fjqenJ0WKFGHQoEEkJSWZ9p1ZvhUqVGDJkiWsWLGCgQMHUrhwYQIDA5k0aRLu7u7p7rdEiRLptsXExsZm691YRB4VKqZFRHLJ/UJj+fLlaYowgPLly5OYmMi+ffuYOnUq3bt3N7330UcfZWkfDg4O3L1712wso7OvdnZ2aeLz8vJi8eLFWdrXw273MOu5uroC94rajIq+jPj6+vLuu++SkJDAd999x5w5cxgzZgwbNmzI8hr3i96YmBiz8fuvrSkqXV1dTUV6VnzzzTckJCSwZMkSihUrBtzr1f93v/OD8m3WrBnNmjXj1q1b7Nu3j1mzZjFz5kzmz5+f7n4rVKjA5cuXuX37tmm/cK+XukKFCpamLfLIUzEtIpJLatWqRdGiRbl69SrNmjVLd86tW7dITU01O5MZFxfHnj17zOYVKVIEuHfXi3/eZs3b25sLFy6Yjd+/+8KDNGzYkPfee49ixYpRsWLFLOdl7XYPs979Y7l582YmTJiQ7pwiRYqQmJiY4X6KFi1KQEAAp06dYvny5RbF6O3tjaenJ9u2baNp06am8a1bt+Ls7IzBYLBoPbiX99atWxk1alSWbp2XkJCAvb09hQv/36/yrVu3prn49b4H5evi4kK7du04dOgQR44cyXC//v7+AOzcuZMOHToAcOXKFX744QfTxZ4itkTFtIhILilRogQvv/wyb7zxBhcuXKBevXqkpqZy7tw5oqKiWLx4MS4uLvj4+LB48WKcnZ2xt7dnxYoVODs7ExcXZ1rr/hnA1atX06BBA5ydnalQoQItWrQgPDycSZMmERwczIkTJ/jkk0+yFF/jxo3x9/enX79+DBgwgEqVKhEXF8evv/5KYmIiY8aMydbtHiaOEiVKMHToUObPn8/du3d55plnSEpK4quvvuLll1/Gy8uL8uXLs3v3bnbt2oWXlxeenp788ssvfPLJJzRv3pwyZcpw5coVIiMjadCggUUx2tvbM3z4cKZOnYqrqyuNGzfm0KFDrFu3jtGjR1t1H+lhw4YREhJCz5496devH66urpw4cQJXV1dCQkLSzG/QoAEpKSm8+uqrhISEcOrUKVatWkWJEiVMc/bt25dpvuvXr+fo0aM0adIET09Pzp07x7Zt20xFcnq8vb0JCQlh1qxZGI1G3N3dWbRoEWXKlKF9+/YW5y3yqFMxLSKSiwYMGICnpyerV6/mvffew9HRkaeeeorWrVub5oSFhTF16lQmTJiAq6srPXv2JCEhgbVr15rm1K1bl/79+7NmzRrefvtt6tWrxwcffECVKlWYNWsWS5YsYefOnTRo0IDZs2ebtYxkxM7OjkWLFrFs2TJWr17NpUuXKFmyJFWrVs30Md/Wbvew6w0aNIiSJUuyZs0a1q9fT8mSJalbt67plm09evTgl19+YeLEidy8eZOXX36ZNm3aYGdnx/z584mJicHd3Z1mzZoxevRoi+Ps2rUriYmJrFmzhg8++AAvLy9CQ0OtfnR8hQoV+OijjwgLC2PSpEkAVKpUKcPYDAYDs2fPZtGiRezcuZOqVauycOFCRo0aZZpTrly5TPM1GAzs2bOH2bNnc/PmTTw8POjSpQsjR47MNNbJkyfj5OTEnDlzSEhIoF69eoSFhT3SD6MRsZad0fj/by4qIiIiIiIW0a3xRERERESspGJaRERERMRKKqZFRERERKykYlpERERExEoqpkVERERErKRiWkRERETESiqmRURERESspGJaRERERMRKKqZFRERERKz0/wDBXlt7E3lHUQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" } ], - "source": [] + "source": [ + "import shap\n", + "from alibi.explainers import KernelShap\n", + "\n", + "predict_fn = lambda x: model.predict(scaler.transform(x))\n", + "\n", + "explainer = KernelShap(predict_fn, task='classification')\n", + "\n", + "explainer.fit(X_train[0:100])\n", + "\n", + "result_x = explainer.explain(x)\n", + "result_proto_cf = explainer.explain(cem_cf)\n", + "\n", + "plot_importance(result_x.shap_values[0], features, 0)\n", + "print(result_x.shap_values[0].sum())\n", + "plot_importance(result_proto_cf.shap_values[0], features, 0)\n", + "print(result_proto_cf.shap_values[0].sum())" + ] }, { "cell_type": "code", "execution_count": null, - "id": "1d1e5206-cca6-4897-a486-8a4bf070e93f", + "id": "10db15d5-d48c-457f-a561-b4d38d0983ee", "metadata": {}, "outputs": [], "source": [] From 7f92db138767b32acde51f17eb6ec779f896f8ae Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Tue, 14 Dec 2021 21:41:14 +0000 Subject: [PATCH 40/60] Fix cf results section --- doc/source/examples/overview.nblink | 3 + doc/source/index.md | 1 + doc/source/overview/high_level.md | 424 ++++++++-------- doc/source/overview/images/ale-plots.png | Bin 0 -> 41364 bytes examples/overview.ipynb | 586 +++++++++++------------ 5 files changed, 521 insertions(+), 493 deletions(-) create mode 100644 doc/source/examples/overview.nblink create mode 100644 doc/source/overview/images/ale-plots.png diff --git a/doc/source/examples/overview.nblink b/doc/source/examples/overview.nblink new file mode 100644 index 000000000..a7a48d14d --- /dev/null +++ b/doc/source/examples/overview.nblink @@ -0,0 +1,3 @@ +{ + "path": "../../../examples/overview.ipynb" +} diff --git a/doc/source/index.md b/doc/source/index.md index b5181cca4..96a4bebb0 100644 --- a/doc/source/index.md +++ b/doc/source/index.md @@ -70,6 +70,7 @@ examples/integrated_gradients_imagenet.ipynb examples/integrated_gradients_mnist.ipynb examples/integrated_gradients_imdb.ipynb examples/integrated_gradients_transformers.ipynb +examples/overview.ipynb ``` ```{toctree} diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 32d07b86b..99c5d63c0 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -1,11 +1,11 @@ # Introduction ```{contents} -:depth: 3 +:depth: 4 :local: true ``` -# What is Explainability? +## What is Explainability? **Explainability provides us with algorithms that give insights into trained models predictions.** It allows us to answer questions such as: @@ -34,31 +34,31 @@ obtain a new class prediction. In general, given a model the explainers we can u include [neural networks](https://en.wikipedia.org/wiki/Neural_network) and [random forests](https://en.wikipedia.org/wiki/Random_forest). -## Applications +### Applications As machine learning methods have become more complex and more mainstream, with many industries now [incorporating AI](https://www.mckinsey.com/business-functions/mckinsey-analytics/our-insights/global-survey-the-state-of-ai-in-2020) in some form or another, the need to understand the decisions made by models is only increasing. Explainability has several applications of importance. -- **Trust:**. At a core level, explainability builds [trust](https://onlinelibrary.wiley.com/doi/abs/10.1002/bdm.542) in +- **Trust:** At a core level, explainability builds [trust](https://onlinelibrary.wiley.com/doi/abs/10.1002/bdm.542) in the machine learning systems we use. It allows us to justify their use in many contexts where an understanding of the basis of the decision is paramount. This is a common issue within machine learning in medicine, where acting on a model prediction may require expensive or risky procedures to be carried out. -- **Testing:**. Explainability might be used to [audit financial models](https://arxiv.org/abs/1909.06342) that aid +- **Testing:** Explainability might be used to [audit financial models](https://arxiv.org/abs/1909.06342) that aid decisions about whether to grant customer loans. By computing the attribution of each feature towards the prediction the model makes, organisations can check that they are consistent with human decision-making. Similarly, explainability applied to a model trained on image data can explicitly show the model's focus when making decisions, aiding [debugging](http://proceedings.mlr.press/v70/sundararajan17a.html). Practitioners must be wary of [misuse](#biases), however. -- **Functionality:**. Insights can be used to augment model functionality. For instance, providing information on top of +- **Functionality:** Insights can be used to augment model functionality. For instance, providing information on top of model predictions such as how to change model inputs to obtain desired outputs. -- **Research:**. Explainability allows researchers to understand how and why opaque models make decisions. This can help +- **Research:** Explainability allows researchers to understand how and why opaque models make decisions. This can help them understand more broadly the effects of the particular model or training schema they're using. -## Black-box vs White-box methods +### Black-box vs White-box methods -Some explainers apply only to specific types of models such as the [Tree SHAP](#path-dependent-tree-shap) methods which +Some explainers apply only to specific types of models such as the [Tree SHAP](path-dependent-tree-shap) methods which can only be used with [tree-based models](https://en.wikipedia.org/wiki/Decision_tree_learning). This is the case when an explainer uses some aspect of that model's internal structure. If the model is a neural network then some methods require taking gradients of the model predictions with respect to the inputs. Methods that require access to the model @@ -75,7 +75,7 @@ model is a black-box if the mechanism by which it makes predictions is too compl Here we use black-box to mean that the explainer method doesn't need access to the model internals to be applied. ::: -## Global and Local Insights +### Global and Local Insights Insights can be categorised into two categories — Local and global. Intuitively, a local insight says something about a single prediction that a model makes. For example, given an image classified as a cat by a model, a local @@ -90,7 +90,7 @@ of the relationship between inputs and model predictions. :alt: Local and Global insights ``` -## Biases +### Biases The explanations Alibi's methods provide depend on the model, the data, and — for local methods — the instance of interest. Thus Alibi allows us to obtain insight into the model and, therefore, also the data, albeit @@ -113,30 +113,30 @@ conform to their expectations may prompt them to erroneously decide that the mod classifiers trained on image datasets to use the same structures humans naturally do when identifying the same classes. However, there is no reason to believe such models should behave the same way we do. -Interpretability of insights can also mislead. Some insights such as [**anchors**](#anchors) give conditions for a +Interpretability of insights can also mislead. Some insights such as [**anchors**](anchors) give conditions for a classifiers prediction. Ideally, the set of these conditions would be small. However, when obtaining anchors close to decision boundaries, we may get a complex set of conditions to differentiate that instance from near members of a different class. Because this is harder to understand, one might write the model off as incorrect, while in reality, the model performs as desired. -# Types of Insights +## Types of Insights Alibi provides several local and global insights with which to explore and understand models. The following gives the practitioner an understanding of which explainers are suitable in which situations. -| Explainer | Scope | Model types | Task types | Data types | Use | -|---------------------------------------------------------------------------------------------|--------|---------------------|----------------------------|------------------------------------------|-------------------------------------------------------------------------------------------------| -| [Accumulated Local Effects](#accumulated-local-effects) | Global | Black-box | Classification, Regression | Tabular | How does model prediction vary with respect to features of interest | -| [Anchors](#anchors) | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | -| [Pertinent Positives](#contrastive-explanation-method-pertinent-positives) | Local | Black-box/White-box | Classification | Tabular, Image | "" | -| [Integrated Gradients](#integrated-gradients) | Local | White-box | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | -| [Kernel SHAP](#kernel-shap) | Local | Black-box | Classification, Regression | Tabular, Categorical | "" | -| [Tree SHAP (path-dependent)](#path-dependent-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | -| [Tree SHAP (interventional)](#interventional-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | -| [Counterfactuals Instances](#counterfactual-instances) | Local | Black-box/White-box | Classification | Tabular, Image | What minimal change to features is required to reclassify the current prediction? | -| [Contrastive Explanation Method](#contrastive-explanation-method-pertinent-negatives) | Local | Black-box/White-box | Classification | Tabular, Image | "" | -| [Counterfactuals Guided by Prototypes](#counterfactuals-guided-by-prototypes) | Local | Black-box/White-box | Classification | Tabular, Categorical, Image | "" | -| [counterfactuals-with-reinforcement-learning](#counterfactuals-with-reinforcement-learning) | Local | Black-box | Classification | Tabular, Categorical, Image | "" | +| Explainer | Scope | Model types | Task types | Data types | Use | +|--------------------------------------------------------------------------------------------|--------|---------------------|----------------------------|------------------------------------------|-------------------------------------------------------------------------------------------------| +| [Accumulated Local Effects](accumulated-local-effects) | Global | Black-box | Classification, Regression | Tabular | How does model prediction vary with respect to features of interest | +| [Anchors](anchors) | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | +| [Pertinent Positives](contrastive-explanation-method-pertinent-positives) | Local | Black-box/White-box | Classification | Tabular, Image | "" | +| [Integrated Gradients](integrated-gradients) | Local | White-box | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | +| [Kernel SHAP](kernel-shap) | Local | Black-box | Classification, Regression | Tabular, Categorical | "" | +| [Tree SHAP (path-dependent)](path-dependent-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | +| [Tree SHAP (interventional)](interventional-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | +| [Counterfactuals Instances](counterfactual-instances) | Local | Black-box/White-box | Classification | Tabular, Image | What minimal change to features is required to reclassify the current prediction? | +| [Contrastive Explanation Method](contrastive-explanation-method-pertinent-negatives) | Local | Black-box/White-box | Classification | Tabular, Image | "" | +| [Counterfactuals Guided by Prototypes](counterfactuals-guided-by-prototypes) | Local | Black-box/White-box | Classification | Tabular, Categorical, Image | "" | +| [counterfactuals-with-reinforcement-learning](counterfactuals-with-reinforcement-learning) | Local | Black-box | Classification | Tabular, Categorical, Image | "" | ### 1. Global Feature Attribution @@ -150,7 +150,9 @@ humidity, and wind speed. A global feature attribution plot for the temperature against the number of bikes rented. One would anticipate an increase in rentals until a specific temperature and then a decrease after it gets too hot. -### Accumulated Local Effects +(accumulated-local-effects)= + +#### Accumulated Local Effects | Explainer | Scope | Model types | Task types | Data types | Use | |---------------------------|--------|---------------|----------------------------|-------------------|---------------------------------------------------------------------| @@ -166,14 +168,18 @@ conditional probability distribution instead of the marginal distribution and re due to correlated input variables by accumulating local differences in the model output instead of averaging them. See the [following](../methods/ALE.ipynb) for a more expansive explanation. -Considering the case of the wine dataset, we can compute the ALE with Alibi by simply using: +Considering the case of the wine dataset, we can compute the ALE with Alibi (see [notebook](../examples/overview.ipynb)) +by simply using: ```ipython3 from alibi.explainers import ALE, plot_ale +# Model is a binary classifier so we only take the first model output corresponding to "good" class probability. predict_fn = lambda x: model(scaler.transform(x)).numpy()[:, 0] ale = ALE(predict_fn, feature_names=features) exp = ale.explain(X_train) + +# Plot the explanation for the "Alcohol feature" plot_ale(exp, features=['alcohol'], line_kw={'label': 'Probability of "good" class'}) ``` @@ -199,15 +205,17 @@ numerical features, we can always take the ALE of the numerical ones. | Doesn't struggle with dependencies in the underlying features, unlike PDP plots | ALE of categorical variables is not well-defined. | | ALE plots are fast | | -## 2. Local Necessary Features +### 2. Local Necessary Features Local necessary features tell us what features need to stay the same for a specific instance in order for the model to give the same classification. In the case of a trained image classification model, local necessary features for a given instance would be a minimal subset of the image that the model uses to make its decision. Alibi provides two explainers -for computing local necessary features: [anchors](#anchors) -and [pertinent positives](#contrastive-explanation-method-pertinent-positives). +for computing local necessary features: [anchors](anchors) +and [pertinent positives](contrastive-explanation-method-pertinent-positives). -### Anchors +(anchors)= + +#### Anchors | Explainer | Scope | Model types | Task types | Data types | Use | |------------|---------|---------------|------------------|---------------------------------------|--------------------------------------------------------------------------------------------------| @@ -237,15 +245,18 @@ the model). We're interested in finding the largest possible Anchor that contain :alt: Illustration of an anchor as a subset of two dimensional feature space. ``` -To construct an anchor using Alibi for tabular data such as the wine quality dataset, we use: +To construct an anchor using Alibi for tabular data such as the wine quality dataset ( +see [notebook](../examples/overview.ipynb)), we use: ```ipython3 from alibi.explainers import AnchorTabular predict_fn = lambda x: model.predict(scaler.transform(x)) explainer = AnchorTabular(predict_fn, features) -explainer.fit(X_train, disc_perc=(25, 50, 75)) -result = explainer.explain(x, threshold=0.95) +explainer.fit(X_train) + +# x is the instance to explain +result = explainer.explain(x) print('Anchor =', result.data['anchor']) print('Coverage = ', result.data['coverage']) @@ -253,7 +264,8 @@ print('Coverage = ', result.data['coverage']) where `x` is an instance of the dataset classified as good. -```ipython3 +``` +Mean test accuracy 95.00% Anchor = ['sulphates <= 0.55', 'volatile acidity > 0.52', 'alcohol <= 11.00', 'pH > 3.40'] Coverage = 0.0316930775646372 ``` @@ -263,8 +275,9 @@ Note Alibi also gives an idea of the size (coverage) of the Anchor. To find anchors Alibi sequentially builds them by generating a set of candidates from an initial anchor candidate, picking the best candidate of that set and then using that to generate the next set of candidates and repeating. Candidates are favoured on the basis of the number of instances they contain that are in the same class as $x$ under -$f$. This is repeated until we obtain a candidate that satisfies the condition and is largest (in the case where there -are multiple). +$f$. The proportion of instances the anchor contains that are classified the same as $x$ is known as the precision of +the anchor. We repeat the above process until we obtain a candidate anchor with satisfactory precision. If there are +multiple such anchors we choose the largest. To compute which of two anchors is better, Alibi obtains an estimate by sampling from $\mathcal{D}(z|A)$ where $\mathcal{D}$ is the data distribution. The sampling process is dependent on the type of data. For tabular data, this @@ -307,14 +320,16 @@ required predictive property. This makes them less interpretable. | | High dimensional feature spaces such as images need to be reduced to improve the runtime complexity | | | Practitioners may need domain-specific knowledge to correctly sample from the conditional probability | -### Contrastive Explanation Method (Pertinent Positives) +(contrastive-explanation-method-pertinent-positives)= + +#### Contrastive Explanation Method (Pertinent Positives) | Explainer | Scope | Model types | Task types | Data types | Use | |---------------------|-------|---------------------|----------------|----------------|-------------------------------------------------------------------------------------------------| | Pertinent Positives | Local | Black-box/White-box | Classification | Tabular, Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | Introduced by [Amit Dhurandhar, et al](https://arxiv.org/abs/1802.07623), a Pertinent Positive is the subset of features -of an instance that still obtains the same classification as that instance. These differ from [anchors](#anchors) +of an instance that still obtains the same classification as that instance. These differ from [anchors](anchors) primarily in the fact that they aren't constructed to maximize coverage. The method to create them is also substantially different. The rough idea is to define an **absence of a feature** and then perturb the instance to take away as much information as possible while still retaining the original classification. Note that these are a subset of @@ -338,11 +353,11 @@ Thus, we ensure that $\delta$ remains close to the original dataset distribution Note that $\delta$ is constrained to only "take away" features from the instance $x$. There is a slightly subtle point here: removing features from an instance requires correctly defining non-informative feature values. For the [MNIST digits](http://yann.lecun.com/exdb/mnist/), it's reasonable to assume that the black background behind each -digit represents an absence of information. Similarly, in the case of color images, you might take the median pixel +digit represents an absence of information. Similarly, in the case of colour images, you might take the median pixel value to convey no information, and moving away from this value adds information. For numeric tabular data we can use the feature mean. In general, having to choose a non-informative value for each feature is non-trivial and domain knowledge is required. This is the reverse to -the [contrastive explanation method (pertinent-negatives)](#contrastive-explanation-method-pertinent-negatives) method +the [contrastive explanation method (pertinent-negatives)](contrastive-explanation-method-pertinent-negatives) method introduced in the section on [counterfactual instances](#4-counterfactual-instances). Note that we need to compute the loss gradient through the model. If we have access to the internals, we can do this @@ -360,7 +375,7 @@ output. | | Slow for black-box models due to having to numerically evaluate gradients | | | Only works for differentiable black-box models | -## 3. Local Feature Attribution +### 3. Local Feature Attribution Local feature attribution (LFA) asks how each feature in a given instance contributes to its prediction. In the case of an image, this would highlight those pixels that are most responsible for the model prediction. Note that this differs @@ -387,9 +402,9 @@ regression or a probability of a class in a classification model. If $x=(x_1,... attribution of the prediction at input $x$ is a vector $a=(a_1,... ,a_n) \in \mathbb{R}^n$ where $a_i$ is the contribution of $x_i$ to the prediction $f(x)$. -Alibi exposes four explainers to compute LFAs. [Integrated gradients](#integrated-gradients) -, [kernel SHAP](#kernel-shap) -, [path-dependent tree SHAP](#path-dependent-tree-shap) and [interventional tree SHAP](#interventional-tree-shap). The +Alibi exposes four explainers to compute LFAs. [Integrated gradients](integrated-gradients) +, [kernel SHAP](kernel-shap) +, [path-dependent tree SHAP](path-dependent-tree-shap) and [interventional tree SHAP](interventional-tree-shap). The last three of these are implemented in The [SHAP library](https://github.com/slundberg/shap) and Alibi acts as a wrapper. Interventional and path-dependent tree SHAP are white-box methods that apply to tree based models. @@ -407,10 +422,12 @@ they should satisfy the following properties. Not all LFA methods satisfy these methods ([LIME](https://papers.nips.cc/paper/2017/file/8a20a8621978632d76c43dfd28b67767-Paper.pdf) for example) but the -ones provided by Alibi ([integrated gradients](#integrated-gradients), [Kernel SHAP](#kernel-shap) -, [path-dependent](#path-dependent-tree-shap) and [interventional](#interventional-tree-shap) tree SHAP) do. +ones provided by Alibi ([integrated gradients](integrated-gradients), [Kernel SHAP](kernel-shap) +, [path-dependent](path-dependent-tree-shap) and [interventional](interventional-tree-shap) tree SHAP) do. + +(integrated-gradients)= -### Integrated Gradients +#### Integrated Gradients | Explainer | Scope | Model types | Task types | Data types | Use | |----------------------|-------|-----------------------|----------------------------|--------------------------------------|------------------------------------------------------------| @@ -436,20 +453,18 @@ choose it well. Choosing a black image baseline for a classifier trained to dist night may not be the best choice. ::: -Note that IG is a white box method that requires access to the model internals in order to compute the partial +Note that IG is a white-box method that requires access to the model internals in order to compute the partial derivatives. Alibi provides support for TensorFlow models. For example given a Tensorflow classifier trained on the wine -quality dataset we can compute the IG attributions by doing: +quality dataset we can compute the IG attributions (see [notebook](../examples/overview.ipynb)) by doing: ```ipython3 from alibi.explainers import IntegratedGradients -ig = IntegratedGradients(model, # TensorFlow model - layer=None, - method="gausslegendre", - n_steps=50, - internal_batch_size=100) - -result = ig.explain(scaler.transform(x), target=0) +ig = IntegratedGradients(model) # TensorFlow model +result = ig.explain( + scaler.transform(x), # scaled data instance + target=0, # model class probability prediction to obtain attribution for +) plot_importance(result.data['attributions'][0], features, 0) ``` @@ -477,7 +492,9 @@ for a wine classed as "Good" and is consistent with the ALE plot. (The median fo | Doesn't require access to the training data | Requires [choosing the baseline](choice-of-baseline) which can have a significant effect on the outcome (See Note 5) | | [Satisfies several desirable properties](lfa-properties) | | -### Kernel SHAP +(kernel-shap)= + +#### Kernel SHAP | Explainer | Scope | Model types | Task types | Data types | Use | |--------------|-------|-------------|----------------------------|-----------------------|------------------------------------------------------------| @@ -506,11 +523,12 @@ dependencies between the features. Alibi provides a wrapper to the [Shap library](https://github.com/slundberg/shap). We can use this explainer to compute the Shapley values for a [sklearn](https://scikit-learn.org/stable/) [random forest](https://en.wikipedia.org/wiki/Random_forest) model using -the following. +the following (see [notebook](../examples/overview.ipynb)): ```ipython3 from alibi.explainers import KernelShap +# black-box model predict_fn = lambda x: rfc.predict_proba(scaler.transform(x)) explainer = KernelShap(predict_fn, task='classification') explainer.fit(X_train[0:100]) @@ -537,7 +555,9 @@ using different methods and models in each case. | Shapley values can be easily interpreted and visualized | The interventional conditional probability introduces unrealistic data points | | Very general as is a black-box method | Requires access to the training dataset | -### Path-dependent tree SHAP +(path-dependent-tree-shap)= + +#### Path-dependent tree SHAP | Explainer | Scope | Model types | Task types | Data types | Use | |----------------------------|--------|-------------|----------------------------|----------------------|------------------------------------------------------------| @@ -553,14 +573,17 @@ a [significant speedup](https://www.researchgate.net/publication/333077391_Expla of the feature set. If we compute the approximation for each member of the power set we obtain a time complexity of $O( TL2^M)$. In contrast, computing for all sets simultaneously we achieve $O(TLD^2)$. -To compute the path-dependent tree SHAP explainer for a random forest using Alibi we use: +To compute the path-dependent tree SHAP explainer for a random forest using Alibi ( +see [notebook](../examples/overview.ipynb)) we use: ```ipython3 from alibi.explainers import TreeShap -path_dependent_explainer = TreeShap(rfc, model_output='raw', task='classification') -path_dependent_explainer.fit() -result = path_dependent_explainer.explain(scaler.transform(x)) +# rfc is a random forest model +path_dependent_explainer = TreeShap(rfc) +path_dependent_explainer.fit() # path dependent Tree SHAP doesn't need any data + +result = path_dependent_explainer.explain(scaler.transform(x)) # explain the scaled instance plot_importance(result.shap_values[1], features, '"Good"') ``` @@ -583,7 +606,9 @@ although there are differences due to using different methods and models in each | Doesn't require access to the training data | | | Shapley values can be easily interpreted and visualized | | -### Interventional Tree SHAP +(interventional-tree-shap)= + +#### Interventional Tree SHAP | Explainer | Scope | Model types | Task types | Data types | Use | |----------------------------|-------|-------------|----------------------------|----------------------|------------------------------------------------------------| @@ -605,15 +630,19 @@ with [$O(TLD)$](https://hughchen.github.io/its_blog/index.html) time complexity. The main difference between the interventional and the path-dependent tree SHAP methods is that the latter approximates the interventional conditional expectation, whereas the former method calculates it directly. -To compute the interventional tree SHAP explainer for a random forest using Alibi, we use: +To compute the interventional tree SHAP explainer for a random forest using Alibi ( +see [notebook](../examples/overview.ipynb)), we use: ```ipython3 from alibi.explainers import TreeShap -tree_explainer_interventional = TreeShap(rfc, model_output='raw', task='classification') +# rfc is a random forest classifier model +tree_explainer_interventional = TreeShap(rfc) + +# interventional tree SHAP is slow for large datasets so we take first 100 samples of training data. tree_explainer_interventional.fit(scaler.transform(X_train[0:100])) -result = tree_explainer_interventional.explain(scaler.transform(x)) +result = tree_explainer_interventional.explain(scaler.transform(x)) # explain the scaled instance plot_importance(result.shap_values[1], features, '"Good"') ``` @@ -638,7 +667,7 @@ method [see](https://hughchen.github.io/its_blog/index.html). | Shapley values can be easily interpreted and visualized | Typically slower than the path-dependent method | | Computes the interventional conditional expectation exactly unlike the path-dependent method | | -## 4. Counterfactual instances +### 4. Counterfactual instances Given an instance of the dataset and a prediction given by a model, a question naturally arises how would the instance minimally have to change for a different prediction to be provided. Such a generated instance is known as a @@ -669,17 +698,17 @@ A counterfactual, $x_{\text{cf}}$, needs to satisfy - The counterfactual $x_{\text{cf}}$ should be interpretable. The first requirement is clear. The second, however, requires some idea of what interpretable means. Alibi exposes four -methods for finding counterfactuals: **[counterfactual instances (CFI)](#counterfactual-instances)** -, **[contrastive explanations (CEM)](#contrastive-explanation-method-pertinent-negatives)** -, **[counterfactuals guided by prototypes (CFP)](#counterfactuals-guided-by-prototypes)**, -and **[counterfactuals with reinforcement learning (CFRL)](#counterfactuals-with-reinforcement-learning)**. Each of -these methods deals with interpretability slightly differently. However, all of them require sparsity of the solution. -This means we prefer to only change a small subset of the features which limits the complexity of the solution making it -more understandable. +methods for finding counterfactuals: **[counterfactual instances (CFI)](counterfactual-instances)** +, **[contrastive explanations (CEM)](contrastive-explanation-method-pertinent-negatives)** +, **[counterfactuals guided by prototypes (CFP)](counterfactuals-guided-by-prototypes)**, +and **[counterfactuals with reinforcement learning (CFRL)](counterfactuals-with-reinforcement-learning)**. Each of these +methods deals with interpretability slightly differently. However, all of them require sparsity of the solution. This +means we prefer to only change a small subset of the features which limits the complexity of the solution making it more +understandable. Note that sparse changes to the instance of interest doesn't guarantee that the generated counterfactual is believably a -member of the data distribution. **[CEM](#contrastive-explanation-method-pertinent-negatives)** -, **[CFP](#counterfactuals-guided-by-prototypes)**, and **[CFRL](#counterfactuals-with-reinforcement-learning)** also +member of the data distribution. **[CEM](contrastive-explanation-method-pertinent-negatives)** +, **[CFP](counterfactuals-guided-by-prototypes)**, and **[CFRL](counterfactuals-with-reinforcement-learning)** also require that the counterfactual be in distribution in order to be interpretable. ```{figure} images/interp-and-non-interp-cfs.png @@ -690,9 +719,9 @@ require that the counterfactual be in distribution in order to be interpretable. 2) **counterfactual instances with prototypes** method* ``` -The first three methods **[CFI](#counterfactual-instances)** -, **[CEM](#contrastive-explanation-method-pertinent-negatives)** -, **[CFP](#counterfactuals-guided-by-prototypes)** all construct counterfactuals using a very similar method. They build +The first three methods **[CFI](counterfactual-instances)** +, **[CEM](contrastive-explanation-method-pertinent-negatives)** +, **[CFP](counterfactuals-guided-by-prototypes)** all construct counterfactuals using a very similar method. They build them by defining a loss that prefer interpretable instances close to the target class. They then use gradient descent to move within the feature space until they obtain a counterfactual of sufficient quality. The main difference is the **CEM** and **CFP** methods also train an autoencoder to ensure that the constructed counterfactuals are within the @@ -707,9 +736,9 @@ data-distribution. These three methods only realistically work for grayscale images and anything multi-channel will not be interpretable. In order to get quality results for multi-channel images practitioners should -use [CFRL](#counterfactuals-with-reinforcement-learning). +use [CFRL](counterfactuals-with-reinforcement-learning). -[CFRL](#counterfactuals-with-reinforcement-learning) uses a similar loss to CEM and CFP but applies reinforcement +[CFRL](counterfactuals-with-reinforcement-learning) uses a similar loss to CEM and CFP but applies reinforcement learning to train a model which will generate counterfactuals on demand. :::{admonition} **Note 5: fit and explain method runtime differences** @@ -728,7 +757,9 @@ demand. The training takes place during the `fit` method call, so this has a lon quick. If you want performant explanations in production environments, then the latter approach is preferable. ::: -### Counterfactual Instances +(counterfactual-instances)= + +#### Counterfactual Instances | Explainer | Scope | Model types | Task types | Data types | Use | |----------------------------------------------|--------|---------------------|----------------------------|------------------------------------------|-------------------------------------------------------------------------------------------------| @@ -751,37 +782,31 @@ A problem arises here in that encouraging sparse solutions doesn't necessarily g This happens because the loss doesn't prevent the counterfactual solution from moving off the data distribution. Thus, you will likely get an answer that doesn't look like something that you would expect to see from the data. -To use the counterfactual instances method from Alibi applied to the wine quality dataset use: +To use the counterfactual instances method from Alibi applied to the wine quality dataset ( +see [notebook](../examples/overview.ipynb)), use: ```ipython3 from alibi.explainers import Counterfactual explainer = Counterfactual( - model, shape=(1,) + X_train.shape[1:], target_proba=0.51, tol=0.01, target_class='other', - max_iter=1000, lam_init=1e-1, max_lam_steps=10, learning_rate_init=0.1, - feature_range=(scaler.transform(X_train).min(), scaler.transform(X_train).max()) - -result_cf = explainer.explain(scaler.transform(x)) + model, # The model to explain + shape=(1,) + X_train.shape[1:], # The shape of the model input + target_proba=0.51, # The target class probability + tol=0.01, # The tolerance for the loss + target_class='other', # The target class to obtain ) -``` -(cfi-results)= +result_cf = explainer.explain(scaler.transform(x)) +print("Instance prediction:", model.predict(scaler.transform(x))[0].argmax()) +print("Counterfactual prediction:", model.predict(result_cf.data['cf']['X'])[0].argmax()) +``` -This yields the following result: +Gives the expected result: -| feature | instance | counterfactual | -|-----------------------------|----------|----------------| -| fixed acidity | 9.2 | 9.23 | -| volatile acidity | 0.36 | 0.36 | -| citric acid | 0.34 | 0.334 | -| residual sugar | 1.6 | 1.582 | -| chlorides | 0.062 | 0.061 | -| free sulfur dioxide | 5.0 | 4.955 | -| total sulfur dioxide | 12.0 | 11.324 | -| density | 0.997 | 0.997 | -| pH | 3.2 | 3.199 | -| sulphates | 0.67 | 0.64 | -| alcohol | 10.5 | 9.88 | +``` +Instance prediction: 0 +Counterfactual prediction: 1 +``` | pros | cons | |------------------------------------------------|---------------------------------------------------------------------------| @@ -789,7 +814,9 @@ This yields the following result: | Doesn't require access to the training dataset | Requires tuning of $\lambda$ hyperparameter | | | Slow for black-box models due to having to numerically evaluate gradients | -### Contrastive Explanation Method (Pertinent Negatives) +(contrastive-explanation-method-pertinent-negatives)= + +#### Contrastive Explanation Method (Pertinent Negatives) | Explainer | Scope | Model types | Task types | Data types | Use | |----------------------------------------------|--------|---------------------|----------------------------|-------------------------|-----------------------------------------------------------------------------------| @@ -818,7 +845,7 @@ each written number represents an absence of information. Similarly, in the case median pixel value to convey no information, and moving away from this value adds information. For numeric tabular data, we can use the feature mean. In general, choosing a non-informative value for each feature is non-trivial, and domain knowledge is required. This is the reverse process to -the [contrastive explanation method (pertinent-positives)](#contrastive-explanation-method-pertinent-positives) method +the [contrastive explanation method (pertinent-positives)](contrastive-explanation-method-pertinent-positives) method introduced in the section on [local necessary features](#2-local-necessary-features) in which they take away features rather than add them. @@ -831,37 +858,37 @@ counterfactual often doesn't look like a member of the target class. :alt: Example of less interpretable result obtained by CEM ``` -To compute a pertinent-negative using Alibi we use: +To compute a pertinent-negative using Alibi (see [notebook](../examples/overview.ipynb)) we use: ```ipython3 from alibi.explainers import CEM -feature_range = (scaler.transform(X_train).min(axis=0).reshape(shape)-.1, - scaler.transform(X_train).max(axis=0).reshape(shape)+.1) +cem = CEM(model, # model to explain + shape=(1,) + X_train.shape[1:], # shape of the model input + mode='PN', # pertinant negative mode + kappa=0.2, # Confidence parameter for the attack loss term + beta=0.1, # Regularization constant for L1 loss term + ae_model=ae # autoencoder model +) -cem = CEM(model, mode='PN', shape=(1,) + X_train.shape[1:], kappa=0.2, beta=0.1, - feature_range=feature_range, max_iterations=1000, c_init=10, c_steps=10, - learning_rate_init=1e-2, clip=(-1000, 1000), ae_model=ae) - -cem.fit(scaler.transform(X_train), no_info_type='median') +cem.fit( + scaler.transform(X_train), # scaled training data + no_info_type='median' # non-informative value for each feature +) result_cem = cem.explain(scaler.transform(x), verbose=False) +cem_cf = result_cem.data['PN'] + +print("Instance prediction:", model.predict(scaler.transform(x))[0].argmax()) +print("Counterfactual prediction:", model.predict(cem_cf)[0].argmax()) + ``` -This gives the following: +Gives the expected result: -| feature | instance | counterfactual | -|-----------------------------|----------|----------------| -| fixed acidity | 9.2 | 9.2 | -| volatile acidity | 0.36 | 0.36 | -| citric acid | 0.34 | 0.34 | -| residual sugar | 1.6 | 1.6 | -| chlorides | 0.062 | 0.062 | -| free sulfur dioxide | 5.0 | 5.0 | -| total sulfur dioxide | 12.0 | 12.0 | -| density | 0.997 | 0.997 | -| pH | 3.2 | 3.2 | -| sulphates | 0.67 | 0.57 | -| alcohol | 10.5 | 9.688 | +``` +Instance prediction: 0 +Counterfactual prediction: 1 +``` This method can apply to both black-box and white-box models. There is a performance cost from computing the numerical gradients in the black-box case due to having to numerically evaluate gradients. @@ -874,7 +901,9 @@ gradients in the black-box case due to having to numerically evaluate gradients. | | Requires domain knowledge when choosing what it means for a feature to be present or not | | | Slow for black-box models | -### Counterfactuals Guided by Prototypes +(counterfactuals-guided-by-prototypes)= + +#### Counterfactuals Guided by Prototypes | Explainer | Scope | Model types | Task types | Data types | Use | |--------------------------------------|-------|---------------------|----------------|-----------------------------|-----------------------------------------------------------------------------------| @@ -890,48 +919,40 @@ $$ L(X'|X)= c\cdot L_{pred}(X') + \beta L_{1}(X', X) + L_{2}(X', X)^2 + \gamma L {proto}) $$ -This method produces much more interpretable results than [CFI](#counterfactual-instances) -and [CEM](#contrastive-explanation-method-pertinent-negatives). +This method produces much more interpretable results than [CFI](counterfactual-instances) +and [CEM](contrastive-explanation-method-pertinent-negatives). Because the prototype term steers the solution, we can remove the prediction loss term. This makes this method much faster if we are using a black-box model as we don't need to compute the gradients numerically. However, occasionally the prototype isn't a member of the target class. In this case you'll end up with an incorrect counterfactual. -To use the counterfactual with prototypes method in Alibi we do: +To use the counterfactual with prototypes method in Alibi (see [notebook](../examples/overview.ipynb)) we do: ```ipython3 from alibi.explainers import CounterfactualProto -feature_range = (scaler.transform(X_train).min(axis=0).reshape(shape)-.1, - scaler.transform(X_train).max(axis=0).reshape(shape)+.1) - explainer = CounterfactualProto( - model, shape=(1,) + X_train.shape[1:], - ae_model=ae, enc_model=encoder, max_iterations=500, feature_range=feature_range, - c_init=1., c_steps=4, eps=(1e-2, 1e-2), update_num_grad=100 + model, # The model to explain + shape=(1,) + X_train.shape[1:], # shape of the model input + ae_model=ae, # The autoencoder + enc_model=ae.encoder # The encoder ) -explainer.fit(scaler.transform(X_train)) -result_proto = explainer.explain(scaler.transform(x), Y=None, target_class=None, k=20, k_type='mean', - threshold=0., verbose=False, print_every=100, log_every=100) +explainer.fit(scaler.transform(X_train)) # Fit the explainer with scaled data + +result_proto = explainer.explain(scaler.transform(x), verbose=False) + +proto_cf = result_proto.data['cf']['X'] +print("Instance prediction:", model.predict(scaler.transform(x))[0].argmax()) +print("Counterfactual prediction:", model.predict(proto_cf)[0].argmax()) ``` We get the following results: -| feature | instance | counterfactual | -|-----------------------------|----------|----------------| -| fixed acidity | 9.2 | 9.2 | -| volatile acidity | 0.36 | 0.36 | -| citric acid | 0.34 | 0.34 | -| residual sugar | 1.6 | 1.6 | -| chlorides | 0.062 | 0.062 | -| free sulfur dioxide | 5.0 | 5.0 | -| total sulfur dioxide | 12.0 | 12.0 | -| density | 0.997 | 0.997 | -| pH | 3.2 | 3.2 | -| sulphates | 0.67 | 0.607 | -| alcohol | 10.5 | 9.998 | - +``` +Instance prediction: 0 +Counterfactual prediction: 1 +``` | pros | cons | |------------------------------------------------------------|------------------------------------------------------------------------| @@ -939,7 +960,9 @@ We get the following results: | Black-box version of the method is fast | Requires setup and configuration in choosing $\gamma$, $\beta$ and $c$ | | Applies to more data-types | Requires training an autoencoder | -### Counterfactuals with Reinforcement Learning +(counterfactuals-with-reinforcement-learning)= + +#### Counterfactuals with Reinforcement Learning | Explainer | Scope | Model types | Task types | Data types | Use | |----------------------------------------------|--------|---------------------|----------------------------|------------------------------------------|-----------------------------------------------------------------------------------| @@ -969,39 +992,38 @@ can then compute the reward and update the actor to maximize it. We do this with internals; we only need to obtain a prediction in each case. The end product is a model that can generate interpretable counterfactual instances at runtime with arbitrary constraints. +To use CFRL on the wine dataset (see [notebook](../examples/overview.ipynb)), we use: + ```ipython3 from alibi.explainers import CounterfactualRL predict_fn = lambda x: model(x) -explainer = CounterfactualRL(predictor=predict_fn, - encoder=ae.encoder, - decoder=ae.decoder, - latent_dim=ENCODING_DIM, - coeff_sparsity=7.5, - coeff_consistency=0, - train_steps=5000, - batch_size=100, - backend="tensorflow") - -explainer.fit(X=scaler.transform(X_train)) -``` - -This gives the following results: - -| feature | instance | counterfactual | -|-----------------------------|----------|----------------| -| fixed acidity | 8.965 | 9.2 | -| volatile acidity | 0.349 | 0.36 | -| citric acid | 0.242 | 0.34 | -| residual sugar | 2.194 | 1.6 | -| chlorides | 0.059 | 0.062 | -| free sulfur dioxide | 6.331 | 5.0 | -| total sulfur dioxide | 14.989 | 12.0 | -| density | 0.997 | 0.997 | -| pH | 3.188 | 3.2 | -| sulphates | 0.598 | 0.67 | -| alcohol | 9.829 | 10.5 | +cfrl_explainer = CounterfactualRL( + predictor=predict_fn, # The model to explain + encoder=ae.encoder, # The encoder + decoder=ae.decoder, # The decoder + latent_dim=7, # The dimension of the autoencoder latent space + coeff_sparsity=0.5, # The coefficient of sparsity + coeff_consistency=0.5, # The coefficient of consistency + train_steps=10000, # The number of training steps + batch_size=100, # The batch size +) + +cfrl_explainer.fit(X=scaler.transform(X_train)) + +result_cfrl = cfrl_explainer.explain(X=scaler.transform(x), Y_t=np.array([1])) +print("Instance prediction:", model.predict(scaler.transform(x))[0].argmax()) +print("Counterfactual prediction:", model.predict(result_cfrl.data['cf']['X'])[0].argmax()) + +``` + +Which gives the following output: + +``` +Instance prediction: 0 +Counterfactual prediction: 1 +``` | pros | cons | |------------------------------------------------------------|------------------------------------------| @@ -1009,3 +1031,31 @@ This gives the following results: | Very fast at runtime | Requires to fit an autoencoder | | Can be trained to account for arbitrary constraints | Requires access to the training dataset | | General as is a black-box algorithm | | + +(counterfactual-example-results)= + +#### Counterfactual Example Results + +For each of the four explainers, we have generated a counterfactual instance. We compare the original instance to each: + +| Feature | Instance | CFI | CEM | CFP | CFRL | +|----------------------|----------|------------|------------|-----------|----------| +| sulphates | 0.67 | **0.64** | **0.549** | **0.623** | **0.67** | +| alcohol | 10.5 | **9.88** | **9.652** | **9.942** | **10.5** | +| residual sugar | 1.6 | **1.582** | **1.479** | 1.6 | 1.6 | +| chlorides | 0.062 | 0.061 | **0.057** | 0.062 | 0.062 | +| free sulfur dioxide | 5.0 | **4.955** | **2.707** | 5.0 | 5.0 | +| total sulfur dioxide | 12.0 | **11.324** | 12.0 | 12.0 | 12.0 | +| fixed acidity | 9.2 | **9.23** | 9.2 | 9.2 | 9.2 | +| volatile acidity | 0.36 | 0.36 | 0.36 | 0.36 | 0.36 | +| citric acid | 0.34 | 0.334 | 0.34 | 0.34 | 0.34 | +| density | 0.997 | 0.997 | 0.997 | 0.997 | 0.997 | +| pH | 3.2 | 3.199 | 3.2 | 3.2 | 3.2 | + +Looking at the ALE plots, we can see how the counterfactual methods change the features to flip the prediction. Note +that the ALE plots potentially miss details local to individual instances as they are global insights. + +```{image} images/ale-plots.png +:align: center +:alt: Ale plots for those features that the above counterfactuals have changed the most. +``` diff --git a/doc/source/overview/images/ale-plots.png b/doc/source/overview/images/ale-plots.png new file mode 100644 index 0000000000000000000000000000000000000000..f9f6efb2d2639c740f6016e2b3d201748a3aa057 GIT binary patch literal 41364 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 OX7K$2d~10TDgOXMB8NQy literal 0 HcmV?d00001 diff --git a/examples/overview.ipynb b/examples/overview.ipynb index 38876ecbe..c9f8fb5ee 100644 --- a/examples/overview.ipynb +++ b/examples/overview.ipynb @@ -5,7 +5,7 @@ "id": "9a4f4dbf-a083-46e9-8891-55ef9123cf4a", "metadata": {}, "source": [ - "## Alibi Overview Example\n", + "# Alibi Overview Example\n", "\n", "This notebook aims to demonstrate each of the explainers Alibi provides on the same model and dataset. Unfortunately, this isn't possible as white-box neural network methods exclude tree-based white-box methods. Hence we will train both a tensorflow and a random forest model on the same dataset and apply the full range of explainers to see what insights we can obtain. " ] @@ -133,6 +133,40 @@ "scaler.fit(X_train)" ] }, + { + "cell_type": "markdown", + "id": "f7a294d4-82f2-4729-ad66-872fd2925f4c", + "metadata": { + "tags": [] + }, + "source": [ + "### Select Instance of good wine \n", + "\n", + "We partition the dataset into good and bad portions and select an instance of interest. I've chosen it to be a good quality wine. \n", + "\n", + "**Note** that bad wines are class 1 and correpsond to the second model output being high, whereas good wines are class 0 and correspond to the first model output being high." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "926bbabd-946b-4ef3-9aec-6e27df923504", + "metadata": {}, + "outputs": [], + "source": [ + "bad_wines = np.array([a for a, b in zip(X_train, y_train) if b[1] == 1])\n", + "good_wines = np.array([a for a, b in zip(X_train, y_train) if b[1] == 0])\n", + "x = np.array([[9.2, 0.36, 0.34, 1.6, 0.062, 5., 12., 0.99667, 3.2, 0.67, 10.5]]) # prechosen instance\n" + ] + }, + { + "cell_type": "markdown", + "id": "bfd1a33a-5a4e-4c6c-a3c8-56776d656fc5", + "metadata": {}, + "source": [ + "## Training models" + ] + }, { "cell_type": "markdown", "id": "3a3ff7b6-50c7-4e8c-9436-188cefba608d", @@ -145,7 +179,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "id": "af5d71d3-729a-4fee-9f5a-b60bbe8dadc0", "metadata": {}, "outputs": [], @@ -213,7 +247,7 @@ "id": "91035836-4c13-489b-a865-bed0817aaeb0", "metadata": {}, "source": [ - "# Random Forest Model" + "### Random Forest Model" ] }, { @@ -226,7 +260,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "id": "07246f62-3040-475e-843e-b0366c3d94fa", "metadata": {}, "outputs": [], @@ -262,7 +296,7 @@ "id": "dbdd201e-2783-42d3-a345-cf742361be67", "metadata": {}, "source": [ - "# Tensorflow Model" + "### Tensorflow Model" ] }, { @@ -275,7 +309,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "id": "7a28547f-1e0a-4bf4-9f18-5451127ddb77", "metadata": {}, "outputs": [], @@ -319,7 +353,7 @@ "id": "7c7e779e-656d-48be-91b2-14ae32e2838c", "metadata": {}, "source": [ - "# Load/Make models" + "### Load/Make models" ] }, { @@ -332,7 +366,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "id": "4dc61ede-5732-4641-b004-0be40fbf9e99", "metadata": {}, "outputs": [ @@ -358,54 +392,13 @@ " ae = load_ae_model()" ] }, - { - "cell_type": "markdown", - "id": "f7a294d4-82f2-4729-ad66-872fd2925f4c", - "metadata": {}, - "source": [ - "# Select Instance of good wine \n", - "\n", - "We partition the dataset into good and bad portions and select an instance of interest. I've chosen it to be a good quality wine. \n", - "\n", - "Note that \n", - "- bad => class 1 \n", - "- good => class 0." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "926bbabd-946b-4ef3-9aec-6e27df923504", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "class probs: [0.7731959 0.22680412]\n", - "result is class 0\n" - ] - } - ], - "source": [ - "bad_wines = np.array([a for a, b in zip(X_train, y_train) if b[1] == 1])\n", - "good_wines = np.array([a for a, b in zip(X_train, y_train) if b[1] == 0])\n", - "# x = X_train[(model(X_train).numpy()[:, 0] > 0.7) & (model(X_train).numpy()[:, 0] < 0.9)][0][None]\n", - "\n", - "x = np.array([[9.2, 0.36, 0.34, 1.6, 0.062, 5., 12., 0.99667, 3.2, 0.67, 10.5]])\n", - "x_res = model.predict(x)[0]\n", - "print('class probs: ', x_res)\n", - "assert x_res.argmax() == 0, \"x_res.argmax() != 0, model should classisfy x as 0 but non-determinism of model training might mean it doesn't. You can choose a new x as you wish\"\n", - "print('result is class ', x_res.argmax())" - ] - }, { "cell_type": "markdown", "id": "b0a89f7e-7a76-4c9f-b313-ce963227f548", "metadata": {}, "source": [ "\n", - "# Util functions for visualizing and comparing instance differences" + "## Util functions for visualizing and comparing instance differences" ] }, { @@ -471,12 +464,20 @@ " return ax, fig" ] }, + { + "cell_type": "markdown", + "id": "8a723129-19e5-4f87-b1c2-bfec2a4c69b1", + "metadata": {}, + "source": [ + "## Local Feature Attribution" + ] + }, { "cell_type": "markdown", "id": "559872af-99b6-4314-b418-0be491f3f405", "metadata": {}, "source": [ - "## Integrated Gradients\n", + "### Integrated Gradients\n", "\n", "We illustrate the apllication of integrated to the instance of interest" ] @@ -528,21 +529,21 @@ "id": "91775149-0ff9-46d7-a71d-d32c910c2757", "metadata": {}, "source": [ - "## Kernel SHAP\n", + "### Kernel SHAP\n", "\n", "Example of Kernel SHAP method applied to the Tensorflow model" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "id": "442a2603-1aed-4cd2-a3dc-f4965f5efaec", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "6823b1d4d3404ed79bede1c93ed92ef7", + "model_id": "bc55948efe054ec08d106435c66090dd", "version_major": 2, "version_minor": 0 }, @@ -560,7 +561,7 @@ "
    )" ] }, - "execution_count": 15, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, @@ -600,14 +601,14 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 15, "id": "77deef77-42c1-4450-b381-fde4b1079e24", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "b6c199c824754d3b803b4f677b70106c", + "model_id": "c270086f84a54f4c8163d2a22d7a4c63", "version_major": 2, "version_minor": 0 }, @@ -625,7 +626,7 @@ "
    )" ] }, - "execution_count": 16, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, @@ -660,14 +661,14 @@ "id": "c9f0d0aa-f805-4ca7-9d26-4280548dd66b", "metadata": {}, "source": [ - "## Interventional treeSHAP\n", + "### Interventional treeSHAP\n", "\n", "Interventional tree SHAP applied to the random forest. Comparison with the kernel SHAP results above show very similar outcomes." ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 16, "id": "2d3b1ce0-8d52-4a6f-b30c-40779b9b2a8c", "metadata": {}, "outputs": [ @@ -678,7 +679,7 @@ "
    )" ] }, - "execution_count": 17, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, @@ -708,14 +709,14 @@ "id": "94c05d4f-13b8-4266-bced-510664ba7342", "metadata": {}, "source": [ - "## Path Dependent treeSHAP\n", + "### Path Dependent treeSHAP\n", "\n", "Path Dependent tree SHAP applied to random forest. Again very similar results to kernel SHAP and Interventional tree SHAP as expected." ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 17, "id": "aeef4572-2c4e-41ea-8298-80c95476be96", "metadata": {}, "outputs": [ @@ -726,7 +727,7 @@ "
    )" ] }, - "execution_count": 19, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, @@ -754,24 +755,32 @@ "id": "d7ccd4c7-b4b9-4b3b-bf5e-75aeb8653bc7", "metadata": {}, "source": [ - "## Note:\n", + "### Note:\n", "\n", "There is some difference between the kernel SHAP and integrated gradient applied to the tensorflow model and the SHAP methods applied to the random forest. This is to be exected due to the combination of different methods and different models. They are reasonably similar overall however. notably the ordering is nearly the same." ] }, + { + "cell_type": "markdown", + "id": "fecdab93-3226-4b76-a0d0-e01b740b865e", + "metadata": {}, + "source": [ + "## Local Necessary Features" + ] + }, { "cell_type": "markdown", "id": "9c32759e-e66f-4af9-91af-e5d1deb01019", "metadata": {}, "source": [ - "## Anchors\n", + "### Anchors\n", "\n", "Here we apply Anchors to the tensor flow model" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 18, "id": "0e36d1c9-49e1-4da8-9bc8-da312e2b31b2", "metadata": {}, "outputs": [], @@ -786,7 +795,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 19, "id": "3b3722d3-f837-4343-a2de-c7f4d4849223", "metadata": {}, "outputs": [ @@ -794,9 +803,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "Anchor = ['alcohol > 10.10', 'volatile acidity <= 0.39']\n", - "Precision = 0.9629629629629629\n", - "Coverage = 0.16263552960800667\n" + "Anchor = ['alcohol > 10.10', 'volatile acidity <= 0.39', 'total sulfur dioxide <= 22.00']\n", + "Precision = 0.9866071428571429\n", + "Coverage = 0.06505421184320268\n" ] } ], @@ -806,19 +815,27 @@ "print('Coverage = ', result.data['coverage'])" ] }, + { + "cell_type": "markdown", + "id": "92a91fed-7171-4dae-abd4-9e8709bb5aa8", + "metadata": {}, + "source": [ + "## Global Feature Attribution" + ] + }, { "cell_type": "markdown", "id": "3a604116-6772-469d-b251-05fb920f6fb7", "metadata": {}, "source": [ - "## ALE \n", + "### ALE \n", "\n", "The following is the ALE plot for the alcohol feature" ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 20, "id": "3596db3d-40bb-42e4-9b59-1ae18f6be64f", "metadata": {}, "outputs": [ @@ -828,7 +845,7 @@ "array([[]], dtype=object)" ] }, - "execution_count": 22, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, @@ -858,9 +875,9 @@ "id": "43934de4-cdb7-497c-9eb4-d83bb1a9a8c6", "metadata": {}, "source": [ - "# Counterfactuals\n", + "## Counterfactuals\n", "\n", - "Next we apply each of the counterfactual methods, counterfactuals with reinforcement learning, counterfactual instances, counterfacutals with prototypes and contrastive explanation methods. We also plot the kernel SHAP values to show how the counterfactual method changes hte" + "Next we apply each of the counterfactual methods, counterfactuals with reinforcement learning, counterfactual instances, counterfacutals with prototypes and contrastive explanation methods. We also plot the kernel SHAP values to show how the counterfactual method changes the attribution of each feature leading to the change in prediction." ] }, { @@ -868,7 +885,7 @@ "id": "aacbe189-a135-4ef9-bcf4-35df9019d5bb", "metadata": {}, "source": [ - "## Counter Factuals with Reinforcement Learning" + "### Counter Factuals with Reinforcement Learning" ] }, { @@ -876,106 +893,53 @@ "execution_count": 23, "id": "b7fbd60a-64af-43f9-80d3-9b78cfde8079", "metadata": {}, - "outputs": [], - "source": [ - "from alibi.explainers import CounterfactualRL \n", - "\n", - "predict_fn = lambda x: model(x)\n", - "\n", - "cfrl_explainer = CounterfactualRL(predictor=predict_fn,\n", - " encoder=ae.encoder,\n", - " decoder=ae.decoder,\n", - " latent_dim=7,\n", - " coeff_sparsity=0.5,\n", - " coeff_consistency=0.5,\n", - " train_steps=10000,\n", - " batch_size=100,\n", - " backend=\"tensorflow\")" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "ce1ac845-d4f3-4f15-92c7-1b5a072bc4e8", - "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 10000/10000 [02:11<00:00, 76.16it/s]\n" + "100%|██████████| 10000/10000 [02:31<00:00, 66.00it/s]\n", + "100%|██████████| 1/1 [00:00<00:00, 151.09it/s]\n" ] }, { - "data": { - "text/plain": [ - "CounterfactualRL(meta={\n", - " 'name': 'CounterfactualRL',\n", - " 'type': ['blackbox'],\n", - " 'explanations': ['local'],\n", - " 'params': {\n", - " 'act_noise': 0.1,\n", - " 'act_low': -1.0,\n", - " 'act_high': 1.0,\n", - " 'replay_buffer_size': 1000,\n", - " 'batch_size': 100,\n", - " 'num_workers': 4,\n", - " 'shuffle': True,\n", - " 'exploration_steps': 100,\n", - " 'update_every': 1,\n", - " 'update_after': 10,\n", - " 'train_steps': 10000,\n", - " 'backend': 'tensorflow',\n", - " 'encoder_preprocessor': 'identity_function',\n", - " 'decoder_inv_preprocessor': 'identity_function',\n", - " 'reward_func': 'get_classification_reward',\n", - " 'postprocessing_funcs': [],\n", - " 'conditional_func': 'generate_empty_condition',\n", - " 'callbacks': [],\n", - " 'actor': \"\",\n", - " 'critic': \"\",\n", - " 'optimizer_actor': \"\",\n", - " 'optimizer_critic': \"\",\n", - " 'lr_actor': 0.001,\n", - " 'lr_critic': 0.001,\n", - " 'actor_hidden_dim': 256,\n", - " 'critic_hidden_dim': 256,\n", - " 'encoder': \"\",\n", - " 'decoder': \"\",\n", - " 'latent_dim': 7,\n", - " 'predictor': '',\n", - " 'coeff_sparsity': 0.5,\n", - " 'coeff_consistency': 0.5,\n", - " 'seed': 0,\n", - " 'sparsity_loss': 'sparsity_loss',\n", - " 'consistency_loss': 'consistency_loss'}\n", - " ,\n", - " 'version': '0.6.2dev'}\n", - ")" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "Instance class prediction: 0\n", + "Counterfactual class prediction: 1\n" + ] } ], "source": [ - "cfrl_explainer.fit(X=scaler.transform(X_train))" + "from alibi.explainers import CounterfactualRL \n", + "\n", + "predict_fn = lambda x: model(x)\n", + "\n", + "cfrl_explainer = CounterfactualRL(\n", + " predictor=predict_fn, # The model to explain\n", + " encoder=ae.encoder, # The encoder\n", + " decoder=ae.decoder, # The decoder\n", + " latent_dim=7, # The dimension of the autoencoder latent space\n", + " coeff_sparsity=0.5, # The coefficient of sparsity\n", + " coeff_consistency=0.5, # The coefficient of consistency\n", + " train_steps=10000, # The number of training steps\n", + " batch_size=100, # The batch size\n", + ")\n", + "\n", + "cfrl_explainer.fit(X=scaler.transform(X_train))\n", + "\n", + "result_cfrl = cfrl_explainer.explain(X=scaler.transform(x), Y_t=np.array([1]))\n", + "print(\"Instance class prediction:\", model.predict(scaler.transform(x))[0].argmax())\n", + "print(\"Counterfactual class prediction:\", model.predict(result_cfrl.data['cf']['X'])[0].argmax())\n" ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 24, "id": "6559f2e3-72db-4ca3-b949-8e3d7371a10a", "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 1/1 [00:00<00:00, 148.20it/s]\n" - ] - }, { "name": "stdout", "output_type": "stream", @@ -992,35 +956,23 @@ "sulphates instance: 0.598 counter factual: 0.67 difference: -0.0718592\n", "alcohol instance: 9.829 counter factual: 10.5 difference: -0.6712008\n" ] - }, - { - "data": { - "image/png": "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vJqamu7HZrMZaWlpQzpGRERERBRsIQnVBoMBeXl5KCoqAgAUFRUhLy+vR+sHAMydOxfr1q2D3++HxWLBli1bkJ+fP6RjRERERETBFrKReqWlpXjwwQfR1taGhIQEPP744xg1ahSWLVuGn/70pzjrrLPg8/nw29/+Fp999hkAYNmyZViyZAkADPoYEREREVGwcfMXIiIiIqIh4o2KRERERERDxFBNRERERDREDNVEREREREPEUE1ERERENEQM1UREREREQ8RQTUREREQ0RAzVFHVKS0tx6aWXorq6GgDw9NNP495778WePXvwgx/8AAsWLMCCBQuwfft2iSslIiKiSME51RSV3nnnHbz66qv46U9/iocffhgvvvgiFi9ejDVr1uCcc86Bz+eDzWaDTqeTulQiIiKKAAqpCyCSwsKFC7Fjxw4sX74c//73v3Hs2DHk5ubinHPOAQDI5XIGaiIiIuo3tn9QVHK73Th27Bji4+PR1NQkdTlEREQU4RiqKSo98cQTmDhxIl566SWsXLkS6enpKC0txZ49ewAAPp8Pra2tEldJREREkYI91RR1tmzZgqeeegrr1q2DWq3GunXr8N///hf33nsv/vjHP8Jut0Mmk+GBBx7ARRddJHW5REREFAEYqomIiIiIhojtH0REREREQ8RQTUREREQ0RAzVRERERERDxFBNRERERDREDNVEREREREPEUE1EFIbGjRuHEydOBPy6Dz74IJ588snux6+++iouuugiTJ06Fc3NzQF/v9PZvXs38vPzh3ydefPmYefOnac9tnPnTsycOXPI70FE1F/cppyIaACmTp3a/bXD4YBKpYJcLgcArF69GgsWLDjlNTt37sR9992HTz/9NCA1HDt2DL///e9x8OBB+P1+ZGdn45577sGll146oOt4PB489thjeOONNzB+/PiA1LZmzRo899xzUKlUAACj0YiLL74Yd9xxB4xGIwBg2rRp2LRp05Df63//+9+Qr0FEFCgM1UREA9C16yYAXHHFFfjd734X8k2C7rjjDvzgBz/Ac889BwA4cOAABrPlQFNTE1wuF0aPHj2oOrxeLxSKU/8aueqqq/DHP/4RHo8H5eXlWLNmDa699lq8/fbb3cGaiGi4YfsHEVEAuN1uPPLII5gxYwZmzJiBRx55BG63G3a7HcuWLUN9fT2mTp2KqVOnoq6uDvv378eSJUswbdo0zJgxA7/97W/hdrv7fB+LxYKqqiosXrwYKpUKKpUK5557LqZNmwYAePvtt/GDH/ygx2tO10pSVlaGuXPnAgDOO+883HTTTaiqqsK4cePg9Xq7z7vxxhuxbt267mt///vfx6OPPooLLrgAa9as6bVWpVKJMWPG4Mknn4Rer8dLL70E4NTWjNLSUtx4442YNm0a5s2bhw8//BAA8PXXX+OCCy6A2WwGABw+fBjnnXceSktLAXT8o+bzzz8HADidTjz44IM477zzcPXVV+PAgQM9aqmrq8NPfvITXHjhhbjiiivwyiuv9PWfmohoQBiqiYgC4K9//Sv27duHd999F++99x4OHDiAZ599FrGxsXjhhRdgNBqxZ88e7NmzB6mpqZDJZPh//+//YceOHXjttdfwxRdf4NVXX+3zfZKSkjBixAjcd9992LJlCxobGwdV78iRI1FUVAQA+PLLL/sdMvfv34+srCx89tlnuPPOO/v1GrlcjiuvvBK7d+8+5ZjH48Edd9yBiy++GJ9//jl+85vf4Je//CWOHz+Oc845B9///vfxwAMPwOl04r777sM999yD3NzcU67z9NNPo6KiAh988AH+8Y9/4J133uk+5vf7ceedd2LcuHH49NNP8fLLL+Pll1/Gtm3b+lU/EVF/MFQTEQXA+vXrsXz5chgMBuj1eixfvhzvvffeGc+fNGkSpkyZAoVCgczMTCxZsgRffvlln+8jCAJeeeUVZGRk4LHHHsOMGTNw/fXXo7y8PICf5syMRiNuvPFGKBQKxMTEDOh1ra2tpzy/b98+2O123H777VCpVJg+fTouv/zy7n7pu+++GzabDYsWLYLRaMT1119/2uu///77uOOOO5CYmAiTyYQbb7yx+9iBAwdgsVhw9913Q6VSISsrC4sXL8aGDRsG+OmJiM6MPdVERAFQX1+P9PT07sfp6emor68/4/llZWV47LHHcPDgQTgcDvh8PkycOLFf75WWloYVK1YAAMxmMx566CE88MADeP3114f2Ifr53oNRV1cHnU53yvP19fVIS0uDTPbtGk96ejrq6uoAdLSQXHPNNfjd736HBx98EIIgnPb69fX1MJlMPa7Rpbq6GvX19d0tMgDg8/l6PCYiGiquVBMRBYDRaERNTU33Y7PZ3H1T3umC4KpVqzBq1Chs2rQJX3/9Ne69995B3WxoMplw/fXX4+jRowAAjUYDp9PZfbyhoaHf14qNjQWAXl9/plDbG7/fj48++ui0IdZoNKK2thZ+v7/7ObPZjNTUVAAdYfzpp5/Gtddei8cee+yMfecpKSndvddd1+hiMpmQmZmJ3bt3d//Ys2cPXnjhhQF/FiKiM2GoJiIKgHnz5uGvf/0rLBYLLBYLnnnmGcyfPx8AYDAY0NLSAqvV2n1+e3s74uLiEBcXh9LSUvznP//p1/u0trbiqaeewokTJ+D3+2GxWPDWW29hypQpAIDx48fj2LFjOHToEFwuV583E55Mr9cjNTUV7777Lnw+H958801UVlb2/z/Cd3i9XpSWluLnP/85GhsbcfPNN59yzuTJkxETE4O///3v8Hg82LlzJ7Zu3Yqrr74aoijiwQcfxHXXXYdHH30URqMRf/7zn0/7XldddRWef/55tLa2ora2Fv/61796vEdcXByef/55OJ1O+Hw+HD16FPv37x/0ZyMi+i6GaiKiALjrrrswadIkLFiwAAsWLMDEiRNx1113AQByc3Mxb948zJo1C9OmTUNdXR0eeOABFBUV4ZxzzsFDDz2Eq6++ul/vo1QqUV1djR/96Ec499xzMX/+fKhUKjz22GMAOm5AXL58OW6++WbMmTMH55577oA+x8MPP4x//OMfuOCCC1BSUtJjLnd/vf/++5g6dSqmTZuGO++8E4mJiXj77be7V59PplKp8Nxzz+HTTz/FhRdeiNWrV+OJJ55Abm4uXnnlFTQ1NeGee+6BIAh49NFH8fbbb5/2hse7774b6enpuPLKK3HLLbegsLCw+5hcLsdzzz2Hw4cP48orr8SFF16I3/zmN7DZbAP+bEREZyKIg/l+IxERERERdeNKNRERERHREDFUExERERENEUM1EREREdEQMVQTEREREQ0RQzURERER0RAxVBMRERERDRFDNRERERHREDFUExERERENEUM1EREREdEQ/X85gMuG+0Ll3QAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" } ], "source": [ - "result_cfrl = cfrl_explainer.explain(X=scaler.transform(x), Y_t=np.array([1]))\n", "cfrl = scaler.inverse_transform(result_cfrl.data['cf']['X'])\n", - "compare_instances(cfrl, x)\n", - "plot_cf_and_feature_dist(x, cfrl, feature='total sulfur dioxide')" + "compare_instances(cfrl, x)" ] }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 25, "id": "ce1c7e49-c6dc-41c5-9214-d33f42569231", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "176eaefda22b46258288df79e157dbf0", + "model_id": "1ea3785ba4d44d89bc55e41ac24d4180", "version_major": 2, "version_minor": 0 }, @@ -1034,7 +986,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "6f51cd0ddf3748e09d5cafaff0f2b1ba", + "model_id": "f844e8f099624c1f875db5276013d33b", "version_major": 2, "version_minor": 0 }, @@ -1093,17 +1045,25 @@ "print(result_cfrl.shap_values[0].sum())" ] }, + { + "cell_type": "markdown", + "id": "9223ff2e-66c7-40a0-ba8a-7655ef7650ca", + "metadata": {}, + "source": [ + "### Counterfactual Instances" + ] + }, { "cell_type": "markdown", "id": "6d142f8a-c97f-4965-8b76-840b0aed5164", "metadata": {}, "source": [ - "## Set up tfv1" + "First we need to revert to using tfv1" ] }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 26, "id": "4fc13edf-3e05-4a7f-b5d6-f822923df98d", "metadata": {}, "outputs": [ @@ -1124,7 +1084,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 27, "id": "38105a7b-b86e-4720-9015-e7838ed82e0c", "metadata": {}, "outputs": [ @@ -1144,18 +1104,10 @@ "ae = load_ae_model()" ] }, - { - "cell_type": "markdown", - "id": "9223ff2e-66c7-40a0-ba8a-7655ef7650ca", - "metadata": {}, - "source": [ - "## Counterfactual Instances" - ] - }, { "cell_type": "code", - "execution_count": 29, - "id": "80adef85-5100-489f-a5d6-888e9e932677", + "execution_count": 28, + "id": "33cf22f1-0adb-4cfb-b258-aadcab34c46e", "metadata": {}, "outputs": [ { @@ -1172,21 +1124,35 @@ "text": [ "`Model.state_updates` will be removed in a future version. This property should not be used in TensorFlow 2.0, as `updates` are applied automatically.\n" ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Instance class prediction: 0\n", + "Counterfactual class prediction: 1\n" + ] } ], "source": [ "from alibi.explainers import Counterfactual\n", "\n", "explainer = Counterfactual(\n", - " model, shape=(1,) + X_train.shape[1:], target_proba=0.51, tol=0.01, target_class='other', \n", - " max_iter=1000, lam_init=1e-1, max_lam_steps=10, learning_rate_init=0.1,\n", - " feature_range=(scaler.transform(X_train).min(), scaler.transform(X_train).max())\n", - ")" + " model, # The model to explain\n", + " shape=(1,) + X_train.shape[1:], # The shape of the model input\n", + " target_proba=0.51, # The target class probability\n", + " tol=0.01, # The tolerance for the loss\n", + " target_class='other', # The target class to obtain \n", + ")\n", + "\n", + "result_cf = explainer.explain(scaler.transform(x))\n", + "print(\"Instance class prediction:\", model.predict(scaler.transform(x))[0].argmax())\n", + "print(\"Counterfactual class prediction:\", model.predict(result_cf.data['cf']['X'])[0].argmax())\n" ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 29, "id": "56a4399b-659c-4d60-bd2c-e3c6ca259f28", "metadata": {}, "outputs": [ @@ -1206,36 +1172,23 @@ "sulphates instance: 0.67 counter factual: 0.64 difference: 0.0297857\n", "alcohol instance: 10.5 counter factual: 9.88 difference: 0.6195097\n" ] - }, - { - "data": { - "image/png": "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wN13340LL7wQV1xxBdasWdPXf2oiogFhqCYiCoK//OUv2Lt3L95++22888472L9/P5599lnEx8fjhRdegNFoxJ49e7Bnzx6kp6dDJpPh//2//4cdO3bglVdewWeffYZ///vffb5PSkoKRowYgXvvvRdbtmxBc3PzoOodOXIkSkpKAACff/55v0Pmvn37kJOTg08++QR33HFHv14jl8tx5ZVXYvfu3acc83q9uP3223HxxRfj008/xa9+9Sv8/Oc/x7Fjx3DOOefgu9/9Lu6//364XC7ce++9uOeee5Cfn3/Kdf785z+jqqoK7733Hv7+97/jrbfe6j4WCARwxx13YNy4cfj444/x8ssv4+WXX8a2bdv6VT8RUX8wVBMRBcH69euxYsUKGAwG6PV6rFixAu+8884Zz580aRLOPvtsKBQKZGdnY+nSpfj888/7fB9BELBmzRpkZWXhsccew4wZM3DdddehsrIyiJ/mzIxGI2644QYoFArExcUN6HWtra2nPL937144HA7cdtttUKlUmD59Oi6//PLufum77roL7e3tWLx4MYxGI6677rrTXv/dd9/F7bffjuTkZJhMJtxwww3dx/bv3w+LxYK77roLKpUKOTk5WLJkCTZs2DDAT09EdGbsqSYiCoLGxkZkZmZ2P87MzERjY+MZz6+oqMBjjz2GAwcOwOl0wu/3Y+LEif16r4yMDKxcuRIAYDab8eCDD+L+++/Hq6++OrQP0c/3HoyGhgYkJSWd8nxjYyMyMjIgk32zxpOZmYmGhgYAnS0kV199NX7zm9/ggQcegCAIp71+Y2MjTCZTj2t0qa2tRWNjY3eLDAD4/f4ej4mIhoor1UREQWA0GlFXV9f92Gw2d9+Ud7oguGrVKowaNQqbNm3Cl19+iZ/85CeDutnQZDLhuuuuw5EjRwAAGo0GLper+3hTU1O/rxUfHw8Avb7+TKG2N4FAAB988MFpQ6zRaER9fT0CgUD3c2azGenp6QA6w/if//xnXHPNNXjsscfO2HeelpbW3XvddY0uJpMJ2dnZ2L17d/ePPXv24IUXXhjwZyEiOhOGaiKiIJg/fz7+8pe/wGKxwGKx4JlnnsGCBQsAAAaDATabDXa7vfv8jo4OJCQkICEhAeXl5fjPf/7Tr/dpbW3FU089hePHjyMQCMBiseCNN97A2WefDQAYP348jh49ioMHD8Ltdvd5M+HJ9Ho90tPT8fbbb8Pv9+P1119HdXV1//8jfIvP50N5eTl++tOform5GTfddNMp50yZMgVxcXH429/+Bq/Xi507d2Lr1q2YN28eRFHEAw88gGuvvRaPPvoojEYj/vjHP572va666io8//zzaG1tRX19Pf75z3/2eI+EhAQ8//zzcLlc8Pv9OHLkCPbt2zfoz0ZE9G0M1UREQXDnnXdi0qRJWLhwIRYuXIiJEyfizjvvBADk5+dj/vz5mDVrFqZNm4aGhgbcf//9KCkpwTnnnIMHH3wQ8+bN69f7KJVK1NbW4gc/+AHOPfdcLFiwACqVCo899hiAzhsQV6xYgZtuuglz5szBueeeO6DP8fDDD+Pvf/87LrjgApSVlfWYy91f7777LqZOnYpp06bhjjvuQHJyMt58883u1eeTqVQqPPfcc/j4449x4YUXYvXq1XjiiSeQn5+PNWvWoKWlBffccw8EQcCjjz6KN99887Q3PN51113IzMzElVdeiZtvvhnFxcXdx+RyOZ577jkcOnQIV155JS688EL86le/Qnt7+4A/GxHRmQjiYL7fSERERERE3bhSTUREREQ0RAzVRERERERDxFBNRERERDREDNVEREREREPEUE1ERERENEQM1UREREREQ8RQTUREREQ0RAzVRERERERDxFBNRERERDRE/x/9AnxK6CQJ7gAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" } ], "source": [ - "result_cf = explainer.explain(scaler.transform(x))\n", - "cf = result_cf.data['cf']['X']\n", - "cf = scaler.inverse_transform(cf)\n", - "compare_instances(x, cf)\n", - "plot_cf_and_feature_dist(x, cf, feature='total sulfur dioxide')" + "cf = scaler.inverse_transform(result_cf.data['cf']['X'])\n", + "compare_instances(x, cf)" ] }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 30, "id": "0d7becb3-3006-468a-9b98-1ebd02dc7288", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "8957ddd00a12420a9707111ff52db24e", + "model_id": "6abeffc3bd6e4d51a4dc8021c96f5a19", "version_major": 2, "version_minor": 0 }, @@ -1249,7 +1202,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "321d7e11455d4fb8a6608aeeed92066e", + "model_id": "3cd5592c61c049238293c7a0467a3151", "version_major": 2, "version_minor": 0 }, @@ -1267,7 +1220,7 @@ "
    )" ] }, - "execution_count": 31, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" }, @@ -1306,9 +1259,7 @@ "result_cf = explainer.explain(cf)\n", "\n", "plot_importance(result_x.shap_values[0], features, 0)\n", - "# print(result_x.shap_values[0].sum())\n", - "plot_importance(result_cf.shap_values[0], features, 0)\n", - "# print(result_cf.shap_values[0].sum())" + "plot_importance(result_cf.shap_values[0], features, 0)" ] }, { @@ -1316,32 +1267,49 @@ "id": "36ad53ba-d63e-4edc-b9d0-bc4ba305a593", "metadata": {}, "source": [ - "## Contrastive Explanations Method" + "### Contrastive Explanations Method" ] }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 31, "id": "7aa6351b-01fd-4f6b-8f05-92f187b2737a", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Instance class prediction: 0\n", + "Counterfactual class prediction: 1\n" + ] + } + ], "source": [ "from alibi.explainers import CEM\n", - "shape = (1,) + X_train.shape[1:]\n", "\n", - "feature_range = (scaler.transform(X_train).min(axis=0).reshape(shape)-.1, # feature range for the perturbed instance\n", - " scaler.transform(X_train).max(axis=0).reshape(shape)+.1) # can be either a float or array of shape (1xfeatures)\n", - "cem = CEM(model, mode='PN', shape=(1,) + X_train.shape[1:], kappa=0.2, beta=0.1, \n", - " feature_range=feature_range, max_iterations=1000, c_init=10, c_steps=10,\n", - " learning_rate_init=1e-2, clip=(-1000, 1000), ae_model=ae)\n", + "cem = CEM(model, # model to explain\n", + " shape=(1,) + X_train.shape[1:], # shape of the model input\n", + " mode='PN', # pertinant negative mode\n", + " kappa=0.2, # Confidence parameter for the attack loss term\n", + " beta=0.1, # Regularization constant for L1 loss term\n", + " ae_model=ae # autoencoder model\n", + ")\n", + "\n", + "cem.fit(\n", + " scaler.transform(X_train), # scaled training data\n", + " no_info_type='median' # non-informative value for each feature\n", + ")\n", + "result_cem = cem.explain(scaler.transform(x), verbose=False)\n", + "cem_cf = result_cem.data['PN']\n", "\n", - "cem.fit(scaler.transform(X_train), no_info_type='median')\n", - "result_cem = cem.explain(scaler.transform(x), verbose=False)" + "print(\"Instance class prediction:\", model.predict(scaler.transform(x))[0].argmax())\n", + "print(\"Counterfactual class prediction:\", model.predict(cem_cf)[0].argmax())\n" ] }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 32, "id": "96abe72c-2e01-402d-b2ed-9b61f208a95b", "metadata": {}, "outputs": [ @@ -1352,44 +1320,33 @@ "fixed acidity instance: 9.2 counter factual: 9.2 difference: 2e-07\n", "volatile acidity instance: 0.36 counter factual: 0.36 difference: -0.0 \n", "citric acid instance: 0.34 counter factual: 0.34 difference: -0.0 \n", - "residual sugar instance: 1.6 counter factual: 1.6 difference: 1e-07\n", - "chlorides instance: 0.062 counter factual: 0.062 difference: 0.0 \n", - "free sulfur dioxide instance: 5.0 counter factual: 5.0 difference: 0.0 \n", + "residual sugar instance: 1.6 counter factual: 1.479 difference: 0.1211611\n", + "chlorides instance: 0.062 counter factual: 0.057 difference: 0.0045941\n", + "free sulfur dioxide instance: 5.0 counter factual: 2.707 difference: 2.2929246\n", "total sulfur dioxide instance: 12.0 counter factual: 12.0 difference: 1.9e-06\n", - "density instance: 0.997 counter factual: 0.997 difference: -0.0 \n", + "density instance: 0.997 counter factual: 0.997 difference: -0.0004602\n", "pH instance: 3.2 counter factual: 3.2 difference: -0.0 \n", - "sulphates instance: 0.67 counter factual: 0.57 difference: 0.100164\n", - "alcohol instance: 10.5 counter factual: 9.688 difference: 0.8119287\n" + "sulphates instance: 0.67 counter factual: 0.549 difference: 0.121454\n", + "alcohol instance: 10.5 counter factual: 9.652 difference: 0.8478804\n" ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAscAAAH0CAYAAADR8ICwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAB0yElEQVR4nO3deXhkZZk3/u85VXVqSSVV2VPZOul0uju90awNCiIg0IgsLiyjuI2AiIjOO++rviMqoo4D7wwujL9RGXXGcRmGUWRAZAdFlL036C2dXrJVqlKVqiS1nzrn/P6oVOimt3RylkrV93NdfWWrPM/d0NDffvo+9yNomqaBiIiIiIggWl0AEREREVGpYDgmIiIiIprBcExERERENIPhmIiIiIhoBsMxEREREdEMhmMiIiIiohkMx0REREREM+xWF6C3WCwJVeXoZjJPavsbqK52QenoMXyv7ftjqK52oaPebfheRERE5UgUBdTWVh3162UXjlVVYzgmU+UzWahO0ZRfd5lsHk6Xwl/jREREBmFbBRERERHRDIZjIiIiIqIZDMdERERERDMYjomIiIiIZjAcExERERHNYDgmIiIiIpph2ii3m2++GcPDwxBFER6PB1/+8pfR19d3yGsURcE3vvENPPfccxAEATfeeCOuuuoqs0okIiIiogpnWji+8847UV1dDQB48skn8Xd/93d44IEHDnnNQw89hMHBQTz++OOIx+O48sorcdZZZ6G9vd2sMomIiIiogpnWVlEMxgCQSCQgCMJhr3nkkUdw1VVXQRRF1NXV4V3vehceffRRs0okIiIiogpn6g15X/rSl/D8889D0zT867/+62FfDwaDaG1tnf04EAhgbGzMzBKJiIiIqIKZGo6/+c1vAgB++9vf4q677sK9996r+x719V7d1yQ6FpvPDQBobKw+zisXzhdOmrYXERFRJTI1HBddeeWV+MpXvoJYLIba2trZzwcCAYyOjmLdunUADj9JnotoNAFV1XStl+hYEpNp+HxujI9PG77XpIl7ERERlSNRFI55mGpKz3EymUQwGJz9+Omnn4bP54Pf7z/kdRs3bsT9998PVVUxMTGBJ598EhdffLEZJRIRERERmXNynE6n8dnPfhbpdBqiKMLn8+EHP/gBBEHADTfcgFtvvRVr167FFVdcgS1btuCiiy4CAHz6059GR0eHGSUS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QnDP5Qvv53IqMnLh11FWLv4ayiOTzSObk5HJzXxPXkFWntuvCRGAQ8vPBnubqhR+zPx7OTjk22f/XWkQoRVOv8VCu44gCBDFN/9QJooCBOGgz9uEws9fFOG2aVjnSsEmFv67EYRCuw8EofDfkjjTBjTz+sM+X2wXAmbeCpCamuA5wSECCyWKAmprj/5guyl/bAgGg2hubobNVvhrNZvNhqamJgSDwUPCcTAYRGtr6+zHgUAAY2NjJ7TXsX6yRqi/6NwT/p63GVAHWaf+nA2m7XXOMZ6uJSIiooXjJHYiIiIiohmmhONAIIBQKARFKbQBKIqCcDiMQCBw2OtGR0dnPw4Gg2hp4a1sRERERGQOU8JxfX09+vr68PDDDwMAHn74YfT19R3SUgEAGzduxP333w9VVTExMYEnn3wSF198sRklEhERERGZd0PewMAAvvjFL2Jqago1NTW48847sXTpUtxwww249dZbsXbtWiiKgjvuuAPPP/88AOCGG27ANddcY0Z5RERERETld300EREREdF88YE8IiIiIqIZDMdERERERDMYjomIiIiIZjAcExERERHNYDgmIiIiIprBcExERERENIPhmGgBNm3ahL/6q7/C5Zdfjssvvxx/+tOfDNlnYGAA5557LkZGRgAA//zP/4y/+Zu/MWQvIiKiSsY5x0TzFI/Hcemll+Kee+7BKaecAkVRkEgk4PP5DNnvt7/9LX75y1/i1ltvxde//nX8+te/htfrNWQvIiKiSmW3ugCixWrz5s3o6enBKaecAgCw2WyGBWMAuPLKK/HCCy/g05/+NH7xi18wGBMRERmAbRVEi0Qul0N/fz+qq6sRjUatLoeIiKgsMRwTzdP69esxMDCATZs2AQAURcHk5KRh+911111YvXo1fvrTn+KrX/0qxsbGDNuLiIioUrHnmGgBXnvtNdx5551IpVIQRRFf+MIX8La3vU33fZ588kl873vfw/333w+n04n7778fDzzwAH72s5/Bbmd3FBERkV4YjomIiIiIZrCtgoiIiIhoBsMxEREREdEMhmMiIiIiohkMx0REREREMxiOiYiIiIhmMBwTES0CH/7wh3H//ffr/loiIjoUwzERkYleeeUVXHvttTj11FNxxhln4Nprr8XWrVutLmvWF7/4RXz729+2ugwiIsvw9gAiIpMkEgncdNNNuP3223HJJZdAlmW88sorkCTJ6tKIiGgGT46JiEyyb98+AMB73vMe2Gw2uFwunH322Vi5ciXuuece/O///b9nXzs8PIwVK1Ygn88fts5vfvMbXHvttbjjjjtw6qmnYuPGjfjLX/5yyGtGRkZw7bXX4uSTT8Zf//VfY2JiYvZrt956K97+9rfj1FNPxYc+9CH09/cDAO677z489NBD+PGPf4yTTz4ZN910EwAgFArhM5/5DM4880ycf/75+NnPfja71tatW/G+970Pp5xyCt72trfhW9/6ln7/wIiILMBwTERkku7ubthsNnzhC1/AH/7wB0xOTs57ra1bt6KzsxMvvPACbr31Vtxyyy2Ix+OzX3/44YfxrW99C3/5y18gyzJ+8pOfzH7tHe94Bx577DH85S9/wapVq2ZD+TXXXIPLLrsMn/jEJ7Bp0yb84Ac/gKqq+NSnPoUVK1bgj3/8I/793/8d//7v/47nnnsOAPDNb34TH/nIR/Daa6/hiSeewCWXXDLvnxMRUSlgOCYiMonX68Uvf/lLCIKAL3/5yzjrrLNw0003IRKJnPBadXV1+OhHPwqHw4F3v/vd6O7uxrPPPjv79fe9733o7u6Gy+XCxo0bsWPHjtmvfeADH4DX64UkSfjMZz6DnTt3Ynp6+oj7bNu2DRMTE7jlllsgSRI6Ojpw9dVX45FHHgEA2O12DA4OYmJiAlVVVVi/fv0J/1yIiEoJe46JiEzU09ODf/iHfwAADAwM4P/8n/+Dv//7v0d3d/cJrdPc3AxBEGY/bm1tRTgcnv24sbFx9n23241UKgUAUBQF3/72t/Hoo49iYmIColg4I4nFYqiurj5sn5GREYTDYZx22mmzn1MUZfbjb37zm/je976HSy65BO3t7bjllltw3nnnndDPhYiolDAcExFZpKenB+973/tw3333YdWqVchkMrNfO95pcigUgqZpswE5GAzi/PPPP+6eDz30EJ566in89Kc/RXt7O6anp3H66adD0zQAOCRwA0AgEEB7ezsef/zxI67X1dWFu+++G6qq4vHHH8ett96KF198ER6P57i1EBGVIrZVEBGZZGBgAD/5yU8wNjYGoBBoH374YZx00kno6+vDyy+/jNHRUUxPT+OHP/zhMdeamJjAz372M8iyjN///vcYGBjAueeee9wakskkJElCbW0t0uk07r777kO+Xl9fj+Hh4dmP161bh6qqKvzoRz9CJpOBoijYvXv37Pi5Bx98cPYEuqamBgBmT6OJiBYj/h+MiMgkXq8XW7ZswVVXXYX169fj6quvxvLly/HFL34Rb3/72/Hud78bl19+Od73vvcdtzVh3bp1OHDgAM4880x85zvfwfe+9z3U1tYet4Yrr7wSra2tOOecc3DppZce1iP8gQ98AHv27MFpp52Gm2++GTabDT/4wQ+wc+dOXHDBBTjzzDNx2223IZFIAACee+45XHrppTj55JPxzW9+E9/+9rfhcrnm/c+IiMhqglb8uzQiIloUfvOb3+D+++/Hr371K6tLISIqOzw5JiIiIiKawXBMRERERDSDbRVERERERDN4ckxERERENIPhmIiIiIhoBsMxEREREdEMhmMiIiIiohkMx0REREREMxiOiYiIiIhm/P+DP6yA9pxuvwAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" } ], "source": [ "cem_cf = result_cem.data['PN']\n", "cem_cf = scaler.inverse_transform(cem_cf)\n", - "compare_instances(x, cem_cf)\n", - "plot_cf_and_feature_dist(x, cem_cf, feature='sulphates')" + "compare_instances(x, cem_cf)" ] }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 33, "id": "298651d6-de8b-405e-a174-a207df37ffe9", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "b8ca4dce45c843d188247428afae0d8f", + "model_id": "984dbc2d6992460dba3e8859f45ff56f", "version_major": 2, "version_minor": 0 }, @@ -1403,7 +1360,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "5a38abe15b624c28b535d7ae351933aa", + "model_id": "613cd1776bd14d78acaf8931b524f18f", "version_major": 2, "version_minor": 0 }, @@ -1415,12 +1372,15 @@ "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.16304971136152735\n", - "-0.12879829250276098\n" - ] + "data": { + "text/plain": [ + "(,\n", + "
    )" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" }, { "data": { @@ -1434,7 +1394,7 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAFECAYAAADlf7JXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABo6UlEQVR4nO3deVxUdfv/8ReoIAoKKEtmluvYrSiuuGAaipK7iOZaLrmn5k6uqeWSkQrulqVZipZZdue+VJaSlqZ3VppL5U64ICggML8//DnfJhaZkU3m/Xw8eNR85nM+57oO28XxOufYGY1GIyIiIiIiYjH7vA5ARERERORRpWJaRERERMRKKqZFRERERKykYlpERERExEoqpkVERERErKRiWkRERETESiqmRURERESsVDivAxDbdf16PKmp+e8256VKORMTE5fXYeQJW83dVvMG283dVvMG5W6Ludtq3pA9udvb2+HmVjzD91VMS55JTTXmy2IayLdx5QZbzd1W8wbbzd1W8wblbotsNW/I+dzV5iEiIiIiYiUV0yIiIiIiVlIxLSIiIiJiJRXTIiIiIiJWUjEtIiIiImIlFdMiIiIiIlZSMS0iIiIiYiUV0yIiIiIiVlIxLSIiIiJiJT0BUQoslxJOFHW07kvcw8Mlm6N5dNhq7raaN9hu7raad9LdlLwOQaRAUTEtBVZRx8K0G/NZXochIpKvbAnrkNchiBQoavMQEREREbGSimkRERERESupmM7nNm3ahMFgID4+PlvXDQ0NJTg4OFvW6t27NyNGjMiWtUREREQeJSqmRURERESspGJaRERERMRKKqbz2JEjRxg8eDD+/v74+vrSoUMHPv/880y3SUhI4M033+TZZ5+levXqBAQEEBYWZno/JSWFiIgImjVrRvXq1WnTpg1btmxJd61vv/2Wdu3a4evrS/fu3Tl16pTZ+3fu3OH111+ncePG+Pj40LlzZ/bv3//wiYuIiIgUALo1Xh67ePEitWvXpnv37jg4OPDjjz8yceJE7O3tadu2bZr5RqORoUOHcuTIEYYOHUr16tW5cuUKhw8fNs0JDw/nnXfeYdiwYfj4+LBjxw7Gjh2LnZ2d2ZqXLl3izTffZMiQITg6OvLmm28yatQotmzZgp2dHQCTJ09mz549jB49mnLlyrFx40YGDRrE6tWrqVu3bs4fIBEREZF8TMV0HmvTpo3p/41GI/Xq1ePKlSts2LAh3WJ6//79fPvttyxZsoTmzZubxjt27AjAjRs3WL16NUOGDGHo0KEANGnShMuXLxMREWG25s2bN1m3bh1PPfWUaf/Dhg3jzJkzVKxYkdOnT/Pf//6X2bNn06lTJ9Na7du3Z+nSpbz77rsPlXupUs4Ptb2IiFjHVh9YA7abu63mDTmfu4rpPHbz5k0iIiLYvXs3V65cISXl3pOpvLy80p1/8OBBXF1dzQrpfzp16hR37twhKCjIbLx169aEhoZy7do13N3dAXj88cdNhTRAxYoVAbhy5QoVK1bk+PHjGI1Gs7Xs7e0JCgrinXfesTrn+2Ji4khNNT70Ohmx5R8cIiKZiY6+ldch5AkPDxebzN1W84bsyd3e3i7TE4AqpvNYaGgoP/30E0OHDqVixYo4Ozuzbt06du/ene78Gzdu4OHhkeF60dHRAJQqVcps/P7rGzdumIppFxfzYrNIkSIAJCYmAnD16lWKFSuGk5NTmrXu3LlDUlISDg4OWU1VREREpMDRBYh5KDExkX379jF8+HB69epFw4YN8fHxwWjM+Gytq6urqWBOz/1C+9q1a2bjMTExpu2zytPTk9u3b3Pnzp00azk5OamQFhEREZunYjoPJSUlkZqaalaUxsXFsWfPngy3adiwITdu3GDv3r3pvl+5cmWcnJzYunWr2fjWrVt56qmnTGels8LHxwc7Ozu2b99uGjMajWzfvp06depkeR0RERGRgkptHnnIxcUFHx8fFi9ejLOzM/b29qxYsQJnZ2fi4uLS3aZx48b4+/szZswYhg0bxn/+8x+io6M5fPgwM2bMwNXVlRdffJFly5ZRuHBhqlevzo4dO/jqq694++23LYqvYsWKtGnThhkzZhAfH88TTzzBxo0bOXPmDNOmTcuOQyAiIiLySFMxncfCwsKYOnUqEyZMwNXVlZ49e5KQkMDatWvTnW9nZ8fixYtZuHAhq1ev5tq1a3h6etKuXTvTnBEjRlCoUCHWrVtHTEwM5cqVY968eWZ3Dsmq119/nbfeeovFixcTGxtLlSpVWLZsmW6LJyIiIgLYGTNr0BXJQblxN492Yz7LsfVFRB5FW8I66M4ONsZW84bcuZuHeqZFRERERKykNg8psBISk9kS1iGvwxARyVeS7qbkdQgiBYqKaSmwbsXewZp/2NE/h9le7raaN9hu7raaN+iBViLZTW0eIiIiIiJWUjEtIiIiImIlFdMiIiIiIlZSz7SIFDguJZwo6mjZjzdb7iO11dxtNW9dgCiSvVRMi0iBU9SxsO4xLpIB3eVIJHupzUNERERExEoqpkVERERErKRiOg9ERUVhMBg4efKkRdtt2rQJg8FAfHz8Q8ewf/9+3n///YdeR0RERMSWqZi2Ud9++y1r1qzJ6zBEREREHmkqpkVERERErKRi2gqnTp2if//+1K9fH19fX5577jk+/PBDAAICApg7d67Z/Ky0ZxgMBt577z1ef/116tevT926dZk5cyZJSUlp5p4/f56+ffvi6+tLUFAQO3bsMHt/37599O3bl4YNG1K7dm26du3K/v37Te9HRESwatUqLly4gMFgwGAwEBoaanr/8OHD9OrVi5o1a+Ln58fkyZOJi4szvR8bG8ukSZPw9/fHx8eHZs2aMXnyZMsOooiIiEgBoFvjWWHw4MFUrFiRefPm4eDgwJkzZ7Klj3nVqlX4+voyb948fv/9d+bPn4+DgwMTJkwwmzd27Fi6du1K//79Wbt2LaNHj2bXrl14e3sD94rtZ599ln79+mFvb8/XX3/NgAEDWLt2LXXq1KFLly6cO3eOqKgoFi1aBIC7uzsAP/zwA3369KFFixaEh4dz/fp1wsLCiI2NJTw8HIDZs2dz5MgRJk6cSOnSpbl06RKHDx9+6PxFREREHjUqpi107do1zp8/z5IlSzAYDAA0bNgwW9YuXrw4CxcuxN7enqZNm5KUlMSyZcsYNGgQrq6upnkvvvgiISEhAFSrVo3GjRuzd+9eunfvDkCvXr1Mc1NTU/Hz8+P333/n448/pk6dOnh7e+Pp6YmDgwO+vr5mMYSFhVGrVi0WLFhgGvPy8qJPnz6cPHmSKlWqcPz4cXr27Enr1q1Nczp0sPy+paVKOVu8TW6x1Yc5gG3nLmIrbPn73FZzt9W8IedzVzFtIVdXVx577DGmTZvGCy+8gJ+fH6VKlcqWtZs3b469/f913rRs2ZIFCxZw6tQp6tWrZxr39/c3/b+bmxvu7u5cvnzZNHb58mXmz5/Pd999R3R0NEajEYDatWtnuv87d+5w9OhRJk+eTHJysmm8Tp06FClShJ9//pkqVapQtWpV3n33Xezt7WnUqBHly5e3Kt+YmDhSU41WbZuTPDxciI6+lddh5ImCkrst/9IQyYqC8H1ujYLyM85Stpo3ZE/u9vZ2mZ4AVM+0hezt7Xn33Xfx8PBg4sSJNG7cmB49enDixImHXvvfRfn91ovo6GizcRcX80LBwcHB1FudmprKkCFDOHLkCCNGjGDNmjV8/PHHPPPMMyQmJma6/9jYWFJSUpg+fTrVqlUzffj4+HD37l0uXboEwNSpU2nRogVLliwhKCiIli1b8t///vehchcRERF5FOnMtBUqVqxIREQEd+/e5fDhw7z11lsMHDiQr7/+GgcHB+7evWs2PzY2NkvrxsTEmL2+du0aAB4eHlmO7Y8//uDEiROsXLmSZ555xjSekJDwwG1dXFyws7Pj5ZdfpmnTpmne9/T0BKBEiRJMnjyZyZMn8+uvv/LOO+8wduxYDAYDlSpVynKsIiIiIo86nZl+CEWKFKFhw4b07duX6OhoYmNj8fb25vTp02bz/nknjczs3r2b1NRU0+sdO3ZQtGhRKleunOWY7p99dnBwMI1duHCBI0eOpIn932eqixUrhq+vL2fPnsXHxyfNh5eXV5r9Va1alfHjx5OamsqZM2eyHKeIiIhIQaAz0xb69ddfefPNN3nuued44okniI2NZeXKlVStWhVXV1cCAwOZOXMmy5Ytw8fHh+3bt/P7779nae34+HhGjhxJly5d+P3331myZAk9e/Y0u/jwQSpUqIC3tzdz585l5MiRxMfHEx4ebjqr/M95f//9N5s2baJy5cq4ublRtmxZxo4dS58+fbC3t6dVq1YUL16cS5cusW/fPkaNGkX58uXp3r07gYGBVK5cGTs7OzZs2ECxYsWoUaOGJYdSRERE5JGnYtpCHh4elCpVimXLlnH16lVKlCiBn58fY8eOBaBr1678+eeffPDBByQlJdGhQweGDBnC1KlTH7h2v379+OuvvxgzZgypqamEhIQwevRoi+JzcHAgIiKCGTNmMGLECLy9vRk8eDDff/+92ePLn3vuOaKiopg3bx7Xrl2jU6dOzJkzh7p16/Lhhx8SHh5uOuNcpkwZmjRpQunSpQHw9fXl008/5fz58xQqVIinn36alStXmm7NJyIiImIr7Iz3b/UgecpgMDBlyhSz29oVdLqbR/5TUHL38HCh3ZjP8joMkXxpS1iHAvF9bo2C8jPOUraaN+huHiIiIiIi+ZraPESkwElITGZLmOUPEhKxBUl3U/I6BJECRcV0PvHbb7/ldQgiBcat2DtY8o96+idQ28vdVvMGPdRIJLupzUNERERExEoqpkVERERErKRiWkRERETESuqZFhHJIS4lnCjqmP9/zNpqD62t5q0LEEWyV/7/KS8i8ogq6lhY97uWfEd3uhHJXmrzEBERERGxktXF9KJFi2jSpAlVq1YlNDQ0O2PKdb1792bEiBFmYxs2bCAgIID//Oc/9O7dO9diOXnyJAaDgaioKNOYwWBg7dq12bqf8+fPYzAY2Lt3b6bz1q5di8FgyNZ9i4iIiBQUVrV5HD9+nIiICEaPHk39+vUpVapUdseVp6Kjo3nttdfo2bMnQUFBlCxZMk/jiYyMpGzZstm6pqenJ5GRkVSoUCFb1xURERGxJVYV02fOnAGgZ8+eODtn/KzyhIQEihYtal1keeiPP/4gJSWFzp07U7Vq1YdaKyUlhZSUFBwcHKxew9fX96FiSI+Dg0OOrCsiIiJiSyxu8wgNDWX8+PEA1KlTx9SSEBUVhcFg4JtvvmHw4MHUqlWLGTNmAHDx4kVGjRpF/fr1qVmzJv379zcV5PclJiby5ptv0rRpU6pXr0779u356quvHhjP8uXLCQwMxMfHh0aNGtG/f3+io6MB2LRpEwaDgfj4eLNtAgICmDt3brrrRURE0LNnTwA6dOiAwWBg06ZNpvxOnjxpNv/fLSKhoaEEBweza9cu2rRpQ40aNTh27FiG8X/44Yc0bdoUX19fBg8ebIr9n9Jr81i7di0tW7akevXqBAYG8v7775ve27p1K1WrVuXAgQOmsfPnz1O7dm3mz59vev3vNo+kpCRmzJhB3bp1qV+/PrNmzSI5OTlNPDdu3GDKlCk0atQIHx8funXrxk8//ZRhjiIiIiIFlcVnpocOHYq3tzdLly5l9erVFC1alEqVKvHzzz8DMGnSJIKDg3nxxRdxdHTkxo0b9OjRA1dXV1577TWcnJxYsWIFffv2Zfv27aYz1yNGjODYsWMMHz6ccuXKsXXrVoYMGcInn3zC008/nW4smzdvZtmyZYwdO5bKlStz48YNDh48yJ07d6w+IF26dMHd3Z0ZM2bw1ltv8cQTT1CuXDlOnTqV5TUuXLjAvHnzGDp0KB4eHhm2aOzatYsZM2bQrVs3WrRowaFDh5g4ceID19+wYQMzZ86kb9+++Pv7ExUVxZw5c0hKSmLgwIE899xz7Ny5k4kTJ7JlyxaKFy/Oq6++StmyZRk2bFiG67711lts3LiRUaNGUbFiRTZu3Mi2bdvM5iQlJdG3b19iY2MZP3487u7urFu3jj59+rBjxw48PDyyfJxEREREHnUWF9PlypWjXLlyAPj4+FC8eHGz94OCgnjllVdMrxcsWMCdO3fYvHkzrq6uANSuXZuAgAA++eQTevbsyYEDB9i3bx8ffPAB9evXB8Df359z586xdOlSwsPD043l2LFj+Pv7m84kA7Rs2dLSlMx4e3tTqVIl4N4Z4SpVqli8xo0bN3j//fcz/CPgvmXLltGkSROmT58OQJMmTbh27RobN27McJvU1FQiIiIIDg42Xfjp7+/PrVu3WL58uemPmKlTp9K2bVtmzZpF1apVOXLkCB9//HGG7SbXr19n/fr1DB8+nH79+pniad26tdm8zz77jFOnTvHFF1/w1FNPAdCoUSOCgoJYtWoVEyZMyNIxEhERESkIsv0+082aNTN7feDAARo1aoSzs7OpZaB48eJUq1aN//3vfwB89913eHh4ULt2bbO2goYNG7Jp06YM9/X000/z8ccfEx4eTrNmzahWrRqFChXK7pQs5uXl9cBCOjk5mRMnTjBlyhSz8cDAwEyL6cuXL3P16lWCgoLMxlu3bs26dev47bffqFGjBq6urrz++usMGjSIIkWKMGzYsEz7v0+ePEliYiLNmzc3jdnb29O8eXPeeecd09iBAweoVq0aZcuWNftc1atXz/T5zKpSpTLut89rtvowB7Dd3G01b7FNtvz1bqu522rekPO5Z3sx/e87e1y/fp2jR4/y5ZdfppnbsGFD05zo6GiqVauWZk5mxXHnzp2Jj48nMjKSxYsX4+rqSrdu3RgxYkSeFtWlS5d+4Jzr16+TkpKS5ng96M4o93uqM9ru5s2bprEGDRpQunRpbty4QdeuXTNd9++//8503X/GffTo0XQ/V/f/xSKrYmLiSE01WrRNbvDwcCE6+lZeh5EnbDX3nMrbln95Sf5mi9/noJ9xtig7cre3t8v0BGC2F9N2dnZmr0uWLElAQABDhw5NM/d+i0jJkiXx8vJi8eLFFu3L3t6ePn360KdPHy5dusSWLVuYP38+3t7edO/eHUdHRwDu3r1rtt0/C86symwtNzc3i9dzc3OjUKFCxMTEmI3/+/W/3e9Jzmi7f97G76233iIlJYXSpUsza9YswsLCMlz3/h8AMTExpnac9PZTsmRJqlevzmuvvZZmjYe5Y4mIiIjIoyjHHyfesGFDtm7dSuXKlTO8TV7Dhg157733KFasGBUrVrRqP4899hgDBw7kk08+4fTp08C9dguA06dPU6dOHQB++ukn4uLiLF7f29vbtNb9s7KXLl3izJkzpt5hSxQuXJinn36a3bt30717d9P4zp07HxiHp6cn27Zto2nTpqbxrVu34uzsbHrASlRUFGvXrmXBggU4OzvTv39/WrZsSatWrdJdt0qVKjg6OrJ7927T5yA1NZXdu3ebzWvYsCHffvstZcqUKXD3FxcRERGxVI4X03369OHzzz/nxRdfpFevXnh5efH3339z6NAh6tSpQ9u2bWncuDH+/v7069ePAQMGUKlSJeLi4vj1119JTExkzJgx6a49depUSpYsSc2aNXFxcSEqKoo//viDcePGAVCjRg28vLx44403GDlyJDdu3OCdd97J9N7YGfH29qZ69eosXLgQJycnUlNTWb58udlZXEsNHjyYl19+mWnTphEYGMihQ4f45ptvMt3G3t6e4cOHM3XqVFxdXWncuDGHDh1i3bp1jB49GkdHR+Lj45k4cSKtW7c29VY///zzvPbaa9SrVw93d/c067q5udG1a1ciIiIoXLgwlSpVYuPGjdy+fdtsXseOHVm/fj29e/emX79+PPHEE9y4cYNjx47h4eFBnz59rD4eIiIiIo+aHC+m3d3diYyMZMGCBcyePZvY2Fg8PT2pXbu26SyqnZ0dixYtYtmyZaxevZpLly5RsmRJqlatmumjvH19fdmwYQORkZEkJiZSrlw5Zs6cSYsWLYB7bQeLFi1i+vTpjBgxgvLly/Paa6+Zim1Lvf3220yePJlx48bh5eXFuHHjWL16tVVrwb2LDadMmcKKFSvYvHkz9evX54033qB///6Zbte1a1cSExNZs2YNH3zwAV5eXoSGhpoK2blz55KYmMjUqVNN20yYMIFvv/2WadOmERERke6648ePJzk5mcWLF2Nvb0/79u3p27cvc+bMMc1xdHRkzZo1LFy4kIiICGJiYnB3d6dGjRoEBARYfSxEREREHkV2RqMx/10BJjZBFyDmP7aae05egNhuzGfZvq7Iw9gS1sEmv89BP+NsUW5cgGjxExBFREREROQeFdMiIiIi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ODZs2EC7du3w8fGhUaNGjBgxglu3bhEaGsr27dv5/vvvzfYH9wr4Hj16ULt2bWrXrk2HDh3YunVrunndP3Z//vkn77//vtmxBli7di0tW7akevXqBAYG8v7775ttHxERgZ+fH4cPH6Zz5874+PhkuC+AX3/9lcGDB1O3bl1q1apFSEgI3377bYbzV61aRefOnalTpw6NGjVi8ODB/PHHH2ZzHpTv7t27CQ4OxtfXl3r16tGlSxe+//77DPe5f/9+AAIDA01jXl5e1K5dm6+//jrD7UQKKp2ZFhHJAcnJyWavCxUqhJ2dHe+88w7z58/npZdeon79+vz8888sXLgQJycnevXqBcDFixepXbs23bt3x8HBgR9//JGJEydib29P27ZtadasGf369WPVqlVERkYC4OzsbHGM7777LnXr1uXNN9/k/sNwR4wYwbFjxxg+fDjlypVj69atDBkyhE8++YSnn346w7UetN2iRYtYsGABf/31F7NnzwbA29sbd3d3ZsyYwVtvvcUTTzxBuXLlshzHkiVLCA8Pp0ePHowbN46EhAT27dvH7du3GTp0KBcvXuTWrVtMmzbNtL+4uDgGDx5M8+bNGTZsGEajkZMnT3Lr1q108/L09CQyMpKXX34ZPz8/evfubTrWGzZsYObMmfTt2xd/f3+ioqKYM2cOSUlJDBw40LRGQkICoaGhvPTSSzz11FMZtoicPn2a7t27U758eaZPn46rqyv/+9//uHTpUobH/fLly/Tq1YsyZcoQFxfH+vXr6datGzt27MDFxeWB+f7555+MHDmS3r17M27cOJKSkvjf//7HzZs3M9znmTNn8Pb2pnjx4mbjFStWzLQIFymwrH4QuYiIpBEeHm6sUqVKmo9vv/3WeOvWLaOvr68xIiLCbJsFCxYYGzVqZExOTk6zXmpqqvHu3bvGKVOmGHv37m0a/+CDD4xVqlRJM3/ChAnGTp06mY399ddfxipVqhj37NljGqtSpYqxY8eOZvO+++47Y5UqVYxRUVFm4z169DAOHz48w5yzul16sR08eNBYpUoV42+//WbRejdv3jTWqFHDOGvWrAzjGj58uLFXr15mY8eOHTNWqVLFeOvWrQy3S8+zzz5rnDNnjul1SkqK0d/f3xgaGmo2b9q0acbatWsbExISjEbj/3097Ny584H7GDVqlLFJkybGO3fupPt+esfqn5KTk4137twx+vr6Gj/99FOj0fjgfLdu3WqsX7/+A2P7p0mTJhnbt2+fZvztt982Nm7c2KK1RAoCtXmIiGQzFxcXPv74Y7OPGjVqcOTIEW7fvk1QUBDJycmmjwYNGvD3339z+fJlAG7evMnrr7/Os88+S7Vq1ahWrRqRkZGcO3cuW+N85plnzF5/9913eHh4ULt2bbP4GjZsyP/+978M17F2u4dZ78iRIyQkJFh8cWG5cuUoVqwYY8eOZdeuXcTGxlocH9w7I3z16lWCgoLMxlu3bk1cXBy//fabaczOzi7NsU7PwYMHad26tUW960ePHqVv3774+fnxn//8h5o1a3L79m3Onj0LPDjfKlWqcOvWLSZMmMD+/fu5fft2lvctIveozUNEJJsVKlQIHx+fNOPXr18HoE2bNulud+nSJR5//HFCQ0P56aefGDp0KBUrVsTZ2Zl169axe/fubI2zdOnSaeKLjo6mWrVqaeYWKlQow3Ws3e5h1rtx4wYAHh4eFq1dsmRJ3nvvPSIiInjllVcwGo00btyYKVOm8MQTT2R5nejoaABKlSplNn7/9T/bJEqWLImDg8MD17xx44ZF+Vy8eJF+/fpRo0YNpk+fjqenJ0WKFGHQoEEkJSWZ9p1ZvhUqVGDJkiWsWLGCgQMHUrhwYQIDA5k0aRLu7u7p7rdEiRLptsXExsZm691YRB4VKqZFRHLJ/UJj+fLlaYowgPLly5OYmMi+ffuYOnUq3bt3N7330UcfZWkfDg4O3L1712wso7OvdnZ2aeLz8vJi8eLFWdrXw273MOu5uroC94rajIq+jPj6+vLuu++SkJDAd999x5w5cxgzZgwbNmzI8hr3i96YmBiz8fuvrSkqXV1dTUV6VnzzzTckJCSwZMkSihUrBtzr1f93v/OD8m3WrBnNmjXj1q1b7Nu3j1mzZjFz5kzmz5+f7n4rVKjA5cuXuX37tmm/cK+XukKFCpamLfLIUzEtIpJLatWqRdGiRbl69SrNmjVLd86tW7dITU01O5MZFxfHnj17zOYVKVIEuHfXi3/eZs3b25sLFy6Yjd+/+8KDNGzYkPfee49ixYpRsWLFLOdl7XYPs979Y7l582YmTJiQ7pwiRYqQmJiY4X6KFi1KQEAAp06dYvny5RbF6O3tjaenJ9u2baNp06am8a1bt+Ls7IzBYLBoPbiX99atWxk1alSWbp2XkJCAvb09hQv/36/yrVu3prn49b4H5evi4kK7du04dOgQR44cyXC//v7+AOzcuZMOHToAcOXKFX744QfTxZ4itkTFtIhILilRogQvv/wyb7zxBhcuXKBevXqkpqZy7tw5oqKiWLx4MS4uLvj4+LB48WKcnZ2xt7dnxYoVODs7ExcXZ1rr/hnA1atX06BBA5ydnalQoQItWrQgPDycSZMmERwczIkTJ/jkk0+yFF/jxo3x9/enX79+DBgwgEqVKhEXF8evv/5KYmIiY8aMydbtHiaOEiVKMHToUObPn8/du3d55plnSEpK4quvvuLll1/Gy8uL8uXLs3v3bnbt2oWXlxeenp788ssvfPLJJzRv3pwyZcpw5coVIiMjadCggUUx2tvbM3z4cKZOnYqrqyuNGzfm0KFDrFu3jtGjR1t1H+lhw4YREhJCz5496devH66urpw4cQJXV1dCQkLSzG/QoAEpKSm8+uqrhISEcOrUKVatWkWJEiVMc/bt25dpvuvXr+fo0aM0adIET09Pzp07x7Zt20xFcnq8vb0JCQlh1qxZGI1G3N3dWbRoEWXKlKF9+/YW5y3yqFMxLSKSiwYMGICnpyerV6/mvffew9HRkaeeeorWrVub5oSFhTF16lQmTJiAq6srPXv2JCEhgbVr15rm1K1bl/79+7NmzRrefvtt6tWrxwcffECVKlWYNWsWS5YsYefOnTRo0IDZs2ebtYxkxM7OjkWLFrFs2TJWr17NpUuXKFmyJFWrVs30Md/Wbvew6w0aNIiSJUuyZs0a1q9fT8mSJalbt67plm09evTgl19+YeLEidy8eZOXX36ZNm3aYGdnx/z584mJicHd3Z1mzZoxevRoi+Ps2rUriYmJrFmzhg8++AAvLy9CQ0OtfnR8hQoV+OijjwgLC2PSpEkAVKpUKcPYDAYDs2fPZtGiRezcuZOqVauycOFCRo0aZZpTrly5TPM1GAzs2bOH2bNnc/PmTTw8POjSpQsjR47MNNbJkyfj5OTEnDlzSEhIoF69eoSFhT3SD6MRsZad0fj/by4qIiIiIiIW0a3xRERERESspGJaRERERMRKKqZFRERERKykYlpERERExEoqpkVERERErKRiWkRERETESiqmRURERESspGJaRERERMRKKqZFRERERKz0/wDBXlt7E3lHUQAAAABJRU5ErkJggg==\n", + "image/png": "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ypV1lCfrKVfW0wddidhGbR4iIiIiIjZSMS0iIiIiYiMV0yIiIiIiNlLPtEgx51LWCUeHovOlrr5N6yhP1lOurKMbEEVsU3R+woqITRwdSup52yJyS3r6kYht1OYhIiIiImIjFdMiIiIiIjZSMV0I4uLiMBqNHDlyJF/7bdy4EaPRyJUrV247hq+//pp33nnnttcRERERuZ+pmL5PffPNN6xevbqwwxAREREp0lRMi4iIiIjYSMW0DY4ePcqAAQNo1KgRvr6+PPnkk7z33nsABAUFMXfuXIv51rRnGI1G3n77bV5++WUaNWpEgwYNmDlzJunp6dnmnjx5kn79+uHr60tISAjbtm2z2L5792769etHQEAAfn5+dO/ena+//tq8PTo6mpUrV3Lq1CmMRiNGo5GIiAjz9u+//57evXtTt25d/P39mTx5MsnJyebtSUlJTJo0icDAQHx8fGjRogWTJ0/OXxJFREREigE9Gs8GQ4YMoVq1asybNw97e3uOHz9eIH3MK1euxNfXl3nz5vH7778zf/587O3tmTBhgsW8sWPH0r17dwYMGMCaNWsYPXo0O3bswNvbG7hebD/xxBP0798fg8HAl19+ycCBA1mzZg3169enW7dunDhxgri4OBYuXAiAu7s7AD/88AN9+/alVatWREVFceHCBSIjI0lKSiIqKgqA2bNns3//fiZOnEiFChWIj4/n+++/v+3zFxERESlqVEzn0/nz5zl58iSLFy/GaDQCEBAQUCBrlylThgULFmAwGGjevDnp6eksXbqUwYMH4+rqap737LPPEhYWBkCtWrVo2rQpu3btomfPngD07t3bPDcrKwt/f39+//13PvzwQ+rXr4+3tzeenp7Y29vj6+trEUNkZCT16tXjjTfeMI95eXnRt29fjhw5Qo0aNTh06BC9evWibdu25jmdOuX/+aTlyzvne5+iSh8aISJFgb5XWUd5st79kCsV0/nk6urKAw88wLRp03jmmWfw9/enfPnyBbJ2y5YtMRj+r/OmdevWvPHGGxw9epSGDRuaxwMDA81/d3Nzw93dnTNnzpjHzpw5w/z58/n2229JSEjAZDIB4Ofnl+fxU1JSOHDgAJMnTyYjI8M8Xr9+fUqVKsXPP/9MjRo1qFmzJm+99RYGg4EmTZpQpUoVm843MTGZrCyTTfsWJR4eLiQkXC7U44uIWKMw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0dyOk9NxypUrR+3atXnppZeyrXE7TywRERERKYru+MeJBwQEsHnzZh599NFcH5MXEBDA22+/TenSpalWrZpNx3nggQcYNGgQGzZs4NixY8D1dguAY8eOUb9+fQB++uknkpOT872+t7e3ea0bV2Xj4+M5fvy4uXc4P0qWLMljjz3Gzp076dmzp3l8+/btt4zD09OTLVu20Lx5c/P45s2bcXZ2Nn/ASlxcHGvWrOGNN97A2dmZAQMG0Lp1a9q0aZPjujVq1MDBwYGdO3ea/x9kZWWxc+dOi3kBAQF88803VKxYsdg9X1xEREQkv+54Md23b18++eQTnn32WXr37o2Xlxf//PMP+/bto379+rRv356mTZsSGBhI//79GThwINWrVyc5OZlff/2VtLQ0xowZk+PaU6dOpVy5ctStWxcXFxfi4uL4888/GTduHAB16tTBy8uLV155hZEjR3Lx4kXefPPNPJ+NnRtvb29q167NggULcHJyIisri2XLlllcxc2vIUOG8PzzzzNt2jSCg4PZt28fX331VZ77GAwGhg8fztSpU3F1daVp06bs27ePtWvXMnr0aBwcHLhy5QoTJ06kbdu25t7qp556ipdeeomGDRvi7u6ebV03Nze6d+9OdHQ0JUuWpHr16qxfv56rV69azOvcuTMffPABffr0oX///jz00ENcvHiRgwcP4uHhQd++fW3Oh4iIiEhRc8eLaXd3d2JiYnjjjTeYPXs2SUlJeHp64ufnZ76Kamdnx8KFC1m6dCmrVq0iPj6ecuXKUbNmzTw/ytvX15d169YRExNDWloalStXZubMmbRq1Qq43nawcOFCpk+fzogRI6hSpQovvfSSudjOr9dff53Jkyczbtw4vLy8GDduHKtWrbJpLbh+s+GUKVNYvnw5sbGxNGrUiFdeeYUBAwbkuV/37t1JS0tj9erVvPvuu3h5eREREWEuZOfOnUtaWhpTp0417zNhwgS++eYbpk2bRnR0dI7rjh8/noyMDBYtWoTBYKBjx47069ePOXPmmOc4ODiwevVqFixYQHR0NImJibi7u1OnTh2CgoJszoWIiIhIUWRnMpmK/x1gck/SDYhys4K+AbHDmI8LZC2R+8GmyE76XmUFfU+3XnHJ1a1uQMz3JyCKiIiIiMh1KqZFRERERGx0x3umRUQKQ2paBpsiOxV2GCJFRvq1zMIO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devWNW/r1q3bXTmvO6EgcnWrfCxatIhWrVrRqlUrFi1adEfP504qiFzt2LGD0NBQ2rdvT7t27Vi5cqV5n40bN9KgQQNzHocNG3bHz6kg/fHHHzz11FO0adOGp556ihMnTmSbk5mZyfTp02nVqhXBwcGsX7/+trcVRbebq0WLFtGuXTs6dOhAaGgoX331lXlbREQEjz/+uPl9tGTJkrtxSnfE7eYpOjqagIAAcy6mT59u3pafr+d7lklE8i06Oto0adIkk8lkMv3xxx+mJk2amJKTk7PNS0pKMu3bt8+0a9cuU5cuXSy2/fXXX6ZmzZqZEhMTTZmZmab+/fubPvroo1tuK0qszZO155uenm5q3Lix6eDBgyaTyWT67rvvsuW1qCqIXOWVj71795rat29vSklJMaWkpJjat29v2rt37x07nzupIHJ14MAB05kzZ0wm0/Wv01atWpn27dtnMplMpg0bNpiGDx9+d07mDujTp48pNjbWZDKZTLGxsaY+ffpkm/PRRx+Z+vfvb8rMzDQlJiaamjVrZvr7779va1tRdLu5+vLLL01Xr141mUwm0y+//GKqX7++KSUlxWQymUwTJkwwvfvuu3fpTO6s281TVFSUac6cOTmube3X871MV6ZFbLB582aeeuopAB555BFq167Nl19+mW2ei4sLDRo0wMnJKdu2rVu30qpVK9zd3TEYDHTr1o3PPvvsltuKEmvzZO357tq1Cw8PD3x8fO547HdbQefqZp999hmdO3fG0dERR0dHOnfuXCTfU1Awuapbty5eXl7A9a/TatWqcerUqbt3EndIYmIihw8fpn379gC0b9+ew4cPc/78eYt5n332Gd26dcNgMODu7k6rVq3YsmXLbW0ragoiV82aNTN/fzcajZhMJi5evHhXz+NOK4g85cXar+d7mYppERucPn2aBx980Pz6gQce4MyZM/laIz4+nooVK5pfV6xYkfj4+FtuK0qszZO157thw4Zs7TInTpygS5cudOvWjY8++qgAo7+7CipXueXj5v0eeOCBIvmegoJ/Xx07dowDBw7QuHFj89jevXvp1KkTvXr1Yvfu3QV7AndQfHw8Xl5elChRAoASJUrg6emZ7bxzej/cyKGt24qagsjVv8XGxlK5cmW8vb3NY2+//TYdOnQgPDycY8eO3aEzubMKKk///e9/6dChA/3792f/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\n", "text/plain": [ "
    " ] @@ -1457,9 +1417,7 @@ "result_cem_cf = explainer.explain(cem_cf)\n", "\n", "plot_importance(result_x.shap_values[0], features, 0)\n", - "print(result_x.shap_values[0].sum())\n", - "plot_importance(result_cem_cf.shap_values[0], features, 0)\n", - "print(result_cem_cf.shap_values[0].sum())" + "plot_importance(result_cem_cf.shap_values[0], features, 0)" ] }, { @@ -1467,20 +1425,21 @@ "id": "07f58f8b-944a-4a5d-8d74-fc2fce4b0f6d", "metadata": {}, "source": [ - "## Counterfactual With Prototypes" + "### Counterfactual With Prototypes" ] }, { "cell_type": "code", - "execution_count": 35, - "id": "a556375d-bd5d-475a-9e1c-e71f66f23ecd", + "execution_count": 36, + "id": "d7a63b6f-58a1-4fc0-9aa6-528507158eb0", "metadata": {}, "outputs": [ { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "`Model.state_updates` will be removed in a future version. This property should not be used in TensorFlow 2.0, as `updates` are applied automatically.\n" + "Instance class prediction: 0\n", + "Counterfactual class prediction: 1\n" ] } ], @@ -1488,29 +1447,19 @@ "from alibi.explainers import CounterfactualProto\n", "\n", "explainer = CounterfactualProto(\n", - " model,\n", - " shape=shape,\n", - " ae_model=ae,\n", - " enc_model=ae.encoder,\n", - " max_iterations=500,\n", - " feature_range=feature_range,\n", - " c_init=1., \n", - " c_steps=4,\n", - " eps=(1e-2, 1e-2), \n", - " update_num_grad=100\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "a6e5ff2b-0fab-4fcd-9b52-f454bd68acf6", - "metadata": {}, - "outputs": [], - "source": [ - "explainer.fit(scaler.transform(X_train))\n", - "result_proto = explainer.explain(scaler.transform(x), Y=None, target_class=None, k=20, k_type='mean',\n", - " threshold=0., verbose=False, print_every=100, log_every=100)" + " model, # The model to explain\n", + " shape=(1,) + X_train.shape[1:], # shape of the model input\n", + " ae_model=ae, # The autoencoder\n", + " enc_model=ae.encoder # The encoder\n", + ")\n", + "\n", + "explainer.fit(scaler.transform(X_train)) # Fit the explainer with scaled data\n", + "\n", + "result_proto = explainer.explain(scaler.transform(x), verbose=False)\n", + "\n", + "proto_cf = result_proto.data['cf']['X']\n", + "print(\"Instance class prediction:\", model.predict(scaler.transform(x))[0].argmax())\n", + "print(\"Counterfactual class prediction:\", model.predict(proto_cf)[0].argmax())\n" ] }, { @@ -1532,26 +1481,14 @@ "total sulfur dioxide instance: 12.0 counter factual: 12.0 difference: 1.9e-06\n", "density instance: 0.997 counter factual: 0.997 difference: -0.0 \n", "pH instance: 3.2 counter factual: 3.2 difference: -0.0 \n", - "sulphates instance: 0.67 counter factual: 0.607 difference: 0.0627938\n", - "alcohol instance: 10.5 counter factual: 9.998 difference: 0.5016718\n" + "sulphates instance: 0.67 counter factual: 0.623 difference: 0.0470144\n", + "alcohol instance: 10.5 counter factual: 9.942 difference: 0.558073\n" ] - }, - { - "data": { - "image/png": "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d955qKqqwubNm9VujYiIaNJicCaKQ6Wlpbj77rvxne98B0uXLoXVasXbb7+NmTNnqt0aERHRpKVVuwEiOr6cnBykpqbi5z//OZ5//nmkpKSo3RIREdGkxhVnojgVDofh8/lgtVrhcrnUboeIiGjSY3AmilPvv/8+IpEIHnjgATz66KNob2/H4OCg2m0RERFNWgzORHFo48aN2LNnD37/+9/j+eefhyRJuPrqq7F37161WyMiIpq0BFmWZbWbICIiIiKKd1xxJiIiIiIaBwZnIiIiIqJxYHAmIiIiIhoHBmciIiIionFgcCYiIiIiGgcGZyKiOPDxxx/jggsuOOP3P/LII/j1r38dlc86Ex0dHZg7dy4ikchxn3/66afx3e9+d1yvJSKKVwzORERR8rWvfQ2//OUvj3l848aNOP/88xEOh6NS51//+he+/OUvH/XYE088gfvuuy8qnw+MBN3y8nLs2bNnXK/PycnBrl27oNFoTvu1X/nKV/Diiy+eVb9EREpgcCYiipLrrrsOr776Kv79ePxXX30Vy5cvh1arVamz0yPLMlavXo3U1FSsXr1a7XaIiOIGgzMRUZRcdtllGBgYwPbt28ceGxwcxLvvvouVK1ciGAziv/7rv7B48WIsXrwY//Vf/4VgMHjcz/r973+Pyy67DHPnzsVVV12Ft956CwBQX1+PRx99FLt378bcuXNRVVUFAHjooYfw85///Lif1dXVhW9+85s499xzcckll+Avf/nLSX8f27dvR09PD77//e9j/fr1R/Xo9/vx4x//GBdffDHmz5+PL3/5y/D7/Whra0N5efnYqnpraytuvvlmzJ07F7fddhv6+/vHPuOzr/35z3+O7du344knnsDcuXPxxBNP4PHHH8ePf/zjo3q655578Kc//emkfRMRxRqDMxFRlBiNRlx55ZVHrdK+/vrrKCkpQUVFBZ555hns2bMHa9aswauvvop9+/bhN7/5zXE/Kz8/H88//zx27NiBb3zjG/je976H7u5ulJaW4vHHH8ecOXOwa9euo0L68UiShK9//esoLy/HBx98gD//+c/485//jE2bNp3wPa+88gouvvhiXHnllQCAd999d+y5VatW4cCBA/jHP/6Bbdu24Xvf+x5E8dhvJd/97ncxffp0fPzxx7j33nvxyiuvHLfWd77zHVRVVeGRRx7Brl278Mgjj+C6667D2rVrIUkSAKCvrw9bt27FNddcc9LfKxFRrDE4ExFF0cqVK/Hmm28iEAgAAFavXo3rrrsOAPDaa6/hvvvug81mQ3p6Ou677z68+uqrx/2cK6+8EllZWRBFEVdddRUKCwuxd+/e0+5n37596Ovrwze+8Q3o9Xrk5+fjS1/6EtavX3/c1/t8PrzxxhtYvnw5dDodli5dOvYXAUmS8PLLL+P73/8+srKyoNFoMG/ePOj1+qM+o6OjA/v27cO3vvUt6PV6LFiwAJdccsm4e541axasViu2bt0KAFi/fj0WLlyIjIyM0/79ExFFU2IM3BERJYiqqiqkpaVh48aNmDlzJvbt24df/epXAIDu7m7k5OSMvTYnJwfd3d3H/ZzVq1fjueeeQ3t7OwDA6/UeNe4wXu3t7eju7h4b6QCASCRy1K8/66233oJWqx07lWP58uW47bbb0NfXB1mWEQgEkJ+ff9Ka3d3dSE5OhtlsHnssJycHTqdz3H2Pzouff/75ePXVV3HLLbeM+71ERLHC4ExEFGUrVqzA6tWr0djYiMWLF4+tlGZmZqKjowNTpkwBADidTmRmZh7z/vb2djz88MP405/+hLlz50Kj0WDFihVjzwuCMO5eHA4H8vLysGHDhnG9fvXq1fB6vbj44osBjGwUDIVCeO211/CVr3wFBoMBra2tqKioOOFn2O12DA0Nwev1joXnjo6O0+r72muvxTXXXIPDhw+jvr4el1122bjfS0QUKxzVICKKspUrV2Lr1q345z//iZUrV449fvXVV+OZZ55BX18f+vr68Otf/xrLly8/5v0+nw+CICA9PR0A8PLLL6O2tnbseZvNhq6urhNuLPysWbNmISkpCb///e/h9/sRiURQU1Nz3LGPrq4ubN26Fb/97W+xevVqrF69GmvWrMGdd96JNWvWQBRFfP7z/387d8iqOgCGcfy5nOIHUBA0DkGcQUE3xCYYRbgLFkWM68NiFCyaRDD7DYwmP4CC2HRgMolVEBQ5t8lV4d5duIdj+P9g5d0G79qzl3f7qV6vp8PhoNvtptVq9dJHLBaTaZoaDoe6XC5aLpcPe9LPwuGw9vv9Qy0ajSqdTsvzPJXLZYVCob8+KwB8NYIzAPxn8XhcmUxG5/NZpVLpXnddV6ZpqlKpqFKpKJVKyXXdl/sNw1Cr1VKtVlOhUJDv+8pms/fztm3LMAwVi0VZlvXHXj4+PjQej7XZbFQqlWTbtjqdjk6n08u10+lUyWRSxWJRkUjkftTrdW23W/m+r3a7rUQiIcdxlM/n1e/37x/x/W4wGGi9XsuyLI1Go4cXiGeNRkOz2Uy5XE7dbvder1ar8n3/YdoOAN/px+fzD0cBAHgDi8VCnudpPp//05oHAHwVJs4AgLdzvV41mUzkOA6hGcDbIDgDAN7KbrdTLpfT8XhUs9n87nYA4I5VDQAAACAAJs4AAABAAARnAAAAIACCMwAAABAAwRkAAAAIgOAMAAAABEBwBgAAAAL4BSE/m9sIuRi+AAAAAElFTkSuQmCC\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" } ], "source": [ - "proto_cf = result_proto.data['cf']['X']\n", "proto_cf = scaler.inverse_transform(proto_cf)\n", - "compare_instances(x, proto_cf)\n", - "plot_cf_and_feature_dist(x, proto_cf, feature='volatile acidity')" + "compare_instances(x, proto_cf)" ] }, { @@ -1563,7 +1500,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "efb45278337641baa0aaf8ea013d30a2", + "model_id": "60d193882ceb40f988c5ef634202c491", "version_major": 2, "version_minor": 0 }, @@ -1577,7 +1514,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "3a65dea8fecc42819ef4bd25e537bc6c", + "model_id": "3afe879757dd4d408e77894543964285", "version_major": 2, "version_minor": 0 }, @@ -1593,7 +1530,7 @@ "output_type": "stream", "text": [ "0.16304971136152735\n", - "-0.12879829250276098\n" + "-0.20360063157975683\n" ] }, { @@ -1608,7 +1545,7 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAFECAYAAADlf7JXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABo6UlEQVR4nO3deVxUdfv/8ReoIAoKKEtmluvYrSiuuGAaipK7iOZaLrmn5k6uqeWSkQrulqVZipZZdue+VJaSlqZ3VppL5U64ICggML8//DnfJhaZkU3m/Xw8eNR85nM+57oO28XxOufYGY1GIyIiIiIiYjH7vA5ARERERORRpWJaRERERMRKKqZFRERERKykYlpERERExEoqpkVERERErKRiWkRERETESiqmRURERESsVDivAxDbdf16PKmp+e8256VKORMTE5fXYeQJW83dVvMG283dVvMG5W6Ludtq3pA9udvb2+HmVjzD91VMS55JTTXmy2IayLdx5QZbzd1W8wbbzd1W8wblbotsNW/I+dzV5iEiIiIiYiUV0yIiIiIiVlIxLSIiIiJiJRXTIiIiIiJWUjEtIiIiImIlFdMiIiIiIlZSMS0iIiIiYiUV0yIiIiIiVlIxLSIiIiJiJT0BUQoslxJOFHW07kvcw8Mlm6N5dNhq7raaN9hu7raad9LdlLwOQaRAUTEtBVZRx8K0G/NZXochIpKvbAnrkNchiBQoavMQEREREbGSimkRERERESupmM7nNm3ahMFgID4+PlvXDQ0NJTg4OFvW6t27NyNGjMiWtUREREQeJSqmRURERESspGJaRERERMRKKqbz2JEjRxg8eDD+/v74+vrSoUMHPv/880y3SUhI4M033+TZZ5+levXqBAQEEBYWZno/JSWFiIgImjVrRvXq1WnTpg1btmxJd61vv/2Wdu3a4evrS/fu3Tl16pTZ+3fu3OH111+ncePG+Pj40LlzZ/bv3//wiYuIiIgUALo1Xh67ePEitWvXpnv37jg4OPDjjz8yceJE7O3tadu2bZr5RqORoUOHcuTIEYYOHUr16tW5cuUKhw8fNs0JDw/nnXfeYdiwYfj4+LBjxw7Gjh2LnZ2d2ZqXLl3izTffZMiQITg6OvLmm28yatQotmzZgp2dHQCTJ09mz549jB49mnLlyrFx40YGDRrE6tWrqVu3bs4fIBEREZF8TMV0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76233iIlJYXSpUsza9YswsLCMlz3/h8AMTExpnac9PZTsmRJqlevzmuvvZZmjYe5Y4mIiIjIoyjHHyfesGFDtm7dSuXKlTO8TV7Dhg157733KFasGBUrVrRqP4899hgDBw7kk08+4fTp08C9dguA06dPU6dOHQB++ukn4uLiLF7f29vbtNb9s7KXLl3izJkzpt5hSxQuXJinn36a3bt30717d9P4zp07HxiHp6cn27Zto2nTpqbxrVu34uzsbHrASlRUFGvXrmXBggU4OzvTv39/WrZsSatWrdJdt0qVKjg6OrJ7927T5yA1NZXdu3ebzWvYsCHffvstZcqUKXD3FxcRERGxVI4X03369OHzzz/nxRdfpFevXnh5efH3339z6NAh6tSpQ9u2bWncuDH+/v7069ePAQMGUKlSJeLi4vj1119JTExkzJgx6a49depUSpYsSc2aNXFxcSEqKoo//viDcePGAVCjRg28vLx44403GDlyJDdu3OCdd97J9N7YGfH29qZ69eosXLgQJycnUlNTWb58udlZXEsNHjyYl19+mWnTphEYGMihQ4f45ptvMt3G3t6e4cOHM3XqVFxdXWncuDGHDh1i3bp1jB49GkdHR+Lj45k4cSKtW7c29VY///zzvPbaa9SrVw93d/c067q5udG1a1ciIiIoXLgwlSpVYuPGjdy+fdtsXseOHVm/fj29e/emX79+PPHEE9y4cYNjx47h4eFBnz59rD4eIiIiIo+aHC+m3d3diYyMZMGCBcyePZvY2Fg8PT2pXbu26SyqnZ0dixYtYtmyZaxevZpLly5RsmRJqlatmumjvH19fdmwYQORkZEkJiZSrlw5Zs6cSYsWLYB7bQeLFi1i+vTpjBgxgvLly/Paa6+Zim1Lvf3220yePJlx48bh5eXFuHHjWL16tVVrwb2LDadMmcKKFSvYvHkz9evX54033qB///6Zbte1a1cSExNZs2YNH3zwAV5eXoSGhpoK2blz55KYmMjUqVNN20yYMIFvv/2WadOmERERke6648ePJzk5mcWLF2Nvb0/79u3p27cvc+bMMc1xdHRkzZo1LFy4kIiICGJiYnB3d6dGjRoEBARYfSxEREREHkV2RqMx/10BJjZBFyDmP7aae05egNhuzGfZvq7Iw9gS1sEmv89BP+NsUW5cgGjxExBFREREROQeFdMiIiIi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ODZs2EC7du3w8fGhUaNGjBgxglu3bhEaGsr27dv5/vvvzfYH9wr4Hj16ULt2bWrXrk2HDh3YunVrunndP3Z//vkn77//vtmxBli7di0tW7akevXqBAYG8v7775ttHxERgZ+fH4cPH6Zz5874+PhkuC+AX3/9lcGDB1O3bl1q1apFSEgI3377bYbzV61aRefOnalTpw6NGjVi8ODB/PHHH2ZzHpTv7t27CQ4OxtfXl3r16tGlSxe+//77DPe5f/9+AAIDA01jXl5e1K5dm6+//jrD7UQKKp2ZFhHJAcnJyWavCxUqhJ2dHe+88w7z58/npZdeon79+vz8888sXLgQJycnevXqBcDFixepXbs23bt3x8HBgR9//JGJEydib29P27ZtadasGf369WPVqlVERkYC4OzsbHGM7777LnXr1uXNN9/k/sNwR4wYwbFjxxg+fDjlypVj69atDBkyhE8++YSnn346w7UetN2iRYtYsGABf/31F7NnzwbA29sbd3d3ZsyYwVtvvcUTTzxBuXLlshzHkiVLCA8Pp0ePHowbN46EhAT27dvH7du3GTp0KBcvXuTWrVtMmzbNtL+4uDgGDx5M8+bNGTZsGEajkZMnT3Lr1q108/L09CQyMpKXX34ZPz8/evfubTrWGzZsYObMmfTt2xd/f3+ioqKYM2cOSUlJDBw40LRGQkICoaGhvPTSSzz11FMZtoicPn2a7t27U758eaZPn46rqyv/+9//uHTpUobH/fLly/Tq1YsyZcoQFxfH+vXr6datGzt27MDFxeWB+f7555+MHDmS3r17M27cOJKSkvjf//7HzZs3M9znmTNn8Pb2pnjx4mbjFStWzLQIFymwrH4QuYiIpBEeHm6sUqVKmo9vv/3WeOvWLaOvr68xIiLCbJsFCxYYGzVqZExOTk6zXmpqqvHu3bvGKVOmGHv37m0a/+CDD4xVqlRJM3/ChAnGTp06mY399ddfxipVqhj37NljGqtSpYqxY8eOZvO+++47Y5UqVYxRUVFm4z169DAOHz48w5yzul16sR08eNBYpUoV42+//WbRejdv3jTWqFHDOGvWrAzjGj58uLFXr15mY8eOHTNWqVLFeOvWrQy3S8+zzz5rnDNnjul1SkqK0d/f3xgaGmo2b9q0acbatWsbExISjEbj/3097Ny584H7GDVqlLFJkybGO3fupPt+esfqn5KTk4137twx+vr6Gj/99FOj0fjgfLdu3WqsX7/+A2P7p0mTJhnbt2+fZvztt982Nm7c2KK1RAoCtXmIiGQzFxcXPv74Y7OPGjVqcOTIEW7fvk1QUBDJycmmjwYNGvD3339z+fJlAG7evMnrr7/Os88+S7Vq1ahWrRqRkZGcO3cuW+N85plnzF5/9913eHh4ULt2bbP4GjZsyP/+978M17F2u4dZ78iRIyQkJFh8cWG5cuUoVqwYY8eOZdeuXcTGxlocH9w7I3z16lWCgoLMxlu3bk1cXBy//fabaczOzi7NsU7PwYMHad26tUW960ePHqVv3774+fnxn//8h5o1a3L79m3Onj0LPDjfKlWqcOvWLSZMmMD+/fu5fft2lvctIveozUNEJJsVKlQIHx+fNOPXr18HoE2bNulud+nSJR5//HFCQ0P56aefGDp0KBUrVsTZ2Zl169axe/fubI2zdOnSaeKLjo6mWrVqaeYWKlQow3Ws3e5h1rtx4wYAHh4eFq1dsmRJ3nvvPSIiInjllVcwGo00btyYKVOm8MQTT2R5nejoaABKlSplNn7/9T/bJEqWLImDg8MD17xx44ZF+Vy8eJF+/fpRo0YNpk+fjqenJ0WKFGHQoEEkJSWZ9p1ZvhUqVGDJkiWsWLGCgQMHUrhwYQIDA5k0aRLu7u7p7rdEiRLptsXExsZm691YRB4VKqZFRHLJ/UJj+fLlaYowgPLly5OYmMi+ffuYOnUq3bt3N7330UcfZWkfDg4O3L1712wso7OvdnZ2aeLz8vJi8eLFWdrXw273MOu5uroC94rajIq+jPj6+vLuu++SkJDAd999x5w5cxgzZgwbNmzI8hr3i96YmBiz8fuvrSkqXV1dTUV6VnzzzTckJCSwZMkSihUrBtzr1f93v/OD8m3WrBnNmjXj1q1b7Nu3j1mzZjFz5kzmz5+f7n4rVKjA5cuXuX37tmm/cK+XukKFCpamLfLIUzEtIpJLatWqRdGiRbl69SrNmjVLd86tW7dITU01O5MZFxfHnj17zOYVKVIEuHfXi3/eZs3b25sLFy6Yjd+/+8KDNGzYkPfee49ixYpRsWLFLOdl7XYPs979Y7l582YmTJiQ7pwiRYqQmJiY4X6KFi1KQEAAp06dYvny5RbF6O3tjaenJ9u2baNp06am8a1bt+Ls7IzBYLBoPbiX99atWxk1alSWbp2XkJCAvb09hQv/36/yrVu3prn49b4H5evi4kK7du04dOgQR44cyXC//v7+AOzcuZMOHToAcOXKFX744QfTxZ4itkTFtIhILilRogQvv/wyb7zxBhcuXKBevXqkpqZy7tw5oqKiWLx4MS4uLvj4+LB48WKcnZ2xt7dnxYoVODs7ExcXZ1rr/hnA1atX06BBA5ydnalQoQItWrQgPDycSZMmERwczIkTJ/jkk0+yFF/jxo3x9/enX79+DBgwgEqVKhEXF8evv/5KYmIiY8aMydbtHiaOEiVKMHToUObPn8/du3d55plnSEpK4quvvuLll1/Gy8uL8uXLs3v3bnbt2oWXlxeenp788ssvfPLJJzRv3pwyZcpw5coVIiMjadCggUUx2tvbM3z4cKZOnYqrqyuNGzfm0KFDrFu3jtGjR1t1H+lhw4YREhJCz5496devH66urpw4cQJXV1dCQkLSzG/QoAEpKSm8+uqrhISEcOrUKVatWkWJEiVMc/bt25dpvuvXr+fo0aM0adIET09Pzp07x7Zt20xFcnq8vb0JCQlh1qxZGI1G3N3dWbRoEWXKlKF9+/YW5y3yqFMxLSKSiwYMGICnpyerV6/mvffew9HRkaeeeorWrVub5oSFhTF16lQmTJiAq6srPXv2JCEhgbVr15rm1K1bl/79+7NmzRrefvtt6tWrxwcffECVKlWYNWsWS5YsYefOnTRo0IDZs2ebtYxkxM7OjkWLFrFs2TJWr17NpUuXKFmyJFWrVs30Md/Wbvew6w0aNIiSJUuyZs0a1q9fT8mSJalbt67plm09evTgl19+YeLEidy8eZOXX36ZNm3aYGdnx/z584mJicHd3Z1mzZoxevRoi+Ps2rUriYmJrFmzhg8++AAvLy9CQ0OtfnR8hQoV+OijjwgLC2PSpEkAVKpUKcPYDAYDs2fPZtGiRezcuZOqVauycOFCRo0aZZpTrly5TPM1GAzs2bOH2bNnc/PmTTw8POjSpQsjR47MNNbJkyfj5OTEnDlzSEhIoF69eoSFhT3SD6MRsZad0fj/by4qIiIiIiIW0a3xRERERESspGJaRERERMRKKqZFRERERKykYlpERERExEoqpkVERERErKRiWkRERETESiqmRURERESspGJaRERERMRKKqZFRERERKz0/wDBXlt7E3lHUQAAAABJRU5ErkJggg==\n", + "image/png": "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ypV1lCfrKVfW0wddidhGbR4iIiIiIjZSMS0iIiIiYiMV0yIiIiIiNlLPtEgx51LWCUeHovOlrr5N6yhP1lOurKMbEEVsU3R+woqITRwdSup52yJyS3r6kYht1OYhIiIiImIjFdMiIiIiIjZSMV0I4uLiMBqNHDlyJF/7bdy4EaPRyJUrV247hq+//pp33nnnttcRERERuZ+pmL5PffPNN6xevbqwwxAREREp0lRMi4iIiIjYSMW0DY4ePcqAAQNo1KgRvr6+PPnkk7z33nsABAUFMXfuXIv51rRnGI1G3n77bV5++WUaNWpEgwYNmDlzJunp6dnmnjx5kn79+uHr60tISAjbtm2z2L5792769etHQEAAfn5+dO/ena+//tq8PTo6mpUrV3Lq1CmMRiNGo5GIiAjz9u+//57evXtTt25d/P39mTx5MsnJyebtSUlJTJo0icDAQHx8fGjRogWTJ0/OXxJFREREigE9Gs8GQ4YMoVq1asybNw97e3uOHz9eIH3MK1euxNfXl3nz5vH7778zf/587O3tmTBhgsW8sWPH0r17dwYMGMCaNWsYPXo0O3bswNvbG7hebD/xxBP0798fg8HAl19+ycCBA1mzZg3169enW7dunDhxgri4OBYuXAiAu7s7AD/88AN9+/alVatWREVFceHCBSIjI0lKSiIqKgqA2bNns3//fiZOnEiFChWIj4/n+++/v+3zFxERESlqVEzn0/nz5zl58iSLFy/GaDQCEBAQUCBrlylThgULFmAwGGjevDnp6eksXbqUwYMH4+rqap737LPPEhYWBkCtWrVo2rQpu3btomfPngD07t3bPDcrKwt/f39+//13PvzwQ+rXr4+3tzeenp7Y29vj6+trEUNkZCT16tXjjTfeMI95eXnRt29fjhw5Qo0aNTh06BC9evWibdu25jmdOuX/+aTlyzvne5+iSh8aISJFgb5XWUd5st79kCsV0/nk6urKAw88wLRp03jmmWfw9/enfPnyBbJ2y5YtMRj+r/OmdevWvPHGGxw9epSGDRuaxwMDA81/d3Nzw93dnTNnzpjHzpw5w/z58/n2229JSEjAZDIB4Ofnl+fxU1JSOHDgAJMnTyYjI8M8Xr9+fUqVKsXPP/9MjRo1qFmzJm+99RYGg4EmTZpQpUoVm843MTGZrCyTTfsWJR4eLiQkXC7U44uIWKMw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0dyOk9NxypUrR+3atXnppZeyrXE7TywRERERKYru+MeJBwQEsHnzZh599NFcH5MXEBDA22+/TenSpalWrZpNx3nggQcYNGgQGzZs4NixY8D1dguAY8eOUb9+fQB++uknkpOT872+t7e3ea0bV2Xj4+M5fvy4uXc4P0qWLMljjz3Gzp076dmzp3l8+/btt4zD09OTLVu20Lx5c/P45s2bcXZ2Nn/ASlxcHGvWrOGNN97A2dmZAQMG0Lp1a9q0aZPjujVq1MDBwYGdO3ea/x9kZWWxc+dOi3kBAQF88803VKxYsdg9X1xEREQkv+54Md23b18++eQTnn32WXr37o2Xlxf//PMP+/bto379+rRv356mTZsSGBhI//79GThwINWrVyc5OZlff/2VtLQ0xowZk+PaU6dOpVy5ctStWxcXFxfi4uL4888/GTduHAB16tTBy8uLV155hZEjR3Lx4kXefPPNPJ+NnRtvb29q167NggULcHJyIisri2XLlllcxc2vIUOG8PzzzzNt2jSCg4PZt28fX331VZ77GAwGhg8fztSpU3F1daVp06bs27ePtWvXMnr0aBwcHLhy5QoTJ06kbdu25t7qp556ipdeeomGDRvi7u6ebV03Nze6d+9OdHQ0JUuWpHr16qxfv56rV69azOvcuTMffPABffr0oX///jz00ENcvHiRgwcP4uHhQd++fW3Oh4iIiEhRc8eLaXd3d2JiYnjjjTeYPXs2SUlJeHp64ufnZ76Kamdnx8KFC1m6dCmrVq0iPj6ecuXKUbNmzTw/ytvX15d169YRExNDWloalStXZubMmbRq1Qq43nawcOFCpk+fzogRI6hSpQovvfSSudjOr9dff53Jkyczbtw4vLy8GDduHKtWrbJpLbh+s+GUKVNYvnw5sbGxNGrUiFdeeYUBAwbkuV/37t1JS0tj9erVvPvuu3h5eREREWEuZOfOnUtaWhpTp0417zNhwgS++eYbpk2bRnR0dI7rjh8/noyMDBYtWoTBYKBjx47069ePOXPmmOc4ODiwevVqFixYQHR0NImJibi7u1OnTh2CgoJszoWIiIhIUWRnMpmK/x1gck/SDYhys4K+AbHDmI8LZC2R+8GmyE76XmUFfU+3XnHJ1a1uQMz3JyCKiIiIiMh1KqZFRERERGx0x3umRUQKQ2paBpsiOxV2GCJFRvq1zMIO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devWNW/r1q3bXTmvO6EgcnWrfCxatIhWrVrRqlUrFi1adEfP504qiFzt2LGD0NBQ2rdvT7t27Vi5cqV5n40bN9KgQQNzHocNG3bHz6kg/fHHHzz11FO0adOGp556ihMnTmSbk5mZyfTp02nVqhXBwcGsX7/+trcVRbebq0WLFtGuXTs6dOhAaGgoX331lXlbREQEjz/+uPl9tGTJkrtxSnfE7eYpOjqagIAAcy6mT59u3pafr+d7lklE8i06Oto0adIkk8lkMv3xxx+mJk2amJKTk7PNS0pKMu3bt8+0a9cuU5cuXSy2/fXXX6ZmzZqZEhMTTZmZmab+/fubPvroo1tuK0qszZO155uenm5q3Lix6eDBgyaTyWT67rvvsuW1qCqIXOWVj71795rat29vSklJMaWkpJjat29v2rt37x07nzupIHJ14MAB05kzZ0wm0/Wv01atWpn27dtnMplMpg0bNpiGDx9+d07mDujTp48pNjbWZDKZTLGxsaY+ffpkm/PRRx+Z+vfvb8rMzDQlJiaamjVrZvr7779va1tRdLu5+vLLL01Xr141mUwm0y+//GKqX7++KSUlxWQymUwTJkwwvfvuu3fpTO6s281TVFSUac6cOTmube3X871MV6ZFbLB582aeeuopAB555BFq167Nl19+mW2ei4sLDRo0wMnJKdu2rVu30qpVK9zd3TEYDHTr1o3PPvvsltuKEmvzZO357tq1Cw8PD3x8fO547HdbQefqZp999hmdO3fG0dERR0dHOnfuXCTfU1Awuapbty5eXl7A9a/TatWqcerUqbt3EndIYmIihw8fpn379gC0b9+ew4cPc/78eYt5n332Gd26dcNgMODu7k6rVq3YsmXLbW0ragoiV82aNTN/fzcajZhMJi5evHhXz+NOK4g85cXar+d7mYppERucPn2aBx980Pz6gQce4MyZM/laIz4+nooVK5pfV6xYkfj4+FtuK0qszZO157thw4Zs7TInTpygS5cudOvWjY8++qgAo7+7CipXueXj5v0eeOCBIvmegoJ/Xx07dowDBw7QuHFj89jevXvp1KkTvXr1Yvfu3QV7AndQfHw8Xl5elChRAoASJUrg6emZ7bxzej/cyKGt24qagsjVv8XGxlK5cmW8vb3NY2+//TYdOnQgPDycY8eO3aEzubMKKk///e9/6dChA/3792f/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\n", "text/plain": [ "
    " ] @@ -1636,10 +1573,47 @@ "print(result_proto_cf.shap_values[0].sum())" ] }, + { + "cell_type": "code", + "execution_count": 39, + "id": "20c990ef-808f-4502-9806-6d03c6635a18", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[,\n", + " ,\n", + " ],\n", + " [,\n", + " ,\n", + " ]],\n", + " dtype=object)" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_ale(exp, features=['sulphates', 'alcohol', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide'], line_kw={'label': 'Probability of \"good\" class'})" + ] + }, { "cell_type": "code", "execution_count": null, - "id": "10db15d5-d48c-457f-a561-b4d38d0983ee", + "id": "4e929a28-8f20-4d2a-84a8-30ef5bae9e4e", "metadata": {}, "outputs": [], "source": [] From 37d10902aebed4bb17ef87f95a14bc5a28639fec Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Tue, 14 Dec 2021 21:59:49 +0000 Subject: [PATCH 41/60] Add white-box model lists to explainer summary tables --- doc/source/overview/high_level.md | 42 +++++++++++++++---------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 99c5d63c0..6c67eb348 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -324,9 +324,9 @@ required predictive property. This makes them less interpretable. #### Contrastive Explanation Method (Pertinent Positives) -| Explainer | Scope | Model types | Task types | Data types | Use | -|---------------------|-------|---------------------|----------------|----------------|-------------------------------------------------------------------------------------------------| -| Pertinent Positives | Local | Black-box/White-box | Classification | Tabular, Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | +| Explainer | Scope | Model types | Task types | Data types | Use | +|---------------------|-------|-------------------------------------------|----------------|----------------|-------------------------------------------------------------------------------------------------| +| Pertinent Positives | Local | Black-box/White-box _(Keras, TensorFlow)_ | Classification | Tabular, Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | Introduced by [Amit Dhurandhar, et al](https://arxiv.org/abs/1802.07623), a Pertinent Positive is the subset of features of an instance that still obtains the same classification as that instance. These differ from [anchors](anchors) @@ -429,9 +429,9 @@ ones provided by Alibi ([integrated gradients](integrated-gradients), [Kernel SH #### Integrated Gradients -| Explainer | Scope | Model types | Task types | Data types | Use | -|----------------------|-------|-----------------------|----------------------------|--------------------------------------|------------------------------------------------------------| -| Integrated Gradients | Local | White-box(TensorFlow) | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | +| Explainer | Scope | Model types | Task types | Data types | Use | +|----------------------|-------|---------------------------------|----------------------------|--------------------------------------|------------------------------------------------------------| +| Integrated Gradients | Local | White-box _(keras, TensorFlow)_ | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | The [integrated gradients](https://arxiv.org/abs/1703.01365) (IG) method computes the attribution of each feature by integrating the model partial derivatives along a path from a baseline point to the instance. This accumulates the @@ -559,9 +559,9 @@ using different methods and models in each case. #### Path-dependent tree SHAP -| Explainer | Scope | Model types | Task types | Data types | Use | -|----------------------------|--------|-------------|----------------------------|----------------------|------------------------------------------------------------| -| Tree SHAP (path-dependent) | Local | White-box | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | +| Explainer | Scope | Model types | Task types | Data types | Use | +|----------------------------|--------|-------------------------------------------------------------------------|----------------------------|----------------------|------------------------------------------------------------| +| Tree SHAP (path-dependent) | Local | White-box _(XGBoost, LightGBM, CatBoost, most tree-based scikit-learn)_ | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | Computing the Shapley values for a model requires computing the interventional conditional expectation for each member of the [power set](https://en.wikipedia.org/wiki/Power_set) of instance features. For tree-based models we can @@ -610,9 +610,9 @@ although there are differences due to using different methods and models in each #### Interventional Tree SHAP -| Explainer | Scope | Model types | Task types | Data types | Use | -|----------------------------|-------|-------------|----------------------------|----------------------|------------------------------------------------------------| -| Tree SHAP (interventional) | Local | White-box | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | +| Explainer | Scope | Model types | Task types | Data types | Use | +|----------------------------|-------|-------------------------------------------------------------------------|----------------------------|----------------------|------------------------------------------------------------| +| Tree SHAP (interventional) | Local | White-box _(XGBoost, LightGBM, CatBoost, most tree-based scikit-learn)_ | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | Suppose we sample a reference data point, $r$, from the training dataset. Let $F$ be the set of all features. For each feature, $i$, we then enumerate over all subsets of $S\subset F \setminus \{i\}$. If a subset is missing a feature, we @@ -761,9 +761,9 @@ quick. If you want performant explanations in production environments, then the #### Counterfactual Instances -| Explainer | Scope | Model types | Task types | Data types | Use | -|----------------------------------------------|--------|---------------------|----------------------------|------------------------------------------|-------------------------------------------------------------------------------------------------| -| Counterfactuals Instances | Local | Black-box/White-box | Classification | Tabular, Image | What minimal change to features is required to reclassify the current prediction? | +| Explainer | Scope | Model types | Task types | Data types | Use | +|----------------------------------------------|--------|-------------------------------------------|----------------------------|------------------------------------------|-------------------------------------------------------------------------------------------------| +| Counterfactuals Instances | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular, Image | What minimal change to features is required to reclassify the current prediction? | Let the model be given by $f$, and let $p_t$ be the target probability of class $t$. Let $\lambda$ be a hyperparameter. This method constructs counterfactual instances from an instance $X$ by running gradient descent on a new instance $X'$ @@ -818,9 +818,9 @@ Counterfactual prediction: 1 #### Contrastive Explanation Method (Pertinent Negatives) -| Explainer | Scope | Model types | Task types | Data types | Use | -|----------------------------------------------|--------|---------------------|----------------------------|-------------------------|-----------------------------------------------------------------------------------| -| Contrastive Explanation Method | Local | Black-box/White-box | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | +| Explainer | Scope | Model types | Task types | Data types | Use | +|----------------------------------------------|--------|-------------------------------------------|----------------------------|-------------------------|-----------------------------------------------------------------------------------| +| Contrastive Explanation Method | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | CEM follows a similar approach to the above but includes three new details. Firstly an elastic net $\beta L_{1} + L_{2}$ regularizer term is added to the loss. This term causes the solutions to be both close to the original instance and @@ -905,9 +905,9 @@ gradients in the black-box case due to having to numerically evaluate gradients. #### Counterfactuals Guided by Prototypes -| Explainer | Scope | Model types | Task types | Data types | Use | -|--------------------------------------|-------|---------------------|----------------|-----------------------------|-----------------------------------------------------------------------------------| -| Counterfactuals Guided by Prototypes | Local | Black-box/White-box | Classification | Tabular, Categorical, Image | What minimal change to features is required to reclassify the current prediction? | +| Explainer | Scope | Model types | Task types | Data types | Use | +|--------------------------------------|-------|-------------------------------------------|----------------|-----------------------------|-----------------------------------------------------------------------------------| +| Counterfactuals Guided by Prototypes | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular, Categorical, Image | What minimal change to features is required to reclassify the current prediction? | For this method, we add another term to the loss that optimizes for the distance between the counterfactual instance and representative members of the target class. In doing this, we require interpretability also to mean that the generated From 42ebccc889221fa2adeb7d431ba7365a85d27bba Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Tue, 14 Dec 2021 22:03:11 +0000 Subject: [PATCH 42/60] Minor fix to white box model lists in method summary table --- doc/source/overview/high_level.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 6c67eb348..5cb073ec9 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -559,9 +559,9 @@ using different methods and models in each case. #### Path-dependent tree SHAP -| Explainer | Scope | Model types | Task types | Data types | Use | -|----------------------------|--------|-------------------------------------------------------------------------|----------------------------|----------------------|------------------------------------------------------------| -| Tree SHAP (path-dependent) | Local | White-box _(XGBoost, LightGBM, CatBoost, most tree-based scikit-learn)_ | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | +| Explainer | Scope | Model types | Task types | Data types | Use | +|----------------------------|--------|---------------------------------------------------------------------------------|----------------------------|----------------------|------------------------------------------------------------| +| Tree SHAP (path-dependent) | Local | White-box _(XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models)_ | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | Computing the Shapley values for a model requires computing the interventional conditional expectation for each member of the [power set](https://en.wikipedia.org/wiki/Power_set) of instance features. For tree-based models we can @@ -610,9 +610,9 @@ although there are differences due to using different methods and models in each #### Interventional Tree SHAP -| Explainer | Scope | Model types | Task types | Data types | Use | -|----------------------------|-------|-------------------------------------------------------------------------|----------------------------|----------------------|------------------------------------------------------------| -| Tree SHAP (interventional) | Local | White-box _(XGBoost, LightGBM, CatBoost, most tree-based scikit-learn)_ | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | +| Explainer | Scope | Model types | Task types | Data types | Use | +|----------------------------|-------|---------------------------------------------------------------------------------|----------------------------|----------------------|------------------------------------------------------------| +| Tree SHAP (interventional) | Local | White-box _(XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models)_ | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | Suppose we sample a reference data point, $r$, from the training dataset. Let $F$ be the set of all features. For each feature, $i$, we then enumerate over all subsets of $S\subset F \setminus \{i\}$. If a subset is missing a feature, we From 49f49c191a9caaa3f1764662d789f185dbf7087a Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Tue, 14 Dec 2021 22:57:01 +0000 Subject: [PATCH 43/60] Indicate if method only supports numerical tabular data --- doc/source/overview/high_level.md | 62 +++++++++++++++---------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 5cb073ec9..33d58cb84 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -124,19 +124,19 @@ model performs as desired. Alibi provides several local and global insights with which to explore and understand models. The following gives the practitioner an understanding of which explainers are suitable in which situations. -| Explainer | Scope | Model types | Task types | Data types | Use | -|--------------------------------------------------------------------------------------------|--------|---------------------|----------------------------|------------------------------------------|-------------------------------------------------------------------------------------------------| -| [Accumulated Local Effects](accumulated-local-effects) | Global | Black-box | Classification, Regression | Tabular | How does model prediction vary with respect to features of interest | -| [Anchors](anchors) | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | -| [Pertinent Positives](contrastive-explanation-method-pertinent-positives) | Local | Black-box/White-box | Classification | Tabular, Image | "" | -| [Integrated Gradients](integrated-gradients) | Local | White-box | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | -| [Kernel SHAP](kernel-shap) | Local | Black-box | Classification, Regression | Tabular, Categorical | "" | -| [Tree SHAP (path-dependent)](path-dependent-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | -| [Tree SHAP (interventional)](interventional-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | -| [Counterfactuals Instances](counterfactual-instances) | Local | Black-box/White-box | Classification | Tabular, Image | What minimal change to features is required to reclassify the current prediction? | -| [Contrastive Explanation Method](contrastive-explanation-method-pertinent-negatives) | Local | Black-box/White-box | Classification | Tabular, Image | "" | -| [Counterfactuals Guided by Prototypes](counterfactuals-guided-by-prototypes) | Local | Black-box/White-box | Classification | Tabular, Categorical, Image | "" | -| [counterfactuals-with-reinforcement-learning](counterfactuals-with-reinforcement-learning) | Local | Black-box | Classification | Tabular, Categorical, Image | "" | +| Explainer | Scope | Model types | Task types | Data types | Use | +|--------------------------------------------------------------------------------------------|--------|---------------------|----------------------------|--------------------------------------|-------------------------------------------------------------------------------------------------| +| [Accumulated Local Effects](accumulated-local-effects) | Global | Black-box | Classification, Regression | Tabular(numeric) | How does model prediction vary with respect to features of interest | +| [Anchors](anchors) | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | +| [Pertinent Positives](contrastive-explanation-method-pertinent-positives) | Local | Black-box/White-box | Classification | Tabular(numeric), Image | "" | +| [Integrated Gradients](integrated-gradients) | Local | White-box | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | +| [Kernel SHAP](kernel-shap) | Local | Black-box | Classification, Regression | Tabular, Categorical | "" | +| [Tree SHAP (path-dependent)](path-dependent-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | +| [Tree SHAP (interventional)](interventional-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | +| [Counterfactuals Instances](counterfactual-instances) | Local | Black-box/White-box | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | +| [Contrastive Explanation Method](contrastive-explanation-method-pertinent-negatives) | Local | Black-box/White-box | Classification | Tabular(numeric), Image | "" | +| [Counterfactuals Guided by Prototypes](counterfactuals-guided-by-prototypes) | Local | Black-box/White-box | Classification | Tabular, Categorical, Image | "" | +| [counterfactuals-with-reinforcement-learning](counterfactuals-with-reinforcement-learning) | Local | Black-box | Classification | Tabular, Categorical, Image | "" | ### 1. Global Feature Attribution @@ -324,9 +324,9 @@ required predictive property. This makes them less interpretable. #### Contrastive Explanation Method (Pertinent Positives) -| Explainer | Scope | Model types | Task types | Data types | Use | -|---------------------|-------|-------------------------------------------|----------------|----------------|-------------------------------------------------------------------------------------------------| -| Pertinent Positives | Local | Black-box/White-box _(Keras, TensorFlow)_ | Classification | Tabular, Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | +| Explainer | Scope | Model types | Task types | Data types | Use | +|---------------------|-------|-------------------------------------------|----------------|-------------------------|-------------------------------------------------------------------------------------------------| +| Pertinent Positives | Local | Black-box/White-box _(Keras, TensorFlow)_ | Classification | Tabular(numeric), Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | Introduced by [Amit Dhurandhar, et al](https://arxiv.org/abs/1802.07623), a Pertinent Positive is the subset of features of an instance that still obtains the same classification as that instance. These differ from [anchors](anchors) @@ -761,9 +761,9 @@ quick. If you want performant explanations in production environments, then the #### Counterfactual Instances -| Explainer | Scope | Model types | Task types | Data types | Use | -|----------------------------------------------|--------|-------------------------------------------|----------------------------|------------------------------------------|-------------------------------------------------------------------------------------------------| -| Counterfactuals Instances | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular, Image | What minimal change to features is required to reclassify the current prediction? | +| Explainer | Scope | Model types | Task types | Data types | Use | +|---------------------------|-------|-------------------------------------------|----------------|-------------------------|-----------------------------------------------------------------------------------| +| Counterfactuals Instances | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | Let the model be given by $f$, and let $p_t$ be the target probability of class $t$. Let $\lambda$ be a hyperparameter. This method constructs counterfactual instances from an instance $X$ by running gradient descent on a new instance $X'$ @@ -818,9 +818,9 @@ Counterfactual prediction: 1 #### Contrastive Explanation Method (Pertinent Negatives) -| Explainer | Scope | Model types | Task types | Data types | Use | -|----------------------------------------------|--------|-------------------------------------------|----------------------------|-------------------------|-----------------------------------------------------------------------------------| -| Contrastive Explanation Method | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | +| Explainer | Scope | Model types | Task types | Data types | Use | +|--------------------------------|-------|-------------------------------------------|----------------|-------------------------|-----------------------------------------------------------------------------------| +| Contrastive Explanation Method | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | CEM follows a similar approach to the above but includes three new details. Firstly an elastic net $\beta L_{1} + L_{2}$ regularizer term is added to the loss. This term causes the solutions to be both close to the original instance and @@ -964,9 +964,9 @@ Counterfactual prediction: 1 #### Counterfactuals with Reinforcement Learning -| Explainer | Scope | Model types | Task types | Data types | Use | -|----------------------------------------------|--------|---------------------|----------------------------|------------------------------------------|-----------------------------------------------------------------------------------| -| counterfactuals-with-reinforcement-learning | Local | Black-box | Classification | Tabular, Categorical, Image | What minimal change to features is required to reclassify the current prediction? | +| Explainer | Scope | Model types | Task types | Data types | Use | +|---------------------------------------------|--------|-------------|----------------|-----------------------------|-----------------------------------------------------------------------------------| +| counterfactuals-with-reinforcement-learning | Local | Black-box | Classification | Tabular, Categorical, Image | What minimal change to features is required to reclassify the current prediction? | This black-box method splits from the approach taken by the above three significantly. Instead of minimizing a loss during the explain method call, it trains a **new model** when **fitting** the explainer called an **actor** that takes @@ -1025,12 +1025,12 @@ Instance prediction: 0 Counterfactual prediction: 1 ``` -| pros | cons | -|------------------------------------------------------------|------------------------------------------| -| Generates more interpretable instances than the CEM method | Longer to fit the model | -| Very fast at runtime | Requires to fit an autoencoder | -| Can be trained to account for arbitrary constraints | Requires access to the training dataset | -| General as is a black-box algorithm | | +| pros | cons | +|------------------------------------------------------------|-----------------------------------------| +| Generates more interpretable instances than the CEM method | Longer to fit the model | +| Very fast at runtime | Requires to fit an autoencoder | +| Can be trained to account for arbitrary constraints | Requires access to the training dataset | +| General as is a black-box algorithm | | (counterfactual-example-results)= From 154633d846e919253ec7d44b0a83c6b67144ffbb Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Tue, 14 Dec 2021 23:37:20 +0000 Subject: [PATCH 44/60] Resize images --- doc/source/overview/high_level.md | 21 ++++++++++++++------ doc/source/overview/images/local-global.png | Bin 52466 -> 52713 bytes 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 33d58cb84..19ce7538e 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -190,6 +190,7 @@ Hence, we see the model predicts higher alcohol content wines as being better: ```{image} images/ale-wine-quality.png :align: center :alt: ALE Plot of wine quality "good" class probability dependency on alcohol +:width: 700px ``` :::{admonition} **Note 2: Categorical Variables and ALE** @@ -234,20 +235,23 @@ by partitioning the data into good and bad wine based on a quality threshold of :alt: first five rows of wine quality dataset ``` +```{image} images/anchor.png +:align: right +:alt: Illustration of an anchor as a subset of two dimensional feature space. +:width: 450px +``` + An example of a predicate for this dataset would be a rule of the form: `'alcohol > 11.00'`. Note that the more predicates we add to an anchor, the smaller it becomes, as by doing so, we filter out more instances of the data. Anchors are sets of predicates associated to a specific instance $x$ such that $x$ is in the anchor ($A(x)=1$) and any other point in the anchor has the same classification as $x$ ($z$ such that $A(z) = 1 \implies f(z) = f(x)$ where $f$ is the model). We're interested in finding the largest possible Anchor that contains $x$. -```{image} images/anchor.png -:align: center -:alt: Illustration of an anchor as a subset of two dimensional feature space. -``` - To construct an anchor using Alibi for tabular data such as the wine quality dataset ( see [notebook](../examples/overview.ipynb)), we use: +
    + ```ipython3 from alibi.explainers import AnchorTabular @@ -338,7 +342,8 @@ construct [pertinent negatives/counterfactuals](#4-counterfactual-instances). ```{image} images/pp_mnist.png :align: center -:alt: Pertinent postive of an MNIST digit +:alt: Pertinent postive of an MNIST digit +:width: 450px ``` Given an instance $x$ we use gradient descent to find a $\delta$ that minimizes the following loss: @@ -393,6 +398,7 @@ on those images snowy backdrops. ```{figure} images/husky-vs-wolves.png :align: center :alt: Husky with snowy backdrop misclassified as wolf. +:width: 700px *Figure 11 from "Why Should I Trust You?": Explaining the Predictions of Any Classifier.* ``` @@ -681,6 +687,7 @@ number from the original instance. ```{figure} images/rlcf-digits.png :align: center :alt: Samples from MNIST and counterfactuals for each. +:width: 700px *From Samoilescu RF et al., Model-agnostic and Scalable Counterfactual Explanations via Reinforcement Learning, 2021* ``` @@ -714,6 +721,7 @@ require that the counterfactual be in distribution in order to be interpretable. ```{figure} images/interp-and-non-interp-cfs.png :align: center :alt: Examples of counterfactuals constructed using CFI and CFP methods +:width: 700px *Original MNIST 7 instance, Counterfactual instances constructed using 1) **counterfactual instances** method, 2) **counterfactual instances with prototypes** method* @@ -730,6 +738,7 @@ data-distribution. ```{figure} images/interp-cfs.png :align: center :alt: Construction of different types of interpretable counterfactuals +:width: 500px *Obtaining counterfactuals using gradient descent with and without autoencoder trained on data distribution* ``` diff --git a/doc/source/overview/images/local-global.png b/doc/source/overview/images/local-global.png index 74f042a1816a6df2a770f06be97ad2bbbd74735d..fa577c296872cd6732124d8baf7dfdadb46a939b 100644 GIT binary patch literal 52713 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 D*P+`g From c0dc7994bf1a505cb1951c63e4b2247f776dbcec Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Wed, 15 Dec 2021 00:08:31 +0000 Subject: [PATCH 45/60] Add more text content to notebook --- examples/overview.ipynb | 164 ++++++++++++++++++++++------------------ 1 file changed, 89 insertions(+), 75 deletions(-) diff --git a/examples/overview.ipynb b/examples/overview.ipynb index c9f8fb5ee..c95d0571e 100644 --- a/examples/overview.ipynb +++ b/examples/overview.ipynb @@ -255,7 +255,7 @@ "id": "1371f3be-fafd-45c6-978b-d2c65924d21e", "metadata": {}, "source": [ - "In order to get results for the tree shap model applied to the wine-quality data set we train a random forrest model." + "In order to get results for the tree shap explainer we need a tree based model. Hence we train a random forest on the wine-quality dataset." ] }, { @@ -279,16 +279,16 @@ "\n", " print('accuracy_score:', accuracy_score(y_pred, y_test_lab))\n", " print('f1_score:', f1_score(y_test_lab, y_pred, average=None))\n", - " \n", + "\n", + " disp = ConfusionMatrixDisplay(confusion_matrix(y_test_lab, y_pred), display_labels=rfc.classes_)\n", + " disp.plot()\n", + "\n", " joblib.dump(rfc, f\"{RFC_FNAME}.joblib\")\n", " return rfc\n", "\n", "\n", "def load_rfc_model():\n", - " return joblib.load(f\"{RFC_FNAME}.joblib\")\n", - " \n", - "# disp = ConfusionMatrixDisplay(confusion_matrix(y_test_lab, y_pred), display_labels=rfc.classes_)\n", - "# disp.plot()\n" + " return joblib.load(f\"{RFC_FNAME}.joblib\")\n" ] }, { @@ -304,7 +304,7 @@ "id": "5c29f129-3e75-4fc7-8893-18ab09019ae9", "metadata": {}, "source": [ - "Finally we also train a tensorflow model" + "Finally we also train a tensorflow model, between the tensorflow and random forest models we can apply each explainer method." ] }, { @@ -337,15 +337,12 @@ " print('f1_score:', f1_score(y_pred, y_test.argmax(axis=1), average=None))\n", "\n", " model.save(f'{TF_MODEL_FNAME}.h5')\n", - " \n", + " disp = ConfusionMatrixDisplay(confusion_matrix(y_pred, y_test.argmax(axis=1)))\n", + " disp.plot()\n", " return model\n", "\n", "def load_tf_model():\n", - " return load_model(f'{TF_MODEL_FNAME}.h5')\n", - "\n", - "\n", - "# disp = ConfusionMatrixDisplay(confusion_matrix(y_pred, y_test.argmax(axis=1)))\n", - "# disp.plot()\n" + " return load_model(f'{TF_MODEL_FNAME}.h5')\n" ] }, { @@ -397,35 +394,14 @@ "id": "b0a89f7e-7a76-4c9f-b313-ce963227f548", "metadata": {}, "source": [ + "## Util functions for visualizing and comparing instance differences\n", "\n", - "## Util functions for visualizing and comparing instance differences" + "These are utility functions for exploring results. The first just shows two instances of the data side by side and compares the difference. We'll use this to see how the counterfactuals differ from there original instances. The second plots the importance of each feature which will be useful for visualizing the attribution methods." ] }, { "cell_type": "code", "execution_count": 10, - "id": "533c5164-60f2-46e4-9154-381655854aa4", - "metadata": {}, - "outputs": [], - "source": [ - "def plot_cf_and_feature_dist(x, cf, feature='total sulfur dioxide'):\n", - " \"\"\"\n", - " Create a kde plot of feature distribution and plot counter factual and instance feature values.\n", - " \"\"\"\n", - " ind = features.index(feature)\n", - " ax = sns.kdeplot(bad_wines[:, ind], bw_method=0.5, c='r')\n", - " sns.kdeplot(good_wines[:, ind], bw_method=0.5, c='b')\n", - " plt.axvline(x=x[:, ind], c='b', alpha=0.4)\n", - " plt.axvline(x=cf[:, ind], c='r', alpha=0.4) \n", - " plt.xticks([x[0, ind], cf[0, ind]], ['x', 'c'])\n", - " plt.ylabel('Probability')\n", - " plt.xlabel(' '.join([word.capitalize() for word in feature.split(' ')]))\n", - " plt.show()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 11, "id": "231a5665-6dfc-475c-b456-0f25598c319b", "metadata": {}, "outputs": [], @@ -437,16 +413,8 @@ " x = x.astype('float64')\n", " cf = cf.astype('float64')\n", " for f, v1, v2 in zip(features, x[0], cf[0]):\n", - " print(f'{f:<25} instance: {round(v1, 3):^10} counter factual: {round(v2, 3):^10} difference: {round(v1 - v2, 7):^5}')\n" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "527fefa8-6aba-4a69-9117-778b291493e5", - "metadata": {}, - "outputs": [], - "source": [ + " print(f'{f:<25} instance: {round(v1, 3):^10} counter factual: {round(v2, 3):^10} difference: {round(v1 - v2, 7):^5}')\n", + "\n", "def plot_importance(feat_imp, feat_names, class_idx, **kwargs):\n", " \"\"\"\n", " Create a horizontal barchart of feature effects, sorted by their magnitude.\n", @@ -479,12 +447,14 @@ "source": [ "### Integrated Gradients\n", "\n", - "We illustrate the apllication of integrated to the instance of interest" + "The integrated gradients (IG) method computes the attribution of each feature by integrating the model partial derivatives along a path from a baseline point to the instance. This accumulates the changes in the prediction that occur due to the changing feature values. These accumulated values represent how each feature contributes to the prediction for the instance of interest.\n", + "\n", + "We illustrate the apllication of integrated to the instance of interest. " ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 11, "id": "d8fb53ef-d965-4bd5-b70c-09badbfbfc38", "metadata": {}, "outputs": [ @@ -495,7 +465,7 @@ "
    )" ] }, - "execution_count": 13, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, @@ -531,19 +501,21 @@ "source": [ "### Kernel SHAP\n", "\n", + "Kernel SHAP is a method for computing the Shapley values of a model around an instance. Shapley values are a game-theoretic method of assigning payout to players depending on their contribution to an overall goal. In our case, the features are the players, and the payouts are the attributions.\n", + "\n", "Example of Kernel SHAP method applied to the Tensorflow model" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 12, "id": "442a2603-1aed-4cd2-a3dc-f4965f5efaec", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "bc55948efe054ec08d106435c66090dd", + "model_id": "0df18cbd9d024d4ba0dc5657a310ba25", "version_major": 2, "version_minor": 0 }, @@ -561,7 +533,7 @@ "
    )" ] }, - "execution_count": 14, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, @@ -596,19 +568,19 @@ "id": "53a6161f-13b6-4156-b378-bd689e68d00f", "metadata": {}, "source": [ - "Here we apply Kernel SHAP to the Tree-based model in order to compare to the tree-based methods we run later" + "Here we apply Kernel SHAP to the Tree-based model as well in order to compare to the tree-based methods we run later" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 13, "id": "77deef77-42c1-4450-b381-fde4b1079e24", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "c270086f84a54f4c8163d2a22d7a4c63", + "model_id": "d2b889f2c1ee423ba866d5b9481da293", "version_major": 2, "version_minor": 0 }, @@ -626,7 +598,7 @@ "
    )" ] }, - "execution_count": 15, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, @@ -663,12 +635,12 @@ "source": [ "### Interventional treeSHAP\n", "\n", - "Interventional tree SHAP applied to the random forest. Comparison with the kernel SHAP results above show very similar outcomes." + "Interventional tree SHAP computes the same Shapley values as the kernel SHAP methood above. The difference is that it's much faster for tree-based models. He it is applied to the random forest we trained. Comparison with the kernel SHAP results above show very similar outcomes." ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 14, "id": "2d3b1ce0-8d52-4a6f-b30c-40779b9b2a8c", "metadata": {}, "outputs": [ @@ -679,7 +651,7 @@ "
    )" ] }, - "execution_count": 16, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, @@ -711,12 +683,12 @@ "source": [ "### Path Dependent treeSHAP\n", "\n", - "Path Dependent tree SHAP applied to random forest. Again very similar results to kernel SHAP and Interventional tree SHAP as expected." + "Path Dependent tree SHAP also gives the same results as the Kernel SHAP model only faster. Here it is applied to random forest. Again very similar results to kernel SHAP and Interventional tree SHAP as expected. " ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 15, "id": "aeef4572-2c4e-41ea-8298-80c95476be96", "metadata": {}, "outputs": [ @@ -727,7 +699,7 @@ "
    )" ] }, - "execution_count": 17, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, @@ -775,12 +747,14 @@ "source": [ "### Anchors\n", "\n", - "Here we apply Anchors to the tensor flow model" + "Anchors tell us what features need to stay the same for a specific instance in order for the model to give the same classification. In the case of a trained image classification model, an anchor for a given instance would be a minimal subset of the image that the model uses to make its decision.\n", + "\n", + "Here we apply Anchors to the tensor flow model trained on the wine-quality dataset." ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 16, "id": "0e36d1c9-49e1-4da8-9bc8-da312e2b31b2", "metadata": {}, "outputs": [], @@ -793,9 +767,17 @@ "result = explainer.explain(x, threshold=0.95)" ] }, + { + "cell_type": "markdown", + "id": "1600dade-52d0-40b8-a29c-d8279bbb1a94", + "metadata": {}, + "source": [ + "The result is a set of predicates that tell you weather an point in the data set is in the anchor or not. If it is in the anchor then it is very likely to have the same classification as the instance `x`." + ] + }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 17, "id": "3b3722d3-f837-4343-a2de-c7f4d4849223", "metadata": {}, "outputs": [ @@ -803,9 +785,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "Anchor = ['alcohol > 10.10', 'volatile acidity <= 0.39', 'total sulfur dioxide <= 22.00']\n", - "Precision = 0.9866071428571429\n", - "Coverage = 0.06505421184320268\n" + "Anchor = ['alcohol > 10.10', 'volatile acidity <= 0.39']\n", + "Precision = 0.9558665231431647\n", + "Coverage = 0.16263552960800667\n" ] } ], @@ -830,12 +812,12 @@ "source": [ "### ALE \n", "\n", - "The following is the ALE plot for the alcohol feature" + "ALE plots show the dependency of model output on a subset of the input features. They provide global insight describing the model's behaviour over the input space. Here we use ALE to directly visualize the relationship between the tensorflow models predictions and the alcohol content of wine.\n" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 18, "id": "3596db3d-40bb-42e4-9b59-1ae18f6be64f", "metadata": {}, "outputs": [ @@ -845,7 +827,7 @@ "array([[]], dtype=object)" ] }, - "execution_count": 20, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, @@ -885,7 +867,9 @@ "id": "aacbe189-a135-4ef9-bcf4-35df9019d5bb", "metadata": {}, "source": [ - "### Counter Factuals with Reinforcement Learning" + "### Counter Factuals with Reinforcement Learning\n", + "\n", + "CFRL trains a new model when fitting the explainer called an actor that takes instances and produces counterfactuals. It does this using reinforcement learning. In reinforcement learning, an actor model takes some state as input and generates actions; in our case, the actor takes an instance with a target classification and attempts to produce a member of the target class. Outcomes of actions are assigned rewards dependent on a reward function designed to encourage specific behaviors. In our case, we reward correctly classified counterfactuals generated by the actor. As well as this, we reward counterfactuals that are close to the data distribution as modeled by an autoencoder. Finally, we require that they are sparse perturbations of the original instance. The reinforcement training step pushes the actor to take high reward actions. CFRL is a black-box method as the process by which we update the actor to maximize the reward only requires estimating the reward via sampling the counterfactuals." ] }, { @@ -1040,9 +1024,7 @@ "result_cfrl = explainer.explain(cfrl)\n", "\n", "plot_importance(result_x.shap_values[0], features, 0)\n", - "print(result_x.shap_values[0].sum())\n", - "plot_importance(result_cfrl.shap_values[0], features, 0)\n", - "print(result_cfrl.shap_values[0].sum())" + "plot_importance(result_cfrl.shap_values[0], features, 0)" ] }, { @@ -1104,6 +1086,14 @@ "ae = load_ae_model()" ] }, + { + "cell_type": "markdown", + "id": "3d48f384-3c88-4735-84c0-af9b0d76b7bd", + "metadata": {}, + "source": [ + "The counterfactual instance method in alibi generates counterfactuals by defining a loss that prefers interpretable instances close to the target class. It then uses gradient descent to move within the feature space until it obtain a counterfactual of sufficient quality. " + ] + }, { "cell_type": "code", "execution_count": 28, @@ -1270,6 +1260,14 @@ "### Contrastive Explanations Method" ] }, + { + "cell_type": "markdown", + "id": "2f5db134-dd36-44c1-9b19-b04dddd66a2b", + "metadata": {}, + "source": [ + "The CEM method generates counterfactuals by defining a loss that prefers interpretable instances close to the target class. It also adds a autoencoder reconstruction loss to ensure the counterfactual stays within the data distribution." + ] + }, { "cell_type": "code", "execution_count": 31, @@ -1428,6 +1426,14 @@ "### Counterfactual With Prototypes" ] }, + { + "cell_type": "markdown", + "id": "8777b84e-7bc6-47ca-be2b-10943084103f", + "metadata": {}, + "source": [ + "Like the previous two methods counterfactuals with prototypes defines a loss that guides the counterfactual towards the target class while also using a autoencoder to ensure it stays within the data distribution. As well as this it uses prototype instances of the target class to ensure that the generated counterfactual is a interpretable as a member of the target class." + ] + }, { "cell_type": "code", "execution_count": 36, @@ -1573,6 +1579,14 @@ "print(result_proto_cf.shap_values[0].sum())" ] }, + { + "cell_type": "markdown", + "id": "80f4ccc1-d2ef-4623-a8b8-dae2518c3d26", + "metadata": {}, + "source": [ + "Looking at the ALE plots below, we can see how the counterfactual methods change the features to flip the prediction. Note that the ALE plots potentially miss details local to individual instances as they are global insights." + ] + }, { "cell_type": "code", "execution_count": 39, From b027128241f66f4d8c909911032726a35ee48df1 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Wed, 15 Dec 2021 11:51:51 +0000 Subject: [PATCH 46/60] Add links to docs and paper for each method --- doc/source/overview/high_level.md | 101 +++++++++++++++--------------- 1 file changed, 51 insertions(+), 50 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 19ce7538e..f55726b37 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -124,19 +124,19 @@ model performs as desired. Alibi provides several local and global insights with which to explore and understand models. The following gives the practitioner an understanding of which explainers are suitable in which situations. -| Explainer | Scope | Model types | Task types | Data types | Use | -|--------------------------------------------------------------------------------------------|--------|---------------------|----------------------------|--------------------------------------|-------------------------------------------------------------------------------------------------| -| [Accumulated Local Effects](accumulated-local-effects) | Global | Black-box | Classification, Regression | Tabular(numeric) | How does model prediction vary with respect to features of interest | -| [Anchors](anchors) | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | -| [Pertinent Positives](contrastive-explanation-method-pertinent-positives) | Local | Black-box/White-box | Classification | Tabular(numeric), Image | "" | -| [Integrated Gradients](integrated-gradients) | Local | White-box | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | -| [Kernel SHAP](kernel-shap) | Local | Black-box | Classification, Regression | Tabular, Categorical | "" | -| [Tree SHAP (path-dependent)](path-dependent-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | -| [Tree SHAP (interventional)](interventional-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | -| [Counterfactuals Instances](counterfactual-instances) | Local | Black-box/White-box | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | -| [Contrastive Explanation Method](contrastive-explanation-method-pertinent-negatives) | Local | Black-box/White-box | Classification | Tabular(numeric), Image | "" | -| [Counterfactuals Guided by Prototypes](counterfactuals-guided-by-prototypes) | Local | Black-box/White-box | Classification | Tabular, Categorical, Image | "" | -| [counterfactuals-with-reinforcement-learning](counterfactuals-with-reinforcement-learning) | Local | Black-box | Classification | Tabular, Categorical, Image | "" | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|--------------------------------------------------------------------------------------------|--------|---------------------|----------------------------|--------------------------------------|-------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------| +| [Accumulated Local Effects](accumulated-local-effects) | Global | Black-box | Classification, Regression | Tabular(numeric) | How does model prediction vary with respect to features of interest | [docs](../methods/ALE.ipynb), [paper](https://arxiv.org/abs/1612.08468) | +| [Anchors](anchors) | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | [docs](../methods/Anchors.ipynb), [paper](https://homes.cs.washington.edu/~marcotcr/aaai18.pdf) | +| [Pertinent Positives](contrastive-explanation-method-pertinent-positives) | Local | Black-box/White-box | Classification | Tabular(numeric), Image | "" | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | +| [Integrated Gradients](integrated-gradients) | Local | White-box | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | [docs](../methods/IntegratedGradients.ipynb), [paper](https://arxiv.org/abs/1703.01365) | +| [Kernel SHAP](kernel-shap) | Local | Black-box | Classification, Regression | Tabular, Categorical | "" | [docs](../methods/KernelSHAP.ipynb), [paper](https://papers.nips.cc/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html) | +| [Tree SHAP (path-dependent)](path-dependent-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | +| [Tree SHAP (interventional)](interventional-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | +| [Counterfactuals Instances](counterfactual-instances) | Local | Black-box/White-box | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CF.ipynb), [paper](https://arxiv.org/abs/1711.00399) | +| [Contrastive Explanation Method](contrastive-explanation-method-pertinent-negatives) | Local | Black-box/White-box | Classification | Tabular(numeric), Image | "" | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | +| [Counterfactuals Guided by Prototypes](counterfactuals-guided-by-prototypes) | Local | Black-box/White-box | Classification | Tabular, Categorical, Image | "" | [docs](../methods/CFProto.ipynb), [paper](https://arxiv.org/abs/1907.02584) | +| [counterfactuals-with-reinforcement-learning](counterfactuals-with-reinforcement-learning) | Local | Black-box | Classification | Tabular, Categorical, Image | "" | [docs](../methods/CFRL.ipynb), [paper](https://arxiv.org/abs/2106.02597) | ### 1. Global Feature Attribution @@ -154,9 +154,9 @@ decrease after it gets too hot. #### Accumulated Local Effects -| Explainer | Scope | Model types | Task types | Data types | Use | -|---------------------------|--------|---------------|----------------------------|-------------------|---------------------------------------------------------------------| -| Accumulated Local Effects | Global | Black-box | Classification, Regression | Tabular (numeric) | How does model prediction vary with respect to features of interest | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|---------------------------------------------------|--------|---------------|----------------------------|-------------------|---------------------------------------------------------------------|-------------------------------------------------------------------------| +| [Accumulated Local Effects](../methods/ALE.ipynb) | Global | Black-box | Classification, Regression | Tabular (numeric) | How does model prediction vary with respect to features of interest | [docs](../methods/ALE.ipynb), [paper](https://arxiv.org/abs/1612.08468) | Alibi only provides [accumulated local effects (ALE)](../methods/ALE.ipynb) plots because they give the most accurate insight. Alternatives include Partial Dependence Plots (PDP), of which ALE is a natural extension. Suppose we have a @@ -218,9 +218,9 @@ and [pertinent positives](contrastive-explanation-method-pertinent-positives). #### Anchors -| Explainer | Scope | Model types | Task types | Data types | Use | -|------------|---------|---------------|------------------|---------------------------------------|--------------------------------------------------------------------------------------------------| -| Anchors | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|-------------------------------------|---------|---------------|------------------|---------------------------------------|--------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------| +| [Anchors](../methods/Anchors.ipynb) | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | [docs](../methods/Anchors.ipynb), [paper](https://homes.cs.washington.edu/~marcotcr/aaai18.pdf) | Anchors are introduced in [Anchors: High-Precision Model-Agnostic Explanations](https://homes.cs.washington.edu/~marcotcr/aaai18.pdf). Further, @@ -328,9 +328,9 @@ required predictive property. This makes them less interpretable. #### Contrastive Explanation Method (Pertinent Positives) -| Explainer | Scope | Model types | Task types | Data types | Use | -|---------------------|-------|-------------------------------------------|----------------|-------------------------|-------------------------------------------------------------------------------------------------| -| Pertinent Positives | Local | Black-box/White-box _(Keras, TensorFlow)_ | Classification | Tabular(numeric), Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|---------------------------------------------|-------|-------------------------------------------|----------------|-------------------------|-------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------| +| [Pertinent Positives](../methods/CEM.ipynb) | Local | Black-box/White-box _(Keras, TensorFlow)_ | Classification | Tabular(numeric), Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | Introduced by [Amit Dhurandhar, et al](https://arxiv.org/abs/1802.07623), a Pertinent Positive is the subset of features of an instance that still obtains the same classification as that instance. These differ from [anchors](anchors) @@ -435,14 +435,15 @@ ones provided by Alibi ([integrated gradients](integrated-gradients), [Kernel SH #### Integrated Gradients -| Explainer | Scope | Model types | Task types | Data types | Use | -|----------------------|-------|---------------------------------|----------------------------|--------------------------------------|------------------------------------------------------------| -| Integrated Gradients | Local | White-box _(keras, TensorFlow)_ | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|--------------------------------------------------------------|-------|---------------------------------|----------------------------|--------------------------------------|------------------------------------------------------------|-----------------------------------------------------------------------------------------| +| [Integrated Gradients](../methods/IntegratedGradients.ipynb) | Local | White-box _(keras, TensorFlow)_ | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | [docs](../methods/IntegratedGradients.ipynb), [paper](https://arxiv.org/abs/1703.01365) | The [integrated gradients](https://arxiv.org/abs/1703.01365) (IG) method computes the attribution of each feature by integrating the model partial derivatives along a path from a baseline point to the instance. This accumulates the changes in the prediction that occur due to the changing feature values. These accumulated values represent how each -feature contributes to the prediction for the instance of interest. +feature contributes to the prediction for the instance of interest. A more detailed explanation of the method can be +found in the method specific [docs](../methods/IntegratedGradients.ipynb). We need to choose a baseline which should capture a blank state in which the model makes essentially no prediction or assigns the probability of each class equally. This is dependent on domain knowledge of the dataset. In the case of @@ -502,15 +503,15 @@ for a wine classed as "Good" and is consistent with the ALE plot. (The median fo #### Kernel SHAP -| Explainer | Scope | Model types | Task types | Data types | Use | -|--------------|-------|-------------|----------------------------|-----------------------|------------------------------------------------------------| -| Kernel SHAP | Local | Black-box | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|--------------------------------------------|-------|-------------|----------------------------|-----------------------|------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------| +| [Kernel SHAP](../methods/KernelSHAP.ipynb) | Local | Black-box | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | [docs](../methods/KernelSHAP.ipynb), [paper](https://papers.nips.cc/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html) | -[Kernel SHAP](https://papers.nips.cc/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html) is a method for -computing the Shapley values of a model around an +[Kernel SHAP](https://papers.nips.cc/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html) +([Alibi method docs](../methods/KernelSHAP.ipynb)) is a method for computing the Shapley values of a model around an instance. [Shapley values](https://christophm.github.io/interpretable-ml-book/shapley.html) are a game-theoretic method of assigning payout to players depending on their contribution to an overall goal. In our case, the features are the -players, and the payouts are the attributions. +players, and the payouts are the attributions. Given any subset of features, we can ask how a feature's presence in that set contributes to the model output. We do this by computing the model output for the set with and without the specific feature. We obtain the Shapley value for @@ -565,9 +566,9 @@ using different methods and models in each case. #### Path-dependent tree SHAP -| Explainer | Scope | Model types | Task types | Data types | Use | -|----------------------------|--------|---------------------------------------------------------------------------------|----------------------------|----------------------|------------------------------------------------------------| -| Tree SHAP (path-dependent) | Local | White-box _(XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models)_ | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|---------------------------------------------------------|--------|---------------------------------------------------------------------------------|----------------------------|----------------------|------------------------------------------------------------|-----------------------------------------------------------------------------------------------| +| [Tree SHAP (path-dependent)](../methods/TreeSHAP.ipynb) | Local | White-box _(XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models)_ | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | Computing the Shapley values for a model requires computing the interventional conditional expectation for each member of the [power set](https://en.wikipedia.org/wiki/Power_set) of instance features. For tree-based models we can @@ -616,9 +617,9 @@ although there are differences due to using different methods and models in each #### Interventional Tree SHAP -| Explainer | Scope | Model types | Task types | Data types | Use | -|----------------------------|-------|---------------------------------------------------------------------------------|----------------------------|----------------------|------------------------------------------------------------| -| Tree SHAP (interventional) | Local | White-box _(XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models)_ | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|---------------------------------------------------------|-------|---------------------------------------------------------------------------------|----------------------------|----------------------|------------------------------------------------------------|-----------------------------------------------------------------------------------------------| +| [Tree SHAP (interventional)](../methods/TreeSHAP.ipynb) | Local | White-box _(XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models)_ | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | Suppose we sample a reference data point, $r$, from the training dataset. Let $F$ be the set of all features. For each feature, $i$, we then enumerate over all subsets of $S\subset F \setminus \{i\}$. If a subset is missing a feature, we @@ -770,9 +771,9 @@ quick. If you want performant explanations in production environments, then the #### Counterfactual Instances -| Explainer | Scope | Model types | Task types | Data types | Use | -|---------------------------|-------|-------------------------------------------|----------------|-------------------------|-----------------------------------------------------------------------------------| -| Counterfactuals Instances | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|--------------------------------------------------|-------|-------------------------------------------|----------------|-------------------------|-----------------------------------------------------------------------------------|------------------------------------------------------------------------| +| [Counterfactuals Instances](../methods/CF.ipynb) | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CF.ipynb), [paper](https://arxiv.org/abs/1711.00399) | Let the model be given by $f$, and let $p_t$ be the target probability of class $t$. Let $\lambda$ be a hyperparameter. This method constructs counterfactual instances from an instance $X$ by running gradient descent on a new instance $X'$ @@ -827,9 +828,9 @@ Counterfactual prediction: 1 #### Contrastive Explanation Method (Pertinent Negatives) -| Explainer | Scope | Model types | Task types | Data types | Use | -|--------------------------------|-------|-------------------------------------------|----------------|-------------------------|-----------------------------------------------------------------------------------| -| Contrastive Explanation Method | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|--------------------------------------------------------|-------|-------------------------------------------|----------------|-------------------------|-----------------------------------------------------------------------------------|-------------------------------------------------------------------------| +| [Contrastive Explanation Method](../methods/CEM.ipynb) | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | CEM follows a similar approach to the above but includes three new details. Firstly an elastic net $\beta L_{1} + L_{2}$ regularizer term is added to the loss. This term causes the solutions to be both close to the original instance and @@ -914,9 +915,9 @@ gradients in the black-box case due to having to numerically evaluate gradients. #### Counterfactuals Guided by Prototypes -| Explainer | Scope | Model types | Task types | Data types | Use | -|--------------------------------------|-------|-------------------------------------------|----------------|-----------------------------|-----------------------------------------------------------------------------------| -| Counterfactuals Guided by Prototypes | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular, Categorical, Image | What minimal change to features is required to reclassify the current prediction? | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|------------------------------------------------------------------|-------|-------------------------------------------|----------------|-----------------------------|-----------------------------------------------------------------------------------|-----------------------------------------------------------------------------| +| [Counterfactuals Guided by Prototypes](../methods/CFProto.ipynb) | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular, Categorical, Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CFProto.ipynb), [paper](https://arxiv.org/abs/1907.02584) | For this method, we add another term to the loss that optimizes for the distance between the counterfactual instance and representative members of the target class. In doing this, we require interpretability also to mean that the generated @@ -973,9 +974,9 @@ Counterfactual prediction: 1 #### Counterfactuals with Reinforcement Learning -| Explainer | Scope | Model types | Task types | Data types | Use | -|---------------------------------------------|--------|-------------|----------------|-----------------------------|-----------------------------------------------------------------------------------| -| counterfactuals-with-reinforcement-learning | Local | Black-box | Classification | Tabular, Categorical, Image | What minimal change to features is required to reclassify the current prediction? | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|----------------------------------------------------------------------|--------|-------------|----------------|-----------------------------|-----------------------------------------------------------------------------------|--------------------------------------------------------------------------| +| [counterfactuals-with-reinforcement-learning](../methods/CFRL.ipynb) | Local | Black-box | Classification | Tabular, Categorical, Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CFRL.ipynb), [paper](https://arxiv.org/abs/2106.02597) | This black-box method splits from the approach taken by the above three significantly. Instead of minimizing a loss during the explain method call, it trains a **new model** when **fitting** the explainer called an **actor** that takes From 2df4480af0d1787e9b06f8c0e184f15fa0d3b767 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Wed, 15 Dec 2021 11:54:33 +0000 Subject: [PATCH 47/60] Inital progress on notebook spell and grammer check --- examples/overview.ipynb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/overview.ipynb b/examples/overview.ipynb index c95d0571e..7fa1bf126 100644 --- a/examples/overview.ipynb +++ b/examples/overview.ipynb @@ -7,12 +7,12 @@ "source": [ "# Alibi Overview Example\n", "\n", - "This notebook aims to demonstrate each of the explainers Alibi provides on the same model and dataset. Unfortunately, this isn't possible as white-box neural network methods exclude tree-based white-box methods. Hence we will train both a tensorflow and a random forest model on the same dataset and apply the full range of explainers to see what insights we can obtain. " + "This notebook aims to demonstrate each of the explainers Alibi provides on the same model and dataset. Unfortunately, this isn't possible as white-box neural network methods exclude tree-based white-box methods. Hence we will train both a neural network(TensorFlow) and a random forest model on the same dataset and apply the full range of explainers to see what insights we can obtain." ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 19, "id": "b42fe771-fbcd-45e0-a613-6d93a0d7e80d", "metadata": {}, "outputs": [], @@ -56,12 +56,12 @@ "source": [ "## Preparing the data.\n", "\n", - "We're using the [wine-quality](https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/) dataset, a numeric tabular dataset containing features that refer to the chemical composition of wines and quality ratings. To make this a simple classification task, we bucket all wines with ratings greater than five as good, and the rest we label bad. As well as this we normalize all the features." + "We're using the [wine-quality](https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/) dataset, a numeric tabular dataset containing features that refer to the chemical composition of wines and quality ratings. To make this a simple classification task, we bucket all wines with ratings greater than five as good, and the rest we label bad. We also normalize all the features." ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 20, "id": "07175f7a-df18-435c-8508-2c37b0242322", "metadata": {}, "outputs": [], @@ -81,7 +81,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 21, "id": "e4927000-30b8-4fe4-84eb-a5d778fa072a", "metadata": {}, "outputs": [], @@ -91,7 +91,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 22, "id": "ae34b435-ed6c-4380-ba8b-1005cf7868ce", "metadata": {}, "outputs": [ @@ -101,7 +101,7 @@ "StandardScaler()" ] }, - "execution_count": 4, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } From a45f75aad809e0ed29502785758079301e15e010 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Wed, 15 Dec 2021 12:02:28 +0000 Subject: [PATCH 48/60] Ignore joblib model save files in examples --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 49c1b128e..9673efdb4 100644 --- a/.gitignore +++ b/.gitignore @@ -109,6 +109,7 @@ venv.bak/ # Model binaries examples/*.h5 +examples/*.joblib # OS specific .DS_store \ No newline at end of file From 2e64198846e612463df321858894664f149eea44 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Wed, 15 Dec 2021 12:23:32 +0000 Subject: [PATCH 49/60] Fix broken example notebook link --- doc/source/examples/overview.ipynb | 1657 ++++++++++++++++++++++++++ doc/source/examples/overview.nblink | 3 - examples/overview.ipynb | 1658 +-------------------------- 3 files changed, 1658 insertions(+), 1660 deletions(-) create mode 100644 doc/source/examples/overview.ipynb delete mode 100644 doc/source/examples/overview.nblink mode change 100644 => 120000 examples/overview.ipynb diff --git a/doc/source/examples/overview.ipynb b/doc/source/examples/overview.ipynb new file mode 100644 index 000000000..7fa1bf126 --- /dev/null +++ b/doc/source/examples/overview.ipynb @@ -0,0 +1,1657 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "9a4f4dbf-a083-46e9-8891-55ef9123cf4a", + "metadata": {}, + "source": [ + "# Alibi Overview Example\n", + "\n", + "This notebook aims to demonstrate each of the explainers Alibi provides on the same model and dataset. Unfortunately, this isn't possible as white-box neural network methods exclude tree-based white-box methods. Hence we will train both a neural network(TensorFlow) and a random forest model on the same dataset and apply the full range of explainers to see what insights we can obtain." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "b42fe771-fbcd-45e0-a613-6d93a0d7e80d", + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "from io import BytesIO, StringIO\n", + "from io import BytesIO\n", + "from zipfile import ZipFile\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "%matplotlib inline\n", + "import seaborn as sns\n", + "sns.set(rc={'figure.figsize':(11.7,8.27)})\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import accuracy_score, f1_score\n", + "from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.model_selection import train_test_split\n", + "import joblib\n", + "import os.path\n", + "\n", + "import tensorflow as tf\n", + "np.random.seed(0)\n", + "tf.random.set_seed(0)\n", + "\n", + "FROM_SCRATCH = False\n", + "TF_MODEL_FNAME = 'tf-clf-wine'\n", + "RFC_FNAME = 'rfc-wine'\n", + "ENC_FNAME = 'wine_encoder'\n", + "DEC_FNAME = 'wine_decoder'\n" + ] + }, + { + "cell_type": "markdown", + "id": "7b561fff-7745-4219-bb84-1787cb7a3501", + "metadata": {}, + "source": [ + "## Preparing the data.\n", + "\n", + "We're using the [wine-quality](https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/) dataset, a numeric tabular dataset containing features that refer to the chemical composition of wines and quality ratings. To make this a simple classification task, we bucket all wines with ratings greater than five as good, and the rest we label bad. We also normalize all the features." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "07175f7a-df18-435c-8508-2c37b0242322", + "metadata": {}, + "outputs": [], + "source": [ + "def fetch_wine_ds():\n", + " url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv'\n", + "\n", + " try:\n", + " resp = requests.get(url, timeout=2)\n", + " resp.raise_for_status()\n", + " except requests.RequestException:\n", + " logger.exception(\"Could not connect, URL may be out of service\")\n", + " raise\n", + " string_io = StringIO(resp.content.decode('utf-8'))\n", + " return pd.read_csv(string_io, sep=';')" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "e4927000-30b8-4fe4-84eb-a5d778fa072a", + "metadata": {}, + "outputs": [], + "source": [ + "df = fetch_wine_ds()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "ae34b435-ed6c-4380-ba8b-1005cf7868ce", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "StandardScaler()" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['class'] = 'bad'\n", + "df.loc[(df['quality'] > 5), 'class'] = 'good'\n", + "\n", + "features = [\n", + " 'fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar',\n", + " 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density',\n", + " 'pH', 'sulphates', 'alcohol'\n", + "]\n", + "\n", + "df['good'] = 0\n", + "df['bad'] = 0\n", + "df.loc[df['class'] == 'good', 'good'] = 1\n", + "df.loc[df['class'] == 'bad', 'bad'] = 1\n", + "\n", + "data = df[features].to_numpy()\n", + "labels = df[['class','good', 'bad']].to_numpy()\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(data, labels, random_state=0)\n", + "X_train, X_test = X_train.astype('float32'), X_test.astype('float32')\n", + "y_train_lab, y_test_lab = y_train[:, 0], y_test[:, 0]\n", + "y_train, y_test = y_train[:, 1:].astype('float32'), y_test[:, 1:].astype('float32')\n", + "\n", + "scaler = StandardScaler()\n", + "scaler.fit(X_train)" + ] + }, + { + "cell_type": "markdown", + "id": "f7a294d4-82f2-4729-ad66-872fd2925f4c", + "metadata": { + "tags": [] + }, + "source": [ + "### Select Instance of good wine \n", + "\n", + "We partition the dataset into good and bad portions and select an instance of interest. I've chosen it to be a good quality wine. \n", + "\n", + "**Note** that bad wines are class 1 and correpsond to the second model output being high, whereas good wines are class 0 and correspond to the first model output being high." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "926bbabd-946b-4ef3-9aec-6e27df923504", + "metadata": {}, + "outputs": [], + "source": [ + "bad_wines = np.array([a for a, b in zip(X_train, y_train) if b[1] == 1])\n", + "good_wines = np.array([a for a, b in zip(X_train, y_train) if b[1] == 0])\n", + "x = np.array([[9.2, 0.36, 0.34, 1.6, 0.062, 5., 12., 0.99667, 3.2, 0.67, 10.5]]) # prechosen instance\n" + ] + }, + { + "cell_type": "markdown", + "id": "bfd1a33a-5a4e-4c6c-a3c8-56776d656fc5", + "metadata": {}, + "source": [ + "## Training models" + ] + }, + { + "cell_type": "markdown", + "id": "3a3ff7b6-50c7-4e8c-9436-188cefba608d", + "metadata": {}, + "source": [ + "### Creating an Autoencoder\n", + "\n", + "For some of the explainers, we need an autoencoder to check whether example instances are close to the training data distribution or not." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "af5d71d3-729a-4fee-9f5a-b60bbe8dadc0", + "metadata": {}, + "outputs": [], + "source": [ + "from tensorflow.keras.layers import Dense, Dropout\n", + "from tensorflow.keras.models import Sequential, Model\n", + "from tensorflow.keras import metrics, Input\n", + "from tensorflow import keras\n", + "\n", + "\n", + "ENCODING_DIM = 7\n", + "BATCH_SIZE = 64\n", + "EPOCHS = 100\n", + "\n", + "\n", + "class AE(keras.Model):\n", + " def __init__(self, encoder: keras.Model, decoder: keras.Model, **kwargs) -> None:\n", + " super().__init__(**kwargs)\n", + " self.encoder = encoder\n", + " self.decoder = decoder\n", + "\n", + " def call(self, x: tf.Tensor, **kwargs):\n", + " z = self.encoder(x)\n", + " x_hat = self.decoder(z)\n", + " return x_hat\n", + " \n", + "def make_ae():\n", + " len_input_output = X_train.shape[-1]\n", + "\n", + " encoder = keras.Sequential()\n", + " encoder.add(Dense(units=ENCODING_DIM*2, activation=\"relu\", input_shape=(len_input_output, )))\n", + " encoder.add(Dense(units=ENCODING_DIM, activation=\"relu\"))\n", + "\n", + " decoder = keras.Sequential()\n", + " decoder.add(Dense(units=ENCODING_DIM*2, activation=\"relu\", input_shape=(ENCODING_DIM, )))\n", + " decoder.add(Dense(units=len_input_output, activation=\"linear\"))\n", + "\n", + " ae = AE(encoder=encoder, decoder=decoder)\n", + "\n", + " ae.compile(optimizer='adam', loss='mean_squared_error')\n", + " history = ae.fit(\n", + " scaler.transform(X_train), \n", + " scaler.transform(X_train), \n", + " batch_size=BATCH_SIZE, \n", + " epochs=EPOCHS, \n", + " verbose=False,)\n", + "\n", + " loss = history.history['loss']\n", + " plt.plot(loss)\n", + " plt.xlabel('Epoch')\n", + " plt.ylabel('MSE-Loss')\n", + "\n", + " ae.encoder.save(f'{ENC_FNAME}.h5')\n", + " ae.decoder.save(f'{DEC_FNAME}.h5')\n", + " return ae\n", + "\n", + "def load_ae_model():\n", + " encoder = load_model(f'{ENC_FNAME}.h5')\n", + " decoder = load_model(f'{DEC_FNAME}.h5')\n", + " return AE(encoder=encoder, decoder=decoder)" + ] + }, + { + "cell_type": "markdown", + "id": "91035836-4c13-489b-a865-bed0817aaeb0", + "metadata": {}, + "source": [ + "### Random Forest Model" + ] + }, + { + "cell_type": "markdown", + "id": "1371f3be-fafd-45c6-978b-d2c65924d21e", + "metadata": {}, + "source": [ + "In order to get results for the tree shap explainer we need a tree based model. Hence we train a random forest on the wine-quality dataset." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "07246f62-3040-475e-843e-b0366c3d94fa", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.pipeline import Pipeline\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.ensemble import RandomForestClassifier\n", + "from sklearn.metrics import accuracy_score, f1_score\n", + "from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay\n", + "\n", + "def make_rfc():\n", + " rfc = RandomForestClassifier(n_estimators=50)\n", + " rfc.fit(scaler.transform(X_train), y_train_lab)\n", + " y_pred = rfc.predict(scaler.transform(X_test))\n", + "\n", + " print('accuracy_score:', accuracy_score(y_pred, y_test_lab))\n", + " print('f1_score:', f1_score(y_test_lab, y_pred, average=None))\n", + "\n", + " disp = ConfusionMatrixDisplay(confusion_matrix(y_test_lab, y_pred), display_labels=rfc.classes_)\n", + " disp.plot()\n", + "\n", + " joblib.dump(rfc, f\"{RFC_FNAME}.joblib\")\n", + " return rfc\n", + "\n", + "\n", + "def load_rfc_model():\n", + " return joblib.load(f\"{RFC_FNAME}.joblib\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "dbdd201e-2783-42d3-a345-cf742361be67", + "metadata": {}, + "source": [ + "### Tensorflow Model" + ] + }, + { + "cell_type": "markdown", + "id": "5c29f129-3e75-4fc7-8893-18ab09019ae9", + "metadata": {}, + "source": [ + "Finally we also train a tensorflow model, between the tensorflow and random forest models we can apply each explainer method." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "7a28547f-1e0a-4bf4-9f18-5451127ddb77", + "metadata": {}, + "outputs": [], + "source": [ + "from tensorflow import keras\n", + "from tensorflow.keras import layers \n", + "\n", + "def make_tf_model():\n", + " inputs = keras.Input(shape=X_train.shape[1])\n", + " x = layers.Dense(6, activation=\"relu\")(inputs)\n", + " outputs = layers.Dense(2, activation=\"softmax\")(x)\n", + " model = keras.Model(inputs, outputs)\n", + "\n", + " model.compile(optimizer=\"adam\", loss=\"categorical_crossentropy\", metrics=['accuracy'])\n", + " history = model.fit(\n", + " scaler.transform(X_train), \n", + " y_train,\n", + " epochs=30, \n", + " verbose=False, \n", + " validation_data=(scaler.transform(X_test), y_test),\n", + " )\n", + "\n", + " y_pred = model(scaler.transform(X_test)).numpy().argmax(axis=1)\n", + " print('accuracy_score:', accuracy_score(y_pred, y_test.argmax(axis=1)))\n", + " print('f1_score:', f1_score(y_pred, y_test.argmax(axis=1), average=None))\n", + "\n", + " model.save(f'{TF_MODEL_FNAME}.h5')\n", + " disp = ConfusionMatrixDisplay(confusion_matrix(y_pred, y_test.argmax(axis=1)))\n", + " disp.plot()\n", + " return model\n", + "\n", + "def load_tf_model():\n", + " return load_model(f'{TF_MODEL_FNAME}.h5')\n" + ] + }, + { + "cell_type": "markdown", + "id": "7c7e779e-656d-48be-91b2-14ae32e2838c", + "metadata": {}, + "source": [ + "### Load/Make models" + ] + }, + { + "cell_type": "markdown", + "id": "6faa7413-c589-45ed-9c64-96b8ddbac469", + "metadata": {}, + "source": [ + "In order to ensure stable results we save and load the same models each time unless they don't exist in which case we create new ones. If you want to generate new models on each run of the notebook then set `FROM_SCRATCH=True`" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "4dc61ede-5732-4641-b004-0be40fbf9e99", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:tensorflow:No training configuration found in the save file, so the model was *not* compiled. Compile it manually.\n", + "WARNING:tensorflow:No training configuration found in the save file, so the model was *not* compiled. Compile it manually.\n" + ] + } + ], + "source": [ + "from tensorflow.keras.models import Model, load_model\n", + "\n", + "if FROM_SCRATCH or not os.path.isfile(f'{TF_MODEL_FNAME}.h5'):\n", + " model = make_tf_model()\n", + " rfc = make_rfc()\n", + " ae = make_ae()\n", + "else:\n", + " rfc = load_rfc_model()\n", + " model = load_tf_model() \n", + " ae = load_ae_model()" + ] + }, + { + "cell_type": "markdown", + "id": "b0a89f7e-7a76-4c9f-b313-ce963227f548", + "metadata": {}, + "source": [ + "## Util functions for visualizing and comparing instance differences\n", + "\n", + "These are utility functions for exploring results. The first just shows two instances of the data side by side and compares the difference. We'll use this to see how the counterfactuals differ from there original instances. The second plots the importance of each feature which will be useful for visualizing the attribution methods." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "231a5665-6dfc-475c-b456-0f25598c319b", + "metadata": {}, + "outputs": [], + "source": [ + "def compare_instances(x, cf):\n", + " \"\"\"\n", + " Show the difference in values between two instances.\n", + " \"\"\"\n", + " x = x.astype('float64')\n", + " cf = cf.astype('float64')\n", + " for f, v1, v2 in zip(features, x[0], cf[0]):\n", + " print(f'{f:<25} instance: {round(v1, 3):^10} counter factual: {round(v2, 3):^10} difference: {round(v1 - v2, 7):^5}')\n", + "\n", + "def plot_importance(feat_imp, feat_names, class_idx, **kwargs):\n", + " \"\"\"\n", + " Create a horizontal barchart of feature effects, sorted by their magnitude.\n", + " \"\"\"\n", + " \n", + " df = pd.DataFrame(data=feat_imp, columns=feat_names).sort_values(by=0, axis='columns')\n", + " feat_imp, feat_names = df.values[0], df.columns\n", + " fig, ax = plt.subplots(figsize=(10, 5))\n", + " y_pos = np.arange(len(feat_imp))\n", + " ax.barh(y_pos, feat_imp)\n", + " ax.set_yticks(y_pos)\n", + " ax.set_yticklabels(feat_names, fontsize=15)\n", + " ax.invert_yaxis()\n", + " ax.set_xlabel(f'Feature effects for class {class_idx}', fontsize=15)\n", + " return ax, fig" + ] + }, + { + "cell_type": "markdown", + "id": "8a723129-19e5-4f87-b1c2-bfec2a4c69b1", + "metadata": {}, + "source": [ + "## Local Feature Attribution" + ] + }, + { + "cell_type": "markdown", + "id": "559872af-99b6-4314-b418-0be491f3f405", + "metadata": {}, + "source": [ + "### Integrated Gradients\n", + "\n", + "The integrated gradients (IG) method computes the attribution of each feature by integrating the model partial derivatives along a path from a baseline point to the instance. This accumulates the changes in the prediction that occur due to the changing feature values. These accumulated values represent how each feature contributes to the prediction for the instance of interest.\n", + "\n", + "We illustrate the apllication of integrated to the instance of interest. " + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "d8fb53ef-d965-4bd5-b70c-09badbfbfc38", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(,\n", + "
    )" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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9or169czY8YMevXqhb+/P1FRUcyePZuUlBT69etHx44dOXPmDFFRUSxYsADAfEb1/Pnz1KxZky5dumBvb8+PP/7I+PHjsbW1pXXr1tkOftasWRw+fJjx48dTqlQpoqOjOXToUK4ScceUKVN4//332b59OytWrADA3d09R2t88cUXVKxYkSlTppCWlpblvLfffpsNGzYwYsQIKlSowIYNG9i2bdt91584cSJ79uxh5MiRlCtXjg0bNtC/f39WrVpF7dq1GTNmDPv27WPy5MksXLiQ2NhYpk6dSufOnfH39890TZPJxKBBg4iLi+PNN9/EwcGBiIgIrl69yjPPPGOe9+eff9KlSxeqVq3K3LlzSUtLY/78+QwYMIBPPvkEGxubHOVKRERE5El3z4K7XLlyuLi4YDKZLNoa0tPTiYiIIDg42HzW2t/fn+vXr7N06VJeeeUVPD09cXd3x97ePkNLRKtWrcz/NplM1KlTh4sXL7J+/focFdzHjh2jW7dutGzZ0jzWtm3bbG+fmTs923Z2dg/UyrF06VIcHByyfD8uLo5169YxdOhQevfuDUCjRo0sjiUzp06d4r///S+zZs2iffv25u1efPFFFi9ezHvvvUfRokWZPXs23bt3Z9OmTezatYtixYoxbty4LNf9+uuvOX78OOvXr6d69erA7f7xwMBAi4J7wYIFlCpViuXLl2Nvbw/cPsv/wgsv8NVXX9GkSZPspAeAkiWdsj33QeXHgy0KEuXXupTfJ1NB+b4WlOPML8qv9eVFvZKrHu4LFy5w6dIlgoKCLMZbtmzJ2rVr+e2336hWrVqW21+7do2IiAh2797NxYsXzWeBPTw8chRH5cqVee+997C1taVBgwaUL18+5wdjBfXq1btnsQ232zKSk5Np2rSpeczW1pamTZuaz6xn5tixY5hMJovc29raEhQUZLFdrVq16NmzJ5MmTSI1NZUPP/yQokWLZrnu0aNHKVWqlLnYBihTpgze3t4W8w4cOEC7du2wtbU1t7+ULVuWMmXK8L///S9HBXdsbALp6aZsz88tg8GZmBg9YsJalF/rUn6tKz+LlYLwfdXn17qUX+szGJyJjU144KI7V/fhvtOvW7JkSYvxO6+vXbt2z+1DQ0PZsmULffr04b333uOTTz6hQ4cOJCcn5yiOyZMn06xZMxYtWkRQUBDNmzfnv//9b47W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++675jEPDw969uzJiRMn8PLyynS7Vq1amf9tMpmoU6cOFy9eZP369bRu3RqADz74gISEBDZu3Gj+BaB+/fpZxhIXF8e6desYOnQovXv3BqBRo0a0bNnynseQ1fG3bt2a2bNns23bNvP3ZevWrdy6dcsco4iIiIj8n0e24AZo2bIloaGhxMXF4erqyi+//MKZM2d48803Abhw4QKXLl0iKCgow3Zr167lt99+o1q1apmuvWnTJj744AP+/PNPbty4YR4/c+YMpUuXznXMN2/e5MiRI0ycONGibaNWrVoULlyYn3/+OcuC+9q1a0RERLB7924uXrxIWloacLtYv+O7776jUaNG2T7bfuLECZKTk2natKl5zNbWlqZNm7JixYocH5+TkxMtWrTgs88+Mxfcn332GQEBAbi6uuZorZIlnXK8/9zSgwGsS/m1LuVXROTerPlzMi/qlUe64A4ICKBQoULs2LGDl156iS1btuDp6Wm+A0dMTAwAJUuWtNjuzutr165luu7OnTsZN24cXbp0YcSIEbi4uBATE8PgwYNJTk5+oJjj4+NJS0tj2rRpFmfR77hX60doaCg//fQTgwYNokKFCjg5ObF27Vp2795tnnP16lXz2efsuHz5MpB1jnIjJCSEHj168Pfff2MymTh06NA9W3iyEhubQHq6KddxZJfB4ExMzKN+S/zHl/JrXcqvdemXGZEng7V+ThoMzsTGJjxw0f1IF9zFihWjcePGbNmyhZdeeomtW7cSFBSEjY0NAAaDAbjd13y3O69LlCiR6brbtm2jevXqTJ061Tz2/fff50nMzs7O2NjYMGTIEBo3bpzh/azOTCcnJ7N3714mT55Mly5dzOMff/yxxbw7vxxkV6lSpYDbOXFxcTGP/zNnOVGnTh3+9a9/sXHjRkwmE+7u7vj7++d6PREREZEn2SN70eQdrVq14uDBg+zZs4e///7bos/Z09MTd3d3tm3bZrHN1q1bcXJysniwy92SkpKwt7e3GLtzl487ChcuDJDjM95FixbF19eXP/74Ax8fnwxfd7eH3C0lJYX09HSLuBISEtizZ4/FvPr167Nv3z7zmev78fLywsHBweIseXp6usXrzNzv+Dt06MCmTZv4/PPPadeuHXZ2dtmKR0RERKSgeaTPcAM0btyYIkWKMHnyZMqWLWvRk21ra8vQoUOZPHkyLi4u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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from alibi.explainers import IntegratedGradients\n", + "\n", + "ig = IntegratedGradients(model,\n", + " layer=None,\n", + " method=\"gausslegendre\",\n", + " n_steps=50,\n", + " internal_batch_size=100)\n", + "\n", + "result = ig.explain(scaler.transform(x), target=0)\n", + "\n", + "plot_importance(result.data['attributions'][0], features, '\"good\"')\n" + ] + }, + { + "cell_type": "markdown", + "id": "91775149-0ff9-46d7-a71d-d32c910c2757", + "metadata": {}, + "source": [ + "### Kernel SHAP\n", + "\n", + "Kernel SHAP is a method for computing the Shapley values of a model around an instance. Shapley values are a game-theoretic method of assigning payout to players depending on their contribution to an overall goal. In our case, the features are the players, and the payouts are the attributions.\n", + "\n", + "Example of Kernel SHAP method applied to the Tensorflow model" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "442a2603-1aed-4cd2-a3dc-f4965f5efaec", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0df18cbd9d024d4ba0dc5657a310ba25", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/1 [00:00,\n", + "
    )" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAFECAYAAADlf7JXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABmNklEQVR4nO3deVxU5fv/8ReDgigooCyZWa5jH0VxRRTTUJTcRTTXcsk9NVfINbVcMlLB3bQ0y9Ayyz65m5VlpKXpJytNs3InXBAVEJjfH/6crxP7iA7g+/l48Mi55z73uc59aLg4XOc+diaTyYSIiIiIiOSawdYBiIiIiIgUVEqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkVsHYA8vC5fvk5aWsFY5rx0aWfi4hJsHcZDTefAtjT/tqX5ty3Nv23Zev4NBjvc3Epk+r6SabGZtDRTgUmmgQIVa2Glc2Bbmn/b0vzblubftvLz/KvMQ0RERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKegKiFFouJZ0o5ph33+IeHi55NpZYR+fAdpJvpdo6BBGRfEnJtBRaxRyL0G7MJ7YOQ6RQ2BzRwdYhiIjkSyrzEBERERGxkpJpERERERErWZ1ML1y4kCZNmlCtWjXCw8PzMqYHrnfv3owYMcKibf369QQGBvKf//yH3r17P7BYjh07htFoJCYmxtxmNBpZu3Ztnu7n9OnTGI1Gvvjiiyz7rV27FqPRmKf7FhERESksrKqZPnLkCFFRUYwePZoGDRpQunTpvI7LpmJjY3nllVfo2bMnwcHBlCpVyqbxREdHU65cuTwd09PTk+joaCpWrJin44qIiIg8TKxKpk+ePAlAz549cXZ2zrRfYmIixYoVsy4yG/rzzz9JTU2lc+fOVKtW7Z7GSk1NJTU1FQcHB6vH8PX1vacYMuLg4HBfxhURERF5mOS6zCM8PJzx48cDULduXXNJQkxMDEajka+//prBgwdTu3Ztpk+fDsDZs2cZNWoUDRo0oFatWvTv39+ckN+RlJTE66+/TtOmTalRowbt27fnyy+/zDaeZcuWERQUhI+PD40aNaJ///7ExsYCsHHjRoxGI9evX7fYJjAwkDlz5mQ4XlRUFD179gSgQ4cOGI1GNm7caD6+Y8eOWfT/d4lIeHg4ISEh7Ny5kzZt2lCzZk0OHz6cafzvvfceTZs2xdfXl8GDB5tjv1tGZR5r166lZcuW1KhRg6CgIN555x3ze1u2bKFatWrs27fP3Hb69Gnq1KnDvHnzzK//XeaRnJzM9OnTqVevHg0aNGDmzJmkpKSki+fKlStMnjyZRo0a4ePjQ7du3fjpp58yPUYRERGRwirXV6aHDh2Kt7c3S5YsYfXq1RQrVozKlSvz888/AzBx4kRCQkJ4/vnncXR05MqVK/To0QNXV1deeeUVnJycWL58OX379mXbtm3mK9cjRozg8OHDDB8+nPLly7NlyxaGDBnCRx99xJNPPplhLJs2bWLp0qWMHTuWKlWqcOXKFb777jtu3rxp9YR06dIFd3d3pk+fzhtvvMFjjz1G+fLlOX78eI7HOHPmDHPnzmXo0KF4eHhkWqKxc+dOpk+fTrdu3WjRogX79+9nwoQJ2Y6/fv16ZsyYQd++fQkICCAmJobZs2eTnJzMwIEDeeaZZ9ixYwcTJkxg8+bNlChRgpdffply5coxbNiwTMd944032LBhA6NGjaJSpUps2LCBrVu3WvRJTk6mb9++xMfHM378eNzd3Vm3bh19+vRh+/bteHh45HieRERERAq6XCfT5cuXp3z58gD4+PhQokQJi/eDg4N56aWXzK/nz5/PzZs32bRpE66urgDUqVOHwMBAPvroI3r27Mm+ffvYs2cP7777Lg0aNAAgICCAU6dOsWTJEiIjIzOM5fDhwwQEBJivJAO0bNkyt4dkwdvbm8qVKwO3rwhXrVo112NcuXKFd955J9NfAu5YunQpTZo0Ydq0aQA0adKES5cusWHDhky3SUtLIyoqipCQEPONnwEBAVy7do1ly5aZf4mZMmUKbdu2ZebMmVSrVo2DBw/y4YcfZlpucvnyZT744AOGDx9Ov379zPG0bt3aot8nn3zC8ePH+eyzz3jiiScAaNSoEcHBwaxatYqwsLAczRFA6dKZlwiJSP6jh+bYlubftjT/tpWf5z/PH9rSrFkzi9f79u2jUaNGODs7m0sGSpQoQfXq1fnf//4HwLfffouHhwd16tSxKCvw9/dn48aNme7rySef5MMPPyQyMpJmzZpRvXp17O3t8/qQcs3LyyvbRDolJYWjR48yefJki/agoKAsk+nz589z8eJFgoODLdpbt27NunXr+O2336hZsyaurq68+uqrDBo0iKJFizJs2LAs67+PHTtGUlISzZs3N7cZDAaaN2/OW2+9ZW7bt28f1atXp1y5chbnqn79+ubzmVNxcQmkpZlytU1u5Of/8UQKotjYa7YO4aHl4eGi+bchzb9t2Xr+DQa7LC8A5nky/e+VPS5fvsyhQ4f4/PPP0/X19/c394mNjaV69erp+mSVHHfu3Jnr168THR3NokWLcHV1pVu3bowYMcKmSXWZMmWy7XP58mVSU1PTzVd2K6PcqanObLurV6+a2xo2bEiZMmW4cuUKXbt2zXLcf/75J8tx74770KFDGZ6rO3+xEBEREXlY5HkybWdnZ/G6VKlSBAYGMnTo0HR975SIlCpVCi8vLxYtWpSrfRkMBvr06UOfPn04d+4cmzdvZt68eXh7e9O9e3ccHR0BuHXrlsV2dyecOZXVWG5ubrkez83NDXt7e+Li4iza//363+7UJGe23d3L+L3xxhukpqZSpkwZZs6cSURERKbj3vkFIC4uzlyOk9F+SpUqRY0aNXjllVfSjXEvK5aIiIiIFER5nkz/m7+/P1u2bKFKlSqZLpPn7+/P22+/TfHixalUqZJV+3nkkUcYOHAgH330ESdOnABul1sAnDhxgrp16wLw008/kZCQkOvxvb29zWPduSp77tw5Tp48aa4dzo0iRYrw5JNPsmvXLrp3725u37FjR7ZxeHp6snXrVpo2bWpu37JlC87OzuYHrMTExLB27Vrmz5+Ps7Mz/fv3p2XLlrRq1SrDcatWrYqjoyO7du0yn4O0tDR27dpl0c/f359vvvmGsmXLFrr1xUVERERy674n03369OHTTz/l+eefp1evXnh5efHPP/+wf/9+6tatS9u2bWncuDEBAQH069ePAQMGULlyZRISEvj1119JSkpizJgxGY49ZcoUSpUqRa1atXBxcSEmJoY///yTcePGAVCzZk28vLx47bXXGDlyJFeuXOGtt97Kcm3szHh7e1OjRg0WLFiAk5MTaWlpLFu2zOIqbm4NHjyYF198kalTpxIUFMT+/fv5+uuvs9zGYDAwfPhwpkyZgqurK40bN2b//v2sW7eO0aNH4+joyPXr15kwYQKtW7c211Y/++yzvPLKK9SvXx93d/d047q5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Bw/mww8/xM7OLldzJSIiIlKQZZlMly9fHldXV0wmk0WpQVpaGlFRUYSEhJivNgcEBHDt2jWWLVvG888/j7e3N56enjg4OKQrU2jTpo353yaTifr163PhwgXWr1+fq2T6yJEj9OzZk9atW5vbOnTokOPtM3KnRtre3v6eyiuWLVuGo6Njpu9fvnyZDz74gOHDh9OvXz8AmjRpYnEsGTlx4gT//e9/mTVrFp06dTJv1759e5YsWcLKlSspXrw4s2fPplevXmzatImdO3dSokQJwsLCMh33q6++4ujRo6xfv55atWoBt+u1g4KCLJLphQsXUqZMGVasWIGDgwNw++r8M888w5dffkmzZs1yMj0AlC7tnOO++cHDumB/fqJzICLy4OWHz978EENmrKqZPn/+PBcvXiQ4ONiivXXr1qxbt47ffvuNmjVrZrr91atXiYqKYteuXVy4cMF89dbLyytXcVSrVo2VK1diMBho1KgRFSpUyP3B3AcNGzbMMpGG26USSUlJNG/e3NxmMBho3ry5+Yp4Ro4cOYLJZLKYe4PBQHBwsMV2devWpU+fPkyePJmUlBTeffddihcvnum4hw8fpkyZMuZEGuDRRx+levXqFv327dtHx44dMRgM5pKUcuXK8eijj/K///0vV8l0XFwCaWmmHPe3JQ8PF2JjtWy9Lekc2FZ+/kEmIveXrT97bf35bzDYZXkB0Kp1pu/Ux5YuXdqi/c7rq1evZrl9eHg4n3/+Of3792flypV8+OGHdO7cmaSkpFzFMWXKFFq0aMHixYsJDg6mZcuW/Pe//83VGPdDmTJlsu3zzz//AJnPYWYuXrxI8eLF063CUbp0aW7evElycrK5rW3btiQnJ1OlShXq1auX5bixsbEZ3pD473guX77MihUrqF69usXX33//zblz57Lch4iIiEhhY9WVaQ8PDwCLG9zufl2qVKlMt01KSmLPnj1MmTKF7t27m9vff//9XMdRsmRJJk2axKRJk/j111956623GDt2LEajkcqVK+Pg4MCtW7cstomPj8/1fgAcHR3TjZXZLw05qRu+k3DHxcXh6upqbv/3nP6bp6cnN27c4ObNmxYJdVxcHE5OTubSi5SUFCZPnkzVqlX5/fffiY6O5tlnn810XA8PDy5dupSuPS4uzmI1klKlStGiRQu6dOmSrq+bm1uWsYuIiIgUNtlemS5atGi6K8Z36qH/fbPcli1bcHZ2Nj90JKNtk5OTSUtLMyd9AAkJCezevdvqg4DbJR/jx48nLS2NkydPmuM8c+aMRQx3r3qRG15eXly/fp0LFy6Y27755hur461atSqOjo7s2rXL3JaWlmbxOiM+Pj7Y2dmxbds2c5vJZGLbtm0WK4csXbqUP/74g8WLFzNgwADmzJnD6dOnsxz3n3/+4aeffjK3nT17lqNHj1r08/f35/fff6dGjRr4+PhYfJUrVy7Hxy8iIiJSGGR7ZbpChQrs2rWLnTt34uXlhaenJ15eXgwfPpwpU6bg6upK48aN2b9/P+vWrWP06NHmeuGKFSvyzz//sHHjRqpUqYKbmxvlypXDx8eHRYsW4ezsjMFgYPny5Tg7O5OQkJCr4Lt3705QUBBVqlTBzs6O9evXU7x4cXO9dosWLYiMjGTixImEhIRw9OhRPvroIyum6fZNfsWKFWPChAn07duX06dP88EHH1g1Fty+itu1a1eioqIoUqQIlStXZsOGDdy4cSPL7SpVqkSbNm2YPn06169f57HHHmPDhg2cPHnSvOLK0aNHWbp0KZMmTeKxxx5j2LBh7N69mwkTJrB69eoMr5w3bdqUatWqMXLkSMaOHYuDgwNRUVHpSj9efPFFunTpwsCBA+ncuTNubm5cuHCBb7/9lk6dOmW4fKCIiIhIYZXtlekePXrQuHFjJkyYQGhoKOvXrwega9euTJw4kZ07dzJ48GA+++wzwsPDGThwoHnbZ555hpCQEObOnUtoaKh5ibyIiAgee+wxwsLCeO2112jZsiUdO3bMdfC+vr58/PHHjBgxgpdeeslcz3tn+b6qVasyc+ZMDh06xJAhQ9i/fz+zZs3K9X7g9rJ+kZGRnD9/nmHDhvHpp58SERFh1Vh3jB8/ns6dO7No0SLGjBmDp6cnffv2zXa7V199lU6dOrFo0SKGDh3KmTNnWLp0KfXq1SM5OZmwsDD8/Pzo1q0bAA4ODrz++uv8+OOPFmti383Ozo4lS5ZQqVIlJkyYwKxZs+jZsye1a9e26FehQgXzkxOnTJnCgAEDiIqKwsHBgccff/ye5kNERESkoLEzmUwFYzkFKXS0mofkhs6BbXl4uNBuzCe2DkNEHrDNER1s/tlr68//+7Kah4iIiIiIWLmah4iIPFySb6WyOeLeHoolIgVPYlKKrUPI95RMi4hIthyK2tv8T70PM1v/mfthp/mXrKjMQ0RERETESkqmRURERESspGRaRERERMRKqpkWEZFsJd9KxcPDxdZhPNQ0/7al+betrOY/MSmFa/E3H2A0lpRMi4hIthyK2mudaRHJlzZHdMCWt4eqzENERERExEoPRTIdFRWFn59frrZJTk4mKiqKX375xaL99OnTGI1GvvjiC3NbYGAgc+bMyZNY71VG8WVk7dq1GI1G8+uYmBiMRiPHjh0DMj9+EREREfk/D0UybY1bt26xcOHCdMmkp6cn0dHR1K1b10aRZc3a+KpXr050dDTly5cHMj9+EREREfk/qpnOJQcHB3x9fW0dRqasjc/Z2TlfH5eIiIhIfpRvr0xv3LiRGjVqEB8fb9F+/PhxjEYj3377rblt7dq1tGzZkho1ahAUFMQ777yT5dg3btxg+vTptGrVilq1ahEYGMi0adNISEgw96lTpw4AL7/8MkajEaPRyOnTp3NcRnHgwAF69epFrVq18PPzY9KkSRbjZ+TgwYMMHjyYgIAAfH196dChA59++mm6fmfOnGH06NH4+flRq1Yt2rVrx+bNm4GMyzySk5OZPn069erVo0GDBsycOZOUFMvHg/67zCOz4w8NDSU8PDxdTOHh4XTs2DHL4xMREREpbPJtMt2iRQsAduzYYdH++eefU6ZMGXMN9Pr165kxYwaBgYEsXbqU4OBgZs+ezfLlyzMdOzExkdTUVEaNGsWKFSsYOXIk3333HSNHjjT3Wb16NQBDhgwhOjqa6OhoPD09cxT7Dz/8QJ8+fShTpgyRkZG8/PLLfPnll0yYMCHL7c6ePUudOnV47bXXWLJkCS1btmTChAl89tln5j5xcXE8++yzHDlyhLCwMJYuXUpoaCjnzp3LdNw33niDDRs2MHToUObOncvZs2dZtWpVlrFkdvyhoaFs27aN69evm/tev36dbdu20blz55xMj4iIiEihkW/LPEqWLEmTJk34/PPPLZK0zz//nFatWmFvb09aWhpRUVGEhISYr5YGBARw7do1li1bxvPPP4+jo2O6sd3d3Zk2bZr5dUpKCuXKlaNHjx6cPXuWsmXL4uPjA0D58uVzXf4QERFB7dq1mT9/vrnNy8uLPn36cOzYMapWrZrhdm3atDH/22QyUb9+fS5cuMD69etp27YtAO+88w4JCQls3LjRnNz7+/tnGsvly5f54IMPGD58OP369QOgSZMmtG7dOstjyOz427Zty+zZs9m6dav5vGzZsoVbt26ZYxQRERF5WOTbZBqgdevWhIeHc/nyZdzc3Pjll184deoUr732GgDnz5/n4sWLBAcHp9tu3bp1/Pbbb9SsWTPDsTdt2sQ777zDn3/+yY0bN8ztp06domzZslbHfPPmTQ4dOsSkSZMsSinq1q1L0aJF+fnnnzNNpq9evUpUVBS7du3iwoULpKamArcT8Tu+++47mjRpkuOr5MeOHSMpKYnmzZub2wwGA82bN+ett97K9fE5OzvTqlUrPv74Y3My/fHHHxMYGIibm1uuxipd2jnX+7clLdhvezoHIiKSEVv+fMjXyXRgYCBFihRh+/btPPvss3z++ed4e3ubV6qIjY0FoHTp0hbb3Xl99erVDMfdsWMHYWFhdO/enVGjRuHq6kpsbCzDhg0jKSnpnmKOj48nNTWVadOmWVz9viOrcozw8HB++uknhg4dSqVKlXB2dmbdunXs2rXL3OfKlSvmq8Y58c8//wCZz5E1QkND6d27N3///Tcmk4kDBw5kWVaTmbi4BNLSTFbH8SB5eLgQG2vLJeFF58C29IuMiORn9/Png8Fgl+UFwHydTJcoUYKmTZvy+eef8+yzz7JlyxaCg4Oxs7MDwMPDA7hdR3y3O69LlSqV4bhbt26lVq1avPLKK+a277//Pk9idnFxwc7OjhdffJGmTZumez+zK8pJSUns2bOHKVOm0L17d3P7+++/b9HvTuKfU2XKlAFuz4mrq6u5/d9zlhv169fn8ccfZ+PGjZhMJjw9PQkICLB6PBEREZGCKt/egHhHmzZt2L9/P7t37+bvv/+2qCv29vbG09OTrVu3WmyzZcsWnJ2dLR5KcrfExEQcHBws2u6shnFH0aJFAXJ9pbp48eL4+vryxx9/4OPjk+7r7pKNuyUnJ5OWlmYRV0JCArt377bo5+/vz969e81XnLNTtWpVHB0dLa5up6WlWbzOSHbH37lzZzZt2sQnn3xCx44dsbe3z1E8IiIiIoVJvr4yDdC0aVOKFSvGlClTKFeunEUNtMFgYPjw4UyZMgVXV1caN27M/v37WbduHaNHj87w5kOARo0aMX36dJYsWUKtWrX48ssv2bdvn0UfBwcHypUrx5YtW6hSpQqOjo6ZJuf/NnbsWPr06YPBYKBVq1aUKFGCc+fOsWfPHkaNGkWFChXSbePi4oKPjw+LFi3C2dkZg8HA8uXLcXZ2tlhSr0+fPmzatImePXsyePBgvL29OXnyJDdu3GDAgAHpxnVzc6Nr165ERUVRpEgRKleuzIYNGyzqxDOS2fHfSfY7derEggULSElJISQkJEfzIiIiIlLY5PtkulixYgQGBrJ582YGDhyY7v2uXbuSlJTEmjVrePfdd/Hy8iI8PJw+ffpkOma3bt04ffo0a9asISkpicaNGxMREUHXrl0t+k2bNo05c+bQt29fkpOTs72ae0e9evV47733iIyMZPz48aSlpVG2bFmaNGliLrvISEREBFOmTCEsLAxXV1d69uxJYmIia9euNfdxd3dn3bp1zJ07l5kzZ5KcnMzjjz/OoEGDMh13/PjxpKSksGjRIgwGA+3bt6dv377Mnj07y+PI6PjLlSsH3C6xufOLTUa/HIiIiIg8DOxMJlPBuANM8pUrV67w1FNPMXnyZLp06WLVGLoBUXJD58C2PDxcaDfmE1uHISKSzuaIDroBUQqOhIQETpw4wZo1ayhRooTWlhYREZGHmpJpyZWff/6Z5557jkcffZQ5c+bg5ORk65BEREREbEZlHmIzKvOQ3NA5sK1SrsVxKKpVe0Qk/0lMSuFa/M37Nr7KPERE5J45FLXXLzM2pF8mbUvzb1v5ff7z/TrTIiIiIiL5lZJpERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaRERERERKymZFhERERGxkpJpERERERErKZkWEREREbGSnoAoNmMw2Nk6hFwpaPEWRjoHtqX5ty3Nv21p/m3LlvOf3b7tTCaT6QHFIiIiIiJSqKjMQ0RERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKSqZF/r+bN2/y0ksvERQURHBwMF988UWmfdevX09QUBAtWrRg+vTppKWlWbyflJREmzZtCAkJud9hFxp5Mf87d+4kJCSEtm3b0qZNG1atWvWgwi+Q/vjjD5599llatWrFs88+y6lTp9L1SU1NZdq0abRo0YKgoCA2bNiQo/ckZ+71HCxatIg2bdrQrl07QkJC+Prrrx9g9AXfvc7/HSdPnqRWrVrMmTPnAURd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SUk3XlpamunWrVumyZMnm3r37m1uf/fdd01Vq1ZN1z8sLMzUqVMni7a///7bVLVqVdPu3bvNbVWrVjV17NjRot+3335rqlq1qikmJsaivUePHqbhw4dnesw53S6j2L777jtT1apVTb/99luuxrt69aqpZs2appkzZ2Ya1/Dhw029evWyaDt8+LCpatWqpmvXrmW6XUaefvpp0+zZs82vU1NTTQEBAabw8HCLflOnTjXVqVPHlJiYaDKZ/u/7YceOHdnuY9SoUaYmTZqYbt68meH7Gc3V3VJSUkw3b940+fr6mj7++GOTyZT98W7ZssXUoEGDbGO728SJE03t27dP1/7mm2+aGjdunKuxRAoDlXmIiOQxFxcXPvzwQ4uvmjVrcvDgQW7cuEFwcDApKSnmr4YNG/LPP/9w/vx5AK5evcqrr77K008/TfXq1alevTrR0dGcOnUqT+N86qmnLF5/++23eHh4UKdOHYv4/P39+d///pfpONZudy/jHTx4kMTExFzfXFi+fHmKFy/O2LFj2blzJ/Hx8bmOD25fEb548SLBwcEW7a1btyYhIYHffvvN3GZnZ5durjPy3Xff0bp161zVrh86dIi+ffvi5+fHf/7zH2rVqsWNGzf4448/gOyPt2rVqly7do2wsDD27t3LjRs3crxvEblNZR4iInnM3t4eHx+fdO2XL18GoE2bNhlud+7cOR599FHCw8P56aefGDp0KJUqVcLZ2Zl169axa9euPI2zTJky6eKLjY2levXq6fra29tnOo61293LeFeuXAHAw8MjV2OXKlWKt99+m6ioKF566SVMJhONGzdm8uTJPPbYYzkeJzY2FoDSpUtbtN95fXeZRKlSpXBwcMh2zCtXruTqeM6ePUu/fv2oWbMm06ZNw9PTk6JFizJo0CCSk5PN+87qeCtWrMjixYtZvnw5AwcOpEiRIgQFBTFx4kTc3d0z3G/JkiUzLIuJj4/P09VYRAoKJdMiIg/InURj2bJl6ZIwgAoVKpCUlMSePXuYMmUK3bt3N7/3/vvv52gfDg4O3Lp1y6Its6uvdnZ26eLz8vJi0aJFOdrXvW53L+O5uroCt5PazJK+zPj6+rJy5UoSExP59ttvmT17NmPGjGH9+vU5HuNO0hsXF2fRfue1NUmlq6urOUnPia+//prExEQWL15M8eLFgdu1+v+ud87ueJs1a0azZs24du0ae/bsYebMmcyYMYN58+ZluN+KFSty/vx5bty4Yd4v3K6lrlixYm4PW6TAUzItIvKA1K5dm2LFinHx4kWaNWuWYZ9r166RlpZmcSUzISGB3bt3W/QrWrQocHvVi7uXWfP29ubMmTMW7XdWX8iOv78/b7/9NsWLF6dSpUo5Pi5rt7uX8e7M5aZNmwgLC8uwT9GiRUlKSsp0P8WKFSMwMJDjx4+zbNmyXMXo7e2Np6cnW7dupWnTpub2LVu24OzsjNFozNV4cPu4t2zZwqhRo3K0dF5iYiIGg4EiRf7vR/mWLVvS3fx6R3bH6+LiQrt27di/fz8HDx7MdL8BAQEA7Nixgw4dOgBw4cIFfvjhB/PNniIPEyXTIiIPSMmSJXnxxRd57bXXOHPmDPXr1yctLY1Tp04RExPDokWLcHFxwcfHh0WLFuHs7IzBYGD58uU4OzuTkJBgHuvOFcDVq1fTsGFDnJ2dqVixIi1atCAyMpKJEycSEhLC0aNH+eijj3IUX+PGjQkICKBfv34MGDCAypUrk5CQwK+//kpSUhJjxozJ0+3uJY6SJUsydOhQ5s2bx61bt3jqqadITk7myy+/5MUXX8TLy4sKFSqwa9cudu7ciZeXF56envzyyy989NFHNG/enLJly3LhwgWio6Np2LBhrmI0GAwMHz6cKVOm4OrqSuPGjdm/fz/r1q1j9OjRVq0jPWzYMEJDQ+nZsyf9+vXD1dWVo0eP4urqSmhoaLr+DRs2JDU1lZdffpnQ0FCOHz/OqlWrKFmypLnPnj17sjzeDz74gEOHDtGkSRM8PT05deoUW7duNSfJGfH29iY0NJSZM2diMplwd3dn4cKFlC1blvbt2+f6uEUKOiXTIiIP0IABA/D09GT16tW8/fbbODo68sQTT9C6dWtzn4iICKZMmUJYWBiurq707NmTxMRE1q5da+5Tr149+vfvz5o1a3jzzTepX78+7777LlWrVmXmzJksXryYHTt20LBhQ2bNmmVRMpIZOzs7Fi5cyNKlS1m9ejXnzp2jVKlSVKtWLcvHfFu73b2ON2jQIEqVKsWaNWv44IMPKFWqFPXq1TMv2dajRw9++eUXJkyYwNWrV3nxxRdp06YNdnZ2zJs3j7i4ONzd3WnWrBmjR4/OdZxdu3YlKSmJNWvW8O677+Ll5UV4eLjVj46vWLEi77//PhEREUycOBGAypUrZxqb0Whk1qxZLFy4kB07dlCtWjUWLFjAqFGjzH3Kly+f5fEajUZ2797NrFmzuHr1Kh4eHnTp0oWRI0dmGeukSZNwcnJi9uzZJCYmUr9+fSIiIgr0w2hErGVnMv3/xUVFRERERCRXtDSeiIiIiIiVlEyLiIiIiFhJybSIiIiIiJWUTIuIiIiIWEnJtIiIiIiIlZRMi4iIiIhYScm0iIiIiIiVlEyLiIiIiFhJybSIiIiIiJX+H0Z4zQNPbvGYAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import shap\n", + "from alibi.explainers import KernelShap\n", + "\n", + "predict_fn = lambda x: model(scaler.transform(x))\n", + "\n", + "explainer = KernelShap(predict_fn, task='classification')\n", + "\n", + "explainer.fit(X_train[0:100])\n", + "\n", + "result = explainer.explain(x)\n", + "\n", + "plot_importance(result.shap_values[0], features, 0)\n" + ] + }, + { + "cell_type": "markdown", + "id": "53a6161f-13b6-4156-b378-bd689e68d00f", + "metadata": {}, + "source": [ + "Here we apply Kernel SHAP to the Tree-based model as well in order to compare to the tree-based methods we run later" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "77deef77-42c1-4450-b381-fde4b1079e24", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d2b889f2c1ee423ba866d5b9481da293", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/1 [00:00,\n", + "
    )" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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zpw5DBkyhLCwMOLj4+nXrx9JSUmmPkajkZSUlHRfIiIiIoWV9pkWAK5evcrSpUupU6cOAF5eXgQFBbF582a6d+8OwDvvvMM777yTa+csU8Yx18YSkcJJH8iTPZon69MaWF9erYGSaQGgTJkypkQa4PHHH8fLy4ujR4+akunnn3+eF198Md2xISEhFp0zNjaetDSjZQHnI/oGKpJ3YmL0sS334+bmpHmyMq2B9T3IGtja2mR5A1DJtAB3kumM2mJiYkyvy5Yti4+Pz8MMS0REROSRppppASA2NjbDNjc3NytEIyIiIpI/KJkW4E7i/NNPP5lenz9/nuPHj1OzZk0rRiUiIiLyaFOZhwDg4uLC2LFjefXVVylWrBjh4eG4uroSHBxs7dBEREREHllKpgWAcuXKMWjQIMLCwjh37hze3t6EhYVRtGhRa4cmIiIi8shSMi0mLVu2pGXLlhm+t3fv3kyP+/333/MqJBEREZFHmmqmRUREREQspDvTInks+XYqW8PaWzsMkQInMUmfwCoi1qdkWpg7d661QyjQHOzttFm/FenDEqxPayAiBZnKPERERERELKRkWkRERETEQkqmRUREREQspJppkTyWfDsVNzcna4dRqGn+rU9rYF0Pa/4Tk1K4cf3WQzmXyKNCybRIHnOwt6Pd6E+tHYaISJ7bGtYePWoqhY3KPERERERELKRkWkRERETEQkqmH3GbN2/GYDCQkJCQq+OGhoYSHBycK2P16tWL4cOH58pYIiIiIvmJkmkREREREQspmRYRERERsZCSaSs7fPgwgwYNIiAgAF9fX9q3b89///vfLI9JTEzkjTfe4JlnnsHb25vAwEDCwsJM76emphIREUGzZs3w9vamTZs2bN26NcOxvv32W9q1a4evry/du3fn5MmTZu/funWL119/ncaNG+Pj40OnTp3Yv3//g1+4iIiISAGgrfGs7Pz589SpU4fu3bvj4ODATz/9xIQJE7C1taVt27bp+huNRoYMGcLhw4cZMmQI3t7eXLx4kUOHDpn6hIeH8/bbbzN06FB8fHzYuXMnY8aMwcbGxmzM6Oho3njjDQYPHkzRokV54403GDlyJFu3bsXGxgaASZMmsXfvXkaNGkWFChXYtGkTAwcOZO3atdStWzfvJ0hERETkEaZk2sratGlj+rPRaKRevXpcvHiRjRs3ZphM79+/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Cps2bTKrE89IZtd/N9nv2LEjixYtIiUlheDg4GzNi4iIiEhB88gn08WKFSMwMJCtW7cyYMCAdO936dKFpKQk1q1bx3vvvYeHhwehoaH07t070zG7devG2bNnWbduHUlJSTRu3JiwsDC6dOli1m/69OnMmzePPn36kJycfN+7uXfVrVuX999/n/DwcMaNG0daWhrlypWjSZMmprKLjISFhTFlyhTGjx+Ps7MzPXr0IDExkfXr15v6uLq6smHDBubPn8/s2bNJTk7mySefZODAgZmOO27cOFJSUliyZAm2trY8//zz9OnTh7lz52Z5HRldf/ny5YE7JTZ3f7DJ6IcDERERkcLAxmg0FvwnwCTXxcXF8fTTTzN58mQ6d+5s0RiF6QHEdqM/tXYYIiIiBdLWsPZ6AFHyj/j4eE6dOsW6desoWbKk9pYWERGRQk3JtOTIL7/8wosvvsjjjz/OvHnzKF68uLVDEhEREbEalXmI1RSWMo/SziVwsNduJyIiInkhMSmFG9dvZdlHZR4i+ZiDvZ3F/wPLg3uQb6CSO7QG1qX5tz6tQcH2yO8zLSIiIiLyqFIyLSIiIiJiISXTIiIiIiIWUjItIiIiImIhJdMiIiIiIhZSMi0iIiIiYiEl0yIiIiIiFlIyLSIiIiJiISXTIiIiIiIW0icgitXY2tpYO4SHpjBd66NI8299WgPr0vxbn9bA+ixdg/sdZ2M0Go0WjSwiIiIiUsipzENERERExEJKpkVERERELKRkWkRERETEQkqmRUREREQspGRaRERERMRCSqZFRERERCykZFpERERExEJKpkVERERELKRkWkRERETEQkqmRSzw559/0rVrV5599lm6du3KmTNn0vVJTU1l+vTptGjRgqCgIDZt2pSt9yR7HnQNlixZQps2bWjXrh3BwcF88803DzH6guFB1+Cu06dPU6tWLebNm/cQoi44cmP+v/jiC9q1a0fbtm1p164dly9ffkjRFwwPugaxsbEMGDCAdu3a8dxzzzFt2jRSUlIe4hXkb9mZ//379xMcHIy3t3e67zG59m+xUURyrFevXsYtW7YYjUajccuWLcZevXql6/PJJ58Y+/bta0xNTTXGxsYamzRpYvznn3/u+55kz4Ouwddff228efOm0Wg0Gn/99Vejn5+f8datWw/vAgqAB10Do9FoTElJMfbs2dM4atQo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DxITE1m/fr2pT926denXrx/r1q3jzTffpF69erz33ntUq1aN2bNns3TpUnbt2kWDBg2YM2eOWclIZmxsbFi8eDHLly9n7dq1REdHU7p0aapXr57lx3xbetyDjjdw4EBKly7NunXr+PDDDyldujR169alZMmSALzwwgv8+uuvTJgwgWvXrvHKK6/Qpk0bbGxsWLhwIbGxsbi6utKsWTNGjRqV4zi7dOlCUlIS69at47333sPDw4PQ0FCLPzq+UqVKfPDBB4SFhTFx4kQAqlSpkmlsBoOBOXPmsHjxYnbt2kX16tVZtGgRI0eONPWpUKFCltdrMBjYu3cvc+bM4dq1a7i5udG5c2dGjBhh0TXAnb+bW7ZsYeXKlSxbtoyYmBiKFi1K1apVefHFF+nWrZupb0BAAAsXLmTZsmVs3boVV1dX+vbta/bJnq6urqxbt85UnmJvb0/Tpk157bXXTL/BsbGxYdmyZUyePJkJEyZQpkwZBg4cyHfffWd6VkEkv7ExGv//pqUiIiIiIpIjqpkWEREREbGQkmkREREREQspmRYRERERsZCSaRERERERCymZFhERERGxkJJpERERERELKZkWEREREbGQkmkREREREQspmRYRERERsdD/A5Mlx9KQEbSHAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import shap\n", + "from alibi.explainers import KernelShap\n", + "\n", + "predict_fn = lambda x: rfc.predict_proba(scaler.transform(x))\n", + "\n", + "explainer = KernelShap(predict_fn, task='classification')\n", + "\n", + "explainer.fit(X_train[0:100])\n", + "\n", + "result = explainer.explain(x)\n", + "\n", + "plot_importance(result.shap_values[1], features, '\"Good\"')" + ] + }, + { + "cell_type": "markdown", + "id": "c9f0d0aa-f805-4ca7-9d26-4280548dd66b", + "metadata": {}, + "source": [ + "### Interventional treeSHAP\n", + "\n", + "Interventional tree SHAP computes the same Shapley values as the kernel SHAP methood above. The difference is that it's much faster for tree-based models. He it is applied to the random forest we trained. Comparison with the kernel SHAP results above show very similar outcomes." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "2d3b1ce0-8d52-4a6f-b30c-40779b9b2a8c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(,\n", + "
    )" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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MjKIiooiNDTUdLc5MDCQq1evsnTpUl566SW8vLzw8PDAwcEhU5lCq1atTH82Go3UqVOHc+fOsW7dujwl04cPH6Zbt260bNnS1Na2bdtc75+VWzXSdnZ291ResXTpUhwdHbP9/NKlS3z00UcMGTKE3r17A9C4cWOzc8nK8ePH+eKLL5g1axbt27c37ff888+zePFiVqxYQfHixZk9ezbdu3dn48aN7NixgxIlSjB27Nhsx/3mm284cuQI69ato0aNGsDNeu3g4GCzZHrBggWUKVOG5cuX4+DgANy8O//cc8/x9ddf07Rp09xcHgBKl3bKdV8Ra2bNL5W5Xx7Fc7Z2mhProzmxPvdjTiyqmT579iznz58nJCTErL1ly5asXbuWP/74g+rVq2e7/+XLl4mKimLnzp2cO3fOdPfW09MzT3FUrVqVFStWYGtrS8OGDalQoULeT+Y+qF+/fo6JNNwslUhJSaFZs2amNltbW5o1a2a6I56Vw4cPYzQaza69ra0tISEhZvsFBATQs2dPJk6cSFpaGu+//z7FixfPdtxDhw5RpkwZUyIN8Pjjj+Pj42PWb+/evbRr1w5bW1tTSUq5cuV4/PHH+d///penZDo+PpGMDGOu+z8I+sYnloiLe7Re2+Lu7vzInbO105xYH82J9bF0TmxtbXK8AWjROtO36mNLly5t1n5r+/LlyznuHx4ezpdffkmfPn1YsWIFH3/8MR06dCAlJSVPcUyaNInmzZuzaNEiQkJCaNGiBV988UWexrgfypQpc9c+Fy5cALK/htk5f/48xYsXz7QKR+nSpbl+/TqpqammttatW5OamkqVKlWoXbt2juPGxcVl+UDinfFcunSJ5cuX4+PjY/b177//Ehsbm+MxRERERAobi+5Mu7u7A5g94Hb7dqlSpbLdNyUlhd27dzNp0iS6du1qav/www/zHEfJkiWZMGECEyZM4Pfff+edd95h1KhRGAwGKleujIODAzdu3DDb58qVK3k+DoCjo2OmsbL7oSE3dcO3Eu74+HhcXFxM7Xde0zt5eHhw7do1rl+/bpZQx8fHU6xYMVPpRVpaGhMnTsTb25s///yT6OhoOnfunO247u7uXLx4MVN7fHy82WokpUqVonnz5nTs2DFTX1dX1xxjFxERESls7npn2t7ePtMd41v10Hc+LLd582acnJxMLx3Jat/U1FQy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cWm8Ui7FcbC3K+gwRETkEZKcksbVK9cLOoxC734tjacHEEVu42Bvp3WmRUTkgdoU0RY9PvrwUpmHiIiIiIiFlEyLiIiIiFhIyXQBiImJwWAwcPTo0Tztt2HDBgwGA0lJSfccw549e3jvvffueRwRERGRR5mS6UfUd999x+rVqws6DBEREZGHmpJpERERERELKZm2wLFjx+jTpw9169bF39+f5557jg8++ACAoKAg5syZY9Y/N+UZBoOBd999l9dff526detSu3Ztpk+fTmpqaqa+p06dolevXvj7+xMSEsK2bdvMPt+9eze9evWiQYMG1KpVi06dOrFnzx7T51FRUaxcuZLTp09jMBgwGAyEh4ebPt+/fz/du3enRo0a1KtXjwkTJpCYmGj6/MqVK4wfP57AwED8/Pxo2rQpEyZMyNtFFBERESkEtDSeBQYMGEClSpWYO3cuDg4OnDhxIl/qmFeuXIm/vz9z587lzz//ZN68eTg4ODB27FizfqNGjaJTp0706dOHNWvWMGLECHbs2IGXlxdwM9l+5pln6N27N7a2tnzzzTf07duXNWvWEBAQQMeOHTl58iQxMTEsWLAAADc3NwB++uknevbsSfPmzYmMjOTSpUtERERw5coVIiMjAZg1axYHDhxg3LhxlClThtjYWPbv33/P5y8iIiLysFEynUcXL17k1KlTLFq0CIPBAECDBg3yZewSJUowf/58bG1tadKkCampqSxZsoT+/fvj4uJi6vfSSy8RFhYGgI+PD40aNeKrr76ia9euAHTv3t3UNyMjg3r16vHnn3/y8ccfExAQgJeXFx4eHjg4OODv728WQ0REBDVr1uTtt982tXl6etKzZ0+OHj2Kt7c3hw8fplu3brRs2dLUp23btnk+35wWQBcREXmUuLs7F3QIj4T7cZ2VTOeRi4sLjz32GJMnT+bFF1+kXr16lC5dOl/GbtasGba2/1d506JFC95++22OHTtGnTp1TO2BgYGmP7u6uuLm5sbZs2dNbWfPnmXevHl8//33xMXFcesll7Vq1crx+NevX+fgwYNMmDCBtLQ0U3tAQAD29vb8+uuveHt7U7VqVVasWIGtrS0NGzakQoUKFp2vNb4BUd/MRESkIFjyZj7Jm/v1BkTVTOeRra0tK1aswN3dnXHjxtGoUSNeeOEFjhw5cs9j35mU3yq9iIuLM2t3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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from alibi.explainers import TreeShap\n", + "\n", + "tree_explainer_interventional = TreeShap(rfc, model_output='raw', task='classification')\n", + "tree_explainer_interventional.fit(scaler.transform(X_train[0:100]))\n", + "result = tree_explainer_interventional.explain(scaler.transform(x))\n", + "\n", + "plot_importance(result.shap_values[1], features, '\"Good\"')\n" + ] + }, + { + "cell_type": "markdown", + "id": "94c05d4f-13b8-4266-bced-510664ba7342", + "metadata": {}, + "source": [ + "### Path Dependent treeSHAP\n", + "\n", + "Path Dependent tree SHAP also gives the same results as the Kernel SHAP model only faster. Here it is applied to random forest. Again very similar results to kernel SHAP and Interventional tree SHAP as expected. " + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "aeef4572-2c4e-41ea-8298-80c95476be96", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(,\n", + "
    )" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAFECAYAAADlf7JXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABmvElEQVR4nO3deVxV1f7/8RcHAQdQQBkys5w4ehVFUXHANBQzh1TEKfXmkBOm5kzOQzlkZIKzZWmWoWV27eZsVpaRlqY3K02zUlERRQQFBM7vD3+eb0cG4YhyxPfz8fDx9ayz9tqftVfX74fNZ69tZzKZTIiIiIiISL4ZCjsAEREREZEHlZJpERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaRERERERKymZFhERERGxUrHCDkAeXpcvJ5OZWXS2OS9b1pn4+KTCDkP+QWtim7QutknrYpu0LoXPYLDDza1Ujt8rmZZCk5lpKlLJNFDk5lMUaE1sk9bFNmldbJPWxbapzENERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESnoDohRZLqVLUNzp/v0nnnYj476dS0RERGyDkmkpsoo7FaPDmE/v2/k2R3S8b+cSERER26AyDxERERERKymZFhERERGxkpJpIDw8nJCQkDv2CwgIICoq6p7EYDQaWbt27T0ZW0RERETuDdVMA2FhYaSkpBR2GCIiIiLygHlgk+mMjAwyMjJwdHS867EqVqxYABHJjRs3MBgM2NvbF3YoIiIiIvfFA1PmcasUY+fOnbRr147atWtz+PBhAHbu3ElISAi+vr40bdqU1157jRs3bpiPPXfuHCNHjqRx48bUrl2bVq1a8eabb2YZ+5/279/Ps88+i6+vLyEhIfz4449ZYgoKCmLevHkWbRs3bsRoNJKcnAzAtWvXmDlzJk8//TR16tQhKCiIGTNmkJSUlO9rsGHDBtq2bUvt2rUJCAigd+/eHD9+HICYmBiMRiPHjh2zOKZPnz6MGDHCom3t2rU0b94cPz8/wsLC2LdvH0ajkZiYGHOfVatW0aVLF/z9/WnSpAlDhgzhzz//zHbs6OhoWrVqRe3atblw4UK+5yUiIiLyoHqg7kyfOXOG+fPnExYWhoeHBxUqVODzzz9nzJgxdO/endGjR/PXX3/xxhtvYDKZmDBhAgDjx48nNTWVWbNm4eLiwt9//83JkydzPM/58+cZOHAgvr6+REZGcuHCBcaOHWtVKUhKSgoZGRmMGjUKd3d3YmNjWbZsGSNHjuTtt9/O8zj79+9n+vTpjBgxAj8/P5KSkjh06BBXr17NVzw7duxg1qxZPPfcc7Rs2ZIffviBSZMmZel37tw5evfuTfny5UlKSuLDDz+kR48ebN++HRcXF3O/H3/8kb/++ouxY8dSokQJi+9EREREiroHKplOSEjg3XffpUaNGgCYTCbmz59Pp06dmD59urmfo6MjM2fOZNCgQbi5uXHkyBEiIiIICgoCbj5ImJvVq1fj5OTEihUrKFGiBAAlSpRg3Lhx+Y7Z3d2dGTNmmD+np6dToUIFnnvuOc6ePUv58uXzNM7hw4cxGo0MHjzY3NayZct8x7Ns2TKaN2/OtGnTAAgMDOTy5cusW7fOot/EiRPNf8/IyKBp06Y0btyYXbt20alTJ/N3iYmJbNq0iXLlyuU7lrJlnfN9jK3z8NAPE7ZGa2KbtC62Setim7Qutu2BSqa9vLzMiTTAH3/8wdmzZ2nTpg3p6enm9kaNGpGamsrx48dp2LAh1atX54033iAhIYFGjRrdMYE9cuQITZo0MSfSAMHBwVbHvWnTJt59913+/PNPrl27Zm4/depUnpPpGjVqMH/+fGbPnk1wcDB16tTJd714eno6v/zyC1OnTrVoDwoKypJMHzp0iIULF3L06FESEhLM7X/88YdFv5o1a1qVSAPExyeRmWmy6ti8KIx/fOLi8vebArm3PDxctCY2SOtim7QutknrUvgMBrtcbwA+UMn07Unb5cuXARg0aFC2/WNjYwF48803WbBgAXPmzCExMZHq1asTHh5O48aNsz0uLi4Oo9Fo0VaiRAlKliyZ75h37NjBhAkT6NmzJ6NGjcLV1ZW4uDiGDRtGampqnsdp0qQJc+bM4b333mPNmjWULFmSjh07Mm7cuDzHdfnyZTIyMnB3d7dov/3z2bNn6d+/P7Vr12bGjBl4enri4ODA4MGDSUtLs+hrbSItIiIiUhQ8UMn07VxdXQGYNWuWxR3rWypUqADcvKM9d+5cMjMzOXz4MFFRUQwdOpQvvvgCNze3LMd5eHgQHx9v0Xb9+nWLu8pws5zknw86ws2yh3/aunUrderUsShD+f777/M8x3/q3LkznTt35tKlS2zfvp05c+ZQqlQpxo4di5OTE0CWeK5cuWKeo5ubG/b29ly6dMmiz+2fv/76a1JSUliyZIk5UU9PT+fKlStZYrKzs7NqLiIiIiJFwQOzm0d2KlWqhJeXF2fOnMHX1zfLn9sTZYPBgJ+fHy+++CLXr1/n7Nmz2Y5bq1Ytvv32W65fv25u27FjR5Z+3t7enDhxwqJt7969Fp9TUlKylGNs3rw5X/O8nbu7Oz169KB+/fr8/vvv5lgAi3hiY2MtHrQsVqwYNWrUYNeuXRbj7d69O0vMBoOBYsX+72etLVu2WJTSiIiIiMgDfmfaYDAQHh7O+PHjSUpK4sknn8TBwYG///6bnTt3EhkZSXp6OgMGDKBjx45UqlSJtLQ0Vq1ahYeHB1WqVMl23L59+/LBBx8wePBg+vXrx4ULF1i+fDnFixe36BccHMysWbNYtmwZvr6+bNu2zZzc3tKkSRNmzpzJ0qVLqVOnDl9++SX79u3L91wjIyO5cuUKDRs2xM3NjaNHj/L9998zZswY4GYyXatWLRYuXEiJEiXIzMxk+fLl5rv3twwePJjhw4czc+ZMgoKC+PHHH/nyyy/N1xNu1pxnZGTw8ssvExoayvHjx1m1ahWlS5fOd9wiIiIiRdkDnUwDtG3bllKlSrF8+XI+/vhjDAYDjz32GC1atMDBwQF7e3t8fHxYs2YN586do3jx4vj5+fH2229nSY5v8fLyYsWKFbzyyisMHz6cKlWqmLfk+6du3brx119/8d5775GWlkbHjh0ZOnSoxQN+PXr04PTp06xZs4bU1FSaNm1KREQE3bp1y9c8fX19effdd/nvf/9LcnIy5cuXZ/jw4Tz//PPmPm+88QaTJ09m3LhxeHl5MW7cOFavXm0xTuvWrZk8eTIrV67k448/pmHDhowfP56XXnoJZ+ebxfVGo5E5c+awaNEiduzYQfXq1Vm4cCGjRo3KV8wiIiIiRZ2dyWS6d9spyANhyZIlLFu2jO+//z7HHzDuhfuxm0eHMZ/es/Fvtzmio564tjF6Ct42aV1sk9bFNmldCl+R2s1D7t6lS5dYvnw5AQEBlChRggMHDrBy5UpCQ0PvayItIiIiUhQomX7IODg4cPLkSTZt2kRSUhIeHh78+9//ZuTIkYUdWoFLSU1nc0TH+3a+tBsZ9+1cIiIiYhuUTD9kXFxcWLlyZWGHcV9cTbzO/fzFmN5QJSIi8vB5oLfGExEREREpTEqmRURERESspGRaRERERMRKqpkWKSBpNzLyVDedkprO1cTrd+wnIiIitk/JtEgBcXSwz9O+1psjOt7XByNFRETk3lGZh4iIiIiIlZRMi4iIiIhYScm0jTl27BhGo5GYmJj7et6YmBiMRiPHjh0DIC0tjaioKH755Zf7GoeIiIjIg0TJtABQs2ZNoqOjqVixIgA3btxg0aJFSqZFREREcqEHEAUAZ2dn/Pz8CjsMERERkQeK7kwXsvfff5/mzZvj5+fHkCFDiIuLs/g+MzOTFStWEBwcTK1atXj66af55JNPLPr06dOHESNGsHnzZoKDg6lXrx4vvPAC586ds+i3fPlygoOD8fX1pUmTJgwYMMB8vtvLPOrVqwfAyy+/jNFoxGg0cvr0aUJDQwkPD88yj/DwcDp16lRQl0VERETkgaA704Vo586dzJw5kx49etCqVSv279/PxIkTLfrMmjWLTZs2ERYWRs2aNfnmm2+YOHEirq6uPPXUU+Z+P/30ExcuXGDChAmkpqby6quvMmXKFFauXAnApk2bWLZsGWPHjqVatWokJCTw3Xffcf169vsdr169mueff56hQ4fSokULADw9PQkNDWXevHlMmTKFUqVKAZCcnMy2bdsYPXr0PbhKIiIiIrZLyXQhWrZsGc2aNWPGjBkANGvWjEuXLrFhwwYA/vzzT9atW8ecOXPo3LkzAE2aNCEuLo5FixZZJNNJSUksX76cMmXKABAXF8ecOXNISUmhePHiHD58mMDAQHr16mU+pnXr1jnG5uvrC0DFihUtyj/at2/P3Llz2bp1K126dAFgy5Yt3Lhxg/bt2+dr/mXLOuerf1GSl5e7SMHQtbZNWhfbpHWxTVoX26ZkupCkp6dz9OhRpkyZYtEeHBxsTqb37duHwWAgODiY9PR0c5/GjRvz3//+l4yMDOzt7YGbye+tRBqgatWqAJw/f57HH3+cGjVq8NFHHxEZGUmLFi2oWbOm+dj8cHZ2Npea3EqmP/nkE4KCgnBzc8vXWPHxSWRmmvIdg63Kzz92cXF6bcv94OHhomttg7QutknrYpu0LoXPYLDL9QagkulCcvnyZTIyMihbtqxF+z8/3+rj7++f7RhxcXF4e3sDULp0aYvvHBwcAEhNTQWgS5cuJCcnEx0dzeLFi3F1daVHjx6MGDEi30l1aGgoffr04e+//8ZkMnHgwAFWrFiRrzFEREREigIl04XEzc0Ne3t74uPjLdr/+blMmTIUK1aMdevWYWdnl2UMd3f3PJ/PYDDQt29f+vbtS2xsLJs3b2bBggV4e3vTs2fPfMXeoEEDHn/8cTZu3IjJZMLT05PAwMB8jSEiIiJSFCiZLiTFihWjRo0a7Nq1yyKZ3bFjh/nvjRo1IiMjg6tXr9K0adMCO/cjjzzCoEGD+Pjjjzlx4kS2fW6/s327Ll26sG7dOgA6depkVcmIiIiIyINOyXQhGjJkCC+++CLTpk0jODiY/fv38/XXX5u/r1y5Mj169GD06NEMGDAAX19fUlNTOX78OKdOneLVV1/N87mmTp1KmTJlqFOnDi4uLsTExPDnn38ybty4bPs7OjpSoUIFtmzZQrVq1XBycsJoNOLo6AhA586dWbhwIenp6YSEhNzdhRARERF5QCmZLkTBwcFMmTKFFStWsGnTJho2bMirr77KgAEDzH2mTZvGE088wYYNG4iMjMTZ2ZmqVasSGhqar3P5+fmxfv16oqOjSU1NpWLFisyaNYtWrVrleMyMGTOYN28e/fr1Iy0tjV27dlGhQgUAPDw8qF27NgCVKlWyYvYiIiIiDz47k8lUdLZTkPsmISGBJ598kilTptC1a1erxiiKu3l0GPPpHfttjuioJ7PvEz0Fb5u0LrZJ62KbtC6FT7t5SIFKSkrixIkTrFmzhlKlSuV7b2kRERGRokTJtOTLzz//zL///W8effRR5s2bR4kSJQo7JJuRdiODzREd79gvJTX9jn1ERETkwaBkWvIlICCA3377rbDDsEmODvb6VZyIiMhDxlDYAYiIiIiIPKiUTIuIiIiIWEnJtIiIiIiIlVQzLVJA0m5k4OHhcldjpKSmczXxegFFJCIiIveakmmRAuLoYJ+nfaZzszmiI3qEUURE5MGhMg8REREREStZnUwvWrSIZs2aUb16dcLDwwsypvuuT58+jBgxwqJt/fr1BAUF8a9//Ys+ffrct1iOHTuG0WgkJibG3GY0Glm7dm2Bnuf06dMYjUa++OKLXPutXbsWo9FYoOcWERERKSqsKvM4cuQIUVFRjB49moYNG1K2bNmCjqtQxcXFMX36dHr16kWbNm0oU6ZMocYTHR1NhQoVCnRMT09PoqOjqVy5coGOKyIiIvIwsSqZPnnyJAC9evXC2Tnnd5WnpKRQvHhx6yIrRH/++ScZGRl06dKF6tWr39VYGRkZZGRk4OjoaPUYfn5+dxVDdhwdHe/JuCIiIiIPk3yXeYSHhzN+/HgA/P39zSUJMTExGI1Gvv76a4YMGULdunWZOXMmAGfPnmXUqFE0bNiQOnXqMGDAAHNCfktqaiqvvfYazZs3p1atWjz77LN8+eWXd4xn+fLlBAcH4+vrS5MmTRgwYABxcXEAbNy4EaPRSHJyssUxQUFBzJs3L9vxoqKi6NWrFwAdO3bEaDSyceNG8/yOHTtm0f/2EpHw8HBCQkLYuXMn7dq1o3bt2hw+fDjH+N9//32aN2+On58fQ4YMMcf+T9mVeaxdu5bWrVtTq1YtgoODeffdd83fbdmyherVq7Nv3z5z2+nTp6lXrx4LFiwwf769zCMtLY2ZM2dSv359GjZsyOzZs0lPz/rq64SEBKZMmUKTJk3w9fWlR48e/PTTTznOUURERKSoyved6bCwMLy9vVm6dCmrV6+mePHiVK1alZ9//hmASZMmERISwvPPP4+TkxMJCQk899xzuLq6Mn36dEqUKMGKFSvo168f27ZtM9+5HjFiBIcPH2b48OFUrFiRLVu2MHToUD7++GNq1KiRbSybNm1i2bJljB07lmrVqpGQkMB3333H9evWby3WtWtX3N3dmTlzJq+//jqPPfYYFStW5Pjx43ke48yZM8yfP5+wsDA8PDxyLNHYuXMnM2fOpEePHrRq1Yr9+/czceLEO46/fv16Zs2aRb9+/QgMDCQmJoa5c+eSlpbGoEGDeOaZZ9ixYwcTJ05k8+bNlCpVipdffpkKFSowbNiwHMd9/fXX2bBhA6NGjaJKlSps2LCBrVu3WvRJS0ujX79+JCYmMn78eNzd3Vm3bh19+/Zl+/bteHh45Pk6iYiIiDzo8p1MV6xYkYoVKwLg6+tLqVKlLL5v06YNL730kvnzm2++yfXr19m0aROurq4A1KtXj6CgID7++GN69erFvn372LNnD++99x4NGzYEIDAwkFOnTrF06VIiIyOzjeXw4cMEBgaa7yQDtG7dOr9TsuDt7U3VqlWBm3eEfXx88j1GQkIC7777bo4/BNyybNkymjVrxowZMwBo1qwZly5dYsOGDTkek5mZSVRUFCEhIeYHPwMDA7l69SrLly83/xAzdepU2rdvz+zZs6levToHDx7ko48+yrHc5PLly3z44YcMHz6c/v37m+Np27atRb9PP/2U48eP89lnn/HEE08A0KRJE9q0acOqVauYMGFCnq6RiIiISFFQ4PtMt2jRwuLzvn37aNKkCc7OzuaSgVKlSlGzZk3+97//AfDtt9/i4eFBvXr1LMoKGjduzMaNG3M8V40aNfjoo4+IjIykRYsW1KxZE3t7+4KeUr55eXndMZFOT0/n6NGjTJkyxaI9ODg412T63LlzXLhwgTZt2li0t23blnXr1vHbb79Ru3ZtXF1deeWVVxg8eDAODg4MGzYs1/rvY8eOkZqaSsuWLc1tBoOBli1b8tZbb5nb9u3bR82aNalQoYLFWjVo0MC8nnlVtmzO9fYPs7t98YtY0vW0TVoX26R1sU1aF9tW4Mn07Tt7XL58mUOHDvH5559n6du4cWNzn7i4OGrWrJmlT27JcZcuXUhOTiY6OprFixfj6upKjx49GDFiRKEm1eXKlbtjn8uXL5ORkZHlet1pZ5RbNdU5HXflyhVzW6NGjShXrhwJCQl069Yt13EvXryY67j/jPvQoUPZrtWt31jkVXx8EpmZpnwdY8sK6h+7uDi9tqWgeHi46HraIK2LbdK62CatS+EzGOxyvQFY4Mm0nZ2dxecyZcoQFBREWFhYlr63SkTKlCmDl5cXixcvzte5DAYDffv2pW/fvsTGxrJ582YWLFiAt7c3PXv2xMnJCYAbN25YHPfPhDOvchvLzc0t3+O5ublhb29PfHy8Rfvtn293qyY5p+P+uY3f66+/TkZGBuXKlWP27NlERETkOO6tHwDi4+PN5TjZnadMmTLUqlWL6dOnZxnjbnYsEREREXkQ3fPXiTdu3JgtW7ZQrVq1HLfJa9y4Me+88w4lS5akSpUqVp3nkUceYdCgQXz88cecOHECuFluAXDixAn8/f0B+Omnn0hKSsr3+N7e3uaxbt2VjY2N5eTJk+ba4fwoVqwYNWrUYNeuXfTs2dPcvmPHjjvG4enpydatW2nevLm5fcuWLTg7O5tfsBITE8PatWt58803cXZ2ZsCAAbRu3Zqnn34623F9fHxwcnJi165d5jXIzMxk165dFv0aN27MN998Q/ny5Yvc/uIiIiIi+XXPk+m+ffvyn//8h+eff57evXvj5eXFxYsX2b9/P/7+/rRv356mTZsSGBhI//79GThwIFWrViUpKYlff/2V1NRUxowZk+3YU6dOpUyZMtSpUwcXFxdiYmL4888/GTduHAC1a9fGy8uLV199lZEjR5KQkMBbb72V697YOfH29qZWrVosXLiQEiVKkJmZyfLlyy3u4ubXkCFDePHFF5k2bRrBwcHs37+fr7/+OtdjDAYDw4cPZ+rUqbi6utK0aVP279/PunXrGD16NE5OTiQnJzNx4kTatm1rrq3u3r0706dPp0GDBri7u2cZ183NjW7duhEVFUWxYsWoWrUqGzZs4Nq1axb9OnXqxIcffkifPn3o378/jz32GAkJCRw+fBgPDw/69u1r9fUQERERedDc82Ta3d2d6Oho3nzzTebMmUNiYiKenp7Uq1fPfBfVzs6ORYsWsWzZMlavXk1sbCxlypShevXqub7K28/Pj/Xr1xMdHU1qaioVK1Zk1qxZtGrVCrhZdrBo0SJmzJjBiBEjqFSpEtOnTzcn2/n1xhtvMHnyZMaNG4eXlxfjxo1j9erVVo0FNx82nDJlCitWrGDTpk00bNiQV199lQEDBuR6XLdu3UhNTWXNmjW89957eHl5ER4ebk5k582bR2pqKlOnTjUfM2HCBL755humTZtGVFRUtuOOHz+e9PR0Fi9ejMFg4Nlnn6Vfv37MnTvX3MfJyYk1a9awcOFCoqKiiI+Px93dndq1axMUFGT1tRARERF5ENmZTKai8wSYPFCK4gOIHcZ8eldjbI7oqAdNCpAe3LFNWhfbpHWxTVqXwnenBxDz/QZEERERERG5Scm0iIiIiIiV7nnNtMjDIu1GBpsjOt7VGCmp6XfuJCIiIjZDybRIAXF0sFddm4iIyENGZR4iIiIiIlZSMi0iIiIiYiWVeYgUkLQbGXh4uBR2GPdMSmo6VxOvF3YYIiIiNkXJtEgBcXSwv+t9pm3Z5oiOqCJcRETEkso8RERERESspGRaRERERMRKD1UyvWjRIpo1a0b16tUJDw8nJiYGo9HIsWPH7sv5AwICiIqKuufniYqKIiAg4I79QkJCCA8PN38ODw8nJCTE/Pnw4cP3JV4RERGRB9VDUzN95MgRoqKiGD16NA0bNqRs2bK4u7sTHR1NxYoVCzu8AtW1a1eeeuqpfB8XFhZGSkqK+fPhw4dZtGgRw4cPL8jwRERERIqMhyaZPnnyJAC9evXC2dnZ3O7n51dIEd073t7eeHt75/u4ovZDhYiIiMi99lCUeYSHhzN+/HgA/P39MRqNxMTEZCnz2LJlC9WrV2ffvn3mY0+fPk29evVYsGCBue3AgQP07t2bOnXqEBAQwOTJk0lKSrI45/79+3n22Wfx9fUlJCSEH3/8MU+xrlq1ii5duuDv70+TJk0YMmQIf/75Z5Z+O3bsIDQ0lNq1axMQEMDAgQM5c+YMkH2Zx7Fjx+jRowe+vr4888wz7Nq1K9vrdKvMY+PGjcyaNQsAo9GI0WikT58+/P777+br90/JycnUrVuX1atX52meIiIiIkXBQ3FnOiwsDG9vb5YuXcrq1aspXrw4VatW5eeff7bo98wzz7Bjxw4mTpzI5s2bKVWqFC+//DIVKlRg2LBhAPzwww/07duXVq1aERkZyeXLl4mIiCAxMZHIyEgAzp8/z8CBA/H19SUyMpILFy4wduxYixKKnJw7d47evXtTvnx5kpKS+PDDD+nRowfbt2/HxeXmHsabNm1iwoQJtGvXjrCwMEwmE9999x2XLl3i0UcfzTJmSkoKAwYMwM3NjYiICFJSUpg9ezbXrl3Dx8cn2zhatGhB//79WbVqFdHR0QA4OztTtWpV/Pz8+OSTTywS9q1bt3Ljxg2effbZPKyIiIiISNHwUCTTFStWNJcw+Pr6UqpUqRz7Tp06lfbt2zN79myqV6/OwYMH+eijj3B0dAQgIiKCunXr8uabb5qP8fLyom/fvhw7dgwfHx9Wr16Nk5MTK1asoESJEgCUKFGCcePG3THWiRMnmv+ekZFB06ZNady4Mbt27aJTp05kZmYSERFBcHAwb7zxhrlvy5Ytcxzz448/5tKlS2zYsMFc/vHoo4/y3HPP5XiMu7u7OTG/vRQmNDSU2bNnM2XKFPO13LhxI0FBQbi5ud1xjiIiIiJFxUORTOeHq6srr7zyCoMHD8bBwYFhw4ZRvXp1AK5fv86hQ4eYPHky6enp5mP8/f1xcHDg559/xsfHhyNHjtCkSRNzIg0QHBycp/MfOnSIhQsXcvToURISEsztf/zxh/n/XrhwwWLXjTs5cuQINWvWtKij9vf3p2zZsnke45+eeeYZZs+ezdatW+nSpQt//fUXP/zwA8uWLcvXOGXLOt+5k9iUB/ENjw9izA8DrYtt0rrYJq2LbVMynY1GjRpRrlw5EhIS6Natm7k9MTGRjIwMZsyYwYwZM7IcFxsbC0BcXBxGo9HiuxIlSlCyZMlcz3v27Fn69+9P7dq1mTFjBp6enjg4ODB48GDS0tIAuHz5MgAeHh55nk9cXBzu7u5Z2q1Npp2dnWnTpg0bN26kS5cubNy4kXLlytGsWbN8jRMfn0RmpsmqGGzRw/CPXVzcg/UORA8Plwcu5oeB1sU2aV1sk9al8BkMdrneAFQynY3XX3+djIwMypUrx+zZs4mIiADAxcUFOzs7XnzxRZo3b57lOE9PT+BmohsfH2/x3fXr17l27Vqu5/36669JSUlhyZIl5sQ7PT2dK1eumPvcKqOIi4vL83w8PDzMu5n80+0x5kfXrl157rnnOHXqFJ9++imdOnXC3t7e6vFEREREHkRKpm8TExPD2rVrefPNN3F2dmbAgAG0bt2ap59+mpIlS+Ln58cff/zBiy++mOMYtWrVYuPGjVy/ft1c6rFjx447njslJQWDwUCxYv+3LFu2bLEoKalUqRJeXl5s2rSJoKCgPM3J19eXzZs3c+7cOXOpxw8//HDHZNrBwQGA1NRUnJycLL6rV68elSpVYuLEiZw9e5bOnTvnKRYRERGRouSh2Bovr5KTk5k4cSJt27alTZs2BAYG0r17d6ZPn86lS5cAGDt2LNu2bWPcuHHs3LmTffv2sXHjRkaMGGGua+7bty8pKSkMHjyYL774gujoaN58802KFy+e6/kbNWpERkYGL7/8Mvv27WPNmjVERERQunRpcx+DwcC4cePYtm0bY8aM4YsvvmDPnj3MnTuXI0eOZDtuSEgIbm5uDBo0iB07drB582YmTJhwx4cFK1euDMDq1as5fPhwlrvboaGh/PDDD9StW5cqVarkfnFFREREiiAl0/8wb948UlNTmTp1qrltwoQJlCxZkmnTpgFQv3593n//fS5dusT48eMZOnQob731Fo888gjlypUDbu7usWLFCi5fvszw4cP54IMPmD9//h2TaaPRyJw5c/jpp58YPHgwn332GQsXLjRviXdLhw4diIqK4o8//mDEiBFMmDCBkydPZlsXDTfrtd966y1KlizJqFGjWLRoEeHh4ZQvXz7XeOrXr8+AAQNYs2YN3bp1M1+DW1q1agVAly5dch1HREREpKiyM5lMRecJMLmv3n//fV5//XW+/vpri7dK5lVRfACxw5hPCzuMe2ZzRMcH7iEYPbhjm7QutknrYpu0LoVPDyBKgTt9+jSnTp1i+fLldO7c2apEWkRERKQoUDIt+bZo0SI+++wzGjRowMiRIws7HBEREZFCozIPKTRFrcyjjGtJHB2K7vaAKanpXE28Xthh5It+PWqbtC62Setim7QuhU9lHiL3iaODvf7BExERechoNw8RERERESspmRYRERERsZLKPEQKSNqNDDw8XO7cUe6rW2vyINZ8i4iI7VMyLVJAHB3si/Q+0w+6zREdUUW7iIgUNJV5iIiIiIhYScm0iIiIiIiV7phMf/7552zcuNGqwffu3cu7775r1bEbN27EaDSSnJxs1fH5YTQaWbt2rflzZmYmM2bMoEmTJhiNRqKiou55DLesXbsWo9Fo/hwTE4PRaOTYsWMFep68Xt8RI0bQp0+fAj23iIiISFFxx5rprVu3cvnyZUJCQvI9+DfffMO2bdvo27evNbEVmu3bt/PBBx/w6quvUrVqVby9vQstlpo1axIdHU3FihULdNwWLVoQHR1NiRIlCnRcERERkYeJHkDMxsmTJylTpgyhoaF3PVZKSgrFixe3+nhnZ2f8/PzuOo7bubu74+7uXuDjioiIiDxMci3zCA8PZ9u2bXz//fcYjcYsJQ9r166ldevW1KpVi+DgYIuSjqioKFatWsWZM2fMx4aHhwNw8OBBhgwZQmBgIH5+fnTs2JH//Oc/+Q4+MTGRSZMmERgYiK+vLy1atGDy5MkW8d9+R/306dMYjUa++OKLbMfs06cPCxcu5MqVK+a4T58+TVRUFAEBAVn6314iEhQUxNy5c1m8eDFPPvkk/v7+OcaflpbGzJkzqV+/Pg0bNmT27Nmkp6db9MmuzOP69eu88sorNG3aFF9fX7p06cLevXvN38+YMYNGjRoRHx9vbtu2bRtGo9HcL7syj9jYWAYOHEjt2rUJCgpiw4YN2cZ97NgxBg0aRN26dalbty4jRowgLi4ux3mKiIiIFFW53pkOCwvj7NmzXL16lWnTpgGYSx7Wr1/PrFmz6NevH4GBgcTExDB37lzS0tIYNGgQXbt25dSpU8TExLBo0SIA853Qs2fPUq9ePXr27ImjoyM//vgjEydOxGAw0L59+zwHP2fOHA4ePMjEiRMpV64csbGxHDhwwKoLccu0adN455132LZtG2+99RYAnp6e+Rrjs88+o2rVqkybNo2MjIwc+73++uts2LCBUaNGUaVKFTZs2MDWrVvvOP7kyZPZvXs3o0ePpmLFimzYsIHBgwezevVq6tevz7hx49i7dy9Tp05l8eLFxMfHM336dHr06EFgYGC2Y5pMJsLCwrh8+TKvvvoqTk5OREVFkZCQwBNPPGHu9+eff9KzZ09q1arF/PnzycjIYOHChQwZMoSPPvoIOzu7fF0rERERkQdZrsl0xYoVcXV1xWQyWZQaZGZmEhUVRUhIiPluc2BgIFevXmX58uU8//zzeHt74+npiaOjY5YyhXbt2pn/bjKZaNCgAefPn2f9+vX5SqaPHDlCr169aNu2rbmtY8eOeT4+O7dqpO3t7e+qvGL58uU4OTnl+P3ly5f58MMPGT58OP379wegWbNmFnPJzokTJ/jvf//LnDlz6Ny5s/m4Z599lqVLl/L2229TsmRJ5s6dS+/evdm0aRM7d+6kVKlSTJgwIcdxv/rqK44ePcr69eupU6cOcLNeOzg42CKZXrRoEeXKlWPlypU4OjoCN+/OP/PMM3z55Ze0aNEiL5dHREREpEiwqmb63LlzXLhwgTZt2li0t23blnXr1vHbb79Ru3btHI+/cuUKUVFR7Nq1i/Pnz5vv3np5eeUrjurVq/P2229jMBho0qQJlSpVyv9k7oFGjRrlmkjDzVKJ1NRUWrZsaW4zGAy0bNnSfEc8O0eOHMFkMllce4PBQJs2bSyO8/f3p2/fvkyZMoX09HTee+89SpYsmeO4hw8fply5cuZEGuDRRx+lZs2aFv327dtHp06dMBgM5pKUChUq8Oijj/K///0vX8l02bLOee4rUhD0hkrbobWwTVoX26R1sW1WJdO36mPLli1r0X7r85UrV3I9Pjw8nJ9++omwsDCqVKmCs7Mz69atY9euXfmKY+rUqURGRrJkyRJmzpzJ448/zsiRIy3ufBeGcuXK3bHPxYsXgZyvYU4uXLhAyZIls+zCUbZsWa5fv05aWpr5jnH79u1ZtWoVRqOR+vXr5zpuXFxctg8kli1b1qKu+vLly6xcuZKVK1dm6RsbG5vrOW4XH59EZqYpX8fYMv1jZ/vi4vQORFvg4eGitbBBWhfbpHUpfAaDXa43AK1Kpj08PAAsHnD75+cyZcrkeGxqaip79uxh6tSp9OzZ09z+wQcf5DuO0qVLM3nyZCZPnsyvv/7KW2+9xdixYzEajVStWhVHR0du3LhhcUxiYmK+zwPg5OSUZaycfmjIS93wrYQ7Pj4eV1dXc/vt1/R2np6eXLt2jevXr1sk1PHx8ZQoUcKcSKenpzNlyhR8fHz4/fffiY6Opnv37jmO6+HhwaVLl7K0x8fHW+xGUqZMGVq1akXXrl2z9HVzc8s1dhEREZGi5o4vbXFwcCA1NdWi7VY99O0Py23ZsgVnZ2fzS0eyOzYtLY3MzExz0geQlJTE7t27rZ4E3Cz5GD9+PJmZmZw8edIc55kzZyxi+OeuF/nh5eVFcnIy58+fN7d98803Vsfr4+ODk5OTxd34zMzMO96d9/X1xc7Ojm3btpnbTCYT27Zts9g5ZNmyZfzxxx8sWbKEgQMHMm/ePE6fPp3ruBcvXuSnn34yt509e5ajR49a9GvcuDG///47tWrVwtfX1+JPhQoV8jx/ERERkaLgjnemK1WqxK5du9i5cydeXl54enri5eXF8OHDmTp1Kq6urjRt2pT9+/ezbt06Ro8eba4Xrly5MhcvXmTjxo1Uq1YNNzc3KlSogK+vL4sXL8bZ2RmDwcCKFStwdnYmKSkpX8H37NmT4OBgqlWrhp2dHevXr6dkyZLmeu1WrVoRGRnJpEmTCAkJ4ejRo3z88cdWXKabD/kVL16ciRMn0q9fP06fPs2HH35o1Vhw8y5ut27diIqKolixYlStWpUNGzZw7dq1XI+rUqUK7dq1Y+bMmSQnJ/PYY4+xYcMGTp48ad5x5ejRoyxbtozJkyfz2GOPMWzYMHbv3s3EiRNZvXp1tnfOmzdvTvXq1Rk5ciRjx47F0dGRqKioLKUfL774Il27dmXQoEF06dIFNzc3zp8/z7fffkvnzp2z3T5QREREpKi6453p5557jqZNmzJx4kRCQ0NZv349AN26dWPSpEns3LmTIUOG8NlnnxEeHs6gQYPMxz7zzDOEhIQwf/58QkNDzVvkRURE8NhjjzFhwgReffVVWrduTadOnfIdvJ+fH5988gkjRozgpZdeMtfz3tq+z8fHh9mzZ3Po0CGGDh3K/v37mTNnTr7PAze39YuMjOTcuXMMGzaM//znP0RERFg11i3jx4+nS5cuLF68mDFjxuDp6Um/fv3ueNwrr7xC586dWbx4MWFhYZw5c4Zly5ZRv3590tLSmDBhAgEBAfTo0QMAR0dHXnvtNX788UeLPbH/yc7OjqVLl1KlShUmTpzInDlz6NWrF3Xr1rXoV6lSJfObE6dOncrAgQOJiorC0dGRxx9//K6uh4iIiMiDxs5kMhWdJ8DkgVIUH0DsMObTwg5DcrA5oqMe4rEReqDKNmldbJPWpfDd6QHEO96ZFhERERGR7CmZFhERERGxklVb44lIVmk3MtgccXdv4JR7JyU1vbBDEBGRIkjJtEgBcXSwV12bjVGtoYiI3Gsq8xARERERsZKSaRERERERK6nMQ6SApN3IwMPDpbDDkNvkZ01SUtO5mnj9HkYjIiJFjZJpkQLi6GCvfaYfcJsjOqIKaxERyQ+VeYiIiIiIWEnJtIiIiIiIlZRMF7CNGzdiNBpJTk4GID4+nqioKE6fPp3nMYxGI2vXrr1XIeZZTEwMRqORY8eO5dpv3rx5BAUF3aeoRERERGyHkukC1qJFC6KjoylRogRwM5letGgRZ86cyfMY0dHRtGnT5l6FmGc1a9YkOjqaihUrFnYoIiIiIjZJDyAWMHd3d9zd3a06NiUlheLFi+Pn51ewQVnJ2dnZZmIRERERsUW6M22F/fv306dPH+rWrYu/vz99+vTh6NGjgGWZx+nTp+nQoQMA//73vzEajRiNRuD/Sii+/vprhgwZQt26dZk5cyaQfZnHjh07CA0NpXbt2gQEBDBw4MBc73bv2bOHfv360bhxY+rVq0e3bt3Yu3dvln6//vorQ4YMoX79+tStW5fQ0FC++eYbixj/WeaRmJjImDFjqFu3LoGBgSxduvQurqSIiIjIg013pvMpJiaG/v37ExAQwNy5cylRogQ//vgj58+f51//+pdFX09PT15//XXGjh3L1KlTqVmzZpbxJk2aREhICM8//zxOTk7ZnnPTpk1MmDCBdu3aERYWhslk4rvvvuPSpUs8+uij2R5z+vRpnnrqKfr374/BYOCrr75i4MCBrF27Fn9/fwBOnDhBz549qVSpEjNmzMDV1ZX//e9/xMbG5jj/l19+me+//56XX36ZcuXKsWrVKv766y+KFdN/SiIiIvLwUQaUT2+88QZGo5G3334bOzs7AJ588sls+zo6OprvRFetWjXbkok2bdrw0ksv5Xi+zMxMIiIiCA4O5o033jC3t2zZMtc4e/fubTFGQEAAv//+Ox999JE5mV68eDEuLi588MEHFC9eHICmTZvmOObx48fZuXMnCxYsoG3btgAEBATw1FNP4ezsnGs82SlbNv/HiNxrevHO/aHrbJu0LrZJ62LblEznw7Vr1/jpp5+YNGmSOZG+Wy1atMj1+z/++IMLFy4QEhKSr3HPnTvHggUL+Pbbb4mLi8NkMgFQr149c5/vvvuOZ5991pxI38mRI0cAy0S+VKlSNGnShMOHD+crPoD4+CQyM035Ps5W6R+7oiEuTq9tudc8PFx0nW2Q1sU2aV0Kn8Fgl+sNQCXT+ZCYmIjJZMLDw6PAxixbtmyu31++fBkgX+fMzMxk6NChJCcnM2LECB5//HFKlChBZGQk8fHx5n4JCQn5GvfixYuUKlUqSznKneYgIiIiUlQpmc6H0qVLYzAYiIuLK7Ax73SH283NDSBf5/zzzz85evQoK1eutChBSUlJsejn6uqar3HLlStHcnIyqampFgn1PxN0ERERkYeJdvPIh5IlS1KnTh02bdpkLpu4EwcHBwBSU1OtOmelSpXw8vJi06ZNeT7m1rkcHR3NbWfOnOHgwYMW/Ro3bsyWLVvyHJuvry8Au3btMrclJyfz7bff5jk2ERERkaJEd6bzacyYMfTr148XXniB7t27U6JECQ4dOkStWrV46qmnsvQvX748xYsXZ9OmTbi4uFCsWDFzUpoXBoOBcePGMXbsWMaMGUP79u2xs7Pju+++o127dtmOVblyZby9vZk3bx4jR44kOTmZyMhIPD09LfoNGzaM0NBQevXqRf/+/XF1deXo0aO4uroSGhqaZdxq1aoRFBTE9OnTSUpKwsPDg7fffjvPNdciIiIiRY3uTOdTgwYNWLVqFSkpKYwbN45Ro0bx/fff4+3tnW1/JycnZs2axc8//0yfPn2yTVLvpEOHDkRFRfHHH38wYsQIJkyYwMmTJ3N8OYyjoyNRUVHY29szYsQIFi5cyODBg2nYsKFFv8qVK/PBBx/g5ubGpEmTGDZsGNu2bctxuz2AuXPn0rRpU2bPns2kSZNo1KgR7dq1y/ecRERERIoCO1Ne6xVEClhR3M2jw5hPCzsMuQubIzrqqfn7QLsT2Cati23SuhS+O+3moTvTIiIiIiJWUjItIiIiImIlPYAoUkDSbmSwOaJjYYchdyElNb2wQxARkQeMkmmRAuLoYK+6NhujWkMREbnXVOYhIiIiImIlJdMiIiIiIlZSmYdIAUm7kYGHh0thhyG30ZrcvZTUdK4mXi/sMEREbJKSaZEC4uhgr32mpUjaHNERVZ6LiGRPZR4iIiIiIlZSMi0iIiIiYiUl05InQUFBzJs3L9vvjEYja9euvc8RiYiIiBQ+JdMiIiIiIlZSMi0iIiIiYiUl00J4eDghISHs3LmTNm3a4OvrS8+ePfn9998LOzQRERERm6ZkWgA4e/Ysc+bMISwsjIiICJKSkhgwYACpqanmPiaTifT09Cx/RERERB5W2mdaALh8+TJLliyhXr16ANSsWZPg4GA2btxIz549AXjnnXd45513CuycZcs6F9hYInJvFfTLb/QyHdukdbFNWhfbpmRaAChbtqw5kQZ49NFHqVmzJocPHzYn088++yz//ve/sxwbGhpq1Tnj45PIzDRZF7AN0j92UpTFxRXca1s8PFwKdDwpGFoX26R1KXwGg12uNwCVTAtwM5nOri0uLs78uVy5cvj6+t7PsERERERsmmqmBYD4+Phs2zw8PAohGhEREZEHg5JpAW4mzj/++KP589mzZzl69Ci1a9cuxKhEREREbJvKPAQANzc3xo0bx0svvUTx4sWJjIzE3d2dkJCQwg5NRERExGYpmRYAypcvz5AhQ4iIiODMmTPUqlWLiIgInJycCjs0EREREZulZFrMWrduTevWrbP9bvfu3Tke99tvv92rkERERERsmmqmRURERESspDvTIgUk7UYGmyM6FnYYIgUuJVVvOhURyYmSaWHu3LmFHUKR4Ohgr431bYxediAiIveayjxERERERKykZFpERERExEpKpkVERERErKSaaZECknYjAw8Pl8IOQ26jNSl8KanpXE28XthhiIjcE0qmRQqIo4M9HcZ8WthhiNiczREd0WOgIlJUqcxDRERERMRKSqZFRERERKykZPo+2LhxI0ajkeTk5Fz79enThxEjRhTYeY1GI2vXrs21zxdffIHRaOT06dMFdl4RERGRh4Vqpouw6OhoKlSoUNhhiIiIiBRZSqaLoJSUFIoXL46fn19hhyIiIiJSpKnMowDt37+fPn36ULduXfz9/enTpw9Hjx41f3/69Gn69euHn58fbdq0Yfv27Xccc9++fXTt2hVfX1+aNGnC9OnTLcpFYmJiMBqNfP311wwZMoS6desyc+ZMIGuZh8lkIioqisaNG1O3bl3Gjx9PUlJSlnOmpqby2muv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QkJC8nRdRERERIoam0+mixcvTlBQEJs3b2bQoEFZvu/WrRupqamsWbOG9957Dy8vL8LDw+nbt2+OY/bo0YPTp0+zZs0aUlNTadq0KREREXTr1s2i34wZM5g3bx79+vUjLS3tjndzb6lfvz7vv/8+kZGRjB8/nszMTMqXL0+zZs3MZRfZiYiIYOrUqUyYMAFXV1d69epFSkoKa9euNfdxd3dn3bp1zJ8/n9mzZ5OWlsbjjz/O4MGDcxx3/PjxpKens3jxYgwGA88++yz9+vVj7ty5uc4ju/lXqFABuFlic+sHm+x+OBARERF5GNiZTKai8wSY3DcJCQk8+eSTTJkyha5du1o1RlF8ALHDmE8LOwwREZGHyuaIjnoAUR4cSUlJnDhxgjVr1lCqVCntLS0iIiIPNSXTki8///wz//73v3n00UeZN28eJUqUKOyQRERERAqNyjyk0BS1Mo8yriVxdNCuJiIiIvdTSmo6VxOv37PxVeYhcp84Otjf05otyT8PDxetiQ3SutgmrYtt0rrYPpvfZ1pERERExFYpmRYRERERsZKSaRERERERKymZFhERERGxkpJpERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaRERERERK+kNiFJoDAa7wg6hwBXFOT3otCa2Setim7QutknrUrjudP3tTCaT6T7FIiIiIiJSpKjMQ0RERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKSqZFcvHHH3/QvXt3nn76abp3786pU6ey9MnIyGDGjBm0atWK4OBgNmzYkKfvxHp3uy6LFy+mXbt2dOjQgZCQEL7++uv7GH3RdbfrcsvJkyepU6cO8+bNuw9RF20FsSaff/45HTp0oH379nTo0IGLFy/ep+iLrrtdl/j4eAYNGkSHDh145plnmD59Ounp6fdxBmLBJCI56tOnj2nTpk0mk8lk2rRpk6lPnz5Z+nzyySem/v37mzIyMkzx8fGmZs2amf7+++87fifWu9t1+eqrr0zXrl0zmUwm0y+//GLy9/c3Xb9+/f5NoIi623UxmUym9PR0U+/evU2jR482zZ07977FXlTd7ZocPnzY9Mwzz5guXLhgMplMpsTERFNKSsr9m0ARdbfr8sor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G6yag4it0J1pEXmo3Z4M2NvbY2dnx1tvvcWCBQt44YUXaNiwIT///DMLFy6kRIkS9O7dG4CzZ89Sr149evbsiaOjIz/++CMTJ07EYDDQvn178x2+VatWER0dDYCzs3O+Y3z77bepX78+r732GrdeWjtixAgOHz7M8OHDqVixIlu2bGHo0KF8/PHH1KhRI8ex7nTcokWLePPNN/n777+ZM2cOAN7e3ri7uzNz5kxef/11HnvsMSpWrJjnOJYsWUJkZCTPPfcc48aNIyUlhT179nDt2jXCwsI4e/YsV69eZdq0aebzJSUlMWTIEFq2bMmwYcMwmUwcO3aMq1evZjsvT09PoqOjefHFFwkICKBPnz7ma71+/XpmzZpFv379CAwMJCYmhrlz55KWlsagQYPMY6SkpBAeHs4LL7zAE088kWOJyIkTJ+jZsyeVKlVixowZuLq68r///Y/Y2Ngcr/u5c+fo3bs35cuXJykpiQ8//JAePXqwfft2XFxc7jjfv/76i5EjR9KnTx/GjRtHWloa//vf/7hy5UqO56xQoQK//fab+e///OFt//79eHl5Ua1atRyP/6e9e/cyatQoOnXqxLhx4/jtt99YuHAhly9fZubMmQBcunSJPn36UKVKFSIiIkhOTiYiIoJ+/frx8ccf4+joiMlkIiwsjMuXL/Pqq6/i5OREVFQUCQkJPPHEE+bzhYSEmOOdO3dunmIUKTQmEZGHUGRkpMnHxyfLn2+++cZ09epVk5+fnykqKsrimDfffNPUpEkTU3p6epbxMjMzTTdu3DBNmTLF1KdPH3P7e++9Z/Lx8cnSf8KECabOnTtbtP39998mHx8f0+7du81tPj4+pk6dOln0+/bbb00+Pj6mmJgYi/bnnnvONHz48BznnNfjsovtu+++M/n4+Jh+++23fI135coVU+3atU2zZ8/OMa7hw4ebevfubdF2+PBhk4+Pj+nq1as5Hpedp556yjR37lzz54yMDFNgYKApPDzcot+0adNM9erVM6WkpJhMpv/772HHjh13PMeoUaNMzZo1M12/fj3b77O7Vv+Unp5uun79usnPz8/0ySefmEymO893y5YtpoYNG94xtrwaMGCAqVu3blnab9y4Yf7zz//Ou3btmmWNVqxYYapevbopNjbWZDKZTPPnzzf5+/tbzOHQoUMmHx8f0+bNm00mk8m0Z88e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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "path_dependent_explainer = TreeShap(rfc, model_output='raw', task='classification')\n", + "path_dependent_explainer.fit()\n", + "result = path_dependent_explainer.explain(scaler.transform(x))\n", + "\n", + "plot_importance(result.shap_values[1], features, '\"Good\"')\n" + ] + }, + { + "cell_type": "markdown", + "id": "d7ccd4c7-b4b9-4b3b-bf5e-75aeb8653bc7", + "metadata": {}, + "source": [ + "### Note:\n", + "\n", + "There is some difference between the kernel SHAP and integrated gradient applied to the tensorflow model and the SHAP methods applied to the random forest. This is to be exected due to the combination of different methods and different models. They are reasonably similar overall however. notably the ordering is nearly the same." + ] + }, + { + "cell_type": "markdown", + "id": "fecdab93-3226-4b76-a0d0-e01b740b865e", + "metadata": {}, + "source": [ + "## Local Necessary Features" + ] + }, + { + "cell_type": "markdown", + "id": "9c32759e-e66f-4af9-91af-e5d1deb01019", + "metadata": {}, + "source": [ + "### Anchors\n", + "\n", + "Anchors tell us what features need to stay the same for a specific instance in order for the model to give the same classification. In the case of a trained image classification model, an anchor for a given instance would be a minimal subset of the image that the model uses to make its decision.\n", + "\n", + "Here we apply Anchors to the tensor flow model trained on the wine-quality dataset." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "0e36d1c9-49e1-4da8-9bc8-da312e2b31b2", + "metadata": {}, + "outputs": [], + "source": [ + "from alibi.explainers import AnchorTabular\n", + "\n", + "predict_fn = lambda x: model.predict(scaler.transform(x))\n", + "explainer = AnchorTabular(predict_fn, features)\n", + "explainer.fit(X_train, disc_perc=(25, 50, 75))\n", + "result = explainer.explain(x, threshold=0.95)" + ] + }, + { + "cell_type": "markdown", + "id": "1600dade-52d0-40b8-a29c-d8279bbb1a94", + "metadata": {}, + "source": [ + "The result is a set of predicates that tell you weather an point in the data set is in the anchor or not. If it is in the anchor then it is very likely to have the same classification as the instance `x`." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "3b3722d3-f837-4343-a2de-c7f4d4849223", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Anchor = ['alcohol > 10.10', 'volatile acidity <= 0.39']\n", + "Precision = 0.9558665231431647\n", + "Coverage = 0.16263552960800667\n" + ] + } + ], + "source": [ + "print('Anchor =', result.data['anchor'])\n", + "print('Precision = ', result.data['precision'])\n", + "print('Coverage = ', result.data['coverage'])" + ] + }, + { + "cell_type": "markdown", + "id": "92a91fed-7171-4dae-abd4-9e8709bb5aa8", + "metadata": {}, + "source": [ + "## Global Feature Attribution" + ] + }, + { + "cell_type": "markdown", + "id": "3a604116-6772-469d-b251-05fb920f6fb7", + "metadata": {}, + "source": [ + "### ALE \n", + "\n", + "ALE plots show the dependency of model output on a subset of the input features. They provide global insight describing the model's behaviour over the input space. Here we use ALE to directly visualize the relationship between the tensorflow models predictions and the alcohol content of wine.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "3596db3d-40bb-42e4-9b59-1ae18f6be64f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[]], dtype=object)" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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uKsnnnhC+fn5euqpp2S18ivZ1V122WXatGmTqqqqzI6Cb/niiy+0b98+TZo0SRMnTlRJSYluuukmbdy40exoOIavP0P4+flpzpw52rJlS7c8L++y6Hbl5eWS2pd3/PWvf9UPf/hDBQUFmZwKxxMdHa3MzEwtW7ZMkrRs2TJlZmayzA04Q3/961+1c+dOPfvss/Lz8zM7Do6hoaFBxcXFHZfXrl2r8PBwRUREmBcKx3Trrbdq48aNWrt2rdauXauEhAS98MILGjt2rNnR8C2NjY2qq6uTJBmGoeXLlyszM7NbnttiGIbRLc8EHPHb3/5WW7ZsUVtbm8aMGaP7779f/v7+ZseCpMcee0yrVq3S4cOHFRkZqYiICL333nvat2+f7rvvPtXW1iosLExPPPGEevfubXZcr3a8sTre9TDPscbkqaee0rRp05SWlqaAgABJUnJysp599lmT03qvY43TK6+8ottvv11NTU2yWq0KDw/Xb37zGw0cONDsuF7tZN7nJk6cqHnz5qlfv34mpYR07LGaN2+e7rrrLjkcDjmdTvXp00cPPPCA4uLiujwPxQcAAACAx2OpGwAAAACPR/EBAAAA4PEoPgAAAAA8HsUHAAAAgMej+AAAAADweBQfAIBbWLhwoa6++uozeoxNmzZp/Pjxpj0/AMA8FB8AAAAAHo/iAwAAAMDjUXwAAC7l+eef14UXXqjhw4frkksu0erVq495v5ycHN1www06++yzdd5552nevHmSpNbWVj3++OMaO3asxo4dq8cff1ytra1Hfe2LL76o0aNHa+zYsXrnnXc6rq+rq9Ovf/1rnXvuuZowYYLmzp0rp9PZdd8sAKDbUHwAAC6lZ8+eev311/Xll1/qzjvv1L333quysrKj7lNfX68bbrhB48aN04YNG7Rq1SqNHj1akvTcc89p27ZtWrJkid59913t2LFDc+fO7fjaw4cPq66uTuvXr9fjjz+uRx99VDU1NZKk3//+96qrq9OaNWv02muvacmSJUcVIwCA+6L4AABcytSpUxUfHy+r1apLLrlEqamp2r59+1H3WbdunWJiYnTjjTfK399fISEhGjp0qCRp6dKluuOOOxQdHa2oqCjdcccdevfddzu+1sfHR3fccYd8fX11/vnnKygoSAcOHJDD4dDy5cv1y1/+UiEhIUpOTtYNN9xw1NcCANyXj9kBAAD4psWLF+ull15SYWGhJKmxsVFVVVWy2Wwd9ykuLlZKSsoxv76srEw9evTouNyjR4+jZowiIiLk4/O/X3+BgYEdz9HW1vadry0tLe207w0AYB5mfAAALqOwsFAPPPCAfve732nTpk3avHmz+vbt+537JSYm6uDBg8d8jLi4OBUVFXVcLi4uVlxc3Pc+d2RkpHx9fb/ztfHx8afxnQAAXA3FBwDgMpqammSxWBQVFSVJeuedd5STk/Od+11wwQUqLy/Xyy+/rNbWVtXX12vbtm2SpEsvvVTPPfecKisrVVlZqWeffVbTp0//3ue22WyaMmWK/va3v6m+vl6FhYV66aWXNGPGjM79JgEApqD4AABcRnp6um688Ub98Ic/1Hnnnafs7GyNGDHiO/cLCQnRiy++qA8//FBjxozR5MmTtWnTJknS7bffrkGDBmnGjBmaMWOGBg4cqNtvv/2knv93v/udAgMDdeGFF2rOnDmaNm2arrjiik79HgEA5rAYhmGYHQIAAAAAuhIzPgAAAAA8HsUHAAAAgMej+AAAAADweBQfAAAAAB6P4gMAAADA41F8AAAAAHg8ig8AAAAAj0fxAQAAAODx/j/7aW7OnTz1SQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from alibi.explainers import ALE\n", + "from alibi.explainers import plot_ale\n", + "\n", + "predict_fn = lambda x: model(scaler.transform(x)).numpy()[:, 0]\n", + "ale = ALE(predict_fn, feature_names=features)\n", + "exp = ale.explain(X_train)\n", + "plot_ale(exp, features=['alcohol'], line_kw={'label': 'Probability of \"good\" class'})" + ] + }, + { + "cell_type": "markdown", + "id": "43934de4-cdb7-497c-9eb4-d83bb1a9a8c6", + "metadata": {}, + "source": [ + "## Counterfactuals\n", + "\n", + "Next we apply each of the counterfactual methods, counterfactuals with reinforcement learning, counterfactual instances, counterfacutals with prototypes and contrastive explanation methods. We also plot the kernel SHAP values to show how the counterfactual method changes the attribution of each feature leading to the change in prediction." + ] + }, + { + "cell_type": "markdown", + "id": "aacbe189-a135-4ef9-bcf4-35df9019d5bb", + "metadata": {}, + "source": [ + "### Counter Factuals with Reinforcement Learning\n", + "\n", + "CFRL trains a new model when fitting the explainer called an actor that takes instances and produces counterfactuals. It does this using reinforcement learning. In reinforcement learning, an actor model takes some state as input and generates actions; in our case, the actor takes an instance with a target classification and attempts to produce a member of the target class. Outcomes of actions are assigned rewards dependent on a reward function designed to encourage specific behaviors. In our case, we reward correctly classified counterfactuals generated by the actor. As well as this, we reward counterfactuals that are close to the data distribution as modeled by an autoencoder. Finally, we require that they are sparse perturbations of the original instance. The reinforcement training step pushes the actor to take high reward actions. CFRL is a black-box method as the process by which we update the actor to maximize the reward only requires estimating the reward via sampling the counterfactuals." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "b7fbd60a-64af-43f9-80d3-9b78cfde8079", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 10000/10000 [02:31<00:00, 66.00it/s]\n", + "100%|██████████| 1/1 [00:00<00:00, 151.09it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Instance class prediction: 0\n", + "Counterfactual class prediction: 1\n" + ] + } + ], + "source": [ + "from alibi.explainers import CounterfactualRL \n", + "\n", + "predict_fn = lambda x: model(x)\n", + "\n", + "cfrl_explainer = CounterfactualRL(\n", + " predictor=predict_fn, # The model to explain\n", + " encoder=ae.encoder, # The encoder\n", + " decoder=ae.decoder, # The decoder\n", + " latent_dim=7, # The dimension of the autoencoder latent space\n", + " coeff_sparsity=0.5, # The coefficient of sparsity\n", + " coeff_consistency=0.5, # The coefficient of consistency\n", + " train_steps=10000, # The number of training steps\n", + " batch_size=100, # The batch size\n", + ")\n", + "\n", + "cfrl_explainer.fit(X=scaler.transform(X_train))\n", + "\n", + "result_cfrl = cfrl_explainer.explain(X=scaler.transform(x), Y_t=np.array([1]))\n", + "print(\"Instance class prediction:\", model.predict(scaler.transform(x))[0].argmax())\n", + "print(\"Counterfactual class prediction:\", model.predict(result_cfrl.data['cf']['X'])[0].argmax())\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "6559f2e3-72db-4ca3-b949-8e3d7371a10a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fixed acidity instance: 8.965 counter factual: 9.2 difference: -0.2350657\n", + "volatile acidity instance: 0.349 counter factual: 0.36 difference: -0.0108247\n", + "citric acid instance: 0.242 counter factual: 0.34 difference: -0.0977357\n", + "residual sugar instance: 2.194 counter factual: 1.6 difference: 0.5943643\n", + "chlorides instance: 0.059 counter factual: 0.062 difference: -0.0031443\n", + "free sulfur dioxide instance: 6.331 counter factual: 5.0 difference: 1.3312454\n", + "total sulfur dioxide instance: 14.989 counter factual: 12.0 difference: 2.9894428\n", + "density instance: 0.997 counter factual: 0.997 difference: 0.0003435\n", + "pH instance: 3.188 counter factual: 3.2 difference: -0.0118126\n", + "sulphates instance: 0.598 counter factual: 0.67 difference: -0.0718592\n", + "alcohol instance: 9.829 counter factual: 10.5 difference: -0.6712008\n" + ] + } + ], + "source": [ + "cfrl = scaler.inverse_transform(result_cfrl.data['cf']['X'])\n", + "compare_instances(cfrl, x)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "ce1c7e49-c6dc-41c5-9214-d33f42569231", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1ea3785ba4d44d89bc55e41ac24d4180", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/1 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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SEggKSnJrKD+d4EuIiIiUpRoN49sKFGiBLVr12bLli2mtol7KV68OABJSUlWnbNixYp4eXmxZcsWi4+5ey57e3vT2Llz5zh06JDZPH9/f7Zt22ZxbD4+PgDs2bPHNJaQkMC3335rcWwiIiIihYnuTGfTmDFj6Nu3Ly+88ALPPPMMTk5OHD58mJo1a/LUU0+lm1+uXDkcHR3ZsmULLi4uFCtWzFSUWsLW1pZx48YxduxYxowZQ7t27bCxseG7776jbdu2Ga5VqVIlvL29mTdvHiNHjiQhIYGIiAg8PT3N5g0bNozQ0FB69uxJv379cHV15dixY7i6uhIaGppu3apVqxIYGMj06dOJj4/Hw8ODt956y+KeaxEREZHCRnems6lBgwasXr2axMRExo0bx6hRo/j+++/x9vbOcL6DgwOzZs3i559/pnfv3hkWqffSvn17IiMjOX36NCNGjGDChAmcOnUq0w+Hsbe3JzIyEjs7O0aMGMGiRYsYNGgQDRs2NJtXqVIl3n//fdzc3Jg0aRLDhg1jx44dmW63BzB37lyaNGnC7NmzmTRpEo0aNaJt27bZviYRERGRwsDGaGm/gkgO024eBZ9yZTnlynKFPVceHi60H/Nxjqy1Nbxjoc5VTivsX1s5Sbn6x71289CdaRERERERK6lnWkREJBclJqWwNbxjjqyVfDs1R9YREeupmBYREclFN+JukVP/eK5PqBPJe2rzEBERERGxkoppERERERErqZgWEREREbGSeqZFREQKqOTbqUWubzoxKYUbcbfyOgwRExXTIiIiBZR9cbsc27O6oNga3jHHHuAUyQlq8xARERERsZKKaRERERERKxWpYnrx4sU0bdqU6tWrExYWRnR0NAaDgePHj+fK+f38/IiMjHzg54mMjMTPz++e80JCQggLCzO9DgsLIyQkxPT6yJEjuRKviIiISEFVZHqmjx49SmRkJKNHj6Zhw4aUKVMGd3d3oqKiqFChQl6Hl6O6du3KU089le3jhg4dSmJioun1kSNHWLx4McOHD8/J8EREREQKjSJTTJ86dQqAnj174uzsbBr39fXNo4geHG9vb7y9vbN9XGH7oUJERETkQSsSbR5hYWGMHz8egHr16mEwGIiOjk7X5rFt2zaqV6/O/v37TceePXuWunXrsmDBAtPYwYMH6dWrF7Vr18bPz4/JkycTHx9v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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import shap\n", + "from alibi.explainers import KernelShap\n", + "\n", + "predict_fn = lambda x: model(scaler.transform(x))\n", + "\n", + "explainer = KernelShap(predict_fn, task='classification')\n", + "\n", + "explainer.fit(X_train[0:100])\n", + "\n", + "result_x = explainer.explain(x)\n", + "result_cfrl = explainer.explain(cfrl)\n", + "\n", + "plot_importance(result_x.shap_values[0], features, 0)\n", + "plot_importance(result_cfrl.shap_values[0], features, 0)" + ] + }, + { + "cell_type": "markdown", + "id": "9223ff2e-66c7-40a0-ba8a-7655ef7650ca", + "metadata": {}, + "source": [ + "### Counterfactual Instances" + ] + }, + { + "cell_type": "markdown", + "id": "6d142f8a-c97f-4965-8b76-840b0aed5164", + "metadata": {}, + "source": [ + "First we need to revert to using tfv1" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "4fc13edf-3e05-4a7f-b5d6-f822923df98d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:tensorflow:From /home/alex/miniconda3/envs/alibi-explain/lib/python3.8/site-packages/tensorflow/python/compat/v2_compat.py:96: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "non-resource variables are not supported in the long term\n" + ] + } + ], + "source": [ + "import tensorflow.compat.v1 as tf\n", + "tf.disable_v2_behavior()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "38105a7b-b86e-4720-9015-e7838ed82e0c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:tensorflow:OMP_NUM_THREADS is no longer used by the default Keras config. To configure the number of threads, use tf.config.threading APIs.\n", + "WARNING:tensorflow:No training configuration found in the save file, so the model was *not* compiled. Compile it manually.\n", + "WARNING:tensorflow:No training configuration found in the save file, so the model was *not* compiled. Compile it manually.\n" + ] + } + ], + "source": [ + "from tensorflow.keras.models import Model, load_model\n", + "model = load_tf_model() \n", + "ae = load_ae_model()" + ] + }, + { + "cell_type": "markdown", + "id": "3d48f384-3c88-4735-84c0-af9b0d76b7bd", + "metadata": {}, + "source": [ + "The counterfactual instance method in alibi generates counterfactuals by defining a loss that prefers interpretable instances close to the target class. It then uses gradient descent to move within the feature space until it obtain a counterfactual of sufficient quality. " + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "33cf22f1-0adb-4cfb-b258-aadcab34c46e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:tensorflow:From /home/alex/Development/alibi-explain/alibi/explainers/counterfactual.py:169: The name tf.keras.backend.get_session is deprecated. Please use tf.compat.v1.keras.backend.get_session instead.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "`Model.state_updates` will be removed in a future version. This property should not be used in TensorFlow 2.0, as `updates` are applied automatically.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Instance class prediction: 0\n", + "Counterfactual class prediction: 1\n" + ] + } + ], + "source": [ + "from alibi.explainers import Counterfactual\n", + "\n", + "explainer = Counterfactual(\n", + " model, # The model to explain\n", + " shape=(1,) + X_train.shape[1:], # The shape of the model input\n", + " target_proba=0.51, # The target class probability\n", + " tol=0.01, # The tolerance for the loss\n", + " target_class='other', # The target class to obtain \n", + ")\n", + "\n", + "result_cf = explainer.explain(scaler.transform(x))\n", + "print(\"Instance class prediction:\", model.predict(scaler.transform(x))[0].argmax())\n", + "print(\"Counterfactual class prediction:\", model.predict(result_cf.data['cf']['X'])[0].argmax())\n" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "56a4399b-659c-4d60-bd2c-e3c6ca259f28", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fixed acidity instance: 9.2 counter factual: 9.23 difference: -0.030319\n", + "volatile acidity instance: 0.36 counter factual: 0.36 difference: 0.0004017\n", + "citric acid instance: 0.34 counter factual: 0.334 difference: 0.0064294\n", + "residual sugar instance: 1.6 counter factual: 1.582 difference: 0.0179322\n", + "chlorides instance: 0.062 counter factual: 0.061 difference: 0.0011683\n", + "free sulfur dioxide instance: 5.0 counter factual: 4.955 difference: 0.0449123\n", + "total sulfur dioxide instance: 12.0 counter factual: 11.324 difference: 0.6759205\n", + "density instance: 0.997 counter factual: 0.997 difference: -5.08e-05\n", + "pH instance: 3.2 counter factual: 3.199 difference: 0.0012383\n", + "sulphates instance: 0.67 counter factual: 0.64 difference: 0.0297857\n", + "alcohol instance: 10.5 counter factual: 9.88 difference: 0.6195097\n" + ] + } + ], + "source": [ + "cf = scaler.inverse_transform(result_cf.data['cf']['X'])\n", + "compare_instances(x, cf)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "0d7becb3-3006-468a-9b98-1ebd02dc7288", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "6abeffc3bd6e4d51a4dc8021c96f5a19", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/1 [00:00,\n", + "
    )" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAFECAYAAADlf7JXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABmNklEQVR4nO3deVxU5fv/8ReDgigooCyZWa5jH0VxRRTTUJTcRTTXcsk9NVfINbVcMlLB3bQ0y9Ayyz65m5VlpKXpJytNs3InXBAVEJjfH/6crxP7iA7g+/l48Mi55z73uc59aLg4XOc+diaTyYSIiIiIiOSawdYBiIiIiIgUVEqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkVsHYA8vC5fvk5aWsFY5rx0aWfi4hJsHcZDTefAtjT/tqX5ty3Nv23Zev4NBjvc3Epk+r6SabGZtDRTgUmmgQIVa2Glc2Bbmn/b0vzblubftvLz/KvMQ0RERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKegKiFFouJZ0o5ph33+IeHi55NpZYR+fAdpJvpdo6BBGRfEnJtBRaxRyL0G7MJ7YOQ6RQ2BzRwdYhiIjkSyrzEBERERGxkpJpERERERErWZ1ML1y4kCZNmlCtWjXCw8PzMqYHrnfv3owYMcKibf369QQGBvKf//yH3r17P7BYjh07htFoJCYmxtxmNBpZu3Ztnu7n9OnTGI1Gvvjiiyz7rV27FqPRmKf7FhERESksrKqZPnLkCFFRUYwePZoGDRpQunTpvI7LpmJjY3nllVfo2bMnwcHBlCpVyqbxREdHU65cuTwd09PTk+joaCpWrJin44qIiIg8TKxKpk+ePAlAz549cXZ2zrRfYmIixYoVsy4yG/rzzz9JTU2lc+fOVKtW7Z7GSk1NJTU1FQcHB6vH8PX1vacYMuLg4HBfxhURERF5mOS6zCM8PJzx48cDULduXXNJQkxMDEajka+//prBgwdTu3Ztpk+fDsDZs2cZNWoUDRo0oFatWvTv39+ckN+RlJTE66+/TtOmTalRowbt27fnyy+/zDaeZcuWERQUhI+PD40aNaJ///7ExsYCsHHjRoxGI9evX7fYJjAwkDlz5mQ4XlRUFD179gSgQ4cOGI1GNm7caD6+Y8eOWfT/d4lIeHg4ISEh7Ny5kzZt2lCzZk0OHz6cafzvvfceTZs2xdfXl8GDB5tjv1tGZR5r166lZcuW1KhRg6CgIN555x3ze1u2bKFatWrs27fP3Hb69Gnq1KnDvHnzzK//XeaRnJzM9OnTqVevHg0aNGDmzJmkpKSki+fKlStMnjyZRo0a4ePjQ7du3fjpp58yPUYRERGRwirXV6aHDh2Kt7c3S5YsYfXq1RQrVozKlSvz888/AzBx4kRCQkJ4/vnncXR05MqVK/To0QNXV1deeeUVnJycWL58OX379mXbtm3mK9cjRozg8OHDDB8+nPLly7NlyxaGDBnCRx99xJNPPplhLJs2bWLp0qWMHTuWKlWqcOXKFb777jtu3rxp9YR06dIFd3d3pk+fzhtvvMFjjz1G+fLlOX78eI7HOHPmDHPnzmXo0KF4eHhkWqKxc+dOpk+fTrdu3WjRogX79+9nwoQJ2Y6/fv16ZsyYQd++fQkICCAmJobZs2eTnJzMwIEDeeaZZ9ixYwcTJkxg8+bNlChRgpdffply5coxbNiwTMd944032LBhA6NGjaJSpUps2LCBrVu3WvRJTk6mb9++xMfHM378eNzd3Vm3bh19+vRh+/bteHh45HieRERERAq6XCfT5cuXp3z58gD4+PhQokQJi/eDg4N56aWXzK/nz5/PzZs32bRpE66urgDUqVOHwMBAPvroI3r27Mm+ffvYs2cP7777Lg0aNAAgICCAU6dOsWTJEiIjIzOM5fDhwwQEBJivJAO0bNkyt4dkwdvbm8qVKwO3rwhXrVo112NcuXKFd955J9NfAu5YunQpTZo0Ydq0aQA0adKES5cusWHDhky3SUtLIyoqipCQEPONnwEBAVy7do1ly5aZf4mZMmUKbdu2ZebMmVSrVo2DBw/y4YcfZlpucvnyZT744AOGDx9Ov379zPG0bt3aot8nn3zC8ePH+eyzz3jiiScAaNSoEcHBwaxatYqwsLAczRFA6dKZlwiJSP6jh+bYlubftjT/tpWf5z/PH9rSrFkzi9f79u2jUaNGODs7m0sGSpQoQfXq1fnf//4HwLfffouHhwd16tSxKCvw9/dn48aNme7rySef5MMPPyQyMpJmzZpRvXp17O3t8/qQcs3LyyvbRDolJYWjR48yefJki/agoKAsk+nz589z8eJFgoODLdpbt27NunXr+O2336hZsyaurq68+uqrDBo0iKJFizJs2LAs67+PHTtGUlISzZs3N7cZDAaaN2/OW2+9ZW7bt28f1atXp1y5chbnqn79+ubzmVNxcQmkpZlytU1u5Of/8UQKotjYa7YO4aHl4eGi+bchzb9t2Xr+DQa7LC8A5nky/e+VPS5fvsyhQ4f4/PPP0/X19/c394mNjaV69erp+mSVHHfu3Jnr168THR3NokWLcHV1pVu3bowYMcKmSXWZMmWy7XP58mVSU1PTzVd2K6PcqanObLurV6+a2xo2bEiZMmW4cuUKXbt2zXLcf/75J8tx74770KFDGZ6rO3+xEBEREXlY5HkybWdnZ/G6VKlSBAYGMnTo0HR975SIlCpVCi8vLxYtWpSrfRkMBvr06UOfPn04d+4cmzdvZt68eXh7e9O9e3ccHR0BuHXrlsV2dyecOZXVWG5ubrkez83NDXt7e+Li4iza//363+7UJGe23d3L+L3xxhukpqZSpkwZZs6cSURERKbj3vkFIC4uzlyOk9F+SpUqRY0aNXjllVfSjXEvK5aIiIiIFER5nkz/m7+/P1u2bKFKlSqZLpPn7+/P22+/TfHixalUqZJV+3nkkUcYOHAgH330ESdOnABul1sAnDhxgrp16wLw008/kZCQkOvxvb29zWPduSp77tw5Tp48aa4dzo0iRYrw5JNPsmvXLrp3725u37FjR7ZxeHp6snXrVpo2bWpu37JlC87OzuYHrMTExLB27Vrmz5+Ps7Mz/fv3p2XLlrRq1SrDcatWrYqjoyO7du0yn4O0tDR27dpl0c/f359vvvmGsmXLFrr1xUVERERy674n03369OHTTz/l+eefp1evXnh5efHPP/+wf/9+6tatS9u2bWncuDEBAQH069ePAQMGULlyZRISEvj1119JSkpizJgxGY49ZcoUSpUqRa1atXBxcSEmJoY///yTcePGAVCzZk28vLx47bXXGDlyJFeuXOGtt97Kcm3szHh7e1OjRg0WLFiAk5MTaWlpLFu2zOIqbm4NHjyYF198kalTpxIUFMT+/fv5+uuvs9zGYDAwfPhwpkyZgqurK40bN2b//v2sW7eO0aNH4+joyPXr15kwYQKtW7c211Y/++yzvPLKK9SvXx93d/d047q5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Bw/mww8/xM7OLldzJSIiIlKQZZlMly9fHldXV0wmk0WpQVpaGlFRUYSEhJivNgcEBHDt2jWWLVvG888/j7e3N56enjg4OKQrU2jTpo353yaTifr163PhwgXWr1+fq2T6yJEj9OzZk9atW5vbOnTokOPtM3KnRtre3v6eyiuWLVuGo6Njpu9fvnyZDz74gOHDh9OvXz8AmjRpYnEsGTlx4gT//e9/mTVrFp06dTJv1759e5YsWcLKlSspXrw4s2fPplevXmzatImdO3dSokQJwsLCMh33q6++4ujRo6xfv55atWoBt+u1g4KCLJLphQsXUqZMGVasWIGDgwNw++r8M888w5dffkmzZs1yMj0AlC7tnOO++cHDumB/fqJzICLy4OWHz978EENmrKqZPn/+PBcvXiQ4ONiivXXr1qxbt47ffvuNmjVrZrr91atXiYqKYteuXVy4cMF89dbLyytXcVSrVo2VK1diMBho1KgRFSpUyP3B3AcNGzbMMpGG26USSUlJNG/e3NxmMBho3ry5+Yp4Ro4cOYLJZLKYe4PBQHBwsMV2devWpU+fPkyePJmUlBTeffddihcvnum4hw8fpkyZMuZEGuDRRx+levXqFv327dtHx44dMRgM5pKUcuXK8eijj/K///0vV8l0XFwCaWmmHPe3JQ8PF2JjtWy9Lekc2FZ+/kEmIveXrT97bf35bzDYZXkB0Kp1pu/Ux5YuXdqi/c7rq1evZrl9eHg4n3/+Of3792flypV8+OGHdO7cmaSkpFzFMWXKFFq0aMHixYsJDg6mZcuW/Pe//83VGPdDmTJlsu3zzz//AJnPYWYuXrxI8eLF063CUbp0aW7evElycrK5rW3btiQnJ1OlShXq1auX5bixsbEZ3pD473guX77MihUrqF69usXX33//zblz57Lch4iIiEhhY9WVaQ8PDwCLG9zufl2qVKlMt01KSmLPnj1MmTKF7t27m9vff//9XMdRsmRJJk2axKRJk/j111956623GDt2LEajkcqVK+Pg4MCtW7cstomPj8/1fgAcHR3TjZXZLw05qRu+k3DHxcXh6upqbv/3nP6bp6cnN27c4ObNmxYJdVxcHE5OTubSi5SUFCZPnkzVqlX5/fffiY6O5tlnn810XA8PDy5dupSuPS4uzmI1klKlStGiRQu6dOmSrq+bm1uWsYuIiIgUNtlemS5atGi6K8Z36qH/fbPcli1bcHZ2Nj90JKNtk5OTSUtLMyd9AAkJCezevdvqg4DbJR/jx48nLS2NkydPmuM8c+aMRQx3r3qRG15eXly/fp0LFy6Y27755hur461atSqOjo7s2rXL3JaWlmbxOiM+Pj7Y2dmxbds2c5vJZGLbtm0WK4csXbqUP/74g8WLFzNgwADmzJnD6dOnsxz3n3/+4aeffjK3nT17lqNHj1r08/f35/fff6dGjRr4+PhYfJUrVy7Hxy8iIiJSGGR7ZbpChQrs2rWLnTt34uXlhaenJ15eXgwfPpwpU6bg6upK48aN2b9/P+vWrWP06NHmeuGKFSvyzz//sHHjRqpUqYKbmxvlypXDx8eHRYsW4ezsjMFgYPny5Tg7O5OQkJCr4Lt3705QUBBVqlTBzs6O9evXU7x4cXO9dosWLYiMjGTixImEhIRw9OhRPvroIyum6fZNfsWKFWPChAn07duX06dP88EHH1g1Fty+itu1a1eioqIoUqQIlStXZsOGDdy4cSPL7SpVqkSbNm2YPn06169f57HHHmPDhg2cPHnSvOLK0aNHWbp0KZMmTeKxxx5j2LBh7N69mwkTJrB69eoMr5w3bdqUatWqMXLkSMaOHYuDgwNRUVHpSj9efPFFunTpwsCBA+ncuTNubm5cuHCBb7/9lk6dOmW4fKCIiIhIYZXtlekePXrQuHFjJkyYQGhoKOvXrwega9euTJw4kZ07dzJ48GA+++wzwsPDGThwoHnbZ555hpCQEObOnUtoaKh5ibyIiAgee+wxwsLCeO2112jZsiUdO3bMdfC+vr58/PHHjBgxgpdeeslcz3tn+b6qVasyc+ZMDh06xJAhQ9i/fz+zZs3K9X7g9rJ+kZGRnD9/nmHDhvHpp58SERFh1Vh3jB8/ns6dO7No0SLGjBmDp6cnffv2zXa7V199lU6dOrFo0SKGDh3KmTNnWLp0KfXq1SM5OZmwsDD8/Pzo1q0bAA4ODrz++uv8+OOPFmti383Ozo4lS5ZQqVIlJkyYwKxZs+jZsye1a9e26FehQgXzkxOnTJnCgAEDiIqKwsHBgccff/ye5kNERESkoLEzmUwFYzkFKXS0mofkhs6BbXl4uNBuzCe2DkNEHrDNER1s/tlr68//+7Kah4iIiIiIWLmah4iIPFySb6WyOeLeHoolIgVPYlKKrUPI95RMi4hIthyK2tv8T70PM1v/mfthp/mXrKjMQ0RERETESkqmRURERESspGRaRERERMRKqpkWEZFsJd9KxcPDxdZhPNQ0/7al+betrOY/MSmFa/E3H2A0lpRMi4hIthyK2mudaRHJlzZHdMCWt4eqzENERERExEoPRTIdFRWFn59frrZJTk4mKiqKX375xaL99OnTGI1GvvjiC3NbYGAgc+bMyZNY71VG8WVk7dq1GI1G8+uYmBiMRiPHjh0DMj9+EREREfk/D0UybY1bt26xcOHCdMmkp6cn0dHR1K1b10aRZc3a+KpXr050dDTly5cHMj9+EREREfk/qpnOJQcHB3x9fW0dRqasjc/Z2TlfH5eIiIhIfpRvr0xv3LiRGjVqEB8fb9F+/PhxjEYj3377rblt7dq1tGzZkho1ahAUFMQ777yT5dg3btxg+vTptGrVilq1ahEYGMi0adNISEgw96lTpw4AL7/8MkajEaPRyOnTp3NcRnHgwAF69epFrVq18PPzY9KkSRbjZ+TgwYMMHjyYgIAAfH196dChA59++mm6fmfOnGH06NH4+flRq1Yt2rVrx+bNm4GMyzySk5OZPn069erVo0GDBsycOZOUFMvHg/67zCOz4w8NDSU8PDxdTOHh4XTs2DHL4xMREREpbPJtMt2iRQsAduzYYdH++eefU6ZMGXMN9Pr165kxYwaBgYEsXbqU4OBgZs+ezfLlyzMdOzExkdTUVEaNGsWKFSsYOXIk3333HSNHjjT3Wb16NQBDhgwhOjqa6OhoPD09cxT7Dz/8QJ8+fShTpgyRkZG8/PLLfPnll0yYMCHL7c6ePUudOnV47bXXWLJkCS1btmTChAl89tln5j5xcXE8++yzHDlyhLCwMJYuXUpoaCjnzp3LdNw33niDDRs2MHToUObOncvZs2dZtWpVlrFkdvyhoaFs27aN69evm/tev36dbdu20blz55xMj4iIiEihkW/LPEqWLEmTJk34/PPPLZK0zz//nFatWmFvb09aWhpRUVGEhISYr5YGBARw7do1li1bxvPPP4+jo2O6sd3d3Zk2bZr5dUpKCuXKlaNHjx6cPXuWsmXL4uPjA0D58uVzXf4QERFB7dq1mT9/vrnNy8uLPn36cOzYMapWrZrhdm3atDH/22QyUb9+fS5cuMD69etp27YtAO+88w4JCQls3LjRnNz7+/tnGsvly5f54IMPGD58OP369QOgSZMmtG7dOstjyOz427Zty+zZs9m6dav5vGzZsoVbt26ZYxQRERF5WOTbZBqgdevWhIeHc/nyZdzc3Pjll184deoUr732GgDnz5/n4sWLBAcHp9tu3bp1/Pbbb9SsWTPDsTdt2sQ777zDn3/+yY0bN8ztp06domzZslbHfPPmTQ4dOsSkSZMsSinq1q1L0aJF+fnnnzNNpq9evUpUVBS7du3iwoULpKamArcT8Tu+++47mjRpkuOr5MeOHSMpKYnmzZub2wwGA82bN+ett97K9fE5OzvTqlUrPv74Y3My/fHHHxMYGIibm1uuxipd2jnX+7clLdhvezoHIiKSEVv+fMjXyXRgYCBFihRh+/btPPvss3z++ed4e3ubV6qIjY0FoHTp0hbb3Xl99erVDMfdsWMHYWFhdO/enVGjRuHq6kpsbCzDhg0jKSnpnmKOj48nNTWVadOmWVz9viOrcozw8HB++uknhg4dSqVKlXB2dmbdunXs2rXL3OfKlSvmq8Y58c8//wCZz5E1QkND6d27N3///Tcmk4kDBw5kWVaTmbi4BNLSTFbH8SB5eLgQG2vLJeFF58C29IuMiORn9/Png8Fgl+UFwHydTJcoUYKmTZvy+eef8+yzz7JlyxaCg4Oxs7MDwMPDA7hdR3y3O69LlSqV4bhbt26lVq1avPLKK+a277//Pk9idnFxwc7OjhdffJGmTZumez+zK8pJSUns2bOHKVOm0L17d3P7+++/b9HvTuKfU2XKlAFuz4mrq6u5/d9zlhv169fn8ccfZ+PGjZhMJjw9PQkICLB6PBEREZGCKt/egHhHmzZt2L9/P7t37+bvv/+2qCv29vbG09OTrVu3WmyzZcsWnJ2dLR5KcrfExEQcHBws2u6shnFH0aJFAXJ9pbp48eL4+vryxx9/4OPjk+7r7pKNuyUnJ5OWlmYRV0JCArt377bo5+/vz969e81XnLNTtWpVHB0dLa5up6WlWbzOSHbH37lzZzZt2sQnn3xCx44dsbe3z1E8IiIiIoVJvr4yDdC0aVOKFSvGlClTKFeunEUNtMFgYPjw4UyZMgVXV1caN27M/v37WbduHaNHj87w5kOARo0aMX36dJYsWUKtWrX48ssv2bdvn0UfBwcHypUrx5YtW6hSpQqOjo6ZJuf/NnbsWPr06YPBYKBVq1aUKFGCc+fOsWfPHkaNGkWFChXSbePi4oKPjw+LFi3C2dkZg8HA8uXLcXZ2tlhSr0+fPmzatImePXsyePBgvL29OXnyJDdu3GDAgAHpxnVzc6Nr165ERUVRpEgRKleuzIYNGyzqxDOS2fHfSfY7derEggULSElJISQkJEfzIiIiIlLY5PtkulixYgQGBrJ582YGDhyY7v2uXbuSlJTEmjVrePfdd/Hy8iI8PJw+ffpkOma3bt04ffo0a9asISkpicaNGxMREUHXrl0t+k2bNo05c+bQt29fkpOTs72ae0e9evV47733iIyMZPz48aSlpVG2bFmaNGliLrvISEREBFOmTCEsLAxXV1d69uxJYmIia9euNfdxd3dn3bp1zJ07l5kzZ5KcnMzjjz/OoEGDMh13/PjxpKSksGjRIgwGA+3bt6dv377Mnj07y+PI6PjLlSsH3C6xufOLTUa/HIiIiIg8DOxMJlPBuANM8pUrV67w1FNPMXnyZLp06WLVGLoBUXJD58C2PDxcaDfmE1uHISKSzuaIDroBUQqOhIQETpw4wZo1ayhRooTWlhYREZGHmpJpyZWff/6Z5557jkcffZQ5c+bg5ORk65BEREREbEZlHmIzKvOQ3NA5sK1SrsVxKKpVe0Qk/0lMSuFa/M37Nr7KPERE5J45FLXXLzM2pF8mbUvzb1v5ff7z/TrTIiIiIiL5lZJpERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaRERERERKymZFhERERGxkpJpERERERErKZkWEREREbGSnoAoNmMw2Nk6hFwpaPEWRjoHtqX5ty3Nv21p/m3LlvOf3b7tTCaT6QHFIiIiIiJSqKjMQ0RERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKSqZF/r+bN2/y0ksvERQURHBwMF988UWmfdevX09QUBAtWrRg+vTppKWlWbyflJREmzZtCAkJud9hFxp5Mf87d+4kJCSEtm3b0qZNG1atWvWgwi+Q/vjjD5599llatWrFs88+y6lTp9L1SU1NZdq0abRo0YKgoCA2bNiQo/ckZ+71HCxatIg2bdrQrl07QkJC+Prrrx9g9AXfvc7/HSdPnqRWrVrMmTPnAURd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SUk3XlpamunWrVumyZMnm3r37m1uf/fdd01Vq1ZN1z8sLMzUqVMni7a///7bVLVqVdPu3bvNbVWrVjV17NjRot+3335rqlq1qikmJsaivUePHqbhw4dnesw53S6j2L777jtT1apVTb/99luuxrt69aqpZs2appkzZ2Ya1/Dhw029evWyaDt8+LCpatWqpmvXrmW6XUaefvpp0+zZs82vU1NTTQEBAabw8HCLflOnTjXVqVPHlJiYaDKZ/u/7YceOHdnuY9SoUaYmTZqYbt68meH7Gc3V3VJSUkw3b940+fr6mj7++GOTyZT98W7ZssXUoEGDbGO728SJE03t27dP1/7mm2+aGjdunKuxRAoDlXmIiOQxFxcXPvzwQ4uvmjVrcvDgQW7cuEFwcDApKSnmr4YNG/LPP/9w/vx5AK5evcqrr77K008/TfXq1alevTrR0dGcOnUqT+N86qmnLF5/++23eHh4UKdOHYv4/P39+d///pfpONZudy/jHTx4kMTExFzfXFi+fHmKFy/O2LFj2blzJ/Hx8bmOD25fEb548SLBwcEW7a1btyYhIYHffvvN3GZnZ5durjPy3Xff0bp161zVrh86dIi+ffvi5+fHf/7zH2rVqsWNGzf4448/gOyPt2rVqly7do2wsDD27t3LjRs3crxvEblNZR4iInnM3t4eHx+fdO2XL18GoE2bNhlud+7cOR599FHCw8P56aefGDp0KJUqVcLZ2Zl169axa9euPI2zTJky6eKLjY2levXq6fra29tnOo61293LeFeuXAHAw8MjV2OXKlWKt99+m6ioKF566SVMJhONGzdm8uTJPPbYYzkeJzY2FoDSpUtbtN95fXeZRKlSpXBwcMh2zCtXruTqeM6ePUu/fv2oWbMm06ZNw9PTk6JFizJo0CCSk5PN+87qeCtWrMjixYtZvnw5AwcOpEiRIgQFBTFx4kTc3d0z3G/JkiUzLIuJj4/P09VYRAoKJdMiIg/InURj2bJl6ZIwgAoVKpCUlMSePXuYMmUK3bt3N7/3/vvv52gfDg4O3Lp1y6Its6uvdnZ26eLz8vJi0aJFOdrXvW53L+O5uroCt5PazJK+zPj6+rJy5UoSExP59ttvmT17NmPGjGH9+vU5HuNO0hsXF2fRfue1NUmlq6urOUnPia+//prExEQWL15M8eLFgdu1+v+ud87ueJs1a0azZs24du0ae/bsYebMmcyYMYN58+ZluN+KFSty/vx5bty4Yd4v3K6lrlixYm4PW6TAUzItIvKA1K5dm2LFinHx4kWaNWuWYZ9r166RlpZmcSUzISGB3bt3W/QrWrQocHvVi7uXWfP29ubMmTMW7XdWX8iOv78/b7/9NsWLF6dSpUo5Pi5rt7uX8e7M5aZNmwgLC8uwT9GiRUlKSsp0P8WKFSMwMJDjx4+zbNmyXMXo7e2Np6cnW7dupWnTpub2LVu24OzsjNFozNV4cPu4t2zZwqhRo3K0dF5iYiIGg4EiRf7vR/mWLVvS3fx6R3bH6+LiQrt27di/fz8HDx7MdL8BAQEA7Nixgw4dOgBw4cIFfvjhB/PNniIPEyXTIiIPSMmSJXnxxRd57bXXOHPmDPXr1yctLY1Tp04RExPDokWLcHFxwcfHh0WLFuHs7IzBYGD58uU4OzuTkJBgHuvOFcDVq1fTsGFDnJ2dqVixIi1atCAyMpKJEycSEhLC0aNH+eijj3IUX+PGjQkICKBfv34MGDCAypUrk5CQwK+//kpSUhJjxozJ0+3uJY6SJUsydOhQ5s2bx61bt3jqqadITk7myy+/5MUXX8TLy4sKFSqwa9cudu7ciZeXF56envzyyy989NFHNG/enLJly3LhwgWio6Np2LBhrmI0GAwMHz6cKVOm4OrqSuPGjdm/fz/r1q1j9OjRVq0jPWzYMEJDQ+nZsyf9+vXD1dWVo0eP4urqSmhoaLr+DRs2JDU1lZdffpnQ0FCOHz/OqlWrKFmypLnPnj17sjzeDz74gEOHDtGkSRM8PT05deoUW7duNSfJGfH29iY0NJSZM2diMplwd3dn4cKFlC1blvbt2+f6uEUKOiXTIiIP0IABA/D09GT16tW8/fbbODo68sQTT9C6dWtzn4iICKZMmUJYWBiurq707NmTxMRE1q5da+5Tr149+vfvz5o1a3jzzTepX78+7777LlWrVmXmzJksXryYHTt20LBhQ2bNmmVRMpIZOzs7Fi5cyNKlS1m9ejXnzp2jVKlSVKtWLcvHfFu73b2ON2jQIEqVKsWaNWv44IMPKFWqFPXq1TMv2dajRw9++eUXJkyYwNWrV3nxxRdp06YNdnZ2zJs3j7i4ONzd3WnWrBmjR4/OdZxdu3YlKSmJNWvW8O677+Ll5UV4eLjVj46vWLEi77//PhEREUycOBGAypUrZxqb0Whk1qxZLFy4kB07dlCtWjUWLFjAqFGjzH3Kly+f5fEajUZ2797NrFmzuHr1Kh4eHnTp0oWRI0dmGeukSZNwcnJi9uzZJCYmUr9+fSIiIgr0w2hErGVnMv3/xUVFRERERCRXtDSeiIiIiIiVlEyLiIiIiFhJybSIiIiIiJWUTIuIiIiIWEnJtIiIiIiIlZRMi4iIiIhYScm0iIiIiIiVlEyLiIiIiFhJybSIiIiIiJX+H0Z4zQNPbvGYAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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RYs4e/ZsjteIjo4mODj4foWYYzVr1iQ6OpqKFSvmdygiIiIiDxVd+Ghj7u7uuLu752nbxMRESpQoga+vr22DyiNnZ+cCE4uIiIjIw0RnsvPgwIED9O3bl7p161K/fn369u3LsWPHAMt2kTNnztChQwcA/vOf/2A0GjEajcD/tWJ89dVXDB06lLp16zJz5kwg83aRnTt3EhoaSu3atfHz82PQoEHZnh3fu3cv/fv3x9/fn3r16tG9e3f27duXYd4vv/zC0KFDadCgAXXr1iU0NJSvv/7aIsZ/tovEx8czbtw46tatS0BAAEuXLrUikyIiIiKFk85k51JMTAwDBgzAz8+PuXPn4uTkxA8//MDFixf597//bTHX09OT1157jfHjxzNt2jRq1qyZYb3JkycTEhLCs88+i6OjY6b73Lx5M2FhYbRr147hw4djMpn49ttvuXz5Mo8++mim25w5c4annnqKAQMGYDAY+PLLLxk0aBBr166lfv36AJw8eZKePXtSqVIlZsyYgaurK//73/84f/58lsf/4osv8t133/Hiiy9Srlw5Vq1axZ9//kmxYvooiYiIiKRTZZRLr7/+Okajkbfeegs7OzsAnnzyyUznOjg4mM9cV61aNdPWi+DgYF544YUs95eWlkZERARBQUG8/vrr5vGWLVtmG2efPn0s1vDz8+O3337jgw8+MBfZixcvxsXFhffff58SJUoA0LRp0yzXPHHiBLt27WLBggW0bdsWAD8/P5566imcnZ2zjSczZcvmfpvCriA9xOJhpRxaR/krfB627+nDFm9BpBxax1b5U5GdCzdv3uTHH39k8uTJ5gLbWi1atMj2/d9//51Lly4REhKSq3UvXLjAggUL+Oabb4iNjcVkMgFQr14985xvv/2Wjh07mgvsezl69ChgWeCXKlWKJk2acOTIkVzFBxAXl0BaminX2xVWHh4uxMbqsRHWUA6to/xZryAWNw/T91SfQesph9bJLH8Gg12eTgyqyM6F+Ph4TCYTHh4eNluzbNmy2b5/5coVgFztMy0tjWHDhnHjxg1GjRrFv/71L5ycnIiMjCQuLs487+rVq7la9++//6ZUqVIZ2lrudQwiIiIiRY2K7FwoXbo0BoOB2NhYm615rzPibm5uALna5x9//MGxY8dYuXKlRStLYmKixTxXV9dcrVuuXDlu3LhBUlKSRaH9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586dY8CAAZhMJmbMmMG6dev44IMPKFu2LMnJyQBcuXIFAA8PjxwfT2xsLO7u7hnG81pkOzs7ExwczKZNm4A7Z7HLlStHs2bN8rSeiIiISGGjM9mZeO2110hNTaVcuXLMnj2biIgIAFxcXLCzs+P555+nefPmGbbz9PQE7hTAcXFxFu/dunWLmzdvZrvfr776isTERJYsWWIuyFNSUrh27Zp5Tno7RmxsbI6Px8PDw3x3lX+6O8bc6NatG7169eL06dN8/PHHdO7cGXt7+zyvJyIiIlKYqMi+S0xMDGvXruWNN97A2dmZgQMH0rp1a9q0aUPJkiXx9fXl999/5/nnn89yjVq1arFp0yZu3bplbhnZuXPnPfedmJiIwWCgWLH/+7Zs3brVojWlUqVKeHl5sXnzZgIDA3N0TD4+PmzZsoULFy6YW0a+//77exbZxYsXByApKQlHR0eL9+rVq0elSpWYNGkS586do0uXLjmKRURERKQoULvIP9y4cYNJkybRtm1bgoODCQgI4JlnnuGll17i8uXLAIwfP57t27czYcIEdu3axf79+9m0aROjRo0y903369ePxMREhgwZwueff050dDRvvPEGJUqUyHb/jRs3JjU1lRdffJH9+/ezZs0aIiIiKF26tHmOwWBgwoQJbN++nXHjxvH555+zd+9e5s6dy9GjRzNdNyQkBDc3NwYPHszOnTvZsmULYWFh97xIsXLlygCsXr2aI0eOZDgbHhoayvfff0/dunWpUqVK9skVERERKUJUZP/DvHnzSEpKYtq0aeaxsLAwSpYsyfTp0wFo0KAB7733HpcvX2bixIkMGzaMN998k0ceeYRy5coBd+42smLFCq5cucLIkSN5//33mT9//j2LbKPRyJw5c/jxxx8ZMmQIn376KQsXLjTfui9dhw4diIqK4vfff2fUqFGEhYVx6tSpTPuu4U4/+JtvvknJkiUZM2YMixYtIjw8nPLly2cbT4MGDRg4cCBr1qyhe/fu5hyka9WqFQBdu3bNdh0RERGRosbOZDLp9g6SJ++99x6vvfYaX331lcVTNHNKdxexpCvCraccWkf5s56Hhwsdxn2c32EUKVsiOulz+w/6/9g6try7iHqyJdfOnDnD6dOnWb58OV26dMlTgS0iIiJSmKnIllxbtGgRn376KQ0bNmT06NH5HY6ISIGRfDuVLRGd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tGnTcHV1pWnTphw4cIB169YxduzYTC96BGjSpAkzZ85k6dKl1KlThy+++IL9+/dbzHFwcKBChQps3bqVatWq4ejomGXRfrfx48fTr18/DAYDbdq0oVSpUpw/f569e/cyZswYKlWqlGEbFxcXfHx8WLx4Mc7OzhgMBlasWIGzs7PFrf/69evH5s2b6d27N0OHDsXb25tTp05x8+ZNBg0alGFdNzc3unfvTlRUFMWKFaNq1aps3LjRog89M1kdf/ovAV26dGHhwoWkpKQQEhKSo7yIiIiIFBUFvsguUaIEgYGBbNmyhcGDB2d4v3v37iQlJbFmzRreffddvLy8CA8Pp1+/flmu2aNHD86cOcOaNWtISkqiadOmRERE0L17d4t5M2bMYN68efTv35/k5OR7nv1N16BBA9577z0iIyOZOHEiaWlplC9fnmbNmpnbNzITERHBtGnTCAsLw9XVld69e5OYmMjatWvNc9zd3Vm3bh3z589n9uzZJCcn869//YshQ4Zkue7EiRNJSUlh8eLFGAwGOnbsSP/+/Zk7d262x5HZ8VeoUAG406qT/gtPZr80iIiIiBRldiaTSVeeSa5dvXqVJ598kqlTp9KtW7c8raELHy3pojPrKYfWUf6s5+HhQodxH+d3GCJFypaITrrwUR5+CQkJnDx5kjVr1lCqVCndG1tEREQkEyqyJVd++ukn/vOf//Doo48yb948nJyc8jskERERkQJHRbbkip+fH7/++mt+hyEiUiAl305lS0Sn/A5DpEhJTEq596R8oCJbRETERhyK26uv3Qq6LsB6ymHBUeDvky0iIiIi8rBRkS0iIiIiYmMqskVEREREbExFtoiIiIiIjanIFhERERGxMRXZIiIiIiI2piJbRERERMTGVGSLiIiIiNiYimwRERERERvTEx8l3xgMdvkdQoGjnFhPObSO8mc95dA6yp/1lEPr3J2/vObTzmQymWwRkIiIiIiI3KF2ERERERERG1ORLSIiIiJiYyqyRURERERsTEW2iIiIiIiNqcgWEREREbExFdkiIiIiIjamIltERERExMZUZIuIiIiI2JiKbBERERERG1ORLfKA3Lp1ixdeeIGgoCCCg4P5/PPPs5y7YcMGgoKCaNWqFTNnziQtLc383s8//0zv3r1p27Ytbdu25YsvvngQ4RcItsohQFJSEu3atSMkJOR+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R4iKirLpmvfbzZs3GTNmDH5+fhiNRvOtEzds2EBgYCD//ve/6du3r83299lnn9ns9ownT56kV69e+Pr6YjQaOXPmjE3WzY2YmBiMRiPHjx9/4Pu+W3JyMnPnzsXf3x9fX18GDx6cLzkRKcj0xEcRERtzcXEx32P6n2O2dOTIERYtWsTIkSNtuu79tG7dOj7//HPmzZuHl5cXFStWJDY2lpdeeonevXsTHBxMmTJlbLa/bdu2ceXKFUJCQqxe69VXX+X69essXboUJycn81NXi6qXX36Z7du38+KLL+Lm5saiRYsYMGAAW7ZswdHRMb/DEykQVGSLiNiYvb09vr6++R1GriQmJlKiRIn7uo9Tp05RqVIli6cdHjx4kNTUVLp27XrPp6flp1OnThEYGIi/v79V65hMJpKTkx/qQvTChQt88MEHzJ492/xI6Ro1atCyZUs++eSTIvEkUJGcULuIiMgDtnHjRtq1a0etWrV46qmnWLlypcX7hw4dYujQoQQEBODr60unTp345JNPzO9v2rTJ/Ejk9HaU9DaL8PDwDGduz5w5g9Fo5PPPPzePGY1G3n77bV555RUaN25Mhw4dAEhKSuLVV1+lefPm1KpVi44dO/LFF1/c85jutV1gYCAffPABx44dM8ccFRVF7969AejUqZNFC0lO49iwYQMdOnTAx8eHJk2aMGrUKK5fv054eDjbt2/nu+++s9gf3Cnse/XqRb169ahXrx6dOnVi69atmR5Xeu7+/PNP3nnnHYtcA6xdu5bWrVtTq1YtgoKCeOeddyy2j4qKws/Pj4MHD9K1a1d8fHyy3BfAL7/8wtChQ2nQoAF169YlNDTU/PS5zKxatYquXbtSv359mjRpwtChQ/njjz8s5tzreHfv3k1ISAi+vr40bNiQbt268d1332W5z3379gEQFBRkHvPy8qJevXp8+eWXWW4nUtToTLaIyH2QkpJi8dre3h47OzvefPNNFixYwHPPPUejRo346aefWLhwIU5OTvTp0weAc+fOUa9ePXr27ImDgwM//PADkyZNwmAw0L59e1q0aMGAAQNYtWoV0dHRADg7O+c6xrfeeosGDRrw6quvkv7w31GjRnHkyBFGjhxJxYoV2bp1K8OGDePDDz/kiSeeyHKte223aNEi3njjDf766y/mzJkDgLe3N+7u7sycOZPXXnuNxx57jIoV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9PTk9OnTbNu2zVw8Z8bb25vQ0FBmz56NyWTC3d2dRYsWUb58eTp27Jjr4xYprFRki4g8QIMGDcLT05PVq1fz9ttv4+joyOOPP07btm3NcyIiIpg2bRphYWG4urrSu3dvEhMTWbt2rXlOgwYNGDhwIGvWrOH111+nYcOGvPvuu1SvXp3Zs2ezZMkSdu7cSePGjZkzZ45F60lW7OzsWLRoEcuWLWP16tWcP3+eMmXKUKNGjWwfd57X7axdb8iQIZQpU4Y1a9awfv16ypQpQ4MGDcy3luvVqxc///wzkyZN4tq1azz//PO0a9cOOzs7FixYQFxcHO7u7rRo0YKxY8fmOs7u3buTlJTEmjVrePfdd/Hy8iI8PJx+/frlei2484vT+++/T0REBJMnTwagatWqWcZmNBqZM2cOixYtYufOndSoUYOFCxcyZswY85yKFStme7xGo5E9e/YwZ84crl27hoeHB926dWP06NHZxjplyhScnJyYO3cuiYmJNGzYkIiIiIf6ITsitmZnMv3/m6OKiIiIiIhN6BZ+IiIiIiI2piJbRERERMTGVGSLiIiIiNiYimwRERERERtTkS0iIiIiYmMqskVEREREbExFtoiIiIiIjanIFhERERGxMRXZIiIiIiI29v8A3UG7/EyY1zAAAAAASUVORK5CYII=\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import shap\n", + "from alibi.explainers import KernelShap\n", + "\n", + "predict_fn = lambda x: model.predict(scaler.transform(x))\n", + "\n", + "explainer = KernelShap(predict_fn, task='classification')\n", + "\n", + "explainer.fit(X_train[0:100])\n", + "\n", + "result_x = explainer.explain(x)\n", + "result_cf = explainer.explain(cf)\n", + "\n", + "plot_importance(result_x.shap_values[0], features, 0)\n", + "plot_importance(result_cf.shap_values[0], features, 0)" + ] + }, + { + "cell_type": "markdown", + "id": "36ad53ba-d63e-4edc-b9d0-bc4ba305a593", + "metadata": {}, + "source": [ + "### Contrastive Explanations Method" + ] + }, + { + "cell_type": "markdown", + "id": "2f5db134-dd36-44c1-9b19-b04dddd66a2b", + "metadata": {}, + "source": [ + "The CEM method generates counterfactuals by defining a loss that prefers interpretable instances close to the target class. It also adds a autoencoder reconstruction loss to ensure the counterfactual stays within the data distribution." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "7aa6351b-01fd-4f6b-8f05-92f187b2737a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Instance class prediction: 0\n", + "Counterfactual class prediction: 1\n" + ] + } + ], + "source": [ + "from alibi.explainers import CEM\n", + "\n", + "cem = CEM(model, # model to explain\n", + " shape=(1,) + X_train.shape[1:], # shape of the model input\n", + " mode='PN', # pertinant negative mode\n", + " kappa=0.2, # Confidence parameter for the attack loss term\n", + " beta=0.1, # Regularization constant for L1 loss term\n", + " ae_model=ae # autoencoder model\n", + ")\n", + "\n", + "cem.fit(\n", + " scaler.transform(X_train), # scaled training data\n", + " no_info_type='median' # non-informative value for each feature\n", + ")\n", + "result_cem = cem.explain(scaler.transform(x), verbose=False)\n", + "cem_cf = result_cem.data['PN']\n", + "\n", + "print(\"Instance class prediction:\", model.predict(scaler.transform(x))[0].argmax())\n", + "print(\"Counterfactual class prediction:\", model.predict(cem_cf)[0].argmax())\n" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "96abe72c-2e01-402d-b2ed-9b61f208a95b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fixed acidity instance: 9.2 counter factual: 9.2 difference: 2e-07\n", + "volatile acidity instance: 0.36 counter factual: 0.36 difference: -0.0 \n", + "citric acid instance: 0.34 counter factual: 0.34 difference: -0.0 \n", + "residual sugar instance: 1.6 counter factual: 1.479 difference: 0.1211611\n", + "chlorides instance: 0.062 counter factual: 0.057 difference: 0.0045941\n", + "free sulfur dioxide instance: 5.0 counter factual: 2.707 difference: 2.2929246\n", + "total sulfur dioxide instance: 12.0 counter factual: 12.0 difference: 1.9e-06\n", + "density instance: 0.997 counter factual: 0.997 difference: -0.0004602\n", + "pH instance: 3.2 counter factual: 3.2 difference: -0.0 \n", + "sulphates instance: 0.67 counter factual: 0.549 difference: 0.121454\n", + "alcohol instance: 10.5 counter factual: 9.652 difference: 0.8478804\n" + ] + } + ], + "source": [ + "cem_cf = result_cem.data['PN']\n", + "cem_cf = scaler.inverse_transform(cem_cf)\n", + "compare_instances(x, cem_cf)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "298651d6-de8b-405e-a174-a207df37ffe9", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "984dbc2d6992460dba3e8859f45ff56f", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/1 [00:00,\n", + "
    )" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAFECAYAAADlf7JXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABmNklEQVR4nO3deVxU5fv/8ReDgigooCyZWa5jH0VxRRTTUJTcRTTXcsk9NVfINbVcMlLB3bQ0y9Ayyz65m5VlpKXpJytNs3InXBAVEJjfH/6crxP7iA7g+/l48Mi55z73uc59aLg4XOc+diaTyYSIiIiIiOSawdYBiIiIiIgUVEqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkVsHYA8vC5fvk5aWsFY5rx0aWfi4hJsHcZDTefAtjT/tqX5ty3Nv23Zev4NBjvc3Epk+r6SabGZtDRTgUmmgQIVa2Glc2Bbmn/b0vzblubftvLz/KvMQ0RERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKegKiFFouJZ0o5ph33+IeHi55NpZYR+fAdpJvpdo6BBGRfEnJtBRaxRyL0G7MJ7YOQ6RQ2BzRwdYhiIjkSyrzEBERERGxkpJpERERERErWZ1ML1y4kCZNmlCtWjXCw8PzMqYHrnfv3owYMcKibf369QQGBvKf//yH3r17P7BYjh07htFoJCYmxtxmNBpZu3Ztnu7n9OnTGI1Gvvjiiyz7rV27FqPRmKf7FhERESksrKqZPnLkCFFRUYwePZoGDRpQunTpvI7LpmJjY3nllVfo2bMnwcHBlCpVyqbxREdHU65cuTwd09PTk+joaCpWrJin44qIiIg8TKxKpk+ePAlAz549cXZ2zrRfYmIixYoVsy4yG/rzzz9JTU2lc+fOVKtW7Z7GSk1NJTU1FQcHB6vH8PX1vacYMuLg4HBfxhURERF5mOS6zCM8PJzx48cDULduXXNJQkxMDEajka+//prBgwdTu3Ztpk+fDsDZs2cZNWoUDRo0oFatWvTv39+ckN+RlJTE66+/TtOmTalRowbt27fnyy+/zDaeZcuWERQUhI+PD40aNaJ///7ExsYCsHHjRoxGI9evX7fYJjAwkDlz5mQ4XlRUFD179gSgQ4cOGI1GNm7caD6+Y8eOWfT/d4lIeHg4ISEh7Ny5kzZt2lCzZk0OHz6cafzvvfceTZs2xdfXl8GDB5tjv1tGZR5r166lZcuW1KhRg6CgIN555x3ze1u2bKFatWrs27fP3Hb69Gnq1KnDvHnzzK//XeaRnJzM9OnTqVevHg0aNGDmzJmkpKSki+fKlStMnjyZRo0a4ePjQ7du3fjpp58yPUYRERGRwirXV6aHDh2Kt7c3S5YsYfXq1RQrVozKlSvz888/AzBx4kRCQkJ4/vnncXR05MqVK/To0QNXV1deeeUVnJycWL58OX379mXbtm3mK9cjRozg8OHDDB8+nPLly7NlyxaGDBnCRx99xJNPPplhLJs2bWLp0qWMHTuWKlWqcOXKFb777jtu3rxp9YR06dIFd3d3pk+fzhtvvMFjjz1G+fLlOX78eI7HOHPmDHPnzmXo0KF4eHhkWqKxc+dOpk+fTrdu3WjRogX79+9nwoQJ2Y6/fv16ZsyYQd++fQkICCAmJobZs2eTnJzMwIEDeeaZZ9ixYwcTJkxg8+bNlChRgpdffply5coxbNiwTMd944032LBhA6NGjaJSpUps2LCBrVu3WvRJTk6mb9++xMfHM378eNzd3Vm3bh19+vRh+/bteHh45HieRERERAq6XCfT5cuXp3z58gD4+PhQokQJi/eDg4N56aWXzK/nz5/PzZs32bRpE66urgDUqVOHwMBAPvroI3r27Mm+ffvYs2cP7777Lg0aNAAgICCAU6dOsWTJEiIjIzOM5fDhwwQEBJivJAO0bNkyt4dkwdvbm8qVKwO3rwhXrVo112NcuXKFd955J9NfAu5YunQpTZo0Ydq0aQA0adKES5cusWHDhky3SUtLIyoqipCQEPONnwEBAVy7do1ly5aZf4mZMmUKbdu2ZebMmVSrVo2DBw/y4YcfZlpucvnyZT744AOGDx9Ov379zPG0bt3aot8nn3zC8ePH+eyzz3jiiScAaNSoEcHBwaxatYqwsLAczRFA6dKZlwiJSP6jh+bYlubftjT/tpWf5z/PH9rSrFkzi9f79u2jUaNGODs7m0sGSpQoQfXq1fnf//4HwLfffouHhwd16tSxKCvw9/dn48aNme7rySef5MMPPyQyMpJmzZpRvXp17O3t8/qQcs3LyyvbRDolJYWjR48yefJki/agoKAsk+nz589z8eJFgoODLdpbt27NunXr+O2336hZsyaurq68+uqrDBo0iKJFizJs2LAs67+PHTtGUlISzZs3N7cZDAaaN2/OW2+9ZW7bt28f1atXp1y5chbnqn79+ubzmVNxcQmkpZlytU1u5Of/8UQKotjYa7YO4aHl4eGi+bchzb9t2Xr+DQa7LC8A5nky/e+VPS5fvsyhQ4f4/PPP0/X19/c394mNjaV69erp+mSVHHfu3Jnr168THR3NokWLcHV1pVu3bowYMcKmSXWZMmWy7XP58mVSU1PTzVd2K6PcqanObLurV6+a2xo2bEiZMmW4cuUKXbt2zXLcf/75J8tx74770KFDGZ6rO3+xEBEREXlY5HkybWdnZ/G6VKlSBAYGMnTo0HR975SIlCpVCi8vLxYtWpSrfRkMBvr06UOfPn04d+4cmzdvZt68eXh7e9O9e3ccHR0BuHXrlsV2dyecOZXVWG5ubrkez83NDXt7e+Li4iza//363+7UJGe23d3L+L3xxhukpqZSpkwZZs6cSURERKbj3vkFIC4uzlyOk9F+SpUqRY0aNXjllVfSjXEvK5aIiIiIFER5nkz/m7+/P1u2bKFKlSqZLpPn7+/P22+/TfHixalUqZJV+3nkkUcYOHAgH330ESdOnABul1sAnDhxgrp16wLw008/kZCQkOvxvb29zWPduSp77tw5Tp48aa4dzo0iRYrw5JNPsmvXLrp3725u37FjR7ZxeHp6snXrVpo2bWpu37JlC87OzuYHrMTExLB27Vrmz5+Ps7Mz/fv3p2XLlrRq1SrDcatWrYqjoyO7du0yn4O0tDR27dpl0c/f359vvvmGsmXLFrr1xUVERERy674n03369OHTTz/l+eefp1evXnh5efHPP/+wf/9+6tatS9u2bWncuDEBAQH069ePAQMGULlyZRISEvj1119JSkpizJgxGY49ZcoUSpUqRa1atXBxcSEmJoY///yTcePGAVCzZk28vLx47bXXGDlyJFeuXOGtt97Kcm3szHh7e1OjRg0WLFiAk5MTaWlpLFu2zOIqbm4NHjyYF198kalTpxIUFMT+/fv5+uuvs9zGYDAwfPhwpkyZgqurK40bN2b//v2sW7eO0aNH4+joyPXr15kwYQKtW7c211Y/++yzvPLKK9SvXx93d/d047q5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Bw/mww8/xM7OLldzJSIiIlKQZZlMly9fHldXV0wmk0WpQVpaGlFRUYSEhJivNgcEBHDt2jWWLVvG888/j7e3N56enjg4OKQrU2jTpo353yaTifr163PhwgXWr1+fq2T6yJEj9OzZk9atW5vbOnTokOPtM3KnRtre3v6eyiuWLVuGo6Njpu9fvnyZDz74gOHDh9OvXz8AmjRpYnEsGTlx4gT//e9/mTVrFp06dTJv1759e5YsWcLKlSspXrw4s2fPplevXmzatImdO3dSokQJwsLCMh33q6++4ujRo6xfv55atWoBt+u1g4KCLJLphQsXUqZMGVasWIGDgwNw++r8M888w5dffkmzZs1yMj0AlC7tnOO++cHDumB/fqJzICLy4OWHz978EENmrKqZPn/+PBcvXiQ4ONiivXXr1qxbt47ffvuNmjVrZrr91atXiYqKYteuXVy4cMF89dbLyytXcVSrVo2VK1diMBho1KgRFSpUyP3B3AcNGzbMMpGG26USSUlJNG/e3NxmMBho3ry5+Yp4Ro4cOYLJZLKYe4PBQHBwsMV2devWpU+fPkyePJmUlBTeffddihcvnum4hw8fpkyZMuZEGuDRRx+levXqFv327dtHx44dMRgM5pKUcuXK8eijj/K///0vV8l0XFwCaWmmHPe3JQ8PF2JjtWy9Lekc2FZ+/kEmIveXrT97bf35bzDYZXkB0Kp1pu/Ux5YuXdqi/c7rq1evZrl9eHg4n3/+Of3792flypV8+OGHdO7cmaSkpFzFMWXKFFq0aMHixYsJDg6mZcuW/Pe//83VGPdDmTJlsu3zzz//AJnPYWYuXrxI8eLF063CUbp0aW7evElycrK5rW3btiQnJ1OlShXq1auX5bixsbEZ3pD473guX77MihUrqF69usXX33//zblz57Lch4iIiEhhY9WVaQ8PDwCLG9zufl2qVKlMt01KSmLPnj1MmTKF7t27m9vff//9XMdRsmRJJk2axKRJk/j111956623GDt2LEajkcqVK+Pg4MCtW7cstomPj8/1fgAcHR3TjZXZLw05qRu+k3DHxcXh6upqbv/3nP6bp6cnN27c4ObNmxYJdVxcHE5OTubSi5SUFCZPnkzVqlX5/fffiY6O5tlnn810XA8PDy5dupSuPS4uzmI1klKlStGiRQu6dOmSrq+bm1uWsYuIiIgUNtlemS5atGi6K8Z36qH/fbPcli1bcHZ2Nj90JKNtk5OTSUtLMyd9AAkJCezevdvqg4DbJR/jx48nLS2NkydPmuM8c+aMRQx3r3qRG15eXly/fp0LFy6Y27755hur461atSqOjo7s2rXL3JaWlmbxOiM+Pj7Y2dmxbds2c5vJZGLbtm0WK4csXbqUP/74g8WLFzNgwADmzJnD6dOnsxz3n3/+4aeffjK3nT17lqNHj1r08/f35/fff6dGjRr4+PhYfJUrVy7Hxy8iIiJSGGR7ZbpChQrs2rWLnTt34uXlhaenJ15eXgwfPpwpU6bg6upK48aN2b9/P+vWrWP06NHmeuGKFSvyzz//sHHjRqpUqYKbmxvlypXDx8eHRYsW4ezsjMFgYPny5Tg7O5OQkJCr4Lt3705QUBBVqlTBzs6O9evXU7x4cXO9dosWLYiMjGTixImEhIRw9OhRPvroIyum6fZNfsWKFWPChAn07duX06dP88EHH1g1Fty+itu1a1eioqIoUqQIlStXZsOGDdy4cSPL7SpVqkSbNm2YPn06169f57HHHmPDhg2cPHnSvOLK0aNHWbp0KZMmTeKxxx5j2LBh7N69mwkTJrB69eoMr5w3bdqUatWqMXLkSMaOHYuDgwNRUVHpSj9efPFFunTpwsCBA+ncuTNubm5cuHCBb7/9lk6dOmW4fKCIiIhIYZXtlekePXrQuHFjJkyYQGhoKOvXrwega9euTJw4kZ07dzJ48GA+++wzwsPDGThwoHnbZ555hpCQEObOnUtoaKh5ibyIiAgee+wxwsLCeO2112jZsiUdO3bMdfC+vr58/PHHjBgxgpdeeslcz3tn+b6qVasyc+ZMDh06xJAhQ9i/fz+zZs3K9X7g9rJ+kZGRnD9/nmHDhvHpp58SERFh1Vh3jB8/ns6dO7No0SLGjBmDp6cnffv2zXa7V199lU6dOrFo0SKGDh3KmTNnWLp0KfXq1SM5OZmwsDD8/Pzo1q0bAA4ODrz++uv8+OOPFmti383Ozo4lS5ZQqVIlJkyYwKxZs+jZsye1a9e26FehQgXzkxOnTJnCgAEDiIqKwsHBgccff/ye5kNERESkoLEzmUwFYzkFKXS0mofkhs6BbXl4uNBuzCe2DkNEHrDNER1s/tlr68//+7Kah4iIiIiIWLmah4iIPFySb6WyOeLeHoolIgVPYlKKrUPI95RMi4hIthyK2tv8T70PM1v/mfthp/mXrKjMQ0RERETESkqmRURERESspGRaRERERMRKqpkWEZFsJd9KxcPDxdZhPNQ0/7al+betrOY/MSmFa/E3H2A0lpRMi4hIthyK2mudaRHJlzZHdMCWt4eqzENERERExEoPRTIdFRWFn59frrZJTk4mKiqKX375xaL99OnTGI1GvvjiC3NbYGAgc+bMyZNY71VG8WVk7dq1GI1G8+uYmBiMRiPHjh0DMj9+EREREfk/D0UybY1bt26xcOHCdMmkp6cn0dHR1K1b10aRZc3a+KpXr050dDTly5cHMj9+EREREfk/qpnOJQcHB3x9fW0dRqasjc/Z2TlfH5eIiIhIfpRvr0xv3LiRGjVqEB8fb9F+/PhxjEYj3377rblt7dq1tGzZkho1ahAUFMQ777yT5dg3btxg+vTptGrVilq1ahEYGMi0adNISEgw96lTpw4AL7/8MkajEaPRyOnTp3NcRnHgwAF69epFrVq18PPzY9KkSRbjZ+TgwYMMHjyYgIAAfH196dChA59++mm6fmfOnGH06NH4+flRq1Yt2rVrx+bNm4GMyzySk5OZPn069erVo0GDBsycOZOUFMvHg/67zCOz4w8NDSU8PDxdTOHh4XTs2DHL4xMREREpbPJtMt2iRQsAduzYYdH++eefU6ZMGXMN9Pr165kxYwaBgYEsXbqU4OBgZs+ezfLlyzMdOzExkdTUVEaNGsWKFSsYOXIk3333HSNHjjT3Wb16NQBDhgwhOjqa6OhoPD09cxT7Dz/8QJ8+fShTpgyRkZG8/PLLfPnll0yYMCHL7c6ePUudOnV47bXXWLJkCS1btmTChAl89tln5j5xcXE8++yzHDlyhLCwMJYuXUpoaCjnzp3LdNw33niDDRs2MHToUObOncvZs2dZtWpVlrFkdvyhoaFs27aN69evm/tev36dbdu20blz55xMj4iIiEihkW/LPEqWLEmTJk34/PPPLZK0zz//nFatWmFvb09aWhpRUVGEhISYr5YGBARw7do1li1bxvPPP4+jo2O6sd3d3Zk2bZr5dUpKCuXKlaNHjx6cPXuWsmXL4uPjA0D58uVzXf4QERFB7dq1mT9/vrnNy8uLPn36cOzYMapWrZrhdm3atDH/22QyUb9+fS5cuMD69etp27YtAO+88w4JCQls3LjRnNz7+/tnGsvly5f54IMPGD58OP369QOgSZMmtG7dOstjyOz427Zty+zZs9m6dav5vGzZsoVbt26ZYxQRERF5WOTbZBqgdevWhIeHc/nyZdzc3Pjll184deoUr732GgDnz5/n4sWLBAcHp9tu3bp1/Pbbb9SsWTPDsTdt2sQ777zDn3/+yY0bN8ztp06domzZslbHfPPmTQ4dOsSkSZMsSinq1q1L0aJF+fnnnzNNpq9evUpUVBS7du3iwoULpKamArcT8Tu+++47mjRpkuOr5MeOHSMpKYnmzZub2wwGA82bN+ett97K9fE5OzvTqlUrPv74Y3My/fHHHxMYGIibm1uuxipd2jnX+7clLdhvezoHIiKSEVv+fMjXyXRgYCBFihRh+/btPPvss3z++ed4e3ubV6qIjY0FoHTp0hbb3Xl99erVDMfdsWMHYWFhdO/enVGjRuHq6kpsbCzDhg0jKSnpnmKOj48nNTWVadOmWVz9viOrcozw8HB++uknhg4dSqVKlXB2dmbdunXs2rXL3OfKlSvmq8Y58c8//wCZz5E1QkND6d27N3///Tcmk4kDBw5kWVaTmbi4BNLSTFbH8SB5eLgQG2vLJeFF58C29IuMiORn9/Png8Fgl+UFwHydTJcoUYKmTZvy+eef8+yzz7JlyxaCg4Oxs7MDwMPDA7hdR3y3O69LlSqV4bhbt26lVq1avPLKK+a277//Pk9idnFxwc7OjhdffJGmTZumez+zK8pJSUns2bOHKVOm0L17d3P7+++/b9HvTuKfU2XKlAFuz4mrq6u5/d9zlhv169fn8ccfZ+PGjZhMJjw9PQkICLB6PBEREZGCKt/egHhHmzZt2L9/P7t37+bvv/+2qCv29vbG09OTrVu3WmyzZcsWnJ2dLR5KcrfExEQcHBws2u6shnFH0aJFAXJ9pbp48eL4+vryxx9/4OPjk+7r7pKNuyUnJ5OWlmYRV0JCArt377bo5+/vz969e81XnLNTtWpVHB0dLa5up6WlWbzOSHbH37lzZzZt2sQnn3xCx44dsbe3z1E8IiIiIoVJvr4yDdC0aVOKFSvGlClTKFeunEUNtMFgYPjw4UyZMgVXV1caN27M/v37WbduHaNHj87w5kOARo0aMX36dJYsWUKtWrX48ssv2bdvn0UfBwcHypUrx5YtW6hSpQqOjo6ZJuf/NnbsWPr06YPBYKBVq1aUKFGCc+fOsWfPHkaNGkWFChXSbePi4oKPjw+LFi3C2dkZg8HA8uXLcXZ2tlhSr0+fPmzatImePXsyePBgvL29OXnyJDdu3GDAgAHpxnVzc6Nr165ERUVRpEgRKleuzIYNGyzqxDOS2fHfSfY7derEggULSElJISQkJEfzIiIiIlLY5PtkulixYgQGBrJ582YGDhyY7v2uXbuSlJTEmjVrePfdd/Hy8iI8PJw+ffpkOma3bt04ffo0a9asISkpicaNGxMREUHXrl0t+k2bNo05c+bQt29fkpOTs72ae0e9evV47733iIyMZPz48aSlpVG2bFmaNGliLrvISEREBFOmTCEsLAxXV1d69uxJYmIia9euNfdxd3dn3bp1zJ07l5kzZ5KcnMzjjz/OoEGDMh13/PjxpKSksGjRIgwGA+3bt6dv377Mnj07y+PI6PjLlSsH3C6xufOLTUa/HIiIiIg8DOxMJlPBuANM8pUrV67w1FNPMXnyZLp06WLVGLoBUXJD58C2PDxcaDfmE1uHISKSzuaIDroBUQqOhIQETpw4wZo1ayhRooTWlhYREZGHmpJpyZWff/6Z5557jkcffZQ5c+bg5ORk65BEREREbEZlHmIzKvOQ3NA5sK1SrsVxKKpVe0Qk/0lMSuFa/M37Nr7KPERE5J45FLXXLzM2pF8mbUvzb1v5ff7z/TrTIiIiIiL5lZJpERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaRERERERKymZFhERERGxkpJpERERERErKZkWEREREbGSnoAoNmMw2Nk6hFwpaPEWRjoHtqX5ty3Nv21p/m3LlvOf3b7tTCaT6QHFIiIiIiJSqKjMQ0RERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKSqZF/r+bN2/y0ksvERQURHBwMF988UWmfdevX09QUBAtWrRg+vTppKWlWbyflJREmzZtCAkJud9hFxp5Mf87d+4kJCSEtm3b0qZNG1atWvWgwi+Q/vjjD5599llatWrFs88+y6lTp9L1SU1NZdq0abRo0YKgoCA2bNiQo/ckZ+71HCxatIg2bdrQrl07QkJC+Prrrx9g9AXfvc7/HSdPnqRWrVrMmTPnAURd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SUk3XlpamunWrVumyZMnm3r37m1uf/fdd01Vq1ZN1z8sLMzUqVMni7a///7bVLVqVdPu3bvNbVWrVjV17NjRot+3335rqlq1qikmJsaivUePHqbhw4dnesw53S6j2L777jtT1apVTb/99luuxrt69aqpZs2appkzZ2Ya1/Dhw029evWyaDt8+LCpatWqpmvXrmW6XUaefvpp0+zZs82vU1NTTQEBAabw8HCLflOnTjXVqVPHlJiYaDKZ/u/7YceOHdnuY9SoUaYmTZqYbt68meH7Gc3V3VJSUkw3b940+fr6mj7++GOTyZT98W7ZssXUoEGDbGO728SJE03t27dP1/7mm2+aGjdunKuxRAoDlXmIiOQxFxcXPvzwQ4uvmjVrcvDgQW7cuEFwcDApKSnmr4YNG/LPP/9w/vx5AK5evcqrr77K008/TfXq1alevTrR0dGcOnUqT+N86qmnLF5/++23eHh4UKdOHYv4/P39+d///pfpONZudy/jHTx4kMTExFzfXFi+fHmKFy/O2LFj2blzJ/Hx8bmOD25fEb548SLBwcEW7a1btyYhIYHffvvN3GZnZ5durjPy3Xff0bp161zVrh86dIi+ffvi5+fHf/7zH2rVqsWNGzf4448/gOyPt2rVqly7do2wsDD27t3LjRs3crxvEblNZR4iInnM3t4eHx+fdO2XL18GoE2bNhlud+7cOR599FHCw8P56aefGDp0KJUqVcLZ2Zl169axa9euPI2zTJky6eKLjY2levXq6fra29tnOo61293LeFeuXAHAw8MjV2OXKlWKt99+m6ioKF566SVMJhONGzdm8uTJPPbYYzkeJzY2FoDSpUtbtN95fXeZRKlSpXBwcMh2zCtXruTqeM6ePUu/fv2oWbMm06ZNw9PTk6JFizJo0CCSk5PN+87qeCtWrMjixYtZvnw5AwcOpEiRIgQFBTFx4kTc3d0z3G/JkiUzLIuJj4/P09VYRAoKJdMiIg/InURj2bJl6ZIwgAoVKpCUlMSePXuYMmUK3bt3N7/3/vvv52gfDg4O3Lp1y6Its6uvdnZ26eLz8vJi0aJFOdrXvW53L+O5uroCt5PazJK+zPj6+rJy5UoSExP59ttvmT17NmPGjGH9+vU5HuNO0hsXF2fRfue1NUmlq6urOUnPia+//prExEQWL15M8eLFgdu1+v+ud87ueJs1a0azZs24du0ae/bsYebMmcyYMYN58+ZluN+KFSty/vx5bty4Yd4v3K6lrlixYm4PW6TAUzItIvKA1K5dm2LFinHx4kWaNWuWYZ9r166RlpZmcSUzISGB3bt3W/QrWrQocHvVi7uXWfP29ubMmTMW7XdWX8iOv78/b7/9NsWLF6dSpUo5Pi5rt7uX8e7M5aZNmwgLC8uwT9GiRUlKSsp0P8WKFSMwMJDjx4+zbNmyXMXo7e2Np6cnW7dupWnTpub2LVu24OzsjNFozNV4cPu4t2zZwqhRo3K0dF5iYiIGg4EiRf7vR/mWLVvS3fx6R3bH6+LiQrt27di/fz8HDx7MdL8BAQEA7Nixgw4dOgBw4cIFfvjhB/PNniIPEyXTIiIPSMmSJXnxxRd57bXXOHPmDPXr1yctLY1Tp04RExPDokWLcHFxwcfHh0WLFuHs7IzBYGD58uU4OzuTkJBgHuvOFcDVq1fTsGFDnJ2dqVixIi1atCAyMpKJEycSEhLC0aNH+eijj3IUX+PGjQkICKBfv34MGDCAypUrk5CQwK+//kpSUhJjxozJ0+3uJY6SJUsydOhQ5s2bx61bt3jqqadITk7myy+/5MUXX8TLy4sKFSqwa9cudu7ciZeXF56envzyyy989NFHNG/enLJly3LhwgWio6Np2LBhrmI0GAwMHz6cKVOm4OrqSuPGjdm/fz/r1q1j9OjRVq0jPWzYMEJDQ+nZsyf9+vXD1dWVo0eP4urqSmhoaLr+DRs2JDU1lZdffpnQ0FCOHz/OqlWrKFmypLnPnj17sjzeDz74gEOHDtGkSRM8PT05deoUW7duNSfJGfH29iY0NJSZM2diMplwd3dn4cKFlC1blvbt2+f6uEUKOiXTIiIP0IABA/D09GT16tW8/fbbODo68sQTT9C6dWtzn4iICKZMmUJYWBiurq707NmTxMRE1q5da+5Tr149+vfvz5o1a3jzzTepX78+7777LlWrVmXmzJksXryYHTt20LBhQ2bNmmVRMpIZOzs7Fi5cyNKlS1m9ejXnzp2jVKlSVKtWLcvHfFu73b2ON2jQIEqVKsWaNWv44IMPKFWqFPXq1TMv2dajRw9++eUXJkyYwNWrV3nxxRdp06YNdnZ2zJs3j7i4ONzd3WnWrBmjR4/OdZxdu3YlKSmJNWvW8O677+Ll5UV4eLjVj46vWLEi77//PhEREUycOBGAypUrZxqb0Whk1qxZLFy4kB07dlCtWjUWLFjAqFGjzH3Kly+f5fEajUZ2797NrFmzuHr1Kh4eHnTp0oWRI0dmGeukSZNwcnJi9uzZJCYmUr9+fSIiIgr0w2hErGVnMv3/xUVFRERERCRXtDSeiIiIiIiVlEyLiIiIiFhJybSIiIiIiJWUTIuIiIiIWEnJtIiIiIiIlZRMi4iIiIhYScm0iIiIiIiVlEyLiIiIiFhJybSIiIiIiJX+H0Z4zQNPbvGYAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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ypV1lCfrKVfW0wddidhGbR4iIiIiIjZSMS0iIiIiYiMV0yIiIiIiNlLPtEgx51LWCUeHovOlrr5N6yhP1lOurKMbEEVsU3R+woqITRwdSup52yJyS3r6kYht1OYhIiIiImIjFdMiIiIiIjZSMV0I4uLiMBqNHDlyJF/7bdy4EaPRyJUrV247hq+//pp33nnnttcRERERuZ+pmL5PffPNN6xevbqwwxAREREp0lRMi4iIiIjYSMW0DY4ePcqAAQNo1KgRvr6+PPnkk7z33nsABAUFMXfuXIv51rRnGI1G3n77bV5++WUaNWpEgwYNmDlzJunp6dnmnjx5kn79+uHr60tISAjbtm2z2L5792769etHQEAAfn5+dO/ena+//tq8PTo6mpUrV3Lq1CmMRiNGo5GIiAjz9u+//57evXtTt25d/P39mTx5MsnJyebtSUlJTJo0icDAQHx8fGjRogWTJ0/OXxJFREREigE9Gs8GQ4YMoVq1asybNw97e3uOHz9eIH3MK1euxNfXl3nz5vH7778zf/587O3tmTBhgsW8sWPH0r17dwYMGMCaNWsYPXo0O3bswNvbG7hebD/xxBP0798fg8HAl19+ycCBA1mzZg3169enW7dunDhxgri4OBYuXAiAu7s7AD/88AN9+/alVatWREVFceHCBSIjI0lKSiIqKgqA2bNns3//fiZOnEiFChWIj4/n+++/v+3zFxERESlqVEzn0/nz5zl58iSLFy/GaDQCEBAQUCBrlylThgULFmAwGGjevDnp6eksXbqUwYMH4+rqap737LPPEhYWBkCtWrVo2rQpu3btomfPngD07t3bPDcrKwt/f39+//13PvzwQ+rXr4+3tzeenp7Y29vj6+trEUNkZCT16tXjjTfeMI95eXnRt29fjhw5Qo0aNTh06BC9evWibdu25jmdOuX/+aTlyzvne5+iSh8aISJFgb5XWUd5st79kCsV0/nk6urKAw88wLRp03jmmWfw9/enfPnyBbJ2y5YtMRj+r/OmdevWvPHGGxw9epSGDRuaxwMDA81/d3Nzw93dnTNnzpjHzpw5w/z58/n2229JSEjAZDIB4Ofnl+fxU1JSOHDgAJMnTyYjI8M8Xr9+fUqVKsXPP/9MjRo1qFmzJm+99RYGg4EmTZpQpUoVm843MTGZrCyTTfsWJR4eLiQkXC7U44uIWKMw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0dyOk9NxypUrR+3atXnppZeyrXE7TywRERERKYru+MeJBwQEsHnzZh599NFcH5MXEBDA22+/TenSpalWrZpNx3nggQcYNGgQGzZs4NixY8D1dguAY8eOUb9+fQB++uknkpOT872+t7e3ea0bV2Xj4+M5fvy4uXc4P0qWLMljjz3Gzp076dmzp3l8+/btt4zD09OTLVu20Lx5c/P45s2bcXZ2Nn/ASlxcHGvWrOGNN97A2dmZAQMG0Lp1a9q0aZPjujVq1MDBwYGdO3ea/x9kZWWxc+dOi3kBAQF88803VKxYsdg9X1xEREQkv+54Md23b18++eQTnn32WXr37o2Xlxf//PMP+/bto379+rRv356mTZsSGBhI//79GThwINWrVyc5OZlff/2VtLQ0xowZk+PaU6dOpVy5ctStWxcXFxfi4uL4888/GTduHAB16tTBy8uLV155hZEjR3Lx4kXefPPNPJ+NnRtvb29q167NggULcHJyIisri2XLlllcxc2vIUOG8PzzzzNt2jSCg4PZt28fX331VZ77GAwGhg8fztSpU3F1daVp06bs27ePtWvXMnr0aBwcHLhy5QoTJ06kbdu25t7qp556ipdeeomGDRvi7u6ebV03Nze6d+9OdHQ0JUuWpHr16qxfv56rV69azOvcuTMffPABffr0oX///jz00ENcvHiRgwcP4uHhQd++fW3Oh4iIiEhRc8eLaXd3d2JiYnjjjTeYPXs2SUlJeHp64ufnZ76Kamdnx8KFC1m6dCmrVq0iPj6ecuXKUbNmzTw/ytvX15d169YRExNDWloalStXZubMmbRq1Qq43nawcOFCpk+fzogRI6hSpQovvfSSudjOr9dff53Jkyczbtw4vLy8GDduHKtWrbJpLbh+s+GUKVNYvnw5sbGxNGrUiFdeeYUBAwbkuV/37t1JS0tj9erVvPvuu3h5eREREWEuZOfOnUtaWhpTp0417zNhwgS++eYbpk2bRnR0dI7rjh8/noyMDBYtWoTBYKBjx47069ePOXPmmOc4ODiwevVqFixYQHR0NImJibi7u1OnTh2CgoJszoWIiIhIUWRnMpmK/x1gck/SDYhys4K+AbHDmI8LZC2R+8GmyE76XmUFfU+3XnHJ1a1uQMz3JyCKiIiIiMh1KqZFRERERGx0x3umRUQKQ2paBpsiOxV2GCJFRvq1zMIO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devWNW/r1q3bXTmvO6EgcnWrfCxatIhWrVrRqlUrFi1adEfP504qiFzt2LGD0NBQ2rdvT7t27Vi5cqV5n40bN9KgQQNzHocNG3bHz6kg/fHHHzz11FO0adOGp556ihMnTmSbk5mZyfTp02nVqhXBwcGsX7/+trcVRbebq0WLFtGuXTs6dOhAaGgoX331lXlbREQEjz/+uPl9tGTJkrtxSnfE7eYpOjqagIAAcy6mT59u3pafr+d7lklE8i06Oto0adIkk8lkMv3xxx+mJk2amJKTk7PNS0pKMu3bt8+0a9cuU5cuXSy2/fXXX6ZmzZqZEhMTTZmZmab+/fubPvroo1tuK0qszZO155uenm5q3Lix6eDBgyaTyWT67rvvsuW1qCqIXOWVj71795rat29vSklJMaWkpJjat29v2rt37x07nzupIHJ14MAB05kzZ0wm0/Wv01atWpn27dtnMplMpg0bNpiGDx9+d07mDujTp48pNjbWZDKZTLGxsaY+ffpkm/PRRx+Z+vfvb8rMzDQlJiaamjVrZvr7779va1tRdLu5+vLLL01Xr141mUwm0y+//GKqX7++KSUlxWQymUwTJkwwvfvuu3fpTO6s281TVFSUac6cOTmube3X871MV6ZFbLB582aeeuopAB555BFq167Nl19+mW2ei4sLDRo0wMnJKdu2rVu30qpVK9zd3TEYDHTr1o3PPvvsltuKEmvzZO357tq1Cw8PD3x8fO547HdbQefqZp999hmdO3fG0dERR0dHOnfuXCTfU1Awuapbty5eXl7A9a/TatWqcerUqbt3EndIYmIihw8fpn379gC0b9+ew4cPc/78eYt5n332Gd26dcNgMODu7k6rVq3YsmXLbW0ragoiV82aNTN/fzcajZhMJi5evHhXz+NOK4g85cXar+d7mYppERucPn2aBx980Pz6gQce4MyZM/laIz4+nooVK5pfV6xYkfj4+FtuK0qszZO157thw4Zs7TInTpygS5cudOvWjY8++qgAo7+7CipXueXj5v0eeOCBIvmegoJ/Xx07dowDBw7QuHFj89jevXvp1KkTvXr1Yvfu3QV7AndQfHw8Xl5elChRAoASJUrg6emZ7bxzej/cyKGt24qagsjVv8XGxlK5cmW8vb3NY2+//TYdOnQgPDycY8eO3aEzubMKKk///e9/6dChA/3792f//v3m8YL4eVrYShZ2ACL3oi5dunD69Okct3377bd3OZp7193M07lz5/juu+/M/dIAtWrV4osvvsDFxYW///6bfv364eXlRZMmTQr02AXhbuSqKOUjL3f7fRUeHs60adPMV6pbtGhB27ZtcXR05PDhwwwcOJDVq1dTrVq1Aj22FB979+5lwYIFFr33o0aNwsPDA4PBQGxsLM899xw7duwwF6X3kx49ejBkyBBKlSrFN998Q3h4OJ999hlubm6FHVqBUDEtkoNbXeGsWLEip06dwt3dHbj+G7m/v3++jvHAAw9YFAynT5/mgQceuOW2e0lB5cma842NjaV58+bmtQCcnZ3Nf3/ooYdo1aoVP/744z1ZPN6NXOWVj5v3i4+PvyffU3D33leJiYn069eP5557jieffNI8/u/32H/+8x/8/Pw4ePBgkSimH3jgAc6ePUtmZiYlSpQgMzOTc+fOZft/fSM3derUASyvKtq6ragpiFwB7N+/n3HjxrF48WKqVq1qHr/xyxlA586dmT17NmfOnLG4ClsUFESePDw8zPOaNm3KAw88wNGjR2nUqFGB/DwtbGrzELFBSEgIMTExwPV/Vj906BDNmjXL1xpt2rRhx44dnD9/nqysLNavX2/+gZ7XtqLE2jxZc74bNmyga9euFmPnzp3DZDIBcPHiRb755htq1qx5h87mziqIXOWVj5CQEGJjY0lNTSU1NZXY2Ngi+Z6CgsnVhQsX6NevH7169cr21JOzZ8+a/37q1CkOHDiA0Wi8g2dUcMqXL89jjz3Gp59+CsCnn37KY489ZvELAlzP4fr168nKyuL8+fPs2LGDNm3a3Na2oqYgcnXw4EFGjRpFVFQUtWrVstjv3++jr776CoPBYFFgFxUFkad/5+KXX37h1KlTVKlSxbzf7f48LWx2phvfeUXEalevXiUiIoJffvkFg8HAuHHjaNWqFQALFizA09OTnj17kpmZyRNPPEF6ejrJycm4u7vTrVs3hg8fDsAHH3zAm2++CVz/bX3q1KnmfwLMa1tRYW2eIO/z/eGHH3jhhRfYvXu3RQ7WrFnD2rVrKVmyJJmZmXTu3JnnnnvuLp9lwSiIXN0qH9HR0cTGxgLXr5TdeB8WNQWRq7lz5/Lee++Zf6ADPPPMM3Tt2pXXX3+dnTt3mt9r/fr1o0uXLnf5LG137NgxIiIiSEpKomzZssydO5eqVasycOBARowYgY+PD5mZmcyYMYNvvvkGgIEDB5pvArN1W1F0u7nq2rUrp06dsiiSX331VYxGI3379iUxMRE7OzucnZ0ZP348vr6+hXGat+128zRhwgR+/vlnDAYDpUqVYsSIETRv3hzI++u5qFAxLSIiIiJiI7V5iIiIiIjYSMW0iIiIiIiNVEyLiIiIiNhIxbSIiIiIiI1UTIuIiIiI2EjFtIhIAYqOjsZoNGb707dv3wI9zsGDB4mOji7QNe+0q1evMmrUKPz9/TEajWzcuBGAdevWERQUxH/+8x/69OlTYMf77LPPzMe4XceOHePpp5/G19cXo9HIyZMnC2Td/IiLi8NoNHLkyJG7fuybpaenM2fOHAICAvD19WXQoEGFkhORe4E+AVFEpIC5uLiYn23877GCdPDgQRYuXFiknhW9du1adu3axdy5c/Hy8qJy5cokJCTw0ksv0atXL0JCQihXrlyBHW/Lli1cuHCB0NDQ217r1Vdf5fLlyyxZsgQnJyc8PT0LIMKi6+WXX2br1q28+OKLuLm5sXDhQvr378+mTZtwcHAo7PBE7ioV0yIiBaxEiRJF7sMZUlNTcXR0vKPHOH78OFWqVLH4xLzvv/+ezMxMunbtek9/euXx48cJCgoiICDgttYxmUykp6cX6YLzzJkzfPjhh8yaNYvOnTsDULNmTVq2bMknn3yS7RMlRYo7tXmIiNxl69evp127dtSuXZsnnniCFStWWGzfv38/Q4YMITAwEF9fXzp16sQnn3xi3r5x40ZmzpwJYG4judEeERERke1K7MmTJzEajezatcs8ZjQaefvtt3nllVdo3LgxHTp0ACAtLY1XX32V5s2bU7t2bTp27MgXX3xxy3O61X5BQUF8+OGHHD582BxzdHQ0vXr1AqBTp04WrR/WxrFu3To6dOiAj48PTZo0YcSIEVy+fJmIiAi2bt3K3r17LY4H1wv4p59+Gj8/P/z8/OjUqRObN2/O8bxu5O6vv/7inXfescg1XP8UztatW1O7dm2Cg4N55513LPaPjo7G39+f77//nq5du+Lj45PrsQB+/fVXhgwZQoMGDahXrx5hYWHmT5TLycqVK+natSv169enSZMmDBkyhD///NNizq3Od+fOnYSGhuLr60vDhg3p1q0be/fuzfWYX3/9NQDBwcHmMS8vL/z8/Pjyyy9z3U+kuNKVaRGROyAjI8PidYkSJbCzs+PNN99k/vz5PPfcczRq1Iiff/6ZBQsW4OTkRO/evQE4ffo0fn5+9OzZE3t7e3788UcmTpyIwWCgffv2tGjRgv79+7Ny5UpiYmIAcHZ2zneMb731Fg0aNODVV1/lxofhjhgxgoMHDzJ8+HAqV67M5s2bGTp0KBs2bOCxxx7Lda1b7bdw4ULeeOMN/v77b2bPng2At7c37u7uzJgxg9dee42HHnqIypUrWx3H4sWLiYqK4umnn2bcuHGkpqaye/durl69Snh4OKdPn+by5ctMmzbNfLzk5GSGDBlCy5YtGTZsGCaTiSNHjnD58uUcz8vT05OYmBief/55/P396dOnjznX69atY+bMmfTr14/AwEDi4uKYM2cO6enpDBo0yLxGamoqERERPPfcczzyyCO5togcO3aMnj17UqVKFaZPn46rqyv/+9//iI+PzzXvZ86coXfv3lSsWJHk5GQ++OADevTowbZt23Bxcbnl+f7111+MHDmSPn36MG7cONLT0/nf//7HpUuXcj3m8ePH8fb2pkyZMhbj1apVy7MIFym2TCIiUmCioqJMNWrUyPbnm2++MV2+fNnk6+trio6OttjnjTfeMDVp0sSUkZGRbb2srCzTtWvXTFOmTDH16dPHPP7uu++aatSokW3+hAkTTF26dLEY+/vvv001atQwff755+axGjVqmDp37mwx79tvvzXVqFHDFBcXZzH+9NNPm4YPH57rOVu7X06xfffdd6YaNWqYfvvtt3ytd+nSJVOdOnVMs2bNyjWu4cOHm3r37m0xdvDgQVONGjVMly9fznW/nDzxxBOmOXPmmF9nZmaaAgMDTRERERbzpk2bZvLz8zOlpqaaTKb/ez9s3779lscYNWqUqVmzZqaUlJQct+eUq3/LyMgwpaSkmHx9fU0fffSRyWS69flu3rzZ1KhRo1vG9m+TJk0ydezYMdv466+/bmratGm+1hIpDtTmISJSwFxcXPjwww8t/tSpU4f9+/dz9epVQkJCyMjIMP9p3Lgx//zzD2fOnAHg0qVLvPzyyzzxxBPUqlWLWrVqERMTw4kTJwo0zscff9zi9bfffouHhwd+fn4W8QUEBPC///0v13Vs3e921tu/fz+pqan5vrmwcuXKlC5dmrFjx7Jjxw6SkpLyHR9cvyJ87tw5QkJCLMbbtm1LcnIyv/32m3nMzs4uW65z8t1339G2bdt89a4fOHCAfv364e/vz3/+8x/q1q3L1atX+eOPP4Bbn2+NGjW4fPkyEyZM4Ouvv+bq1atWH1tErlObh4hIAStRogQ+Pj7Zxi9cuABAu3btctwvPj6eBx98kIiICH766SfCw8OpVq0azs7OrF27lp07dxZonBUqVMgWX0JCArVq1co2t0SJErmuY+t+t7PexYsXAfDw8MjX2uXKlePtt98mOjqaF154AZPJRNOmTZkyZQoPPfSQ1eskJCQAUL58eYvxG6//3SZRrlw57O3tb7nmxYsX83U+p0+fpn///tSpU4fp06fj6elJqVKlGDx4MOnp6eZj53W+VatWZfHixSxfvpxBgwZRsmRJgoODmTRpEu7u7jket2zZsjm2xSQlJRXo01hEigoV0yIid8mNQmPZsmXZijCAKlWqkJaWxu7du5k6dSo9e/Y0b3v//fetOoa9vT3Xrl2zGMvt6qudnV22+Ly8vFi0aJFVx7rd/W5nPVdXV+B6UZtb0ZcbX19f3nrrLVJTU/n222+ZM2cOY8aMYd26dVavcaPoTUxMtBi/8dqWotLV1dVcpFvjq6++IjU1lcWLF1O6dGngeq/+zf3OtzrfFi1a0KJFCy5fvszu3buZNWsWM2fOZP78+Tket2rVqpw5c4arV6+ajwvXe6mrVq2a39MWKfJUTIuI3CX16tXD0dGRc+fO0aJFixznXL58maysLIsrmcnJyXz++ecW80qVKgVcf+rFvx+z5u3tzalTpyzGbzx94VYCAgJ4++23KV26NNWqVbP6vGzd73bWu5HL2NhYJkyYkOOcUqVKkZaWlutxHB0dCQoK4ujRoyxbtixfMXp7e+Pp6cmWLVto3ry5eXzz5s04OztjNBrztR5cP+/NmzczatQoqx6dl5qaisFgoGTJ//tRvnnz5mw3v95wq/N1cXGhQ4cO7Nu3j/379+d63MDAQAC2b99Op06dADh79iw//PCD+WZPkfuJimkRkbukbNmyPP/887zyyiucOnWKhg0bkpWVxYkTJ4iLi2PRokW4uLjg4+PDokWLcHZ2xmAwsHz5cpydnUlOTjavdeMK4KpVq2jcuDHOzs5UrVqVVq1aERUVxaRJkwgNDeXw4cNs2LDBqviaNm1KYGAg/fv3Z+DAgVSvXp3k5GR+/fVX0tLSGDNmTIHudztxlC1blvDwcObPn8+1a9d4/PHHSU9P54svvuD555/Hy8uLKlWqsHPnTnbs2IGXlxeenp788ssvbNiwgZYtW1KxYkXOnj1LTEwMjRs3zleMBoOB4cOHM3XqVFxdXWnatCn79u1j7dq1jB492qbnSA8bNoywsDB69epF//79cXV15fDhw7i6uhIWFpZtfuPGjcnMzOTFF18kLCyMo0ePsnLlSsqWLWues3v37jzP94MPPuDAgQM0a9YMT09PTpw4wZYtW8xFck68vb0JCwtj1qxZmEwm3N3dWbhwIRUrVqRjx475Pm+Rok7FtIjIXTRw4EA8PT1ZtWoVb7/9Ng4ODjzyyCO0bdvWPCcyMpKpU6cyYcIEXF1d6dWrF6mpqaxZs8Y8p0GDBgwYMIDVq1fz+uuv07BhQ959911q1KjBrFmzWLx4Mdu3b6dx48bMnj3bomUkN3Z2dixcuJClS5eyatUq4uPjKVeuHDVr1szzY75t3e921xs8eDDlypVj9erVfPDBB5QrV44GDRqYH9n29NNP88svvzBx4kQuXbrE888/T7t27bCzs2P+/PkkJibi7u5OixYtGD16dL7j7N69O2lpaaxevZp3330XLy8vIiIibP7o+KpVq/L+++8TGRnJpEmTAKhevXqusRmNRmbPns3ChQvZvn07NWvWZMGCBYwaNco8p3Llynmer9Fo5PPPP2f27NlcunQJDw8PunXrxsiRI/OMdfLkyTg5OTFnzhxSU1Np2LAhkZGRRfrDaERsZWcy/f+Hi4qIiIiISL7o0XgiIiIiIjZSMS0iIiIiYiMV0yIiIiIiNlIxLSIiIiJiIxXTIiIiIiI2UjEtIiIiImIjFdMiIiIiIjZSMS0iIiIiYiMV0yIiIiIiNvp/h7gc4XCds00AAAAASUVORK5CYII=\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import shap\n", + "from alibi.explainers import KernelShap\n", + "\n", + "predict_fn = lambda x: model.predict(scaler.transform(x))\n", + "\n", + "explainer = KernelShap(predict_fn, task='classification')\n", + "\n", + "explainer.fit(X_train[0:100])\n", + "\n", + "result_x = explainer.explain(x)\n", + "result_cem_cf = explainer.explain(cem_cf)\n", + "\n", + "plot_importance(result_x.shap_values[0], features, 0)\n", + "plot_importance(result_cem_cf.shap_values[0], features, 0)" + ] + }, + { + "cell_type": "markdown", + "id": "07f58f8b-944a-4a5d-8d74-fc2fce4b0f6d", + "metadata": {}, + "source": [ + "### Counterfactual With Prototypes" + ] + }, + { + "cell_type": "markdown", + "id": "8777b84e-7bc6-47ca-be2b-10943084103f", + "metadata": {}, + "source": [ + "Like the previous two methods counterfactuals with prototypes defines a loss that guides the counterfactual towards the target class while also using a autoencoder to ensure it stays within the data distribution. As well as this it uses prototype instances of the target class to ensure that the generated counterfactual is a interpretable as a member of the target class." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "d7a63b6f-58a1-4fc0-9aa6-528507158eb0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Instance class prediction: 0\n", + "Counterfactual class prediction: 1\n" + ] + } + ], + "source": [ + "from alibi.explainers import CounterfactualProto\n", + "\n", + "explainer = CounterfactualProto(\n", + " model, # The model to explain\n", + " shape=(1,) + X_train.shape[1:], # shape of the model input\n", + " ae_model=ae, # The autoencoder\n", + " enc_model=ae.encoder # The encoder\n", + ")\n", + "\n", + "explainer.fit(scaler.transform(X_train)) # Fit the explainer with scaled data\n", + "\n", + "result_proto = explainer.explain(scaler.transform(x), verbose=False)\n", + "\n", + "proto_cf = result_proto.data['cf']['X']\n", + "print(\"Instance class prediction:\", model.predict(scaler.transform(x))[0].argmax())\n", + "print(\"Counterfactual class prediction:\", model.predict(proto_cf)[0].argmax())\n" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "3e6116d6-b739-436c-8179-1cbaddf218c0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fixed acidity instance: 9.2 counter factual: 9.2 difference: 2e-07\n", + "volatile acidity instance: 0.36 counter factual: 0.36 difference: -0.0 \n", + "citric acid instance: 0.34 counter factual: 0.34 difference: -0.0 \n", + "residual sugar instance: 1.6 counter factual: 1.6 difference: 1e-07\n", + "chlorides instance: 0.062 counter factual: 0.062 difference: 0.0 \n", + "free sulfur dioxide instance: 5.0 counter factual: 5.0 difference: 0.0 \n", + "total sulfur dioxide instance: 12.0 counter factual: 12.0 difference: 1.9e-06\n", + "density instance: 0.997 counter factual: 0.997 difference: -0.0 \n", + "pH instance: 3.2 counter factual: 3.2 difference: -0.0 \n", + "sulphates instance: 0.67 counter factual: 0.623 difference: 0.0470144\n", + "alcohol instance: 10.5 counter factual: 9.942 difference: 0.558073\n" + ] + } + ], + "source": [ + "proto_cf = scaler.inverse_transform(proto_cf)\n", + "compare_instances(x, proto_cf)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "1d1e5206-cca6-4897-a486-8a4bf070e93f", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "60d193882ceb40f988c5ef634202c491", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/1 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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ypV1lCfrKVfW0wddidhGbR4iIiIiIjZSMS0iIiIiYiMV0yIiIiIiNlLPtEgx51LWCUeHovOlrr5N6yhP1lOurKMbEEVsU3R+woqITRwdSup52yJyS3r6kYht1OYhIiIiImIjFdMiIiIiIjZSMV0I4uLiMBqNHDlyJF/7bdy4EaPRyJUrV247hq+//pp33nnnttcRERERuZ+pmL5PffPNN6xevbqwwxAREREp0lRMi4iIiIjYSMW0DY4ePcqAAQNo1KgRvr6+PPnkk7z33nsABAUFMXfuXIv51rRnGI1G3n77bV5++WUaNWpEgwYNmDlzJunp6dnmnjx5kn79+uHr60tISAjbtm2z2L5792769etHQEAAfn5+dO/ena+//tq8PTo6mpUrV3Lq1CmMRiNGo5GIiAjz9u+//57evXtTt25d/P39mTx5MsnJyebtSUlJTJo0icDAQHx8fGjRogWTJ0/OXxJFREREigE9Gs8GQ4YMoVq1asybNw97e3uOHz9eIH3MK1euxNfXl3nz5vH7778zf/587O3tmTBhgsW8sWPH0r17dwYMGMCaNWsYPXo0O3bswNvbG7hebD/xxBP0798fg8HAl19+ycCBA1mzZg3169enW7dunDhxgri4OBYuXAiAu7s7AD/88AN9+/alVatWREVFceHCBSIjI0lKSiIqKgqA2bNns3//fiZOnEiFChWIj4/n+++/v+3zFxERESlqVEzn0/nz5zl58iSLFy/GaDQCEBAQUCBrlylThgULFmAwGGjevDnp6eksXbqUwYMH4+rqap737LPPEhYWBkCtWrVo2rQpu3btomfPngD07t3bPDcrKwt/f39+//13PvzwQ+rXr4+3tzeenp7Y29vj6+trEUNkZCT16tXjjTfeMI95eXnRt29fjhw5Qo0aNTh06BC9evWibdu25jmdOuX/+aTlyzvne5+iSh8aISJFgb5XWUd5st79kCsV0/nk6urKAw88wLRp03jmmWfw9/enfPnyBbJ2y5YtMRj+r/OmdevWvPHGGxw9epSGDRuaxwMDA81/d3Nzw93dnTNnzpjHzpw5w/z58/n2229JSEjAZDIB4Ofnl+fxU1JSOHDgAJMnTyYjI8M8Xr9+fUqVKsXPP/9MjRo1qFmzJm+99RYGg4EmTZpQpUoVm843MTGZrCyTTfsWJR4eLiQkXC7U44uIWKMw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0dyOk9NxypUrR+3atXnppZeyrXE7TywRERERKYru+MeJBwQEsHnzZh599NFcH5MXEBDA22+/TenSpalWrZpNx3nggQcYNGgQGzZs4NixY8D1dguAY8eOUb9+fQB++uknkpOT872+t7e3ea0bV2Xj4+M5fvy4uXc4P0qWLMljjz3Gzp076dmzp3l8+/btt4zD09OTLVu20Lx5c/P45s2bcXZ2Nn/ASlxcHGvWrOGNN97A2dmZAQMG0Lp1a9q0aZPjujVq1MDBwYGdO3ea/x9kZWWxc+dOi3kBAQF88803VKxYsdg9X1xEREQkv+54Md23b18++eQTnn32WXr37o2Xlxf//PMP+/bto379+rRv356mTZsSGBhI//79GThwINWrVyc5OZlff/2VtLQ0xowZk+PaU6dOpVy5ctStWxcXFxfi4uL4888/GTduHAB16tTBy8uLV155hZEjR3Lx4kXefPPNPJ+NnRtvb29q167NggULcHJyIisri2XLlllcxc2vIUOG8PzzzzNt2jSCg4PZt28fX331VZ77GAwGhg8fztSpU3F1daVp06bs27ePtWvXMnr0aBwcHLhy5QoTJ06kbdu25t7qp556ipdeeomGDRvi7u6ebV03Nze6d+9OdHQ0JUuWpHr16qxfv56rV69azOvcuTMffPABffr0oX///jz00ENcvHiRgwcP4uHhQd++fW3Oh4iIiEhRc8eLaXd3d2JiYnjjjTeYPXs2SUlJeHp64ufnZ76Kamdnx8KFC1m6dCmrVq0iPj6ecuXKUbNmzTw/ytvX15d169YRExNDWloalStXZubMmbRq1Qq43nawcOFCpk+fzogRI6hSpQovvfSSudjOr9dff53Jkyczbtw4vLy8GDduHKtWrbJpLbh+s+GUKVNYvnw5sbGxNGrUiFdeeYUBAwbkuV/37t1JS0tj9erVvPvuu3h5eREREWEuZOfOnUtaWhpTp0417zNhwgS++eYbpk2bRnR0dI7rjh8/noyMDBYtWoTBYKBjx47069ePOXPmmOc4ODiwevVqFixYQHR0NImJibi7u1OnTh2CgoJszoWIiIhIUWRnMpmK/x1gck/SDYhys4K+AbHDmI8LZC2R+8GmyE76XmUFfU+3XnHJ1a1uQMz3JyCKiIiIiMh1KqZFRERERGx0x3umRUQKQ2paBpsiOxV2GCJFRvq1zMIO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devWNW/r1q3bXTmvO6EgcnWrfCxatIhWrVrRqlUrFi1adEfP504qiFzt2LGD0NBQ2rdvT7t27Vi5cqV5n40bN9KgQQNzHocNG3bHz6kg/fHHHzz11FO0adOGp556ihMnTmSbk5mZyfTp02nVqhXBwcGsX7/+trcVRbebq0WLFtGuXTs6dOhAaGgoX331lXlbREQEjz/+uPl9tGTJkrtxSnfE7eYpOjqagIAAcy6mT59u3pafr+d7lklE8i06Oto0adIkk8lkMv3xxx+mJk2amJKTk7PNS0pKMu3bt8+0a9cuU5cuXSy2/fXXX6ZmzZqZEhMTTZmZmab+/fubPvroo1tuK0qszZO155uenm5q3Lix6eDBgyaTyWT67rvvsuW1qCqIXOWVj71795rat29vSklJMaWkpJjat29v2rt37x07nzupIHJ14MAB05kzZ0wm0/Wv01atWpn27dtnMplMpg0bNpiGDx9+d07mDujTp48pNjbWZDKZTLGxsaY+ffpkm/PRRx+Z+vfvb8rMzDQlJiaamjVrZvr7779va1tRdLu5+vLLL01Xr141mUwm0y+//GKqX7++KSUlxWQymUwTJkwwvfvuu3fpTO6s281TVFSUac6cOTmube3X871MV6ZFbLB582aeeuopAB555BFq167Nl19+mW2ei4sLDRo0wMnJKdu2rVu30qpVK9zd3TEYDHTr1o3PPvvsltuKEmvzZO357tq1Cw8PD3x8fO547HdbQefqZp999hmdO3fG0dERR0dHOnfuXCTfU1Awuapbty5eXl7A9a/TatWqcerUqbt3EndIYmIihw8fpn379gC0b9+ew4cPc/78eYt5n332Gd26dcNgMODu7k6rVq3YsmXLbW0ragoiV82aNTN/fzcajZhMJi5evHhXz+NOK4g85cXar+d7mYppERucPn2aBx980Pz6gQce4MyZM/laIz4+nooVK5pfV6xYkfj4+FtuK0qszZO157thw4Zs7TInTpygS5cudOvWjY8++qgAo7+7CipXueXj5v0eeOCBIvmegoJ/Xx07dowDBw7QuHFj89jevXvp1KkTvXr1Yvfu3QV7AndQfHw8Xl5elChRAoASJUrg6emZ7bxzej/cyKGt24qagsjVv8XGxlK5cmW8vb3NY2+//TYdOnQgPDycY8eO3aEzubMKKk///e9/6dChA/3792f//v3m8YL4eVrYShZ2ACL3oi5dunD69Okct3377bd3OZp7193M07lz5/juu+/M/dIAtWrV4osvvsDFxYW///6bfv364eXlRZMmTQr02AXhbuSqKOUjL3f7fRUeHs60adPMV6pbtGhB27ZtcXR05PDhwwwcOJDVq1dTrVq1Aj22FB979+5lwYIFFr33o0aNwsPDA4PBQGxsLM899xw7duwwF6X3kx49ejBkyBBKlSrFN998Q3h4OJ999hlubm6FHVqBUDEtkoNbXeGsWLEip06dwt3dHbj+G7m/v3++jvHAAw9YFAynT5/mgQceuOW2e0lB5cma842NjaV58+bmtQCcnZ3Nf3/ooYdo1aoVP/744z1ZPN6NXOWVj5v3i4+PvyffU3D33leJiYn069eP5557jieffNI8/u/32H/+8x/8/Pw4ePBgkSimH3jgAc6ePUtmZiYlSpQgMzOTc+fOZft/fSM3derUASyvKtq6ragpiFwB7N+/n3HjxrF48WKqVq1qHr/xyxlA586dmT17NmfOnLG4ClsUFESePDw8zPOaNm3KAw88wNGjR2nUqFGB/DwtbGrzELFBSEgIMTExwPV/Vj906BDNmjXL1xpt2rRhx44dnD9/nqysLNavX2/+gZ7XtqLE2jxZc74bNmyga9euFmPnzp3DZDIBcPHiRb755htq1qx5h87mziqIXOWVj5CQEGJjY0lNTSU1NZXY2Ngi+Z6CgsnVhQsX6NevH7169cr21JOzZ8+a/37q1CkOHDiA0Wi8g2dUcMqXL89jjz3Gp59+CsCnn37KY489ZvELAlzP4fr168nKyuL8+fPs2LGDNm3a3Na2oqYgcnXw4EFGjRpFVFQUtWrVstjv3++jr776CoPBYFFgFxUFkad/5+KXX37h1KlTVKlSxbzf7f48LWx2phvfeUXEalevXiUiIoJffvkFg8HAuHHjaNWqFQALFizA09OTnj17kpmZyRNPPEF6ejrJycm4u7vTrVs3hg8fDsAHH3zAm2++CVz/bX3q1KnmfwLMa1tRYW2eIO/z/eGHH3jhhRfYvXu3RQ7WrFnD2rVrKVmyJJmZmXTu3JnnnnvuLp9lwSiIXN0qH9HR0cTGxgLXr5TdeB8WNQWRq7lz5/Lee++Zf6ADPPPMM3Tt2pXXX3+dnTt3mt9r/fr1o0uXLnf5LG137NgxIiIiSEpKomzZssydO5eqVasycOBARowYgY+PD5mZmcyYMYNvvvkGgIEDB5pvArN1W1F0u7nq2rUrp06dsiiSX331VYxGI3379iUxMRE7OzucnZ0ZP348vr6+hXGat+128zRhwgR+/vlnDAYDpUqVYsSIETRv3hzI++u5qFAxLSIiIiJiI7V5iIiIiIjYSMW0iIiIiIiNVEyLiIiIiNhIxbSIiIiIiI1UTIuIiIiI2EjFtIhIAYqOjsZoNGb707dv3wI9zsGDB4mOji7QNe+0q1evMmrUKPz9/TEajWzcuBGAdevWERQUxH/+8x/69OlTYMf77LPPzMe4XceOHePpp5/G19cXo9HIyZMnC2Td/IiLi8NoNHLkyJG7fuybpaenM2fOHAICAvD19WXQoEGFkhORe4E+AVFEpIC5uLiYn23877GCdPDgQRYuXFiknhW9du1adu3axdy5c/Hy8qJy5cokJCTw0ksv0atXL0JCQihXrlyBHW/Lli1cuHCB0NDQ217r1Vdf5fLlyyxZsgQnJyc8PT0LIMKi6+WXX2br1q28+OKLuLm5sXDhQvr378+mTZtwcHAo7PBE7ioV0yIiBaxEiRJF7sMZUlNTcXR0vKPHOH78OFWqVLH4xLzvv/+ezMxMunbtek9/euXx48cJCgoiICDgttYxmUykp6cX6YLzzJkzfPjhh8yaNYvOnTsDULNmTVq2bMknn3yS7RMlRYo7tXmIiNxl69evp127dtSuXZsnnniCFStWWGzfv38/Q4YMITAwEF9fXzp16sQnn3xi3r5x40ZmzpwJYG4judEeERERke1K7MmTJzEajezatcs8ZjQaefvtt3nllVdo3LgxHTp0ACAtLY1XX32V5s2bU7t2bTp27MgXX3xxy3O61X5BQUF8+OGHHD582BxzdHQ0vXr1AqBTp04WrR/WxrFu3To6dOiAj48PTZo0YcSIEVy+fJmIiAi2bt3K3r17LY4H1wv4p59+Gj8/P/z8/OjUqRObN2/O8bxu5O6vv/7inXfescg1XP8UztatW1O7dm2Cg4N55513LPaPjo7G39+f77//nq5du+Lj45PrsQB+/fVXhgwZQoMGDahXrx5hYWHmT5TLycqVK+natSv169enSZMmDBkyhD///NNizq3Od+fOnYSGhuLr60vDhg3p1q0be/fuzfWYX3/9NQDBwcHmMS8vL/z8/Pjyyy9z3U+kuNKVaRGROyAjI8PidYkSJbCzs+PNN99k/vz5PPfcczRq1Iiff/6ZBQsW4OTkRO/evQE4ffo0fn5+9OzZE3t7e3788UcmTpyIwWCgffv2tGjRgv79+7Ny5UpiYmIAcHZ2zneMb731Fg0aNODVV1/lxofhjhgxgoMHDzJ8+HAqV67M5s2bGTp0KBs2bOCxxx7Lda1b7bdw4ULeeOMN/v77b2bPng2At7c37u7uzJgxg9dee42HHnqIypUrWx3H4sWLiYqK4umnn2bcuHGkpqaye/durl69Snh4OKdPn+by5ctMmzbNfLzk5GSGDBlCy5YtGTZsGCaTiSNHjnD58uUcz8vT05OYmBief/55/P396dOnjznX69atY+bMmfTr14/AwEDi4uKYM2cO6enpDBo0yLxGamoqERERPPfcczzyyCO5togcO3aMnj17UqVKFaZPn46rqyv/+9//iI+PzzXvZ86coXfv3lSsWJHk5GQ++OADevTowbZt23Bxcbnl+f7111+MHDmSPn36MG7cONLT0/nf//7HpUuXcj3m8ePH8fb2pkyZMhbj1apVy7MIFym2TCIiUmCioqJMNWrUyPbnm2++MV2+fNnk6+trio6OttjnjTfeMDVp0sSUkZGRbb2srCzTtWvXTFOmTDH16dPHPP7uu++aatSokW3+hAkTTF26dLEY+/vvv001atQwff755+axGjVqmDp37mwx79tvvzXVqFHDFBcXZzH+9NNPm4YPH57rOVu7X06xfffdd6YaNWqYfvvtt3ytd+nSJVOdOnVMs2bNyjWu4cOHm3r37m0xdvDgQVONGjVMly9fznW/nDzxxBOmOXPmmF9nZmaaAgMDTRERERbzpk2bZvLz8zOlpqaaTKb/ez9s3779lscYNWqUqVmzZqaUlJQct+eUq3/LyMgwpaSkmHx9fU0fffSRyWS69flu3rzZ1KhRo1vG9m+TJk0ydezYMdv466+/bmratGm+1hIpDtTmISJSwFxcXPjwww8t/tSpU4f9+/dz9epVQkJCyMjIMP9p3Lgx//zzD2fOnAHg0qVLvPzyyzzxxBPUqlWLWrVqERMTw4kTJwo0zscff9zi9bfffouHhwd+fn4W8QUEBPC///0v13Vs3e921tu/fz+pqan5vrmwcuXKlC5dmrFjx7Jjxw6SkpLyHR9cvyJ87tw5QkJCLMbbtm1LcnIyv/32m3nMzs4uW65z8t1339G2bdt89a4fOHCAfv364e/vz3/+8x/q1q3L1atX+eOPP4Bbn2+NGjW4fPkyEyZM4Ouvv+bq1atWH1tErlObh4hIAStRogQ+Pj7Zxi9cuABAu3btctwvPj6eBx98kIiICH766SfCw8OpVq0azs7OrF27lp07dxZonBUqVMgWX0JCArVq1co2t0SJErmuY+t+t7PexYsXAfDw8MjX2uXKlePtt98mOjqaF154AZPJRNOmTZkyZQoPPfSQ1eskJCQAUL58eYvxG6//3SZRrlw57O3tb7nmxYsX83U+p0+fpn///tSpU4fp06fj6elJqVKlGDx4MOnp6eZj53W+VatWZfHixSxfvpxBgwZRsmRJgoODmTRpEu7u7jket2zZsjm2xSQlJRXo01hEigoV0yIid8mNQmPZsmXZijCAKlWqkJaWxu7du5k6dSo9e/Y0b3v//fetOoa9vT3Xrl2zGMvt6qudnV22+Ly8vFi0aJFVx7rd/W5nPVdXV+B6UZtb0ZcbX19f3nrrLVJTU/n222+ZM2cOY8aMYd26dVavcaPoTUxMtBi/8dqWotLV1dVcpFvjq6++IjU1lcWLF1O6dGngeq/+zf3OtzrfFi1a0KJFCy5fvszu3buZNWsWM2fOZP78+Tket2rVqpw5c4arV6+ajwvXe6mrVq2a39MWKfJUTIuI3CX16tXD0dGRc+fO0aJFixznXL58maysLIsrmcnJyXz++ecW80qVKgVcf+rFvx+z5u3tzalTpyzGbzx94VYCAgJ4++23KV26NNWqVbP6vGzd73bWu5HL2NhYJkyYkOOcUqVKkZaWlutxHB0dCQoK4ujRoyxbtixfMXp7e+Pp6cmWLVto3ry5eXzz5s04OztjNBrztR5cP+/NmzczatQoqx6dl5qaisFgoGTJ//tRvnnz5mw3v95wq/N1cXGhQ4cO7Nu3j/379+d63MDAQAC2b99Op06dADh79iw//PCD+WZPkfuJimkRkbukbNmyPP/887zyyiucOnWKhg0bkpWVxYkTJ4iLi2PRokW4uLjg4+PDokWLcHZ2xmAwsHz5cpydnUlOTjavdeMK4KpVq2jcuDHOzs5UrVqVVq1aERUVxaRJkwgNDeXw4cNs2LDBqviaNm1KYGAg/fv3Z+DAgVSvXp3k5GR+/fVX0tLSGDNmTIHudztxlC1blvDwcObPn8+1a9d4/PHHSU9P54svvuD555/Hy8uLKlWqsHPnTnbs2IGXlxeenp788ssvbNiwgZYtW1KxYkXOnj1LTEwMjRs3zleMBoOB4cOHM3XqVFxdXWnatCn79u1j7dq1jB492qbnSA8bNoywsDB69epF//79cXV15fDhw7i6uhIWFpZtfuPGjcnMzOTFF18kLCyMo0ePsnLlSsqWLWues3v37jzP94MPPuDAgQM0a9YMT09PTpw4wZYtW8xFck68vb0JCwtj1qxZmEwm3N3dWbhwIRUrVqRjx475Pm+Rok7FtIjIXTRw4EA8PT1ZtWoVb7/9Ng4ODjzyyCO0bdvWPCcyMpKpU6cyYcIEXF1d6dWrF6mpqaxZs8Y8p0GDBgwYMIDVq1fz+uuv07BhQ959911q1KjBrFmzWLx4Mdu3b6dx48bMnj3bomUkN3Z2dixcuJClS5eyatUq4uPjKVeuHDVr1szzY75t3e921xs8eDDlypVj9erVfPDBB5QrV44GDRqYH9n29NNP88svvzBx4kQuXbrE888/T7t27bCzs2P+/PkkJibi7u5OixYtGD16dL7j7N69O2lpaaxevZp3330XLy8vIiIibP7o+KpVq/L+++8TGRnJpEmTAKhevXqusRmNRmbPns3ChQvZvn07NWvWZMGCBYwaNco8p3Llynmer9Fo5PPPP2f27NlcunQJDw8PunXrxsiRI/OMdfLkyTg5OTFnzhxSU1Np2LAhkZGRRfrDaERsZWcy/f+Hi4qIiIiISL7o0XgiIiIiIjZSMS0iIiIiYiMV0yIiIiIiNlIxLSIiIiJiIxXTIiIiIiI2UjEtIiIiImIjFdMiIiIiIjZSMS0iIiIiYiMV0yIiIiIiNvp/h7gc4XCds00AAAAASUVORK5CYII=\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import shap\n", + "from alibi.explainers import KernelShap\n", + "\n", + "predict_fn = lambda x: model.predict(scaler.transform(x))\n", + "\n", + "explainer = KernelShap(predict_fn, task='classification')\n", + "\n", + "explainer.fit(X_train[0:100])\n", + "\n", + "result_x = explainer.explain(x)\n", + "result_proto_cf = explainer.explain(cem_cf)\n", + "\n", + "plot_importance(result_x.shap_values[0], features, 0)\n", + "print(result_x.shap_values[0].sum())\n", + "plot_importance(result_proto_cf.shap_values[0], features, 0)\n", + "print(result_proto_cf.shap_values[0].sum())" + ] + }, + { + "cell_type": "markdown", + "id": "80f4ccc1-d2ef-4623-a8b8-dae2518c3d26", + "metadata": {}, + "source": [ + "Looking at the ALE plots below, we can see how the counterfactual methods change the features to flip the prediction. Note that the ALE plots potentially miss details local to individual instances as they are global insights." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "20c990ef-808f-4502-9806-6d03c6635a18", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[,\n", + " ,\n", + " ],\n", + " [,\n", + " ,\n", + " ]],\n", + " dtype=object)" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_ale(exp, features=['sulphates', 'alcohol', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide'], line_kw={'label': 'Probability of \"good\" class'})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4e929a28-8f20-4d2a-84a8-30ef5bae9e4e", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/doc/source/examples/overview.nblink b/doc/source/examples/overview.nblink deleted file mode 100644 index a7a48d14d..000000000 --- a/doc/source/examples/overview.nblink +++ /dev/null @@ -1,3 +0,0 @@ -{ - "path": "../../../examples/overview.ipynb" -} diff --git a/examples/overview.ipynb b/examples/overview.ipynb deleted file mode 100644 index 7fa1bf126..000000000 --- a/examples/overview.ipynb +++ /dev/null @@ -1,1657 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "9a4f4dbf-a083-46e9-8891-55ef9123cf4a", - "metadata": {}, - "source": [ - "# Alibi Overview Example\n", - "\n", - "This notebook aims to demonstrate each of the explainers Alibi provides on the same model and dataset. Unfortunately, this isn't possible as white-box neural network methods exclude tree-based white-box methods. Hence we will train both a neural network(TensorFlow) and a random forest model on the same dataset and apply the full range of explainers to see what insights we can obtain." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "b42fe771-fbcd-45e0-a613-6d93a0d7e80d", - "metadata": {}, - "outputs": [], - "source": [ - "import requests\n", - "from io import BytesIO, StringIO\n", - "from io import BytesIO\n", - "from zipfile import ZipFile\n", - "\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "%matplotlib inline\n", - "import seaborn as sns\n", - "sns.set(rc={'figure.figsize':(11.7,8.27)})\n", - "\n", - "import numpy as np\n", - "import pandas as pd\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.metrics import accuracy_score, f1_score\n", - "from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay\n", - "from sklearn.preprocessing import StandardScaler\n", - "from sklearn.model_selection import train_test_split\n", - "import joblib\n", - "import os.path\n", - "\n", - "import tensorflow as tf\n", - "np.random.seed(0)\n", - "tf.random.set_seed(0)\n", - "\n", - "FROM_SCRATCH = False\n", - "TF_MODEL_FNAME = 'tf-clf-wine'\n", - "RFC_FNAME = 'rfc-wine'\n", - "ENC_FNAME = 'wine_encoder'\n", - "DEC_FNAME = 'wine_decoder'\n" - ] - }, - { - "cell_type": "markdown", - "id": "7b561fff-7745-4219-bb84-1787cb7a3501", - "metadata": {}, - "source": [ - "## Preparing the data.\n", - "\n", - "We're using the [wine-quality](https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/) dataset, a numeric tabular dataset containing features that refer to the chemical composition of wines and quality ratings. To make this a simple classification task, we bucket all wines with ratings greater than five as good, and the rest we label bad. We also normalize all the features." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "07175f7a-df18-435c-8508-2c37b0242322", - "metadata": {}, - "outputs": [], - "source": [ - "def fetch_wine_ds():\n", - " url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv'\n", - "\n", - " try:\n", - " resp = requests.get(url, timeout=2)\n", - " resp.raise_for_status()\n", - " except requests.RequestException:\n", - " logger.exception(\"Could not connect, URL may be out of service\")\n", - " raise\n", - " string_io = StringIO(resp.content.decode('utf-8'))\n", - " return pd.read_csv(string_io, sep=';')" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "e4927000-30b8-4fe4-84eb-a5d778fa072a", - "metadata": {}, - "outputs": [], - "source": [ - "df = fetch_wine_ds()" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "ae34b435-ed6c-4380-ba8b-1005cf7868ce", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "StandardScaler()" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df['class'] = 'bad'\n", - "df.loc[(df['quality'] > 5), 'class'] = 'good'\n", - "\n", - "features = [\n", - " 'fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar',\n", - " 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density',\n", - " 'pH', 'sulphates', 'alcohol'\n", - "]\n", - "\n", - "df['good'] = 0\n", - "df['bad'] = 0\n", - "df.loc[df['class'] == 'good', 'good'] = 1\n", - "df.loc[df['class'] == 'bad', 'bad'] = 1\n", - "\n", - "data = df[features].to_numpy()\n", - "labels = df[['class','good', 'bad']].to_numpy()\n", - "\n", - "X_train, X_test, y_train, y_test = train_test_split(data, labels, random_state=0)\n", - "X_train, X_test = X_train.astype('float32'), X_test.astype('float32')\n", - "y_train_lab, y_test_lab = y_train[:, 0], y_test[:, 0]\n", - "y_train, y_test = y_train[:, 1:].astype('float32'), y_test[:, 1:].astype('float32')\n", - "\n", - "scaler = StandardScaler()\n", - "scaler.fit(X_train)" - ] - }, - { - "cell_type": "markdown", - "id": "f7a294d4-82f2-4729-ad66-872fd2925f4c", - "metadata": { - "tags": [] - }, - "source": [ - "### Select Instance of good wine \n", - "\n", - "We partition the dataset into good and bad portions and select an instance of interest. I've chosen it to be a good quality wine. \n", - "\n", - "**Note** that bad wines are class 1 and correpsond to the second model output being high, whereas good wines are class 0 and correspond to the first model output being high." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "926bbabd-946b-4ef3-9aec-6e27df923504", - "metadata": {}, - "outputs": [], - "source": [ - "bad_wines = np.array([a for a, b in zip(X_train, y_train) if b[1] == 1])\n", - "good_wines = np.array([a for a, b in zip(X_train, y_train) if b[1] == 0])\n", - "x = np.array([[9.2, 0.36, 0.34, 1.6, 0.062, 5., 12., 0.99667, 3.2, 0.67, 10.5]]) # prechosen instance\n" - ] - }, - { - "cell_type": "markdown", - "id": "bfd1a33a-5a4e-4c6c-a3c8-56776d656fc5", - "metadata": {}, - "source": [ - "## Training models" - ] - }, - { - "cell_type": "markdown", - "id": "3a3ff7b6-50c7-4e8c-9436-188cefba608d", - "metadata": {}, - "source": [ - "### Creating an Autoencoder\n", - "\n", - "For some of the explainers, we need an autoencoder to check whether example instances are close to the training data distribution or not." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "af5d71d3-729a-4fee-9f5a-b60bbe8dadc0", - "metadata": {}, - "outputs": [], - "source": [ - "from tensorflow.keras.layers import Dense, Dropout\n", - "from tensorflow.keras.models import Sequential, Model\n", - "from tensorflow.keras import metrics, Input\n", - "from tensorflow import keras\n", - "\n", - "\n", - "ENCODING_DIM = 7\n", - "BATCH_SIZE = 64\n", - "EPOCHS = 100\n", - "\n", - "\n", - "class AE(keras.Model):\n", - " def __init__(self, encoder: keras.Model, decoder: keras.Model, **kwargs) -> None:\n", - " super().__init__(**kwargs)\n", - " self.encoder = encoder\n", - " self.decoder = decoder\n", - "\n", - " def call(self, x: tf.Tensor, **kwargs):\n", - " z = self.encoder(x)\n", - " x_hat = self.decoder(z)\n", - " return x_hat\n", - " \n", - "def make_ae():\n", - " len_input_output = X_train.shape[-1]\n", - "\n", - " encoder = keras.Sequential()\n", - " encoder.add(Dense(units=ENCODING_DIM*2, activation=\"relu\", input_shape=(len_input_output, )))\n", - " encoder.add(Dense(units=ENCODING_DIM, activation=\"relu\"))\n", - "\n", - " decoder = keras.Sequential()\n", - " decoder.add(Dense(units=ENCODING_DIM*2, activation=\"relu\", input_shape=(ENCODING_DIM, )))\n", - " decoder.add(Dense(units=len_input_output, activation=\"linear\"))\n", - "\n", - " ae = AE(encoder=encoder, decoder=decoder)\n", - "\n", - " ae.compile(optimizer='adam', loss='mean_squared_error')\n", - " history = ae.fit(\n", - " scaler.transform(X_train), \n", - " scaler.transform(X_train), \n", - " batch_size=BATCH_SIZE, \n", - " epochs=EPOCHS, \n", - " verbose=False,)\n", - "\n", - " loss = history.history['loss']\n", - " plt.plot(loss)\n", - " plt.xlabel('Epoch')\n", - " plt.ylabel('MSE-Loss')\n", - "\n", - " ae.encoder.save(f'{ENC_FNAME}.h5')\n", - " ae.decoder.save(f'{DEC_FNAME}.h5')\n", - " return ae\n", - "\n", - "def load_ae_model():\n", - " encoder = load_model(f'{ENC_FNAME}.h5')\n", - " decoder = load_model(f'{DEC_FNAME}.h5')\n", - " return AE(encoder=encoder, decoder=decoder)" - ] - }, - { - "cell_type": "markdown", - "id": "91035836-4c13-489b-a865-bed0817aaeb0", - "metadata": {}, - "source": [ - "### Random Forest Model" - ] - }, - { - "cell_type": "markdown", - "id": "1371f3be-fafd-45c6-978b-d2c65924d21e", - "metadata": {}, - "source": [ - "In order to get results for the tree shap explainer we need a tree based model. Hence we train a random forest on the wine-quality dataset." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "07246f62-3040-475e-843e-b0366c3d94fa", - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.pipeline import Pipeline\n", - "from sklearn.preprocessing import StandardScaler\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.ensemble import RandomForestClassifier\n", - "from sklearn.metrics import accuracy_score, f1_score\n", - "from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay\n", - "\n", - "def make_rfc():\n", - " rfc = RandomForestClassifier(n_estimators=50)\n", - " rfc.fit(scaler.transform(X_train), y_train_lab)\n", - " y_pred = rfc.predict(scaler.transform(X_test))\n", - "\n", - " print('accuracy_score:', accuracy_score(y_pred, y_test_lab))\n", - " print('f1_score:', f1_score(y_test_lab, y_pred, average=None))\n", - "\n", - " disp = ConfusionMatrixDisplay(confusion_matrix(y_test_lab, y_pred), display_labels=rfc.classes_)\n", - " disp.plot()\n", - "\n", - " joblib.dump(rfc, f\"{RFC_FNAME}.joblib\")\n", - " return rfc\n", - "\n", - "\n", - "def load_rfc_model():\n", - " return joblib.load(f\"{RFC_FNAME}.joblib\")\n" - ] - }, - { - "cell_type": "markdown", - "id": "dbdd201e-2783-42d3-a345-cf742361be67", - "metadata": {}, - "source": [ - "### Tensorflow Model" - ] - }, - { - "cell_type": "markdown", - "id": "5c29f129-3e75-4fc7-8893-18ab09019ae9", - "metadata": {}, - "source": [ - "Finally we also train a tensorflow model, between the tensorflow and random forest models we can apply each explainer method." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "7a28547f-1e0a-4bf4-9f18-5451127ddb77", - "metadata": {}, - "outputs": [], - "source": [ - "from tensorflow import keras\n", - "from tensorflow.keras import layers \n", - "\n", - "def make_tf_model():\n", - " inputs = keras.Input(shape=X_train.shape[1])\n", - " x = layers.Dense(6, activation=\"relu\")(inputs)\n", - " outputs = layers.Dense(2, activation=\"softmax\")(x)\n", - " model = keras.Model(inputs, outputs)\n", - "\n", - " model.compile(optimizer=\"adam\", loss=\"categorical_crossentropy\", metrics=['accuracy'])\n", - " history = model.fit(\n", - " scaler.transform(X_train), \n", - " y_train,\n", - " epochs=30, \n", - " verbose=False, \n", - " validation_data=(scaler.transform(X_test), y_test),\n", - " )\n", - "\n", - " y_pred = model(scaler.transform(X_test)).numpy().argmax(axis=1)\n", - " print('accuracy_score:', accuracy_score(y_pred, y_test.argmax(axis=1)))\n", - " print('f1_score:', f1_score(y_pred, y_test.argmax(axis=1), average=None))\n", - "\n", - " model.save(f'{TF_MODEL_FNAME}.h5')\n", - " disp = ConfusionMatrixDisplay(confusion_matrix(y_pred, y_test.argmax(axis=1)))\n", - " disp.plot()\n", - " return model\n", - "\n", - "def load_tf_model():\n", - " return load_model(f'{TF_MODEL_FNAME}.h5')\n" - ] - }, - { - "cell_type": "markdown", - "id": "7c7e779e-656d-48be-91b2-14ae32e2838c", - "metadata": {}, - "source": [ - "### Load/Make models" - ] - }, - { - "cell_type": "markdown", - "id": "6faa7413-c589-45ed-9c64-96b8ddbac469", - "metadata": {}, - "source": [ - "In order to ensure stable results we save and load the same models each time unless they don't exist in which case we create new ones. If you want to generate new models on each run of the notebook then set `FROM_SCRATCH=True`" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "4dc61ede-5732-4641-b004-0be40fbf9e99", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING:tensorflow:No training configuration found in the save file, so the model was *not* compiled. Compile it manually.\n", - "WARNING:tensorflow:No training configuration found in the save file, so the model was *not* compiled. Compile it manually.\n" - ] - } - ], - "source": [ - "from tensorflow.keras.models import Model, load_model\n", - "\n", - "if FROM_SCRATCH or not os.path.isfile(f'{TF_MODEL_FNAME}.h5'):\n", - " model = make_tf_model()\n", - " rfc = make_rfc()\n", - " ae = make_ae()\n", - "else:\n", - " rfc = load_rfc_model()\n", - " model = load_tf_model() \n", - " ae = load_ae_model()" - ] - }, - { - "cell_type": "markdown", - "id": "b0a89f7e-7a76-4c9f-b313-ce963227f548", - "metadata": {}, - "source": [ - "## Util functions for visualizing and comparing instance differences\n", - "\n", - "These are utility functions for exploring results. The first just shows two instances of the data side by side and compares the difference. We'll use this to see how the counterfactuals differ from there original instances. The second plots the importance of each feature which will be useful for visualizing the attribution methods." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "231a5665-6dfc-475c-b456-0f25598c319b", - "metadata": {}, - "outputs": [], - "source": [ - "def compare_instances(x, cf):\n", - " \"\"\"\n", - " Show the difference in values between two instances.\n", - " \"\"\"\n", - " x = x.astype('float64')\n", - " cf = cf.astype('float64')\n", - " for f, v1, v2 in zip(features, x[0], cf[0]):\n", - " print(f'{f:<25} instance: {round(v1, 3):^10} counter factual: {round(v2, 3):^10} difference: {round(v1 - v2, 7):^5}')\n", - "\n", - "def plot_importance(feat_imp, feat_names, class_idx, **kwargs):\n", - " \"\"\"\n", - " Create a horizontal barchart of feature effects, sorted by their magnitude.\n", - " \"\"\"\n", - " \n", - " df = pd.DataFrame(data=feat_imp, columns=feat_names).sort_values(by=0, axis='columns')\n", - " feat_imp, feat_names = df.values[0], df.columns\n", - " fig, ax = plt.subplots(figsize=(10, 5))\n", - " y_pos = np.arange(len(feat_imp))\n", - " ax.barh(y_pos, feat_imp)\n", - " ax.set_yticks(y_pos)\n", - " ax.set_yticklabels(feat_names, fontsize=15)\n", - " ax.invert_yaxis()\n", - " ax.set_xlabel(f'Feature effects for class {class_idx}', fontsize=15)\n", - " return ax, fig" - ] - }, - { - "cell_type": "markdown", - "id": "8a723129-19e5-4f87-b1c2-bfec2a4c69b1", - "metadata": {}, - "source": [ - "## Local Feature Attribution" - ] - }, - { - "cell_type": "markdown", - "id": "559872af-99b6-4314-b418-0be491f3f405", - "metadata": {}, - "source": [ - "### Integrated Gradients\n", - "\n", - "The integrated gradients (IG) method computes the attribution of each feature by integrating the model partial derivatives along a path from a baseline point to the instance. This accumulates the changes in the prediction that occur due to the changing feature values. These accumulated values represent how each feature contributes to the prediction for the instance of interest.\n", - "\n", - "We illustrate the apllication of integrated to the instance of interest. " - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "d8fb53ef-d965-4bd5-b70c-09badbfbfc38", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(,\n", - "
    )" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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9or169czY8YMevXqhb+/P1FRUcyePZuUlBT69etHx44dOXPmDFFRUSxYsADAfEb1/Pnz1KxZky5dumBvb8+PP/7I+PHjsbW1pXXr1tkOftasWRw+fJjx48dTqlQpoqOjOXToUK4ScceUKVN4//332b59OytWrADA3d09R2t88cUXVKxYkSlTppCWlpblvLfffpsNGzYwYsQIKlSowIYNG9i2bdt91584cSJ79uxh5MiRlCtXjg0bNtC/f39WrVpF7dq1GTNmDPv27WPy5MksXLiQ2NhYpk6dSufOnfH39890TZPJxKBBg4iLi+PNN9/EwcGBiIgIrl69yjPPPGOe9+eff9KlSxeqVq3K3LlzSUtLY/78+QwYMIBPPvkEGxubHOVKRERE5El3z4K7XLlyuLi4YDKZLNoa0tPTiYiIIDg42HzW2t/fn+vXr7N06VJeeeUVPD09cXd3x97ePkNLRKtWrcz/NplM1KlTh4sXL7J+/focFdzHjh2jW7dutGzZ0jzWtm3bbG+fmTs923Z2dg/UyrF06VIcHByyfD8uLo5169YxdOhQevfuDUCjRo0sjiUzp06d4r///S+zZs2iffv25u1efPFFFi9ezHvvvUfRokWZPXs23bt3Z9OmTezatYtixYoxbty4LNf9+uuvOX78OOvXr6d69erA7f7xwMBAi4J7wYIFlCpViuXLl2Nvbw/cPsv/wgsv8NVXX9GkSZPspAeAkiWdsj33QeXHgy0KEuXXupTfJ1NB+b4WlOPML8qv9eVFvZKrHu4LFy5w6dIlgoKCLMZbtmzJ2rVr+e2336hWrVqW21+7do2IiAh2797NxYsXzWeBPTw8chRH5cqVee+997C1taVBgwaUL18+5wdjBfXq1btnsQ232zKSk5Np2rSpeczW1pamTZuaz6xn5tixY5hMJovc29raEhQUZLFdrVq16NmzJ5MmTSI1NZUPP/yQokWLZrnu0aNHKVWqlLnYBihTpgze3t4W8w4cOEC7du2wtbU1t7+ULVuWMmXK8L///S9HBXdsbALp6aZsz88tg8GZmBg9YsJalF/rUn6tKz+LlYLwfdXn17qUX+szGJyJjU144KI7V/fhvtOvW7JkSYvxO6+vXbt2z+1DQ0PZsmULffr04b333uOTTz6hQ4cOJCcn5yiOyZMn06xZMxYtWkRQUBDNmzfnv//9b47W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++675jEPDw969uzJiRMn8PLyynS7Vq1amf9tMpmoU6cOFy9eZP369bRu3RqADz74gISEBDZu3Gj+BaB+/fpZxhIXF8e6desYOnQovXv3BqBRo0a0bNnynseQ1fG3bt2a2bNns23bNvP3ZevWrdy6dcsco4iIiIj8n0e24AZo2bIloaGhxMXF4erqyi+//MKZM2d48803Abhw4QKXLl0iKCgow3Zr167lt99+o1q1apmuvWnTJj744AP+/PNPbty4YR4/c+YMpUuXznXMN2/e5MiRI0ycONGibaNWrVoULlyYn3/+OcuC+9q1a0RERLB7924uXrxIWloacLtYv+O7776jUaNG2T7bfuLECZKTk2natKl5zNbWlqZNm7JixYocH5+TkxMtWrTgs88+Mxfcn332GQEBAbi6uuZorZIlnXK8/9zSgwGsS/m1LuVXROTerPlzMi/qlUe64A4ICKBQoULs2LGDl156iS1btuDp6Wm+A0dMTAwAJUuWtNjuzutr165luu7OnTsZN24cXbp0YcSIEbi4uBATE8PgwYNJTk5+oJjj4+NJS0tj2rRpFmfR77hX60doaCg//fQTgwYNokKFCjg5ObF27Vp2795tnnP16lXz2efsuHz5MpB1jnIjJCSEHj168Pfff2MymTh06NA9W3iyEhubQHq6KddxZJfB4ExMzKN+S/zHl/JrXcqvdemXGZEng7V+ThoMzsTGJjxw0f1IF9zFihWjcePGbNmyhZdeeomtW7cSFBSEjY0NAAaDAbjd13y3O69LlCiR6brbtm2jevXqTJ061Tz2/fff50nMzs7O2NjYMGTIEBo3bpzh/azOTCcnJ7N3714mT55Mly5dzOMff/yxxbw7vxxkV6lSpYDbOXFxcTGP/zNnOVGnTh3+9a9/sXHjRkwmE+7u7vj7++d6PREREZEn2SN70eQdrVq14uDBg+zZs4e///7bos/Z09MTd3d3tm3bZrHN1q1bcXJysniwy92SkpKwt7e3GLtzl487ChcuDJDjM95FixbF19eXP/74Ax8fnwxfd7eH3C0lJYX09HSLuBISEtizZ4/FvPr167Nv3z7zmev78fLywsHBweIseXp6usXrzNzv+Dt06MCmTZv4/PPPadeuHXZ2dtmKR0RERKSgeaTPcAM0btyYIkWKMHnyZMqWLWvRk21ra8vQoUOZPHkyLi4u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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from alibi.explainers import IntegratedGradients\n", - "\n", - "ig = IntegratedGradients(model,\n", - " layer=None,\n", - " method=\"gausslegendre\",\n", - " n_steps=50,\n", - " internal_batch_size=100)\n", - "\n", - "result = ig.explain(scaler.transform(x), target=0)\n", - "\n", - "plot_importance(result.data['attributions'][0], features, '\"good\"')\n" - ] - }, - { - "cell_type": "markdown", - "id": "91775149-0ff9-46d7-a71d-d32c910c2757", - "metadata": {}, - "source": [ - "### Kernel SHAP\n", - "\n", - "Kernel SHAP is a method for computing the Shapley values of a model around an instance. Shapley values are a game-theoretic method of assigning payout to players depending on their contribution to an overall goal. In our case, the features are the players, and the payouts are the attributions.\n", - "\n", - "Example of Kernel SHAP method applied to the Tensorflow model" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "442a2603-1aed-4cd2-a3dc-f4965f5efaec", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "0df18cbd9d024d4ba0dc5657a310ba25", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/1 [00:00,\n", - "
    )" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAFECAYAAADlf7JXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABmNklEQVR4nO3deVxU5fv/8ReDgigooCyZWa5jH0VxRRTTUJTcRTTXcsk9NVfINbVcMlLB3bQ0y9Ayyz65m5VlpKXpJytNs3InXBAVEJjfH/6crxP7iA7g+/l48Mi55z73uc59aLg4XOc+diaTyYSIiIiIiOSawdYBiIiIiIgUVEqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkVsHYA8vC5fvk5aWsFY5rx0aWfi4hJsHcZDTefAtjT/tqX5ty3Nv23Zev4NBjvc3Epk+r6SabGZtDRTgUmmgQIVa2Glc2Bbmn/b0vzblubftvLz/KvMQ0RERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKegKiFFouJZ0o5ph33+IeHi55NpZYR+fAdpJvpdo6BBGRfEnJtBRaxRyL0G7MJ7YOQ6RQ2BzRwdYhiIjkSyrzEBERERGxkpJpERERERErWZ1ML1y4kCZNmlCtWjXCw8PzMqYHrnfv3owYMcKibf369QQGBvKf//yH3r17P7BYjh07htFoJCYmxtxmNBpZu3Ztnu7n9OnTGI1Gvvjiiyz7rV27FqPRmKf7FhERESksrKqZPnLkCFFRUYwePZoGDRpQunTpvI7LpmJjY3nllVfo2bMnwcHBlCpVyqbxREdHU65cuTwd09PTk+joaCpWrJin44qIiIg8TKxKpk+ePAlAz549cXZ2zrRfYmIixYoVsy4yG/rzzz9JTU2lc+fOVKtW7Z7GSk1NJTU1FQcHB6vH8PX1vacYMuLg4HBfxhURERF5mOS6zCM8PJzx48cDULduXXNJQkxMDEajka+//prBgwdTu3Ztpk+fDsDZs2cZNWoUDRo0oFatWvTv39+ckN+RlJTE66+/TtOmTalRowbt27fnyy+/zDaeZcuWERQUhI+PD40aNaJ///7ExsYCsHHjRoxGI9evX7fYJjAwkDlz5mQ4XlRUFD179gSgQ4cOGI1GNm7caD6+Y8eOWfT/d4lIeHg4ISEh7Ny5kzZt2lCzZk0OHz6cafzvvfceTZs2xdfXl8GDB5tjv1tGZR5r166lZcuW1KhRg6CgIN555x3ze1u2bKFatWrs27fP3Hb69Gnq1KnDvHnzzK//XeaRnJzM9OnTqVevHg0aNGDmzJmkpKSki+fKlStMnjyZRo0a4ePjQ7du3fjpp58yPUYRERGRwirXV6aHDh2Kt7c3S5YsYfXq1RQrVozKlSvz888/AzBx4kRCQkJ4/vnncXR05MqVK/To0QNXV1deeeUVnJycWL58OX379mXbtm3mK9cjRozg8OHDDB8+nPLly7NlyxaGDBnCRx99xJNPPplhLJs2bWLp0qWMHTuWKlWqcOXKFb777jtu3rxp9YR06dIFd3d3pk+fzhtvvMFjjz1G+fLlOX78eI7HOHPmDHPnzmXo0KF4eHhkWqKxc+dOpk+fTrdu3WjRogX79+9nwoQJ2Y6/fv16ZsyYQd++fQkICCAmJobZs2eTnJzMwIEDeeaZZ9ixYwcTJkxg8+bNlChRgpdffply5coxbNiwTMd944032LBhA6NGjaJSpUps2LCBrVu3WvRJTk6mb9++xMfHM378eNzd3Vm3bh19+vRh+/bteHh45HieRERERAq6XCfT5cuXp3z58gD4+PhQokQJi/eDg4N56aWXzK/nz5/PzZs32bRpE66urgDUqVOHwMBAPvroI3r27Mm+ffvYs2cP7777Lg0aNAAgICCAU6dOsWTJEiIjIzOM5fDhwwQEBJivJAO0bNkyt4dkwdvbm8qVKwO3rwhXrVo112NcuXKFd955J9NfAu5YunQpTZo0Ydq0aQA0adKES5cusWHDhky3SUtLIyoqipCQEPONnwEBAVy7do1ly5aZf4mZMmUKbdu2ZebMmVSrVo2DBw/y4YcfZlpucvnyZT744AOGDx9Ov379zPG0bt3aot8nn3zC8ePH+eyzz3jiiScAaNSoEcHBwaxatYqwsLAczRFA6dKZlwiJSP6jh+bYlubftjT/tpWf5z/PH9rSrFkzi9f79u2jUaNGODs7m0sGSpQoQfXq1fnf//4HwLfffouHhwd16tSxKCvw9/dn48aNme7rySef5MMPPyQyMpJmzZpRvXp17O3t8/qQcs3LyyvbRDolJYWjR48yefJki/agoKAsk+nz589z8eJFgoODLdpbt27NunXr+O2336hZsyaurq68+uqrDBo0iKJFizJs2LAs67+PHTtGUlISzZs3N7cZDAaaN2/OW2+9ZW7bt28f1atXp1y5chbnqn79+ubzmVNxcQmkpZlytU1u5Of/8UQKotjYa7YO4aHl4eGi+bchzb9t2Xr+DQa7LC8A5nky/e+VPS5fvsyhQ4f4/PPP0/X19/c394mNjaV69erp+mSVHHfu3Jnr168THR3NokWLcHV1pVu3bowYMcKmSXWZMmWy7XP58mVSU1PTzVd2K6PcqanObLurV6+a2xo2bEiZMmW4cuUKXbt2zXLcf/75J8tx74770KFDGZ6rO3+xEBEREXlY5HkybWdnZ/G6VKlSBAYGMnTo0HR975SIlCpVCi8vLxYtWpSrfRkMBvr06UOfPn04d+4cmzdvZt68eXh7e9O9e3ccHR0BuHXrlsV2dyecOZXVWG5ubrkez83NDXt7e+Li4iza//363+7UJGe23d3L+L3xxhukpqZSpkwZZs6cSURERKbj3vkFIC4uzlyOk9F+SpUqRY0aNXjllVfSjXEvK5aIiIiIFER5nkz/m7+/P1u2bKFKlSqZLpPn7+/P22+/TfHixalUqZJV+3nkkUcYOHAgH330ESdOnABul1sAnDhxgrp16wLw008/kZCQkOvxvb29zWPduSp77tw5Tp48aa4dzo0iRYrw5JNPsmvXLrp3725u37FjR7ZxeHp6snXrVpo2bWpu37JlC87OzuYHrMTExLB27Vrmz5+Ps7Mz/fv3p2XLlrRq1SrDcatWrYqjoyO7du0yn4O0tDR27dpl0c/f359vvvmGsmXLFrr1xUVERERy674n03369OHTTz/l+eefp1evXnh5efHPP/+wf/9+6tatS9u2bWncuDEBAQH069ePAQMGULlyZRISEvj1119JSkpizJgxGY49ZcoUSpUqRa1atXBxcSEmJoY///yTcePGAVCzZk28vLx47bXXGDlyJFeuXOGtt97Kcm3szHh7e1OjRg0WLFiAk5MTaWlpLFu2zOIqbm4NHjyYF198kalTpxIUFMT+/fv5+uuvs9zGYDAwfPhwpkyZgqurK40bN2b//v2sW7eO0aNH4+joyPXr15kwYQKtW7c211Y/++yzvPLKK9SvXx93d/d047q5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Bw/mww8/xM7OLldzJSIiIlKQZZlMly9fHldXV0wmk0WpQVpaGlFRUYSEhJivNgcEBHDt2jWWLVvG888/j7e3N56enjg4OKQrU2jTpo353yaTifr163PhwgXWr1+fq2T6yJEj9OzZk9atW5vbOnTokOPtM3KnRtre3v6eyiuWLVuGo6Njpu9fvnyZDz74gOHDh9OvXz8AmjRpYnEsGTlx4gT//e9/mTVrFp06dTJv1759e5YsWcLKlSspXrw4s2fPplevXmzatImdO3dSokQJwsLCMh33q6++4ujRo6xfv55atWoBt+u1g4KCLJLphQsXUqZMGVasWIGDgwNw++r8M888w5dffkmzZs1yMj0AlC7tnOO++cHDumB/fqJzICLy4OWHz978EENmrKqZPn/+PBcvXiQ4ONiivXXr1qxbt47ffvuNmjVrZrr91atXiYqKYteuXVy4cMF89dbLyytXcVSrVo2VK1diMBho1KgRFSpUyP3B3AcNGzbMMpGG26USSUlJNG/e3NxmMBho3ry5+Yp4Ro4cOYLJZLKYe4PBQHBwsMV2devWpU+fPkyePJmUlBTeffddihcvnum4hw8fpkyZMuZEGuDRRx+levXqFv327dtHx44dMRgM5pKUcuXK8eijj/K///0vV8l0XFwCaWmmHPe3JQ8PF2JjtWy9Lekc2FZ+/kEmIveXrT97bf35bzDYZXkB0Kp1pu/Ux5YuXdqi/c7rq1evZrl9eHg4n3/+Of3792flypV8+OGHdO7cmaSkpFzFMWXKFFq0aMHixYsJDg6mZcuW/Pe//83VGPdDmTJlsu3zzz//AJnPYWYuXrxI8eLF063CUbp0aW7evElycrK5rW3btiQnJ1OlShXq1auX5bixsbEZ3pD473guX77MihUrqF69usXX33//zblz57Lch4iIiEhhY9WVaQ8PDwCLG9zufl2qVKlMt01KSmLPnj1MmTKF7t27m9vff//9XMdRsmRJJk2axKRJk/j111956623GDt2LEajkcqVK+Pg4MCtW7cstomPj8/1fgAcHR3TjZXZLw05qRu+k3DHxcXh6upqbv/3nP6bp6cnN27c4ObNmxYJdVxcHE5OTubSi5SUFCZPnkzVqlX5/fffiY6O5tlnn810XA8PDy5dupSuPS4uzmI1klKlStGiRQu6dOmSrq+bm1uWsYuIiIgUNtlemS5atGi6K8Z36qH/fbPcli1bcHZ2Nj90JKNtk5OTSUtLMyd9AAkJCezevdvqg4DbJR/jx48nLS2NkydPmuM8c+aMRQx3r3qRG15eXly/fp0LFy6Y27755hur461atSqOjo7s2rXL3JaWlmbxOiM+Pj7Y2dmxbds2c5vJZGLbtm0WK4csXbqUP/74g8WLFzNgwADmzJnD6dOnsxz3n3/+4aeffjK3nT17lqNHj1r08/f35/fff6dGjRr4+PhYfJUrVy7Hxy8iIiJSGGR7ZbpChQrs2rWLnTt34uXlhaenJ15eXgwfPpwpU6bg6upK48aN2b9/P+vWrWP06NHmeuGKFSvyzz//sHHjRqpUqYKbmxvlypXDx8eHRYsW4ezsjMFgYPny5Tg7O5OQkJCr4Lt3705QUBBVqlTBzs6O9evXU7x4cXO9dosWLYiMjGTixImEhIRw9OhRPvroIyum6fZNfsWKFWPChAn07duX06dP88EHH1g1Fty+itu1a1eioqIoUqQIlStXZsOGDdy4cSPL7SpVqkSbNm2YPn06169f57HHHmPDhg2cPHnSvOLK0aNHWbp0KZMmTeKxxx5j2LBh7N69mwkTJrB69eoMr5w3bdqUatWqMXLkSMaOHYuDgwNRUVHpSj9efPFFunTpwsCBA+ncuTNubm5cuHCBb7/9lk6dOmW4fKCIiIhIYZXtlekePXrQuHFjJkyYQGhoKOvXrwega9euTJw4kZ07dzJ48GA+++wzwsPDGThwoHnbZ555hpCQEObOnUtoaKh5ibyIiAgee+wxwsLCeO2112jZsiUdO3bMdfC+vr58/PHHjBgxgpdeeslcz3tn+b6qVasyc+ZMDh06xJAhQ9i/fz+zZs3K9X7g9rJ+kZGRnD9/nmHDhvHpp58SERFh1Vh3jB8/ns6dO7No0SLGjBmDp6cnffv2zXa7V199lU6dOrFo0SKGDh3KmTNnWLp0KfXq1SM5OZmwsDD8/Pzo1q0bAA4ODrz++uv8+OOPFmti383Ozo4lS5ZQqVIlJkyYwKxZs+jZsye1a9e26FehQgXzkxOnTJnCgAEDiIqKwsHBgccff/ye5kNERESkoLEzmUwFYzkFKXS0mofkhs6BbXl4uNBuzCe2DkNEHrDNER1s/tlr68//+7Kah4iIiIiIWLmah4iIPFySb6WyOeLeHoolIgVPYlKKrUPI95RMi4hIthyK2tv8T70PM1v/mfthp/mXrKjMQ0RERETESkqmRURERESspGRaRERERMRKqpkWEZFsJd9KxcPDxdZhPNQ0/7al+betrOY/MSmFa/E3H2A0lpRMi4hIthyK2mudaRHJlzZHdMCWt4eqzENERERExEoPRTIdFRWFn59frrZJTk4mKiqKX375xaL99OnTGI1GvvjiC3NbYGAgc+bMyZNY71VG8WVk7dq1GI1G8+uYmBiMRiPHjh0DMj9+EREREfk/D0UybY1bt26xcOHCdMmkp6cn0dHR1K1b10aRZc3a+KpXr050dDTly5cHMj9+EREREfk/qpnOJQcHB3x9fW0dRqasjc/Z2TlfH5eIiIhIfpRvr0xv3LiRGjVqEB8fb9F+/PhxjEYj3377rblt7dq1tGzZkho1ahAUFMQ777yT5dg3btxg+vTptGrVilq1ahEYGMi0adNISEgw96lTpw4AL7/8MkajEaPRyOnTp3NcRnHgwAF69epFrVq18PPzY9KkSRbjZ+TgwYMMHjyYgIAAfH196dChA59++mm6fmfOnGH06NH4+flRq1Yt2rVrx+bNm4GMyzySk5OZPn069erVo0GDBsycOZOUFMvHg/67zCOz4w8NDSU8PDxdTOHh4XTs2DHL4xMREREpbPJtMt2iRQsAduzYYdH++eefU6ZMGXMN9Pr165kxYwaBgYEsXbqU4OBgZs+ezfLlyzMdOzExkdTUVEaNGsWKFSsYOXIk3333HSNHjjT3Wb16NQBDhgwhOjqa6OhoPD09cxT7Dz/8QJ8+fShTpgyRkZG8/PLLfPnll0yYMCHL7c6ePUudOnV47bXXWLJkCS1btmTChAl89tln5j5xcXE8++yzHDlyhLCwMJYuXUpoaCjnzp3LdNw33niDDRs2MHToUObOncvZs2dZtWpVlrFkdvyhoaFs27aN69evm/tev36dbdu20blz55xMj4iIiEihkW/LPEqWLEmTJk34/PPPLZK0zz//nFatWmFvb09aWhpRUVGEhISYr5YGBARw7do1li1bxvPPP4+jo2O6sd3d3Zk2bZr5dUpKCuXKlaNHjx6cPXuWsmXL4uPjA0D58uVzXf4QERFB7dq1mT9/vrnNy8uLPn36cOzYMapWrZrhdm3atDH/22QyUb9+fS5cuMD69etp27YtAO+88w4JCQls3LjRnNz7+/tnGsvly5f54IMPGD58OP369QOgSZMmtG7dOstjyOz427Zty+zZs9m6dav5vGzZsoVbt26ZYxQRERF5WOTbZBqgdevWhIeHc/nyZdzc3Pjll184deoUr732GgDnz5/n4sWLBAcHp9tu3bp1/Pbbb9SsWTPDsTdt2sQ777zDn3/+yY0bN8ztp06domzZslbHfPPmTQ4dOsSkSZMsSinq1q1L0aJF+fnnnzNNpq9evUpUVBS7du3iwoULpKamArcT8Tu+++47mjRpkuOr5MeOHSMpKYnmzZub2wwGA82bN+ett97K9fE5OzvTqlUrPv74Y3My/fHHHxMYGIibm1uuxipd2jnX+7clLdhvezoHIiKSEVv+fMjXyXRgYCBFihRh+/btPPvss3z++ed4e3ubV6qIjY0FoHTp0hbb3Xl99erVDMfdsWMHYWFhdO/enVGjRuHq6kpsbCzDhg0jKSnpnmKOj48nNTWVadOmWVz9viOrcozw8HB++uknhg4dSqVKlXB2dmbdunXs2rXL3OfKlSvmq8Y58c8//wCZz5E1QkND6d27N3///Tcmk4kDBw5kWVaTmbi4BNLSTFbH8SB5eLgQG2vLJeFF58C29IuMiORn9/Png8Fgl+UFwHydTJcoUYKmTZvy+eef8+yzz7JlyxaCg4Oxs7MDwMPDA7hdR3y3O69LlSqV4bhbt26lVq1avPLKK+a277//Pk9idnFxwc7OjhdffJGmTZumez+zK8pJSUns2bOHKVOm0L17d3P7+++/b9HvTuKfU2XKlAFuz4mrq6u5/d9zlhv169fn8ccfZ+PGjZhMJjw9PQkICLB6PBEREZGCKt/egHhHmzZt2L9/P7t37+bvv/+2qCv29vbG09OTrVu3WmyzZcsWnJ2dLR5KcrfExEQcHBws2u6shnFH0aJFAXJ9pbp48eL4+vryxx9/4OPjk+7r7pKNuyUnJ5OWlmYRV0JCArt377bo5+/vz969e81XnLNTtWpVHB0dLa5up6WlWbzOSHbH37lzZzZt2sQnn3xCx44dsbe3z1E8IiIiIoVJvr4yDdC0aVOKFSvGlClTKFeunEUNtMFgYPjw4UyZMgVXV1caN27M/v37WbduHaNHj87w5kOARo0aMX36dJYsWUKtWrX48ssv2bdvn0UfBwcHypUrx5YtW6hSpQqOjo6ZJuf/NnbsWPr06YPBYKBVq1aUKFGCc+fOsWfPHkaNGkWFChXSbePi4oKPjw+LFi3C2dkZg8HA8uXLcXZ2tlhSr0+fPmzatImePXsyePBgvL29OXnyJDdu3GDAgAHpxnVzc6Nr165ERUVRpEgRKleuzIYNGyzqxDOS2fHfSfY7derEggULSElJISQkJEfzIiIiIlLY5PtkulixYgQGBrJ582YGDhyY7v2uXbuSlJTEmjVrePfdd/Hy8iI8PJw+ffpkOma3bt04ffo0a9asISkpicaNGxMREUHXrl0t+k2bNo05c+bQt29fkpOTs72ae0e9evV47733iIyMZPz48aSlpVG2bFmaNGliLrvISEREBFOmTCEsLAxXV1d69uxJYmIia9euNfdxd3dn3bp1zJ07l5kzZ5KcnMzjjz/OoEGDMh13/PjxpKSksGjRIgwGA+3bt6dv377Mnj07y+PI6PjLlSsH3C6xufOLTUa/HIiIiIg8DOxMJlPBuANM8pUrV67w1FNPMXnyZLp06WLVGLoBUXJD58C2PDxcaDfmE1uHISKSzuaIDroBUQqOhIQETpw4wZo1ayhRooTWlhYREZGHmpJpyZWff/6Z5557jkcffZQ5c+bg5ORk65BEREREbEZlHmIzKvOQ3NA5sK1SrsVxKKpVe0Qk/0lMSuFa/M37Nr7KPERE5J45FLXXLzM2pF8mbUvzb1v5ff7z/TrTIiIiIiL5lZJpERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaRERERERKymZFhERERGxkpJpERERERErKZkWEREREbGSnoAoNmMw2Nk6hFwpaPEWRjoHtqX5ty3Nv21p/m3LlvOf3b7tTCaT6QHFIiIiIiJSqKjMQ0RERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKSqZF/r+bN2/y0ksvERQURHBwMF988UWmfdevX09QUBAtWrRg+vTppKWlWbyflJREmzZtCAkJud9hFxp5Mf87d+4kJCSEtm3b0qZNG1atWvWgwi+Q/vjjD5599llatWrFs88+y6lTp9L1SU1NZdq0abRo0YKgoCA2bNiQo/ckZ+71HCxatIg2bdrQrl07QkJC+Prrrx9g9AXfvc7/HSdPnqRWrVrMmTPnAURdeOTF/H/++ee0a9eOtm3b0q5dO/75558HFP1dTCJiMplMpqioKNPEiRNNJpPJ9Mcff5gaNWpkSkhISNfvr7/+MjVp0sQUFxdnSk1NNfXr18/08ccfW/SZNWuW6eWXXzZ16tTpQYReKOTF/B86dMh0/vx5k8lkMsXHx5tatGhh2r9//wM7hoKmd+/epk2bNplMJpNp06ZNpt69e6fr8/HHH5v69etnSk1NNcXFxZmaNGli+vvvv7N9T3LmXs/BV199Zbpx44bJZDKZfvnlF1PdunVNN2/efHAHUMDd6/ybTCZTSkqKqVevXqbRo0ebZs+e/cBiLwzudf4PHz5seuaZZ0wXL140mUy3P/cTExMf3AH8f7oyLfL/bdmyhWeffRaAJ554gho1avDVV1+l67dt2zZatGiBu7s7BoOBLl268Pnnn5vfP3DgAKdOnaJDhw4PLPbCIC/mv1atWnh5eQHg4uJCpUqVOHPmzIM7iAIkLi6Oo0eP0rZtWwDatm3L0aNHuXTpkkW/zz//nC5dumAwGHB3d6dFixZs3bo12/cke3lxDpo0aYKTkxMARqMRk8nElStXHuhxFFR5Mf8Ay5cvp1mzZjzxxBMPMvwCLy/m/5133qFfv354eHgAtz/3HR0dH+yBoDIPEbOzZ8/y6KOPml8/8sgjnD9/Pl2/c+fOUbZsWfPrsmXLcu7cOQBu3LjBzJkzmTZt2v0PuJDJi/m/24kTJzh06BANGza8PwEXcOfOncPLywt7e3sA7O3t8fT0TDeX/57vu89LVu9J9vLiHNxt06ZNlC9fHm9v7/sbeCGRF/P/66+/snfvXvr06fPA4i4s8mL+T5w4wd9//03Pnj3p1KkTixcvxmQyPbiD+P+KPPA9ithIp06dOHv2bIbvffvtt3myj9dff50ePXrg5eWVYe3Xw+xBzP8dFy9eZOjQoUydOtV8pVqkMPv+++9ZsGCB7hN4gG7dusXkyZOZNWuWOSGUBys1NZXffvuNt99+m+TkZF544QXKli1Lx44dH2gcSqblofHxxx9n+X7ZsmU5c+YM7u7uwO3fhv38/NL1e+SRRyySwrNnz/LII48A8MMPP/DVV1+xePFikpKSuHr1Ku3atWPz5s15eCQF04OYf7j9p8O+ffvywgsv8Mwzz+RR9IXPI488woULF0hNTcXe3p7U1FQuXrxoMZd3+p09e5aaNWsClleJsnpPspcX5wDg4MGDjBs3jsWLF1OxYsUHegwF2b3Of2xsLH/99RcDBw4EID4+HpPJREJCAjNmzHjgx1PQ5MX3f9myZQkODsbBwQEHBweaN2/O4cOHH3gyrTIPkf8vODiY6OhoAE6dOsWRI0do0qRJun6tWrVi586dXLp0ibS0NDZs2GBO2jZv3szu3bvZvXs3b775JlWrVlUinUN5Mf+XL1+mb9++9OzZky5dujzQ+Aua0qVL8+STT/LZZ58B8Nlnn/Hkk0+af5m5Izg4mA0bNpCWlsalS5fYuXMnrVq1yvY9yV5enIPDhw8zatQoIiMjqV69+gM/hoLsXue/bNmyxMTEmD/zn3/+ebp27apEOofy4vu/bdu27N27F5PJxK1bt/juu++oVq3aAz8WO5MtiktE8qEbN24QHh7OL7/8gsFgYNy4cbRo0QKABQsW4OnpSffu3QH44IMPeOuttwBo3LgxU6ZMSfdnvpiYGObMmcPGjRsf7IEUUHkx/3PmzOG9996jQoUK5nGfe+45Onfu/OAPqAA4ceIE4eHhxMfHU7JkSebMmUPFihUZMGAAI0aMwMfHh9TUVKZPn84333wDwIABA8w3imb1nuTMvZ6Dzp07c+bMGYtyptdffx2j0WiT4ylo7nX+7xYVFcWNGzcICwt70IdRYN3r/KelpTFnzhy++uorDAYDAQEBhIWFYTA82GvFSqZFRERERKykMg8RERERESspmRYRERERsZKSaRERERERKymZFhERERGxkpJpERERERErKZkWEclDUVFRGI3GdF95/bjhw4cPExUVladj3m83btxg1KhR+Pn5YTQazctGrl+/nsDAQP7zn//Qu3fvPNvf559/nmdLU544cYIePXrg6+uL0Wjk9OnTeTJubsTExGA0Gjl27NgD3/e/JScnM3v2bPz9/fH19WXgwIE2mROR/EBPQBQRyWMuLi7mdbDvbstLhw8fZuHChQwfPjxPx72f1q1bxxdffMGcOXPw8vKifPnyxMbG8sorr9CzZ0+Cg4MpVapUnu1v69atXL58mZCQkHse6/XXX+fatWssWbIEJycnPD098yDCguvVV19l27ZtvPzyy7i5ubFw4UL69evH5s2bcXR0tHV4Ig+UkmkRkTxmb2+Pr6+vrcPIlcTERIoVK3Zf93Hy5EkqVKhg8ZTEAwcOkJqaSufOnW3y5LKcOnnyJIGBgfj7+9/TOCaTieTk5AKdcJ4/f54PP/yQmTNnmh/bXK1aNZo3b86nn36qp4/KQ0dlHiIiD9iGDRto06YNNWrU4Omnn2bFihUW7x88eJDBgwcTEBCAr68vHTp04NNPPzW/v3HjRvMji++UkdwpjwgPD093Jfb06dMYjUa++OILc5vRaOTtt9/mtddeo2HDhrRr1w6ApKQkXn/9dZo2bUqNGjVo3749X375ZbbHlN12gYGBfPjhhxw9etQcc1RUFD179gSgQ4cOFqUfOY1j/fr1tGvXDh8fHxo1asSIESO4du0a4eHhbNu2je+//95if3A7ge/Rowd16tShTp06dOjQgS1btmR4XHfm7q+//uKdd96xmGuAtWvX0rJlS2rUqEFQUBDvvPOOxfZRUVH4+flx4MABOnfujI+PT6b7Avj1118ZPHgw9erVo3bt2oSGhpqf/JaRVatW0blzZ+rWrUujRo0YPHgwf/75p0Wf7I53165dhISE4OvrS/369enSpQvff/99pvvcu3cvAEFBQeY2Ly8v6tSpw1dffZXpdiKFla5Mi4jcBykpKRav7e3tsbOz46233mLevHm88MILNGjQgJ9//pkFCxbg5OREr169ADh79ix16tShe/fuODg48OOPPzJhwgQMBgNt27alWbNm9OvXj1WrVhEdHQ2As7NzrmNcuXIl9erV4/XXX+fOw3BHjBjB4cOHGT58OOXLl2fLli0MGTKEjz76iCeffDLTsbLbbuHChcyfP5+///6bWbNmAeDt7Y27uzvTp0/njTfe4LHHHqN8+fI5jmPx4sVERkbSo0cPxo0bR2JiInv27OHGjRsMHTqUs2fPcu3aNaZOnWreX0JCAoMHD6Z58+YMGzYMk8nEsWPHuHbtWobH5enpSXR0NC+++CJ+fn707t3bPNfr169nxowZ9O3bl4CAAGJiYpg9ezbJyckMHDjQPEZiYiLh4eG88MILPPHEE5mWiJw4cYLu3btToUIFpk2bhqurK//73/84d+5cpvN+/vx5evXqRdmyZUlISOCDDz6gW7dubN++HRcXl2yP96+//mLkyJH07t2bcePGkZyczP/+9z+uXr2a6T5PnjyJt7c3JUqUsGivVKlSlkm4SKFlEhGRPBMZGWmqWrVquq9vvvnGdO3aNZOvr68pKirKYpv58+ebGjVqZEpJSUk3XlpamunWrVumyZMnm3r37m1uf/fdd01Vq1ZN1z8sLMzUqVMni7a///7bVLVqVdPu3bvNbVWrVjV17NjRot+3335rqlq1qikmJsaivUePHqbhw4dnesw53S6j2L777jtT1apVTb/99luuxrt69aqpZs2appkzZ2Ya1/Dhw029evWyaDt8+LCpatWqpmvXrmW6XUaefvpp0+zZs82vU1NTTQEBAabw8HCLflOnTjXVqVPHlJiYaDKZ/u/7YceOHdnuY9SoUaYmTZqYbt68meH7Gc3V3VJSUkw3b940+fr6mj7++GOTyZT98W7ZssXUoEGDbGO728SJE03t27dP1/7mm2+aGjdunKuxRAoDlXmIiOQxFxcXPvzwQ4uvmjVrcvDgQW7cuEFwcDApKSnmr4YNG/LPP/9w/vx5AK5evcqrr77K008/TfXq1alevTrR0dGcOnUqT+N86qmnLF5/++23eHh4UKdOHYv4/P39+d///pfpONZudy/jHTx4kMTExFzfXFi+fHmKFy/O2LFj2blzJ/Hx8bmOD25fEb548SLBwcEW7a1btyYhIYHffvvN3GZnZ5durjPy3Xff0bp161zVrh86dIi+ffvi5+fHf/7zH2rVqsWNGzf4448/gOyPt2rVqly7do2wsDD27t3LjRs3crxvEblNZR4iInnM3t4eHx+fdO2XL18GoE2bNhlud+7cOR599FHCw8P56aefGDp0KJUqVcLZ2Zl169axa9euPI2zTJky6eKLjY2levXq6fra29tnOo61293LeFeuXAHAw8MjV2OXKlWKt99+m6ioKF566SVMJhONGzdm8uTJPPbYYzkeJzY2FoDSpUtbtN95fXeZRKlSpXBwcMh2zCtXruTqeM6ePUu/fv2oWbMm06ZNw9PTk6JFizJo0CCSk5PN+87qeCtWrMjixYtZvnw5AwcOpEiRIgQFBTFx4kTc3d0z3G/JkiUzLIuJj4/P09VYRAoKJdMiIg/InURj2bJl6ZIwgAoVKpCUlMSePXuYMmUK3bt3N7/3/vvv52gfDg4O3Lp1y6Its6uvdnZ26eLz8vJi0aJFOdrXvW53L+O5uroCt5PazJK+zPj6+rJy5UoSExP59ttvmT17NmPGjGH9+vU5HuNO0hsXF2fRfue1NUmlq6urOUnPia+//prExEQWL15M8eLFgdu1+v+ud87ueJs1a0azZs24du0ae/bsYebMmcyYMYN58+ZluN+KFSty/vx5bty4Yd4v3K6lrlixYm4PW6TAUzItIvKA1K5dm2LFinHx4kWaNWuWYZ9r166RlpZmcSUzISGB3bt3W/QrWrQocHvVi7uXWfP29ubMmTMW7XdWX8iOv78/b7/9NsWLF6dSpUo5Pi5rt7uX8e7M5aZNmwgLC8uwT9GiRUlKSsp0P8WKFSMwMJDjx4+zbNmyXMXo7e2Np6cnW7dupWnTpub2LVu24OzsjNFozNV4cPu4t2zZwqhRo3K0dF5iYiIGg4EiRf7vR/mWLVvS3fx6R3bH6+LiQrt27di/fz8HDx7MdL8BAQEA7Nixgw4dOgBw4cIFfvjhB/PNniIPEyXTIiIPSMmSJXnxxRd57bXXOHPmDPXr1yctLY1Tp04RExPDokWLcHFxwcfHh0WLFuHs7IzBYGD58uU4OzuTkJBgHuvOFcDVq1fTsGFDnJ2dqVixIi1atCAyMpKJEycSEhLC0aNH+eijj3IUX+PGjQkICKBfv34MGDCAypUrk5CQwK+//kpSUhJjxozJ0+3uJY6SJUsydOhQ5s2bx61bt3jqqadITk7myy+/5MUXX8TLy4sKFSqwa9cudu7ciZeXF56envzyyy989NFHNG/enLJly3LhwgWio6Np2LBhrmI0GAwMHz6cKVOm4OrqSuPGjdm/fz/r1q1j9OjRVq0jPWzYMEJDQ+nZsyf9+vXD1dWVo0eP4urqSmhoaLr+DRs2JDU1lZdffpnQ0FCOHz/OqlWrKFmypLnPnj17sjzeDz74gEOHDtGkSRM8PT05deoUW7duNSfJGfH29iY0NJSZM2diMplwd3dn4cKFlC1blvbt2+f6uEUKOiXTIiIP0IABA/D09GT16tW8/fbbODo68sQTT9C6dWtzn4iICKZMmUJYWBiurq707NmTxMRE1q5da+5Tr149+vfvz5o1a3jzzTepX78+7777LlWrVmXmzJksXryYHTt20LBhQ2bNmmVRMpIZOzs7Fi5cyNKlS1m9ejXnzp2jVKlSVKtWLcvHfFu73b2ON2jQIEqVKsWaNWv44IMPKFWqFPXq1TMv2dajRw9++eUXJkyYwNWrV3nxxRdp06YNdnZ2zJs3j7i4ONzd3WnWrBmjR4/OdZxdu3YlKSmJNWvW8O677+Ll5UV4eLjVj46vWLEi77//PhEREUycOBGAypUrZxqb0Whk1qxZLFy4kB07dlCtWjUWLFjAqFGjzH3Kly+f5fEajUZ2797NrFmzuHr1Kh4eHnTp0oWRI0dmGeukSZNwcnJi9uzZJCYmUr9+fSIiIgr0w2hErGVnMv3/xUVFRERERCRXtDSeiIiIiIiVlEyLiIiIiFhJybSIiIiIiJWUTIuIiIiIWEnJtIiIiIiIlZRMi4iIiIhYScm0iIiIiIiVlEyLiIiIiFhJybSIiIiIiJX+H0Z4zQNPbvGYAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import shap\n", - "from alibi.explainers import KernelShap\n", - "\n", - "predict_fn = lambda x: model(scaler.transform(x))\n", - "\n", - "explainer = KernelShap(predict_fn, task='classification')\n", - "\n", - "explainer.fit(X_train[0:100])\n", - "\n", - "result = explainer.explain(x)\n", - "\n", - "plot_importance(result.shap_values[0], features, 0)\n" - ] - }, - { - "cell_type": "markdown", - "id": "53a6161f-13b6-4156-b378-bd689e68d00f", - "metadata": {}, - "source": [ - "Here we apply Kernel SHAP to the Tree-based model as well in order to compare to the tree-based methods we run later" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "77deef77-42c1-4450-b381-fde4b1079e24", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "d2b889f2c1ee423ba866d5b9481da293", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/1 [00:00,\n", - "
    )" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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zpw5DBkyhLCwMOLj4+nXrx9JSUmmPkajkZSUlHRfIiIiIoWV9pkWAK5evcrSpUupU6cOAF5eXgQFBbF582a6d+8OwDvvvMM777yTa+csU8Yx18YSkcJJH8iTPZon69MaWF9erYGSaQGgTJkypkQa4PHHH8fLy4ujR4+akunnn3+eF198Md2xISEhFp0zNjaetDSjZQHnI/oGKpJ3YmL0sS334+bmpHmyMq2B9T3IGtja2mR5A1DJtAB3kumM2mJiYkyvy5Yti4+Pz8MMS0REROSRppppASA2NjbDNjc3NytEIyIiIpI/KJkW4E7i/NNPP5lenz9/nuPHj1OzZk0rRiUiIiLyaFOZhwDg4uLC2LFjefXVVylWrBjh4eG4uroSHBxs7dBEREREHllKpgWAcuXKMWjQIMLCwjh37hze3t6EhYVRtGhRa4cmIiIi8shSMi0mLVu2pGXLlhm+t3fv3kyP+/333/MqJBEREZFHmmqmRUREREQspDvTInks+XYqW8PaWzsMkQInMUmfwCoi1qdkWpg7d661QyjQHOzttFm/FenDEqxPayAiBZnKPERERERELKRkWkRERETEQkqmRUREREQspJppkTyWfDsVNzcna4dRqGn+rU9rYF0Pa/4Tk1K4cf3WQzmXyKNCybRIHnOwt6Pd6E+tHYaISJ7bGtYePWoqhY3KPERERERELKRkWkRERETEQkqmH3GbN2/GYDCQkJCQq+OGhoYSHBycK2P16tWL4cOH58pYIiIiIvmJkmkREREREQspmRYRERERsZCSaSs7fPgwgwYNIiAgAF9fX9q3b89///vfLI9JTEzkjTfe4JlnnsHb25vAwEDCwsJM76emphIREUGzZs3w9vamTZs2bN26NcOxvv32W9q1a4evry/du3fn5MmTZu/funWL119/ncaNG+Pj40OnTp3Yv3//g1+4iIiISAGgrfGs7Pz589SpU4fu3bvj4ODATz/9xIQJE7C1taVt27bp+huNRoYMGcLhw4cZMmQI3t7eXLx4kUOHDpn6hIeH8/bbbzN06FB8fHzYuXMnY8aMwcbGxmzM6Oho3njjDQYPHkzRokV54403GDlyJFu3bsXGxgaASZMmsXfvXkaNGkWFChXYtGkTAwcOZO3atdStWzfvJ0hERETkEaZk2sratGlj+rPRaKRevXpcvHiRjRs3ZphM79+/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Cps2bTKrE89IZtd/N9nv2LEjixYtIiUlheDg4GzNi4iIiEhB88gn08WKFSMwMJCtW7cyYMCAdO936dKFpKQk1q1bx3vvvYeHhwehoaH07t070zG7devG2bNnWbduHUlJSTRu3JiwsDC6dOli1m/69OnMmzePPn36kJycfN+7uXfVrVuX999/n/DwcMaNG0daWhrlypWjSZMmprKLjISFhTFlyhTGjx+Ps7MzPXr0IDExkfXr15v6uLq6smHDBubPn8/s2bNJTk7mySefZODAgZmOO27cOFJSUliyZAm2trY8//zz9OnTh7lz52Z5HRldf/ny5YE7JTZ3f7DJ6IcDERERkcLAxmg0FvwnwCTXxcXF8fTTTzN58mQ6d+5s0RiF6QHEdqM/tXYYIiIiBdLWsPZ6AFHyj/j4eE6dOsW6desoWbKk9pYWERGRQk3JtOTIL7/8wosvvsjjjz/OvHnzKF68uLVDEhEREbEalXmI1RSWMo/SziVwsNduJyIiInkhMSmFG9dvZdlHZR4i+ZiDvZ3F/wPLg3uQb6CSO7QG1qX5tz6tQcH2yO8zLSIiIiLyqFIyLSIiIiJiISXTIiIiIiIWUjItIiIiImIhJdMiIiIiIhZSMi0iIiIiYiEl0yIiIiIiFlIyLSIiIiJiISXTIiIiIiIW0icgitXY2tpYO4SHpjBd66NI8299WgPr0vxbn9bA+ixdg/sdZ2M0Go0WjSwiIiIiUsipzENERERExEJKpkVERERELKRkWkRERETEQkqmRUREREQspGRaRERERMRCSqZFRERERCykZFpERERExEJKpkVERERELKRkWkRERETEQkqmRSzw559/0rVrV5599lm6du3KmTNn0vVJTU1l+vTptGjRgqCgIDZt2pSt9yR7HnQNlixZQps2bWjXrh3BwcF88803DzH6guFB1+Cu06dPU6tWLebNm/cQoi44cmP+v/jiC9q1a0fbtm1p164dly9ffkjRFwwPugaxsbEMGDCAdu3a8dxzzzFt2jRSUlIe4hXkb9mZ//379xMcHIy3t3e67zG59m+xUURyrFevXsYtW7YYjUajccuWLcZevXql6/PJJ58Y+/bta0xNTTXGxsYamzRpYvznn3/u+55kz4Ouwddff228efOm0Wg0Gn/99Vejn5+f8datWw/vAgqAB10Do9FoTElJMfbs2dM4atQo49y5cx9a7AXBg87/0aNHjc8995zx0qVLRqPRaLx+/boxMTHx4V1AAfCga/D666+b/t4nJycbQ0JCjJ9//vnDu4B8Ljvzf+bMGePx48eNb775ZrrvMbn1b7HuTIvkUGxsLMePH6dt27YAtG3bluPHj3PlyhWzfl988QWdO3fG1tYWV1dXWrRowfbt2+/7ntxfbqxBkyZNKF68OAAGgwGj0UhcXNxDvY78LDfWAGDlypU0a9aMp5566mGGn+/lxvy/++679O3bFzc3NwCcnJwoWrTow72QfCw31sDGxoaEhATS0tJITk7m9u3beHh4PPRryY+yO/9PPvkkNWrUoEiRIunGyK1/i5VMi+RQdHQ0Hh4e2NnZAWBnZ4e7uzvR0dHp+pUrV870+rHHHuPChQv3fU/uLzfW4N+2bNlChQoV8PT0zNvAC5DcWIPffvuN/fv307t374cWd0GRG/N/6tQp/vnnH3r06EHHjh1ZunQpRqPx4V1EPpcbazBkyBD+/PNPAgICTF9+fn4P7yLysezO//3GyI1/i5VMi0ih9sMPP7Bo0SLCwsKsHUqhcvv2bSZPnsz06dNN/xjKw5Wamsrvv//OO++8w3vvvcfXX3/Np59+au2wCpXt27djMBjYv38/X3/9NYcOHdJvKfMhJdMiOfTYY49x8eJFUlNTgTv/IF26dInHHnssXb/z58+bXkdHR5vufGb1ntxfbqwBwOHDhxk7dixLliyhUqVKDyf4AuJB1yAmJoa///6bAQMGEBgYyNq1a9m4cSOTJ09+qNeRX+XG/wPlypWjVatWODg44OjoSPPmzTl69OjDu4h8LjfWYP369Tz//PPY2tri5OREYGAgUVFRD+8i8rHszv/9xsiNf4uVTIvkUJkyZahRowafffYZAJ999hk1atTA1dXVrF+rVq3YtGkTaWlpXLlyhd27d/Pss8/e9z25v9xYg6NHjzJy5EjCw8Px8vJ66NeQ3z3oGpQrV46oqCj27t3L3r17eemll+jSpQszZ860xuXkO7nx/0Dbtm3Zv38/RqOR27dv8/3331O9evWHfi35VW6sQfny5fn6668BSE5O5sCBA1StWvXhXkg+ld35z0pu/VtsY1SBlEiOnTp1itDQUK5fv06pUqWYN28elSpVon///gwfPhwfHx9SU1OZMWMG3377LQD9+/ena9euAFm+J9nzoGvQqVMnzp07Z/awzxtvvIHBYLDK9eRHD7oG/xYREcHNmzcZP378w76MfOtB5z8tLY158+bx9ddfY2trS0BAAOPHj8fWVvfZsutB1+Dvv/9m6tSpXL58mdTUVPz9/Zk4cWKGD8tJetmZ/0OHDjFq1Cji4+MxGo04OTkxa9YsmjRpkmv/FiuZFhERERGxkH78FBERERGxkJJpERERERELKZkWEREREbGQkmkREREREQspmRYRERERsZCSaREplCIiIjAYDOm+cvujrY8ePUpERESujpnXbt68yciRI/H398dgMLB582YANm7cSGBgIP/5z3/o1atXrp3viy++MJ3jQZ06dYoXXngBX19fDAYDZ8+ezZVxcyIqKgqDwcCJEyce+rn/7ezZs6Y52Lx5M4GBgen6/PPPP0yePJnAwEC8vb3x8/OjW7durF69moSEhIcW6/Dhw83+Tv073tDQUEJDQx9aLCI5pY0MRaTQcnJy4u23307XlpuOHj3K4sWLGTZsWK6Om5c2bNjAl19+ybx58/Dw8KBChQrExMQwbdo0evToQatWrShdunSunW/79u1cvXqV4ODgBx7rjTfe4MaNGyxbtozixYvj7u6eCxEWTIcOHWLAgAE8+eSTDBo0iKeeeoqbN2/y/fffs2TJEm7cuMGrr75q7TBFHnlKpkWk0LKzs8PX19faYeRIYmIixYoVy9NznD59mooVK5p9EtihQ4dITU2lU6dOj/Sn5J0+fZrAwEAaNmz4QOMYjUaSk5MpWrRoLkX2aElMTGTkyJH4+vqyYsUK7O3tTe81a9aMvn37cuzYMStGKJJ/qMxDRCQTmzZtok2bNnh7e/PMM8+watUqs/cPHz7MoEGDCAgIwNfXl/bt2/Pf//7X9P7mzZtNH499t4zk7q+yQ0ND092Jvftr+S+//NLUZjAYeOedd5g1axYNGjSgXbt2ACQlJfHGG2/QtGlTvL29ef755/nqq6/ue033Oy4wMJCPPvqI48ePm2KOiIigR48eALRv396s9CO7cWzcuJF27drh4+NDo0aNGD58ODdu3CA0NJQdO3bwww8/mJ0P7iTwL7zwAnXq1KFOnTq0b9+ebdu2ZXhdd+fu77//5t133zWba4D169fTsmVLvL29CQoK4t133zU7PiIiAn9/fw4dOkSnTp3w8fHJ9FwAv/32G4MGDaJu3brUrl2bkJAQ06eoZWTNmjV06tQJPz8/GjVqxKBBg/jrr7/M+tzvevfs2UNwcDC+vr7Uq1ePzp0788MPP2R6zqxs27aNS5cu8dprr5kl0ne5u7vTvHlzs7YvvviCdu3a4e3tTdOmTVm4cCEpKSlmfX799VdeeuklatWqRb169Rg9ejSXL1826xMdHU3//v2pWbMmgYGBbNq0yaJrEHlU6M60iBRq9yYDdnZ22NjY8Pbbb7Nw4UJefvll6tevzy+//MKiRYsoXrw4PXv2BOD8+fPUqVOH7t274+DgwE8//cSECROwtbWlbdu2pjt8a9asITIyEgBHR8ccx7h69Wrq1q3LG2+8wd0PrR0+fDhHjx5l2LBhVKhQgW3btjF48GA+/vhjatSokelY9ztu8eLFvPXWW/zzzz/MmTMHAE9PT1xdXZkxYwYLFizgiSeeoEKFCtmOY+nSpYSHh/PCCy8wduxYEhMT2bdvHzdv3mTIkCGcP3+eGzduMHXqVNP54uPjGTRoEM2bN2fo0KEYjUZOnDjBjRs3Mrwud3d3IiMjeeWVV/D396dXr16mud64cSMzZ86kT58+BAQEEBUVxdy5c0lOTmbAgAGmMRITEwkNDeXll1/mqaeeyrRE5NSpU3Tv3p2KFSsyffp0nJ2d+d///kd0dHSm837hwgV69uxJuXLliI+P58MPP6Rbt27s3LkTJyen+17v33//zYgRI+jVqxdjx44lOTmZ//3vf1y7di3Tc5YvX57ff//d9Od///B28OBBPDw8qFq1aqbH/9v+/fsZOXIkHTp0YOzYsfz+++8sWrSIq1evMmPGDACuXLlCr169qFy5MmFhYSQkJBAWFkafPn34+OOPcXBwwGg0MmTIEK5evcqsWbMoWrQoERERxMXF8dRTT5nOFxwcbIp37ty52YpRxGqMIiKFUHh4uLFatWrpvr799lvjjRs3jL6+vsaIiAizY9566y1jo0aNjCkpKenGS0tLM96+fds4efJkY69evUzt7733nrFatWrp+o8fP97YsWNHs7Z//vnHWK1aNePevXtNbdWqVTN26NDBrN93331nrFatmjEqKsqs/YUXXjAOGzYs02vO7nEZxfb9998bq1WrZvz9999zNN61a9eMNWvWNM6ePTvTuIYNG2bs2bOnWdvRo0eN1apVM964cSPT4zLyzDPPGOfOnWt6nZqaagwICDCGhoaa9Zs6daqxTp06xsTERKPR+H9/H3bt2nXfc4wcOdLYpEkT461btzJ8P6O5+reUlBTjrVu3jL6+vsZPPvnEaDTe/3q3bdtmrF+//n1jy65+/foZu3Tpkq799u3bpq9//z3v3LlzujVauXKlsXr16sbo6Gij0Wg0zp8/3+jn52d2DUeOHDFWq1bNuHXrVqPRaDTu27fPWK1aNeORI0dMfc6ePWusUaNGuvFF8guVeYhIoeXk5MRHH31k9lWzZk0OHz7MzZs3adWqFSkpKaavBg0acPnyZS5cuADAtWvXeP3113nmmWfw8vLCy8uLyMhIzpw5k6txPv3002avv/vuO9zc3KhTp45ZfA0bNuR///tfpuNYetyDjHf48GESExNz/HBhhQoVKFGiBGPGjGH37t1cv349x/HBnTvCly5dolWrVmbtrVu3Jj4+3nTnFsDGxibdXGfk+++/p3Xr1jmqXT9y5Ah9+vTB39+f//znP9SqVYubN2/y559/Ave/3mrVqnHjxg3Gjx/P/v37uXnzZrbPnRkbGxuz11euXDH9Pfby8qJz584ApKamcvz48QznMC0tjcOHDwN3HrZt3Lix2W9fatWqxeOPP86PP/5o6lO2bFlq1apl6vP444/j5eX1wNcjYi0q8xCRQsvOzg4fH5907VevXgWgTZs2GR4XHR3N448/TmhoKD///DNDhgyhcuXKODo6smHDBvbs2ZOrcZYtWzZdfDExMRkmIHZ2dpmOY+lxDzJeXFwcAG5ubjkau3Tp0rzzzjtERETw6quvYjQaady4MZMnT+aJJ57I9jgxMTEAlClTxqz97ut/l0mULl0aBweH+44ZFxeXo+s5f/48ffv2pWbNmkyfPh13d3fs7e0ZOHAgycnJpnNndb2VKlVi6dKlrFy5kgEDBlCkSBGCgoKYOHEirq6u2Y7lLnd3d/744w+ztlKlSvHRRx8BsGTJEi5dugTcWefbt2+n+3t49/XdOYyJicmwbKRs2bJmfTKKt0yZMg91Kz6R3KRkWkTkHne3fVuxYkW6JAygYsWKJCUlsW/fPqZMmUL37t1N733wwQfZOoeDgwO3b982a8vs7uu9dxBLly6Nh4cHS5Ysyda5HvS4BxnP2dkZyDyJyoqvry+rV68mMTGR7777jrlz5zJ69Gg2btyY7THuJr2xsbFm7XdfW7LFn7OzsylJz45vvvmGxMREli5dSokSJYA7tfr31jvf73qbNWtGs2bNuHHjBvv27WP27NnMnDmThQsX5vga6tWrx8cff8ypU6eoXLkyAEWKFDH9cOns7GxKpl1cXLC3t083h3cfLLw7h25ubun63O139wcuNzc3rly5kq5PbGxsnu9SI5JXVOYhInKP2rVrU6xYMS5duoSPj0+6L0dHR5KTk0lLSzO7kxkfH8/evXvNxrq7U0JSUpJZu6enJ+fOnTNr379/f7bia9iwIZcvX6ZEiRIZxpfbxz3IeHfncsuWLZmOY29vn25+/q1YsWIEBgbSqVOndHdT78fT0xN3d3e2b99u1r5t2zYcHR0xGAw5Gg/uXPe2bduyjPnfEhMTsbW1pUiR/7t/tW3btnQPv951v+t1cnKiXbt2BAUF5Xg+7nruuedwd3dnzpw56X6ou5ednR1eXl4ZzqGtrS21a9cG7pR07N+/n/j4eFOfo0ePcu7cOfz8/ADw8fHh8uXL/Pzzz6Y+58+f5/jx4xZdh8ijQHemRUTuUapUKV555RVmzZrFuXPnqFevHmlpaZw5c4aoqCiWLFmCk5MTPj4+LFmyBEdHR2xtbVm5ciWOjo5myUSlSpUAWLt2LQ0aNMDR0ZFKlSrRokULwsPDmThxIsHBwRw/fpyPP/44W/E1btyYgIAA+vbtS//+/alSpQrx8fH89ttvJCUlMXr06Fw97kHiKFWqFEOGDGHhwoXcvn2bp59+muTkZL766iteeeUVPDw8qFixInv27GH37t14eHjg7u7Or7/+yscff0zz5s0pV64cFy9eJDIykgYNGuQoRltbW4YNG8aUKVNwdnamcePGHDx4kA0bNjBq1CiL9pEeOnQoISEh9OjRg759++Ls7Mzx48dxdnYmJCQkXf8GDRqQmprKa6+9RkhICCdPnmTNmjWUKlXK1Gffvn1ZXu+HH37IkSNHaNKkCe7u7pw5c4bt27fTvn37HMcPdxL2hQsXMmDAALp27Uq3bt1Mv3E5ceIEBw4cMO3YAjBs2DD69evHa6+9RuvWrTlx4gSLFi2ic+fOeHp6AtCnTx82bNjAyy+/zMsvv8zNmzcJCwujWrVqtGzZEoCmTZtSvXp1RowYwZgxY3BwcCAiIsKiUhWRR4WSaRGRDPTv3x93d3fWrl3LO++8Q9GiRXnqqado3bq1qU9YWBhTpkxh/PjxODs706NHDxITE1m/fr2pT926denXrx/r1q3jzTffpF69erz33ntUq1aN2bNns3TpUnbt2kWDBg2YM2eOWclIZmxsbFi8eDHLly9n7dq1REdHU7p0aapXr57lx3xbetyDjjdw4EBKly7NunXr+PDDDyldujR169alZMmSALzwwgv8+uuvTJgwgWvXrvHKK6/Qpk0bbGxsWLhwIbGxsbi6utKsWTNGjRqV4zi7dOlCUlIS69at47333sPDw4PQ0FCLPzq+UqVKfPDBB4SFhTFx4kQAqlSpkmlsBoOBOXPmsHjxYnbt2kX16tVZtGgRI0eONPWpUKFCltdrMBjYu3cvc+bM4dq1a7i5udG5c2dGjBhh0TXAnb+bW7ZsYeXKlSxbtoyYmBiKFi1K1apVefHFF+nWrZupb0BAAAsXLmTZsmVs3boVV1dX+vbta/bJnq6urqxbt85UnmJvb0/Tpk157bXXTL/BsbGxYdmyZUyePJkJEyZQpkwZBg4cyHfffWd6VkEkv7ExGv//pqUiIiIiIpIjqpkWEREREbGQkmkREREREQspmRYRERERsZCSaRERERERCymZFhERERGxkJJpERERERELKZkWEREREbGQkmkREREREQspmRYRERERsdD/A5Mlx9KQEbSHAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import shap\n", - "from alibi.explainers import KernelShap\n", - "\n", - "predict_fn = lambda x: rfc.predict_proba(scaler.transform(x))\n", - "\n", - "explainer = KernelShap(predict_fn, task='classification')\n", - "\n", - "explainer.fit(X_train[0:100])\n", - "\n", - "result = explainer.explain(x)\n", - "\n", - "plot_importance(result.shap_values[1], features, '\"Good\"')" - ] - }, - { - "cell_type": "markdown", - "id": "c9f0d0aa-f805-4ca7-9d26-4280548dd66b", - "metadata": {}, - "source": [ - "### Interventional treeSHAP\n", - "\n", - "Interventional tree SHAP computes the same Shapley values as the kernel SHAP methood above. The difference is that it's much faster for tree-based models. He it is applied to the random forest we trained. Comparison with the kernel SHAP results above show very similar outcomes." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "2d3b1ce0-8d52-4a6f-b30c-40779b9b2a8c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(,\n", - "
    )" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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MjKIiooiNDTUdLc5MDCQq1evsnTpUl566SW8vLzw8PDAwcEhU5lCq1atTH82Go3UqVOHc+fOsW7dujwl04cPH6Zbt260bNnS1Na2bdtc75+VWzXSdnZ291ResXTpUhwdHbP9/NKlS3z00UcMGTKE3r17A9C4cWOzc8nK8ePH+eKLL5g1axbt27c37ff888+zePFiVqxYQfHixZk9ezbdu3dn48aN7NixgxIlSjB27Nhsx/3mm284cuQI69ato0aNGsDNeu3g4GCzZHrBggWUKVOG5cuX4+DgANy8O//cc8/x9ddf07Rp09xcHgBKl3bKdV8Ra2bNL5W5Xx7Fc7Z2mhProzmxPvdjTiyqmT579iznz58nJCTErL1ly5asXbuWP/74g+rVq2e7/+XLl4mKimLnzp2cO3fOdPfW09MzT3FUrVqVFStWYGtrS8OGDalQoULeT+Y+qF+/fo6JNNwslUhJSaFZs2amNltbW5o1a2a6I56Vw4cPYzQaza69ra0tISEhZvsFBATQs2dPJk6cSFpaGu+//z7FixfPdtxDhw5RpkwZUyIN8Pjjj+Pj42PWb+/evbRr1w5bW1tTSUq5cuV4/PHH+d///penZDo+PpGMDGOu+z8I+sYnloiLe7Re2+Lu7vzInbO105xYH82J9bF0TmxtbXK8AWjROtO36mNLly5t1n5r+/LlyznuHx4ezpdffkmfPn1YsWIFH3/8MR06dCAlJSVPcUyaNInmzZuzaNEiQkJCaNGiBV988UWexrgfypQpc9c+Fy5cALK/htk5f/48xYsXz7QKR+nSpbl+/TqpqammttatW5OamkqVKlWoXbt2juPGxcVl+UDinfFcunSJ5cuX4+PjY/b177//Ehsbm+MxRERERAobi+5Mu7u7A5g94Hb7dqlSpbLdNyUlhd27dzNp0iS6du1qav/www/zHEfJkiWZMGECEyZM4Pfff+edd95h1KhRGAwGKleujIODAzdu3DDb58qVK3k+DoCjo2OmsbL7oSE3dcO3Eu74+HhcXFxM7Xde0zt5eHhw7do1rl+/bpZQx8fHU6xYMVPpRVpaGhMnTsTb25s///yT6OhoOnfunO247u7uXLx4MVN7fHy82WokpUqVonnz5nTs2DFTX1dX1xxjFxERESls7npn2t7ePtMd41v10Hc+LLd582acnJxMLx3Jat/U1FQy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cWm8Ui7FcbC3K+gwRETkEZKcksbVK9cLOoxC734tjacHEEVu42Bvp3WmRUTkgdoU0RY9PvrwUpmHiIiIiIiFlEyLiIiIiFhIyXQBiImJwWAwcPTo0Tztt2HDBgwGA0lJSfccw549e3jvvffueRwRERGRR5mS6UfUd999x+rVqws6DBEREZGHmpJpERERERELKZm2wLFjx+jTpw9169bF39+f5557jg8++ACAoKAg5syZY9Y/N+UZBoOBd999l9dff526detSu3Ztpk+fTmpqaqa+p06dolevXvj7+xMSEsK2bdvMPt+9eze9evWiQYMG1KpVi06dOrFnzx7T51FRUaxcuZLTp09jMBgwGAyEh4ebPt+/fz/du3enRo0a1KtXjwkTJpCYmGj6/MqVK4wfP57AwED8/Pxo2rQpEyZMyNtFFBERESkEtDSeBQYMGEClSpWYO3cuDg4OnDhxIl/qmFeuXIm/vz9z587lzz//ZN68eTg4ODB27FizfqNGjaJTp0706dOHNWvWMGLECHbs2IGXlxdwM9l+5pln6N27N7a2tnzzzTf07duXNWvWEBAQQMeOHTl58iQxMTEsWLAAADc3NwB++uknevbsSfPmzYmMjOTSpUtERERw5coVIiMjAZg1axYHDhxg3LhxlClThtjYWPbv33/P5y8iIiLysFEynUcXL17k1KlTLFq0CIPBAECDBg3yZewSJUowf/58bG1tadKkCampqSxZsoT+/fvj4uJi6vfSSy8RFhYGgI+PD40aNeKrr76ia9euAHTv3t3UNyMjg3r16vHnn3/y8ccfExAQgJeXFx4eHjg4OODv728WQ0REBDVr1uTtt982tXl6etKzZ0+OHj2Kt7c3hw8fplu3brRs2dLUp23btnk+35wWQBcREXmUuLs7F3QIj4T7cZ2VTOeRi4sLjz32GJMnT+bFF1+kXr16lC5dOl/GbtasGba2/1d506JFC95++22OHTtGnTp1TO2BgYGmP7u6uuLm5sbZs2dNbWfPnmXevHl8//33xMXFcesll7Vq1crx+NevX+fgwYNMmDCBtLQ0U3tAQAD29vb8+uuveHt7U7VqVVasWIGtrS0NGzakQoUKFp2vNb4BUd/MRESkIFjyZj7Jm/v1BkTVTOeRra0tK1aswN3dnXHjxtGoUSNeeOEFjhw5cs9j35mU3yq9iIuLM2t3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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from alibi.explainers import TreeShap\n", - "\n", - "tree_explainer_interventional = TreeShap(rfc, model_output='raw', task='classification')\n", - "tree_explainer_interventional.fit(scaler.transform(X_train[0:100]))\n", - "result = tree_explainer_interventional.explain(scaler.transform(x))\n", - "\n", - "plot_importance(result.shap_values[1], features, '\"Good\"')\n" - ] - }, - { - "cell_type": "markdown", - "id": "94c05d4f-13b8-4266-bced-510664ba7342", - "metadata": {}, - "source": [ - "### Path Dependent treeSHAP\n", - "\n", - "Path Dependent tree SHAP also gives the same results as the Kernel SHAP model only faster. Here it is applied to random forest. Again very similar results to kernel SHAP and Interventional tree SHAP as expected. " - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "aeef4572-2c4e-41ea-8298-80c95476be96", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(,\n", - "
    )" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAFECAYAAADlf7JXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABmvElEQVR4nO3deVxV1f7/8RcHAQdQQBkys5w4ehVFUXHANBQzh1TEKfXmkBOm5kzOQzlkZIKzZWmWoWV27eZsVpaRlqY3K02zUlERRQQFBM7vD3+eb0cG4YhyxPfz8fDx9ayz9tqftVfX74fNZ69tZzKZTIiIiIiISL4ZCjsAEREREZEHlZJpERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaRERERERKymZFhERERGxUrHCDkAeXpcvJ5OZWXS2OS9b1pn4+KTCDkP+QWtim7QutknrYpu0LoXPYLDDza1Ujt8rmZZCk5lpKlLJNFDk5lMUaE1sk9bFNmldbJPWxbapzENERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESnoDohRZLqVLUNzp/v0nnnYj476dS0RERGyDkmkpsoo7FaPDmE/v2/k2R3S8b+cSERER26AyDxERERERKymZFhERERGxkpJpIDw8nJCQkDv2CwgIICoq6p7EYDQaWbt27T0ZW0RERETuDdVMA2FhYaSkpBR2GCIiIiLygHlgk+mMjAwyMjJwdHS867EqVqxYABHJjRs3MBgM2NvbF3YoIiIiIvfFA1PmcasUY+fOnbRr147atWtz+PBhAHbu3ElISAi+vr40bdqU1157jRs3bpiPPXfuHCNHjqRx48bUrl2bVq1a8eabb2YZ+5/279/Ps88+i6+vLyEhIfz4449ZYgoKCmLevHkWbRs3bsRoNJKcnAzAtWvXmDlzJk8//TR16tQhKCiIGTNmkJSUlO9rsGHDBtq2bUvt2rUJCAigd+/eHD9+HICYmBiMRiPHjh2zOKZPnz6MGDHCom3t2rU0b94cPz8/wsLC2LdvH0ajkZiYGHOfVatW0aVLF/z9/WnSpAlDhgzhzz//zHbs6OhoWrVqRe3atblw4UK+5yUiIiLyoHqg7kyfOXOG+fPnExYWhoeH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kYGHh0thhyG30ZrcvZTUdK4mXi/sMEREbJKSaZEC4uhgr32mpUjaHNERVZ6LiGRPZR4iIiIiIlZSMi0iIiIiYiUl05InQUFBzJs3L9vvjEYja9euvc8RiYiIiBQ+JdMiIiIiIlZSMi0iIiIiYiUl00J4eDghISHs3LmTNm3a4OvrS8+ePfn9998LOzQRERERm6ZkWgA4e/Ysc+bMISwsjIiICJKSkhgwYACpqanmPiaTifT09Cx/RERERB5W2mdaALh8+TJLliyhXr16ANSsWZPg4GA2btxIz549AXjnnXd45513CuycZcs6F9hYInJvFfTLb/QyHdukdbFNWhfbpmRaAChbtqw5kQZ49NFHqVmzJocPHzYn088++yz//ve/sxwbGhpq1Tnj45PIzDRZF7AN0j92UpTFxRXca1s8PFwKdDwpGFoX26R1KXwGg12uNwCVTAtwM5nOri0uLs78uVy5cvj6+t7PsERERERsmmqmBYD4+Phs2zw8PAohGhEREZEHg5JpAW4mzj/++KP589mzZzl69Ci1a9cuxKhEREREbJvKPAQANzc3xo0bx0svvUTx4sWJjIzE3d2dkJCQwg5NRERExGYpmRYAypcvz5AhQ4iIiODMmTPUqlWLiIgInJycCjs0EREREZulZFrMWrduTevWrbP9bvfu3Tke99tvv92rkERERERsmmqmRURERESspDvTIgUk7UYGmyM6FnYYIgUuJVVvOhURyYmSaWHu3LmFHUKR4Ohgr431bYxediAiIveayjxERERERKykZFpERERExEpKpkVERERErKSaaZECknYjAw8Pl8IOQ26jNSl8KanpXE28XthhiIjcE0qmRQqIo4M9HcZ8WthhiNiczREd0WOgIlJUqcxDRERERMRKSqZFRERERKykZPo+2LhxI0ajkeTk5Fz79enThxEjRhTYeY1GI2vXrs21zxdffIHRaOT06dMFdl4RERGRh4Vqpouw6OhoKlSoUNhhiIiIiBRZSqaLoJSUFIoXL46fn19hhyIiIiJSpKnMowDt37+fPn36ULduXfz9/enTpw9Hjx41f3/69Gn69euHn58fbdq0Yfv27Xccc9++fXTt2hVfX1+aNGnC9OnTLcpFYmJiMBqNfP311wwZMoS6desyc+ZMIGuZh8lkIioqisaNG1O3bl3Gjx9PUlJSlnOmpqby2muv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QkJC8nRdRERERIoam0+mixcvTlBQEJs3b2bQoEFZvu/WrRupqamsWbOG9957Dy8vL8LDw+nbt2+OY/bo0YPTp0+zZs0aUlNTadq0KREREXTr1s2i34wZM5g3bx79+vUjLS3tjndzb6lfvz7vv/8+kZGRjB8/nszMTMqXL0+zZs3MZRfZiYiIYOrUqUyYMAFXV1d69epFSkoKa9euNfdxd3dn3bp1zJ8/n9mzZ5OWlsbjjz/O4MGDcxx3/PjxpKens3jxYgwGA88++yz9+vVj7ty5uc4ju/lXqFABuFlic+sHm+x+OBARERF5GNiZTKai8wSY3DcJCQk8+eSTTJkyha5du1o1RlF8ALHDmE8LOwwREZGHyuaIjnoAUR4cSUlJnDhxgjVr1lCqVCntLS0iIiIPNSXTki8///wz//73v3n00UeZN28eJUqUKOyQRERERAqNyjyk0BS1Mo8yriVxdNCuJiIiIvdTSmo6VxOv37PxVeYhcp84Otjf05otyT8PDxetiQ3SutgmrYtt0rrYPpvfZ1pERERExFYpmRYRERERsZKSaRERERERKymZFhERERGxkpJpERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaRERERERK+kNiFJoDAa7wg6hwBXFOT3otCa2Setim7QutknrUrjudP3tTCaT6T7FIiIiIiJSpKjMQ0RERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKSqZFcvHHH3/QvXt3nn76abp3786pU6ey9MnIyGDGjBm0atWK4OBgNmzYkKfvxHp3uy6LFy+mXbt2dOjQgZCQEL7++uv7GH3RdbfrcsvJkyepU6cO8+bNuw9RF20FsSaff/45HTp0oH379nTo0IGLFy/ep+iLrrtdl/j4eAYNGkSHDh145plnmD59Ounp6fdxBmLBJCI56tOnj2nTpk0mk8lk2rRpk6lPnz5Z+nzyySem/v37mzIyMkzx8fGmZs2amf7+++87fifWu9t1+eqrr0zXrl0zmUwm0y+//GLy9/c3Xb9+/f5NoIi623UxmUym9PR0U+/evU2jR482zZ07977FXlTd7ZocPnzY9Mwzz5guXLhgMplMpsTERFNKSsr9m0ARdbfr8sorr5j/95GWlmYKDQ01/fe//71/ExALujMtkoP4+HiOHj1K+/btAWjfvj1Hjx7l0qVLFv0+//xzunbtisFgwN3dnVatWrF169Y7fifWKYh1adasGSVKlADAaDRiMplISEi4r/MoagpiXQBWrFhBixYteOKJJ+5n+EVSQazJu+++S//+/fHw8ADAxcUFJyen+zuRIqYg1sXOzo7k5GQyMzNJS0vjxo0beHl53fe5yE1KpkVyEBsbi5eXF/b29gDY29vj6elJbGxsln7ly5c3f37kkUc4d+7cHb8T6xTEuvzTpk2bqFixIt7e3vc28CKuINbl119/Ze/evfTt2/e+xV2UFcSanDhxgr///ptevXrRuXNnlixZgslkun+TKIIKYl3CwsL4448/CAwMNP/x9/e/f5MQC0qmReSh9f3337Nw4UIiIiIKO5SH3o0bN5gyZQozZswwJxlS+DIyMvjtt9945513eO+99/jqq6/49NNPCzush97WrVsxGo3s3buXr776igMHDui3noVIybRIDh555BHOnz9PRkYGcPP/qVy4cIFHHnkkS7+zZ8+aP8fGxprvcub2nVinINYF4ODBg4wbN47FixdTuXLl+xN8EXa36xIXF8dff/3FoEGDCAoKYvXq1axfv54pU6bc13kUJQXxv5Xy5cvTpk0bHB0dcXZ2pmXLlhw+fPj+TaIIKoh1Wbt2Lc8++ywGgwEXFxeCgoKIiYm5f5MQC0qmRXJQtmxZatSowWeffQbAZ599Ro0aNXB3d7fo16ZNGzZs2EBmZiaXLl1i586dPP3003f8TqxTEOty+PBhRo0aRWRkJDVr1rzvcyiK7nZdypcvT0xMDLt372b37t08//zzdOvWjVmzZhXGdIqEgvjfSvv27dm7dy8mk4kbN27w3XffUb169fs+l6KkINalQoUKfPXVVwCkpaWxb98+qlWrdn8nImZ2JhU/ieToxIkThIeHk5iYSOnSpZk3bx6VK1dm4MCBjBgxAl9fXzIyMpg5cybffPMNAAMHDqR79+4AuX4n1rvbdenSpQtnzpyxeGDntddew2g0Fsp8ioq7XZd/ioqK4tq1a0yYMOF+T6NIuds1yczMZN68eXz11VcYDAYCAwOZMGECBoPuxd2Nu12Xv/76i2nTpnHx4kUyMjIICAhg0qRJFCtWrDCn9dBSMi0iIiIiYiX9aCkiIiIiYiUl0yIiIiIiVlIyLSIiIiJiJSXTIiIiIiJWUjItIiIiImIlJdMi8lCKiorCaDRm+VPQr7I+fPgwUVFRBTrmvXbt2jVGjRpFQEAARqORjRs3ArB+/XqCgoL417/+RZ8+fQrsfJ9//rn5HHfrxIkTPPfcc/j5+WE0Gjl9+nSBjJsfMTExGI1Gjh07dt/P/U+nT582X4ONGzcSFBSUpc/ff//NlClTCAoKolatWvj7+9OjRw/efvttkpOT71usI0aMsPhv6p/xhoeHEx4eft9iEckvbUgoIg8tFxcX3nrrrSxtBenw4cMsWrSI4cOHF+i499K6dev44osvmDdvHl5eXlSsWJG4uDimT59Or169aNOmDWXKlCmw823dupXLly8TEhJy12O99tprXL16laVLl1KiRAk8PT0LIMKi6cCBAwwaNIjHH3+cIUOG8MQTT3Dt2jW+++47Fi9ezNWrV3nppZcKO0wRm6dkWkQeWvb29vj5+RV2GPmSkpJC8eLF7+k5Tp48SaVKlSze1nngwAEyMjLo0qWLTb8B7+TJkwQFBdG4ceO7GsdkMpGWloaTk1MBRWZbUlJSGDVqFH5+fixfvhwHBwfzdy1atKB///4cOXKkECMUeXCozENEJAcbNmygXbt21KpVi6eeeoqVK1dafH/w4EGGDBlCYGAgfn5+dOzYkf/85z/m7zdu3Gh+HfatMpJbv8oODw/Pcif21q/lv/jiC3Ob0WjknXfe4dVXX6VRo0Z06NABgNTUVF577TWaN29OrVq1ePbZZ/nyyy/vOKc7HRcUFMRHH33E0aNHzTFHRUXRq1cvADp27GhR+pHXONavX0+HDh3w9fWlSZMmjBgxgqtXrxIeHs62bdv4/vvvLc4HNxP45557jnr16lGvXj06duzIli1bsp3XrWv3119/8e6771pca4C1a9fSunVratWqRXBwMO+++67F8VFRUQQEBHDgwAG6dOmCr69vjucC+PXXXxkyZAj169enbt26hIaGmt9Ul51Vq1bRpUsX/P39adKkCUOGDOHPP/+06HOn+e7atYuQkBD8/Pxo0KABXbt25fvvv8/xnLnZsmULFy5c4OWXX7ZIpG/x9PSkZcuWFm2ff/45HTp0oFatWjRv3pwFCxaQnp5u0eeXX37h+eefp06dOjRo0IAxY8Zw8eJFiz6xsbEMHDiQ2rVrExQUxIYNG6yag4it0J1pEXmo3Z4M2NvbY2dnx1tvvcWCBQt44YUXaNiwIT///DMLFy6kRIkS9O7dG4CzZ89Sr149evbsiaOjIz/++CMTJ07EYDDQvn178x2+VatWER0dDYCzs3O+Y3z77bepX78+r732GrdeWjtixAgOHz7M8OHDqVixIlu2bGHo0KF8/PHH1KhRI8ex7nTcokWLePPNN/n777+ZM2cOAN7e3ri7uzNz5kxef/11HnvsMSpWrJjnOJYsWUJkZCTPPfcc48aNIyUlhT179nDt2jXCwsI4e/YsV69eZdq0aebzJSUlMWTIEFq2bMmwYcMwmUwcO3aMq1evZjsvT09PoqOjefHFFwkICKBPnz7ma71+/XpmzZpFv379CAwMJCYmhrlz55KWlsagQYPMY6SkpBAeHs4LL7zAE088kWOJyIkTJ+jZsyeVKlVixowZuLq68r///Y/Y2Ngcr/u5c+fo3bs35cuXJykpiQ8//JAePXqwfft2XFxc7jjfv/76i5EjR9KnTx/GjRtHWloa//vf/7hy5UqO56xQoQK//fab+e///OFt//79eHl5Ua1atRyP/6e9e/cyatQoOnXqxLhx4/jtt99YuHAhly9fZubMmQBcunSJPn36UKVKFSIiIkhOTiYiIoJ+/frx8ccf4+joiMlkIiwsjMuXL/Pqq6/i5OREVFQUCQkJPPHEE+bzhYSEmOOdO3dunmIUKTQmEZGHUGRkpMnHxyfLn2+++cZ09epVk5+fnykqKsrimDfffNPUpEkTU3p6epbxMjMzTTdu3DBNmTLF1KdPH3P7e++9Z/Lx8cnSf8KECabOnTtbtP39998mHx8f0+7du81tPj4+pk6dOln0+/bbb00+Pj6mmJgYi/bnnnvONHz48BznnNfjsovtu+++M/n4+Jh+++23fI135coVU+3atU2zZ8/OMa7hw4ebevfubdF2+PBhk4+Pj+nq1as5Hpedp556yjR37lzz54yMDFNgYKApPDzcot+0adNM9erVM6WkpJhMpv/772HHjh13PMeoUaNMzZo1M12/fj3b77O7Vv+Unp5uun79usnPz8/0ySefmEymO893y5YtpoYNG94xtrwaMGCAqVu3blnab9y4Yf7zz//Ou3btmmWNVqxYYapevbopNjbWZDKZTPPnzzf5+/tbzOHQoUMmHx8f0+bNm00mk8m0Z88e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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "path_dependent_explainer = TreeShap(rfc, model_output='raw', task='classification')\n", - "path_dependent_explainer.fit()\n", - "result = path_dependent_explainer.explain(scaler.transform(x))\n", - "\n", - "plot_importance(result.shap_values[1], features, '\"Good\"')\n" - ] - }, - { - "cell_type": "markdown", - "id": "d7ccd4c7-b4b9-4b3b-bf5e-75aeb8653bc7", - "metadata": {}, - "source": [ - "### Note:\n", - "\n", - "There is some difference between the kernel SHAP and integrated gradient applied to the tensorflow model and the SHAP methods applied to the random forest. This is to be exected due to the combination of different methods and different models. They are reasonably similar overall however. notably the ordering is nearly the same." - ] - }, - { - "cell_type": "markdown", - "id": "fecdab93-3226-4b76-a0d0-e01b740b865e", - "metadata": {}, - "source": [ - "## Local Necessary Features" - ] - }, - { - "cell_type": "markdown", - "id": "9c32759e-e66f-4af9-91af-e5d1deb01019", - "metadata": {}, - "source": [ - "### Anchors\n", - "\n", - "Anchors tell us what features need to stay the same for a specific instance in order for the model to give the same classification. In the case of a trained image classification model, an anchor for a given instance would be a minimal subset of the image that the model uses to make its decision.\n", - "\n", - "Here we apply Anchors to the tensor flow model trained on the wine-quality dataset." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "0e36d1c9-49e1-4da8-9bc8-da312e2b31b2", - "metadata": {}, - "outputs": [], - "source": [ - "from alibi.explainers import AnchorTabular\n", - "\n", - "predict_fn = lambda x: model.predict(scaler.transform(x))\n", - "explainer = AnchorTabular(predict_fn, features)\n", - "explainer.fit(X_train, disc_perc=(25, 50, 75))\n", - "result = explainer.explain(x, threshold=0.95)" - ] - }, - { - "cell_type": "markdown", - "id": "1600dade-52d0-40b8-a29c-d8279bbb1a94", - "metadata": {}, - "source": [ - "The result is a set of predicates that tell you weather an point in the data set is in the anchor or not. If it is in the anchor then it is very likely to have the same classification as the instance `x`." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "3b3722d3-f837-4343-a2de-c7f4d4849223", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Anchor = ['alcohol > 10.10', 'volatile acidity <= 0.39']\n", - "Precision = 0.9558665231431647\n", - "Coverage = 0.16263552960800667\n" - ] - } - ], - "source": [ - "print('Anchor =', result.data['anchor'])\n", - "print('Precision = ', result.data['precision'])\n", - "print('Coverage = ', result.data['coverage'])" - ] - }, - { - "cell_type": "markdown", - "id": "92a91fed-7171-4dae-abd4-9e8709bb5aa8", - "metadata": {}, - "source": [ - "## Global Feature Attribution" - ] - }, - { - "cell_type": "markdown", - "id": "3a604116-6772-469d-b251-05fb920f6fb7", - "metadata": {}, - "source": [ - "### ALE \n", - "\n", - "ALE plots show the dependency of model output on a subset of the input features. They provide global insight describing the model's behaviour over the input space. Here we use ALE to directly visualize the relationship between the tensorflow models predictions and the alcohol content of wine.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "3596db3d-40bb-42e4-9b59-1ae18f6be64f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[]], dtype=object)" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAz4AAAJHCAYAAABRkYNlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABZLElEQVR4nO3dd2DU9eH/8dfdZe89SEgCBELYy4EMBVRAGYpVKmqts9bRaltbf9a6qt9Wu7RVpLZuFK2VIQgyRAQcKIJsMoAkkE32Tu7u8/sjmIoCMpJ8bjwf/8CN3L2SN3e5F+/35/2xGIZhCAAAAAA8mNXsAAAAAADQ1Sg+AAAAADwexQcAAACAx6P4AAAAAPB4FB8AAAAAHo/iAwAAAMDj+ZgdwAxVVQ1yOtnF22zR0SGqqKg3OwZOAmPlPhgr98A4uQ/Gyn0wVu6jK8fKarUoMjL4mLd5ZfFxOg2Kj4tgHNwHY+U+GCv3wDi5D8bKfTBW7sOMsWKpGwAAAACPR/EBAAAA4PEoPgAAAAA8nlce43MsDoddVVXlsttbzY7iNcrKrHI6nWbH8Hg+Pn6KjIyVzcbLHQAAeC8+CR1RVVWugIAgBQcnyGKxmB3HK/j4WGW3U3y6kmEYamioVVVVuWJiEs2OAwAAYBqWuh1ht7cqODiM0gOPYrFYFBwcxkwmAADwehSfb6D0wBPx7xoAAIDiAwAAAMALUHxc1A9+MF1z5lyh66+/Wtddd5XWrFl5yo/xwgv/1DPPPHXKX3fnnbfq4483HPO2P/7x99q2bask6fHHH9Y777wlSVq8+L96663XJUk5OVn64IPVp/y83+f55+dqzpwrdPvtNx8zc3FxUcef3WH58qV64IFfd/z9hRf+2fHnqfjBD6Zr//7crogIAACAI9jc4AzlFtYoq6BKGSmRSk8K79THfuyxJ9S7d7qys/fqtttu0qhR5ygiIqLjdrvdLh+f7h3C++773TGvv+yyH3T8PScnW598skGTJl3Uqc/95puv6513likyMrJTHxcAAACej+JzDB/vKNbG7cXfe7+mFrsOltfLMCSLReoZG6JA/xP/SMcOSdSYwae2u1a/fv0VFBSk4uJCPfvsU7LZbCooyFdjY6NefvkNzZ//slauXC5JyswcqLvvvldBQUGSpNLSEv3sZ7fp8OFy9erVW//v/z2kkJAQbd78uf71r+fU2toih8OhH/3oRl144eSO59y8+XO9/PK/VFtbq4kTL9JPfnKHpPaZlauvvk5jxow7KuMLL/xTTU1Nuu66H+vf/56nxsYG/fjHczRs2HDFxcWruLhYv/zlbyRJlZUVuv76q7Vo0VL5+Pgf9TifffaJ/vnPZ+R0OhUREal7771fyck9dfvtN6u1tUV33/1TnX32aN1xx8+P+rqwsHBZrdaOPyVp27at+stf/iiLxaLhw0dpw4Z1+tOfnlLv3unas2eXnnrqz2publJAQKDuvvtXyswcKElasWKZFix4TRaLRT16JOvXv75fkZFRamtr09/+9qS2bNms8PAI9e2b0fH8/v7+CgwM6vjzWHbu3K5nn31ajY2NkqQ77vi5zj773KPus2DBfH3wwSo5HHb5+fnrV7+6T337Zqi5uVmPPfaQ8vL2y2bzUUpKqn7/+z+qoCBPjz/+iJqbm+V0OjR16nTNmXPdif9BAQAAeCGKzxlobLHLMNr/bhjtl7+v+JyOLVs2q7W1VcnJKZLaZ1SeeeZ5BQYG6tNPP9bKlcs1b96LCgoK1mOPPaSXX/63br/9Z5Kk7du36qWX3lBUVLT+7/8e0csv/1t33nm3+vXrr7lz/y2bzabKygrddNN1Ovvs0QoLC5Mk5eXt13PPvajW1lbddtsNGjRoyHfKzrGEh0fo5ptv0yefbNBjjz0pSaqtrdG1116ln/70LgUFBenddxfpoosmKyAg8KjtrKuqKvXYYw/qH/94Xr169dayZYv1yCMP6F//ekVz5/5bY8eO0nPPvdhR6r7p//7vT0f92draqocf/q0efvhxDR06XB999KH++983JUltbW367W9/rfvvf0ijRp2tL77YpN/+9td6663FOngwX/PmPaMXXpivmJgY/etfz+lvf/uTHn30D1qy5B0VFxdp/vy3Zbfbdccdtygxsb3ETpp08Ql/LrW1Nbr//nv1+ONPavDgoXI4HGpoaPjO/aZMuVRXX32tJOmLLzbpT3/6g55//mVt2vSpGhsbNH/+20cer1aStHDhfzV27Hhdd90NR10PAACAo1F8jmHM4JOblcktrNGfFmyVw+GUzWbVrTMGdupytwce+I38/PwVHBysxx9/QqGhoZKkCy6YpMDAQEntMzOTJl2s4OAQSdKMGbP09NN/7niM884bp6ioaEnStGkz9dRT7cWgurpKf/jDozp0qEA2m49qa2tUUJCvQYMGS5KmTp0mHx8f+fj4aNKki7VlyxcnVXyOJSwsXGPGjNfKlcs1ffplevfdRXr66ee+c79du3aqT59+6tWrtyTpkktm6C9/eUKNjQ0KCgo+pecsKMiXv7+/hg4dLkk6//wJCgkJ7bjN19dXo0adLUk666xz5Ovrq4KCfG3dulmjR49RTEyMJGnmzFn68Y/nSJK2bPnyqJ/L5MlTtX37VyeVZ+fOHUpL66XBg4dKkmw2W0fJ/KasrD167bWXVFtbI6vVqoMHCyRJ6el9lZd3QH/5yxMaPnykzjtvrCRp2LDhmjv372pubtaIEaM0YsSoU/o5AQAAeAuKzxlITwrXvVcP7/JjfL4tKCjwjB/7L3/5o8aMGa//+78/yWKx6Ic/nKXW1pYzftzj+cEPZuvRRx9QZGSk0tJ6qWfPlC57LnfV1tam3/3uN3rmmX8pI6O/Dh8u12WXTZUkJSUla/78/2jz5i/02Wcf6/nnn9Urr7ypCy6YpEGDhujzzz/T/Pkv67333tWDD/7e5O8EAADA9bCr2xlKTwrXpaPTOr30nKxRo87W2rWr1djYIMMwtGzZYp111jkdt3/yyUZVVVVJat95bMSIsyRJdXV1SkxMlMVi0RdffKbCwoNHPe7KlStkt9vV1NSktWvXdHzdyQgODlZ9ff1R1/Xpk66wsHD9/e9/1axZVx7z6wYOHKx9+7KVn58nqf1Ym759M055tkeSUlJS1dzc3DEjs2HDOtXX13Xc1tbWpi1bNkuSvvzyC9ntdqWkpGrEiFH69NOPVVFxWJK0dOlinXVW+8zQyJGj9P77y2W329XS0qzVq98/6TyDBg1WXt4B7dy5XZLkcDi+syzt6+Ot4uLiJUkLF77dcVtZWamsVpvGj79AP/vZL1VdXaW6ulodOnRQUVHRuuSS6brhhlu0e/euU/5ZAQAAeANmfNzc6NFjtG9fjn7yk/ZjPPr3H6Drr7+p4/ahQ4fr4YfvV3l5mdLSeuvOO++RJP30p3fqL395Qi+88LwyMweoT5++Rz1uamqqfvrTGzs2NziVZW4jR56tBQvm6/rrr9bw4SN09933SpKmT79M//znszrvvGM/VmRkpB544FE98shv5XA4FBERedqzF35+fnroocf05z//QRaLRcOGjVBkZJSCg0Pk6+urxx9/8qjNDR577An5+vqqd+903XbbnbrnnjuObG6QpHvvvV9S+zLC3NxcXXvtlQoPj1D//gNVVVVxUnnCwsL1+ONP6h//+Juam5tksVh1xx0/P6qkBgeH6KabfqJbbvmRwsLCNWHCpI7b9u3L1bx5z0iSnE6Hrr32x4qJidWrr76oVavel6+vjywWi37+81+e1s8LAADA01kM4+vD871HRUW9nM6jv+2SknwlJKSalMg7/PGPv1dKSqrmzPmRJMnHx3rU5gad7ZvHBm3ZslmPP/6w3n773Y5d37zJmf77jo0NVXl5XScmQldhrNwD4+Q+GCv3wVi5j64cK6vVoujokGPexowPutzhw+W6666fKDo6pmP2pzusW7dWb731hgzDKT8/fz300GNeWXoAAABA8UE3iImJ1YIFC7v9eS+5ZLouuWR6tz8vAAAAXA///f0NXrjqD16Af9cAAADM+HSwWm1yOOzy8fE1OwrQqRwOu6xWm9kxAACAB3I6DX2xt1TFlY0a1CvatJ2OTwbF54jAwBDV1VUrIiJaFgsTYfAMhuFUXV2VAgOPfZAfAADAyXIahkorG5VXUqe84jrll9TqQHGd2hztm1Wt+KxA91493GXLD8XniJCQcFVVlau09JAklgZ1B6vVKqez63Z1gyRZ5OcXoJAQ13wDAgAArslpGCqralJecW170SmpU0FpnZpbHZIkPx+rUuJDlRIfov1FtTIkORxOZRVUUXxcncViUVRUnNkxvArbTgIAAJjPMAyVVTcdmcWpU15JrfJL69TU0l5yfH2sSokL0XmDEpSWEKa0xFAlRgfJZrUqt7BGf1qwVQ6HUzabVRkpkSZ/N8dH8QEAAAC8hGEYKq9pVl5x7ZGS0152GlvskiQfm1U940J07sAEpcWHKi0xTInRQfKxHftQkPSkcN179XBlFVQpIyXSZWd7JIoPAAAA4JEMw1BFTXPHUrW8kvay09D8dcmxKDk2RGcPiFdaQqjSEkLVIyb4uCXneNKTwl268HyN4gMAAAC4OcMwVFnboryS/x2Tk19Sp/qmNkmSzdpeckb1j1NqQqh6JYQpKfbUS447o/gAAAAAbsQwDFXVtXTM4ny9y9o3S05STLBG9ItRakKY0hJClRwbIl8f7yk5x0LxAQAAAFxYe8mpbd98oLROecW1qm1sLzlWi0U9YoI1rG/MkeVqYeoZFyxfH87h920UHwAAAMBFVNcfmcn5xuYDNQ2tkiSLReoRE6zBfaLbd1dLCFXPuBD5+VJyTgbFBwAAADBBTUOr8o/M5Hy9bK26/n8lJzE6WAN7Rf1vJic+RP6UnNNG8QEAAAC6WG1ja/sMzjdOCFpV1yJJskhKiA5SZmqk0hLClJrQfmLQAD8+qncmfpoAAABAJ6r7uuR07K5Wq4ralo7bE6KClNEzQmkJoUdKTqgC/flY3tX4CQMAAACnqb6p7UjJqe3YQvpwTXPH7fGRgeqTFK5JI9uPyUmJD1VQAB/BzcBPHQAAADgJDc3tJSe/pE4HjszklFf/r+TERQSqV2KYJoxIal+yFh+ioABfExPjmyg+AAAAwLc0Ntvbt44uObK7WnGdyqqbOm6PCQ9QWkKozh+W1LFkLZiS49IoPgAAAPBqTS12FZTW6cA3zpNTWvW/khMdFqC0xFCNG5rYsflASCAlx91QfAAAAOA1mlvtKiitb99drbR9Jqe0slHGkdujwvyVlhCm8wYnqteRmZzQID9TM6NzUHwAAADgkVpaHSooqzvqPDklFf8rOZGh/kpLCNW5A+M7TggaFkzJ8VQUHwAAALi95la7cgtrOs6Tk19Sp6KKBhlHWk54iJ96JYTp7Mz4IycEDVV4iL+5odGtKD4AAABwK61tDh0sq++YxWkvOY1yOttbTliwn9ISQjUyI7bjmJzIUEqOt6P4AAAAwGW12R06WNag/JLaI1tI16mwvEHOI1M5oUG+SksI05hhSYoL9VdaYpgiQvxksVhMTg5XQ/EBAACAS2izO3WovP6oE4IWljfIcWQmJyTQV2kJoRqaHq3U+DD1SmyfybFYLIqNDVV5eZ3J3wFcGcUHAAAA3c7ucKqwvKGj4OQV1+lQeX1HyQkO8FFaQqimnJOi1PhQpSWGKjosgJkcnDaKDwAAALqU3eFU0eGGI8fktJ8n51B5veyO9pIT5O+j1IRQXXx2z47d1WLCKTnoXBQfAAAAdBqH06miw41HnSfnYFm97A6nJCnQ30ep8SG6cFTPjt3VYiMCKTnochQfAAAAnBaH06niikblFdd1HJdTUFavNnt7yQnwsyk1PlSTRiZ1zOTERgbKSsmBCSg+AAAA+F5Op6HiyvaZnPwjS9YKSuvUeqTk+B8pOROGJyktIVSpCaGKjwqi5MBlUHwAAABwFKdhqLSyfSbnwJHz5BSU1qulzSFJ8vO1KjU+VOOH9VCvI+fJSYgKktVKyYHrovgAAAB4MadhqKyqqf2YnCMzOfmldWppPVJyfKxKiQ/V2CGJHcfkJEYHU3Lgdig+AAAAXsJpGCqvajpScNpncvJL69TU0l5yfH2sSokL0ZhBCe3H5CSGKjE6SDar1eTkwJmj+AAAAHggwzBUXt30v1mcI382tdglST42q3rGhejcAQntMzmJYUqMDpKPjZIDz0TxAQAAcHOGYehwTbPyS9qPyckrbt94oKH565JjUXJsiM4ZEN+xXK1HTDAlB16F4gMAAOBGDMNQRW1zxwzO18fmfF1ybNb2kjOqf5xSE0LVKyFMSbGUHIDiAwAA4KIMw1BVXYsOFNcpv7R9JievpE71TW2S2ktOUkywRmbEKvXIeXKSY0Pk60PJAb6N4gMAAOACDMNQdX3rUbur5ZXUqq6xveRYLRb1iAnWsL4xR5arhalnXLB8fWwmJwfcA8UHAADABNX1LUdmcP5XdGobWiVJFovUIyZYQ/pEt++ulhCqnnEh8vOl5ACni+IDAADQxWoa2mdyvj4u50BJrWrq/1dyEqODNahX1DdmckLk70fJAToTxQcAAKAT1Ta0HnWenLySOlXVtUiSLJISooM0IDVSaQlhSk0IVUp8iAL8+EgGdDVeZQAAAKeprrH1yBbSX58np1aVtS0dtydEBSmjZ4TSEkKPlJxQBfrz8QswA688AACAk1Df1NZRbtq3ka5TRW1zx+3xkYFKTwpX2sj2Y3JS4kMVFMBHLcBV8GoEAAD4lobm9pJTvqNEu3LLlVdSp8M1/ys5cRGB6t0jTBNHJiktvn02JyjA18TEAL4PxQcAAHil3MIaZRVUKTU+VDarRXml7bM4+SV1Kqtu6rhfTHiA0hJCdcHwpI4la8GUHMDtUHwAAIDX2ZZ7WP94Z7ucxtHXR4e1l5xxQxOVlhCmEQMT1dLYcuwHAeBWKD4AAMBrOA1DG7cX6/VV2UeVnrGDE3TlhHSFBvkddf+wYD+VU3wAj0DxAQAAXqHocINefX+vsg/VqGdciEoqGuVwOmWzWTV+WNJ3Sg8Az0LxAQAAHq3N7tB7n+brvU/zFeBn04+n9tfYIYnaX1SrrIIqZaREKj0p3OyYALoYxQcAAHisvflVemVllkorG3XugHj9cFJfhQW3z+ykJ4VTeAAvQvEBAAAep76pTf9Zm6uNO4oVEx6gX1w1VIN6R5sdC4CJKD4AAMBjGIahz3aV6s21OWposmvquSmaMaaX/H1tZkcDYDKKDwAA8AhlVY16bWWWduVVqVdimH45O0Mp8aFmxwLgIig+AADArdkdTq38vEDvfpwnm9Wiay7qpwnDk2S1WsyOBsCFUHwAAIDb2ldYo1fe36tD5Q0a0S9Wcy7sq6iwALNjAXBBFB8AAOB2mlrseuejffpwS6EiQv1156zBGtEv1uxYAFwYxQcAALgNwzC0Jbtcr6/OVk19qyaOTNas8b0V6M9HGgAnxrsEAABwC5W1zZq/Kltf5R5Wz7gQ3TlriHr3CDM7FgA3QfEBAAAuzek09MGXh7Rww34ZTkNXTuiji0b1lI/NanY0AG6E4gMAAFxSbmGNPttVot15VSqpbNSgXlG6bnKGYiMCzY4GwA1RfAAAgMvJOVitJxZsldNpSJJmjk3TjDG9ZLGwRTWA08McMQAAcCn1TW16cfmejtJjtUg+NiulB8AZYcYHAAC4jILSOj2zcIcqa5tls1pkGIZsNqsyUiLNjgbAzVF8AACAS/h0V4leWbFXQQE++n/XjpQhKaugShkpkUpPCjc7HgA3R/EBAACmsjuc+s+HuVqz+ZD6JYfrp5cPVniwnyRReAB0GooPAAAwTU1Dq55bvFPZB6t14ahkXTUhnW2qAXQJig8AADDFvsIaPbtohxqb7bpl2gCNHpRgdiQAHoziAwAAupVhGProqyK9vjpbkaH+uv+6kUqJDzU7FgAPR/EBAADdps3u0PxV2dqwvViDekXp1hkDFRLoa3YsAF6A4gMAALpFZW2znl20QweK6zTtvFRdNra3rFbOzQOge1B8AABAl9uTX6V5S3aqze7UnbMGa0S/WLMjAfAyFB8AANBlDMPQqi8O6u0P9yk+KlB3zhqsxOhgs2MB8EIUHwAA0CVaWh16acUefb6nTCP7xerGSzMV6M9HDwDm4N0HAAB0utKqRj2zcIeKDjfoivN765JzU2WxcDwPAPNQfAAAQKfalntYzy/dLatFuueqoRrUK9rsSABA8QEAAJ3DaRha9nGelmw8oJ7xIbrz8sGKiQg0OxYASKL4AACATrBzf6UWrMlWcWWjRg9M0PVTMuTnazM7FgB0oPgAAIAzsvbLQ5q/OluSZLNadMHwHpQeAC6H4gMAAE5LY3Ob/vPhPq3fVtRxnWEYyj5Yrb7JEeYFA4BjoPgAAIBT9mVWmeavylZtY6vOGRCvLdnlcjicstmsykiJNDseAHwHxQcAAJy0qroWvb46W1uyy5USF6KfXzlEaQlhyi2sUVZBlTJSIpWeFG52TAD4DooPAAD4Xk7D0PptRXr7w1zZHYZ+cEEfXXxWT/nYrJKk9KRwCg8Al0bxAQAAJ1Rc0aBX3s9S9sFq9U+J0PVT+ys+MsjsWABwSig+AADgmOwOp1ZsKtDSj/Pk52PVDVP7a+yQRFksFrOjAcApo/gAAIDv2F9Uq5dX7NGh8gaN6h+nay7sq/AQf7NjAcBpo/gAAIAOza12LVp/QGu+PKiIEH/dNWuwhveLNTsWAJwxig8AAJAk7dhfoVffz1JFbbMmDE/SFef3UVAAHxUAeAaXejc7cOCA7rvvPlVXVysiIkJPPPGE0tLSjrrPs88+q+XLl8tqtcrX11f33HOPxo0bZ05gAAA8QF1jq978IEef7ipVYnSQ7rtmhPr1jDA7FgB0KpcqPg899JDmzJmjmTNnasmSJXrwwQf16quvHnWfIUOG6MYbb1RgYKD27t2ra6+9Vhs3blRAQIBJqQEAcE+GYeiz3aVasCZHTS12TT8vTdPOS5Wvj83saADQ6axmB/haRUWFdu/erWnTpkmSpk2bpt27d6uysvKo+40bN06BgYGSpIyMDBmGoerq6u6OCwCAWztc06S/vb1N/1q6W3GRgXrohrN0+fjelB4AHstlZnyKi4sVHx8vm639DddmsykuLk7FxcWKioo65tcsXrxYKSkpSkhIOKXnio4OOeO86ByxsaFmR8BJYqzcB2PlHswaJ4fT0Hsb9+u1FXskSbdeNliXjOklm5Utqo+H15T7YKzchxlj5TLF51R9/vnnevrpp/Xiiy+e8tdWVNTL6TS6IBVORWxsqMrL68yOgZPAWLkPxso9mDVOh8rq9dKKvTpQXKshfaJ13cUZig4PUGVFfbdncRe8ptwHY+U+unKsrFbLcSc5XKb4JCYmqrS0VA6HQzabTQ6HQ2VlZUpMTPzOfbdu3ap7771Xc+fOVe/evU1ICwCA+2izO7T0kzyt+KxAgf4+unXGAJ2TGc+JSAF4FZcpPtHR0crMzNSyZcs0c+ZMLVu2TJmZmd9Z5rZ9+3bdc889+vvf/66BAwealBYAAPeQfbBaL6/Yq5LKRp03KEGzJ6YrNMjP7FgA0O1cpvhI0sMPP6z77rtPc+fOVVhYmJ544glJ0i233KKf/exnGjx4sB555BE1NzfrwQcf7Pi6J598UhkZGWbFBgDA5TQ22/Xfdbla91WRYsID9IvZQzWoV7TZsQDANBbDMLzuYBeO8XENrMV1H4yV+2Cs3ENXj9OW7HLNX5WlmoZWXXxWT102trf8/dit7XTwmnIfjJX78PpjfAAAwOnLLazRVzmHta+oRlkF1eoZF6K7rhiiXolhZkcDAJdA8QEAwM3lHKrWk29slePIaoYLhvXQnIv6ycfmMqfrAwDT8Y4IAIAba2lz6PVV2R2lx2KRosMDKD0A8C3M+AAA4KbKq5v07MIdKiirl9VqkQxDNptVGSmRZkcDAJdD8QEAwA3t3F+hf767S4Yh3X3lEAUF+CqroEoZKZFKTwo3Ox4AuByKDwAAbsRpGFr+ab4Wrd+vpNgQ3TlrkOIigySJwgMAJ0DxAQDATTS12PXvZbu1Neewzh0Qr+un9pe/L9tUA8DJoPgAAOAGCg836JmFO1Re1aSrL+yrC0cmy2KxmB0LANwGxQcAABe3eW+ZXnhvj/z9bLr36mFsXgAAp4HiAwCAi3I4nVr40X6t2FSgPj3CdPvlgxUZ6m92LABwSxQfAABcUF1jq+Yt2aU9+VWaMDxJP5zUV74+nJsHAE4XxQcAABdzoLhWcxftUE1Dm264pL/GDelhdiQAcHsUHwAAXMiGbUV6bVW2woN9df91I5SWEGZ2JADwCBQfAABcQJvdqQVrsrXuqyJlpkbqtpkDFRrkZ3YsAPAYFB8AAExWVdeiuYt2aF9Rraaem6JZ43vLZuV4HgDoTBQfAABMlFVQpecW71SL3anbLxukUf3jzI4EAB6J4gMAgAkMw9DqzYf0n7W5io0M1L2zBispJtjsWADgsSg+AAB0o9zCGq3ZUqivssu0O69Kw/vG6OZpAxToz69kAOhKvMsCANBNcgtr9Kc3tqrN4ZQkXTCsh66dnCGrxWJyMgDwfBw5CQBAN3AahpZ9ktdReiwWKTo8gNIDAN2EGR8AALpYeXWTXnxvj7IOVstikSySbDarMlIizY4GAF6D4gMAQBcxDEPrtxXpzbW5ski6YWp/JUQHqbCyScnRQUpPCjc7IgB4DYoPAABdoKquRS+v2Ksd+yvUPyVCN16aqZjwQEnSecN7qry8zuSEAOBdKD4AAHQiwzC0aXepXl+drTa7U3Mu7KuJI5M5lgcATEbxAQCgE+QW1mhb7mHlFtYoq6BafXqE6aZpA5QQFWR2NACAKD4AAJyx3MIaPfnGFtkdhiRpwvAkXXNRP1mtzPIAgKtgO2sAAM6Aw+nUf9bmdpQei0WKCvOn9ACAi2HGBwCA01TT0Kp5i3cqt7DmyDE8BttUA4CLovgAAHAacgtrNHfRDjU223XLtAGKjQxUVkGVMlIi2aYaAFwQxQcAgFNgGIY+3FqoBWtyFBXmr/uvG6mU+FBJovAAgAuj+AAAcJJa2hx6bWWWPtlZoiF9onXL9AEKDvA1OxYA4CRQfAAAOAll1U16duEOHSqr12Vje2namDTOzQMAboTiAwDA99i+77Cef3e3JOnnVw7RkD4xJicCAJwqig8AAMeRc6haizcc0J78KqXEhej2WYMVFxFodiwAwGmg+AAAcAx78iv15ze/kmFIVos0e1I6pQcA3BgnMAUA4Fvqm9r0wnt7ZBj/u25/Ua15gQAAZ4wZHwAAvqGytll//c821dS3yMdqkdPgpKQA4AkoPgAAHFF4uEF/fesrNbfa9cvZw+XjY+WkpADgISg+AABIyj1Uo6f/u00+Nqt+M2cEJyUFAA9D8QEAeL2tOeWat2SXokL99YvZwxTLJgYA4HEoPgAAr7Z+W5FeeX+v0hJC9fMrhyosyM/sSACALkDxAQB4JcMwtOzTfC1av1+DekXp9ssHKcCPX4sA4Kl4hwcAeB2n09Aba7K1dkuhRg+M1w2XZMrHxhkeAMCTUXwAAF6lze7Uv5bu0uasck05O0U/mNBHVovF7FgAgC5G8QEAeI3GZrueWbhdewuqddWEdE05J8XsSACAbkLxAQB4ha9yyvXK+1mqa2zVLdMGaPSgBLMjAQC6EcUHAODxPt9TqnlLdkmSfGwWxUayXTUAeBuO5AQAeLR9hTV68b09HZedTkNZBVUmJgIAmIEZHwCAx9qaU65/Ltml4AAfGU12OZxO2WxWZaREmh0NANDNKD4AAI+0bmuhXluVpdT4UN195VCVVTcpq6BKGSmRSk8KNzseAKCbUXwAAB7FMAwt3nBASz/J05A+0bpt5kAF+PkoLNiPwgMAXoziAwDwGHaHU6++n6WNO4o1bkiifjQlQzYrh7MCACg+AAAP0dxq19zFO7Vzf6VmjEnTzLG9ZOHEpACAIyg+AAC3V9PQqqfe3qaC0jpdPyVD5w9LMjsSAMDFUHwAAG6ttLJRf/3PV6qpb9VdVwzRsPQYsyMBAFwQxQcA4Lb2FdXo6be3S5LunTNcfXqweQEA4NgoPgAAt/RV7mHNW7xT4SF++sVVwxQfFWR2JACAC6P4AADczkdfFerVlVlKOXKOnvBgP7MjAQBcHMUHAOA2DMPQko0H9O7HeRrcO1o/vaz9HD0AAHwfflsAANyC3eHUqyuztHF7scYObj9Hj4+Nc/QAAE4OxQcA4PJaWh16bslObd9XoennpemycZyjBwBwaig+AACXVtvQqqf/u015JXX60ZQMXcA5egAAp4HiAwBwWZ/vKdVrK7PU0ubQnbMGa3jfWLMjAQDcFMUHAOCSdudVat6SXZIkH5tFoUHs3AYAOH0cFQoAcEkL1+/v+LvTaSiroMrENAAAd8eMDwDA5ezKq9T+olpZLRZJhmw2qzJSIs2OBQBwYxQfAIBLaWy266Xle5QYHaTrLu6nfUW1ykiJVHpSuNnRAABujOIDAHApb36Qo6q6Fv32ulHq3SNM/VOjzI4EAPAAHOMDAHAZX+Ue1sYdxbrk3FT17hFmdhwAgAeh+AAAXEJ9U5teWbFXybHBmjGml9lxAAAehuIDAHAJr6/OVn1Tm26eNkC+Pvx6AgB0Ln6zAABMt3lvmTbtLtX0MWlKiQ81Ow4AwANRfAAApqptaNWrK7OUmhCqS85NNTsOAMBDUXwAAKYxDEOvvL9Xza0O3Xxppnxs/FoCAHQNfsMAAEzz2a5Sbc05rMvH91JSbIjZcQAAHoziAwAwRVVdi15fna30pHBNPivF7DgAAA9H8QEAdDvDMPTSij2yO5y66dJMWa0WsyMBADycj9kBAADeJbewRu9vKtDO/ZWac2FfxUcFmR0JAOAFKD4AgG6TW1ijP72xVW0OpywWKTWBrasBAN2DpW4AgG6zJ69SbQ5nx+Xsg9XmhQEAeBWKDwCg25RWNUmSLJJ8bFZlpESaGwgA4DVY6gYA6BY7D1To050lGpYerT5J4cpIiVR6UrjZsQAAXoLiAwDocjX1Lfr30t3qEROsn8wcJH9fm9mRAABehqVuAIAu5XQaen7pbjW3OnTbzIGUHgCAKSg+AIAu9d5n+dqTX6U5F/VTUmyI2XEAAF6K4gMA6DLZB6u1eMN+nZ0Zp3FDEs2OAwDwYhQfAECXqG9q0z/f3aXY8EBdP6W/LBaL2ZEAAF6M4gMA6HSGYejF9/aotqFVt102UIH+7KUDADAXxQcA0OnWbD6kr3IP66oJ6UpLCDM7DgAAFB8AQOfKK6nVfz7M1bD0GF04KtnsOAAASKL4AAA6UVOLXfMW71JYsJ9uvDST43oAAC6D4gMA6BSGYejVlVk6XNOsn8wYqJBAX7MjAQDQgeIDAOgU73y0X5t2l2rs0ET16xlhdhwAAI5C8QEAnLGN24u1/LN8SdKnO0uUW1hjciIAAI5G8QEAnJHq+ha9sSa747LD4VRWQZWJiQAA+C6KDwDgtLW2OfSPd3bI4TDkY7PIapFsNqsyUiLNjgYAwFE4oxwA4LQYhqEXl+9RXnGt7pg1WGHBfsoqqFJGSqTSk8LNjgcAwFEoPgCA07Lskzx9vqdMV5zfWyP6xUoShQcA4LJY6gYAOGWb95Zp0YYDGj0wQZecm2p2HAAAvhfFBwBwSvJKavXvZbuVnhSuH0/tz0lKAQBugeIDADhpVXUt+sc7OxQa5Ks7Zw2Wrw+/RgAA7oHfWACAk9LS5tA/3tmuxma7fvaDoQoL9jM7EgAAJ43iAwD4XoZh6KXle5RfUqdbZwxQz7gQsyMBAHBKKD4AgO+19OP2Hdx+cEEfDe8ba3YcAABOmUsVnwMHDmj27NmaPHmyZs+erby8vO/cZ+PGjZo1a5YGDRqkJ554ovtDAoCX+WJvmRZvPKAxgxI05ZwUs+MAAHBaXKr4PPTQQ5ozZ45WrlypOXPm6MEHH/zOfXr27KnHH39cN910kwkJAcC7bNhWpOff3aWk2GD9aAo7uAEA3JfLFJ+Kigrt3r1b06ZNkyRNmzZNu3fvVmVl5VH3S01NVWZmpnx8OPcqAHSlL/aW6aUVe+VwGiqralJ+aZ3ZkQAAOG0u0x6Ki4sVHx8vm80mSbLZbIqLi1NxcbGioqI69bmiozko11XExoaaHQEnibFyH50xVtV1LZq/KqvjssPh1KGKRo0elnzGj412vKbcB2PlPhgr92HGWLlM8elOFRX1cjoNs2N4vdjYUJWX8z/I7oCxch+dMVZNLXY9uWCrmlrs8rFZ5HQastmsSo4O4t9BJ+E15T4YK/fBWLmPrhwrq9Vy3EkOlyk+iYmJKi0tlcPhkM1mk8PhUFlZmRITE82OBgBeo83u1LOLduhgab1+9oPBCgrwVVZBlTJSIpWeFG52PAAATpvLFJ/o6GhlZmZq2bJlmjlzppYtW6bMzMxOX+YGADg2p2Hohfd2a3delW66NFND+sRIEoUHAOARXGZzA0l6+OGHNX/+fE2ePFnz58/XI488Ikm65ZZbtGPHDknS5s2bNX78eL300kt68803NX78eG3YsMHM2ADg9gzD0II1Ofp8T5munNBHYwYz2w4A8CwWwzC87mAXjvFxDazFdR+Mlfs43bFa9kmeFq7fr8ln99TsiX27IBm+ideU+2Cs3Adj5T7MOsbHpWZ8AADdb/22Ii1cv1+jB8brygnpZscBAKBLUHwAwIttzS7XK+/v1aDeUbrhkkxZOUEpAMBDUXwAwEtlH6zWvHd3KS0hTHdcNlg+Nn4lAAA8l8vs6gYA6B65hTX6fHepNmwvVnRYgO6+coj8/WxmxwIAoEtRfADAi+QW1uhPC7aqze6UJF1xfh+FBvmZnAoAgK7HugYA8CK7DlR2lB6LRSqpbDA5EQAA3YPiAwBewjAMZRVUSWovPT42qzJSIk1OBQBA92CpGwB4iWWf5GlvQbUmjkhSZKi/MlIilZ4UbnYsAAC6BcUHALzA1uxyLdpwQKMHJuiai/rJwrbVAAAvw1I3APBwheX1en7ZbvVKDNX1UzIoPQAAr0TxAQAPVt/Upn+8s0MBvjbdOWuI/HzZthoA4J0oPgDgoRxOp+Yt2anKumbdMWuwIkP9zY4EAIBpKD4A4KH+s3afdudV6brJGWxiAADwehQfAPBAG7cXa/Xmg7pwVLLGDelhdhwAAExH8QEAD7OvqEavrtyrzNRIzZ6YbnYcAABcAsUHADxIRU2Tnlm4Q5Gh/vrpZYNks/I2DwCAxHl8AMBj7C2o1Ivv7VVjk12//PEohQT6mh0JAACXQfEBAA+Qc6haf17wlZyG5GOzqLnVYXYkAABcCmsgAMADrPisQE6j/e9Op6GsgipzAwEA4GKY8QEAN5dfUqcd+w/LYpEskmw2qzJSIs2OBQCAS6H4AIAba2y2a+7iHQoL9tf1UzJU2dCm5OggztsDAMC3UHwAwE0ZhqGXVuxRRU2LfnPNcPVNjlBsbKjKy+vMjgYAgMvhGB8AcFMffHlIX2aV64oLeqtvcoTZcQAAcGkUHwBwQweKa/XW2lwN7ROtyWenmB0HAACXR/EBADfT0Nym5xbvVESIn26aNkBWi8XsSAAAuDyKDwC4EcMw9OJ7e1RV16LbZg7iJKUAAJwkig8AuJHVXxzU1pzDuvKCPurDzm0AAJw0ig8AuIl9hTV6e90+De8bo4vO6ml2HAAA3ArFBwDcQH1Tm+Yt2anIUH/deGmmLBzXAwDAKTlh8XnhhReOuvzxxx8fdfkPf/hD5ycCABzFaRh6YdluVde36qeXDVJwAMf1AABwqk5YfJ599tmjLt9zzz1HXX777bc7PxEA4CgrPy/Qtn0VumpiunolhpkdBwAAt3TC4mMYxildBgB0rg+3HtJ/P9ynjJQIXTgy2ew4AAC4rRMWn2+vIf++ywCAzrMtp1yvrcyWIWl/Ua32FdWaHQkAALflc6IbDcPQwYMHOy47nc6jLjPjAwBdo83u1GurszsuOxxOZRVUKZ0trAEAOC0nLD5NTU26+OKLjyo4F110UZeHAgBvZhiGXl+drcraFtmsFhmGIZvNqoyUSLOjAQDgtk5YfPbu3dtdOQAAR6zbWqj124p06ehUDU2PUVZBlTJSIpntAQDgDJz2eXza2tp0zTXXdGYWAPB6WQVVemNNjob0idbl43orPSlcl45Oo/QAAHCGTrv4GIahLVu2dGYWAPBqFTXNmrt4p2IiAnXr9IGyWtlABgCAznLaxQcA0Hla2hx6ZuEO2R1O/eyKwQoKOOFKZAAAcIooPgBgMsMw9MqKvSoordMt0wcqMTrY7EgAAHicE/6X4tNPP33c2xwOR6eHAQBvtPLzg/psd6kuH99bw9JjzI4DAIBHOmHxKSkpOeEXT58+vVPDAIC32bm/Qm+vy9WojFhNG51qdhwAADzWCYvPH/7wh2Nev3fvXi1ZskRLly7tklAA4A1Kqxo1b8kuJcUE68ZLM2WxsJkBAABd5aSPnq2srNTSpUu1ePFi7d27V6NGjdJvf/vbrswGAB6rqcWuf7yzQxaLdNcVQxTgx2YGAAB0pRP+pm1ra9PatWu1aNEibdy4USkpKbr00ktVWFiop556StHR0d2VEwA8Rs6har28Yq9KKhr1yx8OU2xEoNmRAADweCcsPmPGjJHFYtGsWbN01113aeDAgZKkBQsWdEs4APA0uYU1evKNrXI4DdmsFvn52syOBACAVzjhdtYZGRmqq6vTtm3btGPHDtXU1HRXLgDwSF/uLZPDaUhq38Y6q6DK5EQAAHiHExaf1157TatXr9aYMWP04osvasyYMbrtttvU2Ngou93eXRkBwCM4DUN78tuLjsUi2WxWZaREmpwKAADv8L0nME1KStIdd9yhVatW6eWXX1ZsbKysVqtmzJihJ598sjsyAoBHWL+tSAVl9brk3FTNGt9b9149XOlJ4WbHAgDAK5zSNkKjRo3SqFGj9MADD2j16tVavHhxF8UCAM9SVdeitz/MVf+UCF1xfm+2rgYAoJud1v6p/v7+mjZtmqZNm9bZeQDA4xiGofmrsmR3GLp+an9KDwAAJvjepW4AgDPz3qf52ppzWOMGJyo+MsjsOAAAeCWKDwB0oZ37K7Rw/X5J0oYdxcotZHdMAADMQPEBgC70zpHSI0kOh5PtqwEAMMlpHeMDAPh+u/MqlV9SJ6vVIhkG21cDAGAiig8AdIGWNodeeX+v4iMDdf2UDO0rqlVGSiTbVwMAYBKKDwB0gcUb9qu8ulm/mTNcGSmR6p8aZXYkAAC8Gsf4AEAnO1Bcq1VfHNT5w3qwtA0AABdB8QGATmR3OPXS8r0KD/bTlRekmx0HAAAcQfEBgE70/qYCHSqv13UXZygogNXEAAC4CooPAHSS4ooGvftxnkb1j9PwfrFmxwEAAN9A8QGATuA0DL28Yq/8fa265sK+ZscBAADfQvEBgE7w0dZC5Ryq0VUT0xUe4m92HAAA8C0UHwA4Q5W1zXp73T4NSIvU2MGJZscBAADHQPEBgDNgGIZeW5klp2HoR1P6y2KxmB0JAAAcA8UHAM7AF3vLtG1fhS4f11txEYFmxwEAAMdB8QGA01Tf1KbXV2erV2KoLhrV0+w4AADgBCg+AHCa3vwgR43Ndv14aqasVpa4AQDgyig+AHAadu6v0Cc7SzT13BT1jAsxOw4AAPgeFB8AOEXNrXa98n6WEqKCNP28NLPjAACAk0DxAYBTtGj9AVXUNuvHU/vL18dmdhwAAHASKD4AcAo+2lao1ZsPakS/GPXrGWF2HAAAcJIoPgBwkvbmV+rVFVmSpB37K5VbWGNyIgAAcLIoPgBwkt5au0/Gkb87HE5lFVSZmgcAAJw8H7MDAIA7WL+tSPmlde3bVhuGbDarMlIizY4FAABOEsUHAL5HQWmd5q/K1oC0SM0c00vZh6qVkRKp9KRws6MBAICTRPEBgBNobG7Ts4t2KDTIV7fOGKiwID/1ZVMDAADcDsf4AMBxGIahF97bo8raFv30skEKC/IzOxIAADhNFB8AOI73Py/Q1pzDumpCOsvaAABwcxQfADiGrIIqvbNuv0b1j9OFo5LNjgMAAM4QxQcAvqWmvkXzluxSbGSgbpjaXxaLxexIAADgDFF8AOAbHE6n5i3ZpaYWu+64bJAC/dkDBgAAT0DxAYBvWLT+gLIOVutHUzKUHBdidhwAANBJKD4AcMTWnHIt/yxf5w/rofMGJZodBwAAdCKKDwBIKqtu0r+X7VFqfKjmXNjX7DgAAKCTUXwAeL02u0NzF+2QRdLtlw+Sr4/N7EgAAKCTUXwAeL3XV+eooLReN08foNiIQLPjAACALkDxAeDVPt5RrPXbinTp6FQNS48xOw4AAOgiFB8AXutQWb1eW5ml/ikRumxcL7PjAACALkTxAeCVGpvtenbRDgUG+OgnMwbKZuXtEAAAT8aZ+QB4nZxD1Xrl/SyVVTXpN9eMUHiIv9mRAABAF6P4APAquYU1evKNrXI4DdmsFlmtFrMjAQCAbsDaDgBeZfu+CjmchiTJMAxlFVSZnAgAAHQHig8Ar1JS0SBJslgkm82qjJRIkxMBAIDuwFI3AF6j6HCDtmQf1oh+MeqVGKaMlEilJ4WbHQsAAHQDig8Ar/Hm2hz5+9n0oyn9FRbkZ3YcAADQjVjqBsArbN9XoZ37KzVzTBqlBwAAL0TxAeDx7A6n3lqbo/jIQE0cmWx2HAAAYAKKDwCPt25roYorGjV7Yl/52HjbAwDAG/EJAIBHq29q05KNBzQgLVJD06PNjgMAAExC8QHg0ZZsPKDGFrt+OKmvLBZOVgoAgLei+ADwWEWHG/ThlkJdMCxJybEhZscBAAAmovgA8Fhfb189c1wvs6MAAACTUXwAeKSvt6+ewfbVAABALlZ8Dhw4oNmzZ2vy5MmaPXu28vLyvnMfh8OhRx55RBdeeKEuuugivf32290fFIBL++b21ZPYvhoAAMjFis9DDz2kOXPmaOXKlZozZ44efPDB79xn6dKlKigo0KpVq/TWW2/pH//4hw4dOmRCWgCuiu2rAQDAt1kMwzDMDiFJFRUVmjx5sjZt2iSbzSaHw6FzzjlHq1atUlRUVMf9br31Vs2aNUtTpkyRJD366KPq0aOHbr755pN+rgUL3lJ9fX2nfw84Nb6+NrW1OcyOgZPgTmPV6rDog32RCg+wa3TPWnnbRm7uNFbejHFyH4yV+2Cs3EdXjlVISIiuvnr2MW/z6ZJnPA3FxcWKj4+XzWaTJNlsNsXFxam4uPio4lNcXKwePXp0XE5MTFRJSckpPZevr02+vrbOCY4zwji4D3cZq13lgWpzWjQsqUl+fu6RubO5y1h5O8bJfTBW7oOxch9dNVYnelyXKT7dacKEKXI6XWKiy6vFxoaqvLzO7Bg4Ce4yVkWHG7Tohc91wfAemjM5w+w4pnCXsfJ2jJP7YKzcB2PlPrpyrKzW4y/1cJnF74mJiSotLZXD0T7t5XA4VFZWpsTExO/cr6ioqONycXGxEhISujUrANf04vI9slotGpoebXYUAADgYlym+ERHRyszM1PLli2TJC1btkyZmZlHLXOTpClTpujtt9+W0+lUZWWl1qxZo8mTJ5sRGYALWf5ZnvYX1crucGruop3KLawxOxIAAHAhLlN8JOnhhx/W/PnzNXnyZM2fP1+PPPKIJOmWW27Rjh07JEkzZ85UcnKyLr74Yl111VW644471LNnTzNjAzBZU4tdyz7J77jscDiVVVBlYiIAAOBqXOoYnz59+hzzvDz/+te/Ov5us9k6ChEASNI7H+1Tc6tDPjaLnE5DNptVGSmRZscCAAAuxKWKDwCcqtzCGn24pVAXjkzW2QPilVVQpYyUSKUnhZsdDQAAuBCKDwC3ZXc49cqKvYoM89fl43sr0N+HwgMAAI7JpY7xAYBTsfyzfBUebtB1F2co0J//xwEAAMdH8QHgloorGrTskzydnRmnoekxZscBAAAujuIDwO04DUOvrNgrf1+brr6wn9lxAACAG6D4AHA767cVKftQja6akK7wYD+z4wAAADdA8QHgVqrrW/T2h/vUPyVCY4ckmh0HAAC4CYoPALfy+upstdmdun5Kf1ksFrPjAAAAN0HxAeA2tmaX68uscs0cm6b4qCCz4wAAADdC8QHgFppa7Jq/Ols940I0+ewUs+MAAAA3Q/EB4Bb++9E+Vde36MdT+8vHxlsXAAA4NXx6AODycg/VaN2WQl04sqd6JYaZHQcAALghTnUOwKXtLajSc4t3KjTIT5eP72V2HAAA4KaY8QHgsnILa/TnN79SXWObGlvadKi8wexIAADATVF8ALisT3eVyOk0JElOp6GsgiqTEwEAAHdF8QHgkppa7Poqu1ySZLVINptVGSmRJqcCAADuimN8ALik11dnq7qhVddd3E+NLXZlpEQqPSnc7FgAAMBNUXwAuJxPd5Xok50lmjEmTRNGJJsdBwAAeACWugFwKWXVTXptZZb6Jodr+pg0s+MAAAAPQfEB4DLsDqf+uWSXrBaLbp0+UDYrb1EAAKBz8KkCgMtYvOGADhTX6sdT+ys6PMDsOAAAwINQfAC4hD15lVrxWb7GD03UqP5xZscBAAAehuIDwHR1ja16ftluJUQH6epJ/cyOAwAAPBDFB4CpDMPQS8v3qqGpTT+ZMVD+fjazIwEAAA9E8QFgqrVbCvVV7mFdeUG6UuJDzY4DAAA8FMUHgGkOltXrrbW5GtInWheO4nw9AACg61B8AJiipc2heUt2KjjARzdekimLxWJ2JAAA4MF8zA4AwPvkFtZowZpsFVc06pezhyks2M/sSAAAwMNRfAB0q9zCGj35+hbZnYasVgubGQAAgG7BUjcA3erLrDLZnUb7BcNQVkGVuYEAAIBXoPgA6DZtdoe25VRIkiwWyWazKiMl0uRUAADAG7DUDUC3WfBBrkqqGvWDC3rLMKSMlEilJ4WbHQsAAHgBig+AbvHZrhKt21qoKeek6JJz08yOAwAAvAxL3QB0ueKKBr3yfpb6Jodr1vjeZscBAABeiOIDoEu1tDk0d9FO+fpYddvMQfKx8bYDAAC6H59AAHSp+auyVHS4QbfOGKDIUH+z4wAAAC9F8QHQZTZsL9LHO0o0fUyaBvWKNjsOAADwYhQfAF3iYFm95q/KVmZqpGaM6WV2HAAA4OUoPgA6XVOLXXMX71SQv49unTFQVqvF7EgAAMDLUXwAdCrDMPTK+3tVVtWo22YOVHiwn9mRAAAAKD4AOte6rYX6fE+ZZo3vrYyUSLPjAAAASKL4AOhEG7YV6fXV2eqTFKap56aaHQcAAKADxQdAp9i5v0IvrdgrpyEVlNZrf1Gt2ZEAAAA6UHwAnDGnYeiNNTkdlx0Op7IKqkxMBAAAcDSKD4Az9t6n+SqpbJTNapHVItlsVo7vAQAALsXH7AAA3NuuA5VavH6/zh0QrwkjkpR9sFoZKZFKTwo3OxoAAEAHig+A01ZR06x/vrtLPWKDdf2U/vL3s6lvcoTZsQAAAL6DpW4ATkub3am5i3fI7nDqjssHy9/PZnYkAACA46L4ADgtb36QowPFdbrp0kwlRAWZHQcAAOCEKD4ATtknO4v14dZCTTknRSMz4syOAwAA8L0oPgBOycGyer36fpb6p0ToivN7mx0HAADgpFB8AJy0xuY2Pbtwh4ICfPSTmYNks/IWAgAA3AOfWgCcFKdh6N/L9qiitlm3XzZY4cF+ZkcCAAA4aRQfACdlxWf5+ir3sK6amK70ZM7RAwAA3AvFB8D32pZdroXr9+vszDhdODLZ7DgAAACnjBOYAjihLdnl+tfS3YoOC9CPp/aXxWIxOxIAAMApY8YHwHHt3F+hZxfuUEubQzX1rTpU3mB2JAAAgNNC8QFwTNX1Lfr3e7tlHLnscDqVVVBlaiYAAIDTxVI3AN9RVtWoP7/5lZqaHfKxWeR0GrLZrMpIiTQ7GgAAwGmh+AA4ysGyev31ra/kcBr6zTUj5DQMHapoVHJ0kNKT2M0NAAC4J4oPgA45h6r19Nvb5e9n071XD1ePmGBJ0uhhySovrzM5HQAAwOmj+ACQJG3fV6G5i3YoMtRfv/zhMMWEB5odCQAAoNNQfADos90lemHZHiXFBusXVw1TWLCf2ZEAAAA6FcUH8HJrtxzS66uy1bdnhH52xRAFBfC2AAAAPA+fcAAvZRiGln6Sp8UbDmhYeoxumzlQfr42s2MBAAB0CYoP4IVyDlXrPx/mal9hrc4blKAbLukvm5XTegEAAM9F8QG8TFZBlf60YKuchmS1WHT+sB6UHgAA4PH4tAN4kaYWu15avkdO4+trDGUfrDYxEQAAQPdgxgfwEjX1LXrq7e0qr26WzWqRYRiy2azKSIk0OxoAAECXo/gAXqC0slF/eesr1Ta26udXDlFQgK+yCqqUkRKp9KRws+MBAAB0OYoP4OH2F9Xqqbe3SZJ+ffUI9e4RJkkUHgAA4FUoPoAH276vQnMX71BYkJ9+OXuY4qOCzI4EAABgCooP4KE2bi/Wyyv2qmdciO6+aqjCg/3MjgQAAGAaig/gYQzD0LJP87Vo/X4NTIvU7ZcPVqA/L3UAAODd+DQEeIjcwhrtza9SXkmttmQf1rkD43XjJZnysbFrPQAAAMUH8AC5hTX604KtarM7JUnnDIjXzdMGyGqxmJwMAADANfBfwYCbcxqGVm4q6Cg9FknJscGUHgAAgG9gxgdwY7mFNXpjdbbySur0dc/x4aSkAAAA30HxAdxQVV2L/rsuV5/uKlVEiJ9umT5AMeEByj5YzUlJAQAAjoHiA7iRNrtDq744qGWf5MvhdOrS0am6dHSqAvzaX8p9kyPMDQgAAOCiKD6AGzAMQ1/lHtabH+SovLpZw/vGaPakvoqLCDQ7GgAAgFug+AAu7rNdJVq88YDKqpqUGB2kX84epoG9osyOBQAA4FYoPoCLMgxDCz7I0ZrNhyRJNqtFP5qcwcYFAAAAp4HtrAEXVNPQqqfe3t5ReqT2IpRbWGNiKgAAAPdF8QFczI79FXrohU3aW1ClyWf3lK+PVVaLZGObagAAgNPGUjfARbTZnXrno31a9cVBJcUG61dXD1RybIhGZsQpq6CKbaoBAADOAMUHcAFFhxv0z3d36WBZvSaNSNaVE/rIz9cmSUpPCqfwAAAAnCGKD2AiwzC0fluRFqzJkZ+vTT/7wRANS48xOxYAAIDHofgAJsgtrNH2fRXKOVitrIPVGpAWqZunDVBEiL/Z0QAAADwSxQfoZrmFNXryjS2yOwxJ0sQRSZpzUT9ZLRaTkwEAAHgudnUDulFjc5veWJ3dUXosFiky1J/SAwAA0MWY8QG6ydbscr26Kks19a2yWi2SYbBFNQAAQDeh+ABdrKahVW+sztYXe8uUHBuin10xRA6nwRbVAAAA3YjiA3QRwzD0yc4SvflBjlraHLp8fG9NPSdFPrb2FaYUHgAAgO5D8QG6wOGaJr36fpZ2HqhUenK4bpjaX4nRwWbHAgAA8FoUH6CT5BbWaG9+leoaW7V+W7Fkka65qJ8mjEhi8wIAAACTUXyATvDtLap79wjVbTMHKSY80ORkAAAAkNjOGjhjFTXNmr8y639bVEsalh5L6QEAAHAhzPgAp6mx2a7ln+Vr1RcHZcg4aovq/qlsUQ0AAOBKKD7AKbI7nFq3tVDvfpyn+qY2jR6YoFnje6uqvoUtqgEAAFwUxQc4SYZhaEt2uf67bp9Kq5qUmRqpqyakKzUhVJIUHR5A4QEAAHBRFB/ge+QW1uiTHcXKKaxRYXmDesQE6+4rh2hw72hZ2K0NAADALVB8gBPYkl2uuYt2yNm+b4GmnpOiWef3ls3KviAAAADuhOIDHIPd4dTqzQe18KP9HaXHapGCAnwoPQAAAG7IJT7BNTU16e6779ZFF12kKVOm6MMPPzzm/UpLS3Xddddp5MiRmjVrVjenhLfYm1+lh1/6Qm9/uE+9E8Pka7PKapFsNqsyUtitDQAAwB25xIzPCy+8oJCQEK1evVp5eXm65pprtGrVKgUHBx91v6CgIP385z9XfX29/v73v5uUFp6qpr5Fb32Yq892lSomPEA/u2KIhvWNUW5hDbu1AQAAuDmXKD4rVqzQH//4R0lSWlqaBg0apPXr12vq1KlH3S80NFSjRo3Spk2bzIgJD+VwOrV2S6EWb9ivNrtT085L06WjU+Xva5MkpSeFU3gAAADcnEsUn6KiIiUlJXVcTkxMVElJSZc9X3R0SJc9Nk5NbGyoqc+/N69Sz72zXfuLajS8X6xumzVEPWL593EsZo8VTh5j5R4YJ/fBWLkPxsp9mDFW3VJ8Lr/8chUVFR3ztk8++aQ7IhyloqJezq+PWIdpYmNDVV5eZ8pzb993WIs2HFB+SZ0iQ/11+2WDNDIjVhYZpmVyZWaOFU4NY+UeGCf3wVi5D8bKfXTlWFmtluNOcnRL8Vm0aNEJb+/Ro4cKCwsVFRUlSSouLtY555zTHdHgZQzD0KL1+7Xs03xJ7S+Omy7N1IC0KJOTAQAAoCu5xK5uU6ZM0VtvvSVJysvL044dOzRu3DiTU8HTFFc06Mk3tnaUHkmSYehAca15oQAAANAtXOIYn5tuukn33XefLrroIlmtVj366KMKCWmfonr66acVFxenq6++Wg6HQxMmTFBra6vq6+s1fvx4XXnllbrrrrtM/g7gytrsTr33aZ6Wf5YvPx+bpp6TojVfHpLD4WSLagAAAC9hMQzD6w524Rgf19Ada3H35lfplZVZKq1s1LkD4jV7Ul+FB/uxRfUpYt20+2Cs3APj5D4YK/fBWLkPjz7GB+hudY2t+s+Hufp4R4liwgP0i6uGalDv6I7b2aIaAADAu1B84DFyC2u0N79KrXaH1m0tUlOLXZeOTtW089I6zskDAAAA70TxgUfILazRk29skd3RvoQxKSZYv54zXMmckwcAAABykV3dgDNRUFqnl5bv6Sg9FknnDIin9AAAAKADMz5wW4fK6rVk4wF9mV0uP1+brFaLZBiy2azqn8pObQAAAPgfig/cTmF5vZZ8nKfNe8sU6G/TjDFpuvisniqqaGSnNgAAABwTxQduo/Bwg5Z+fEBf7CmTn59N085L1cVnpSgk0FcSO7UBAADg+Cg+cHmbdpfovc8KdKisXv6+Nl0yOlWTz/5f4QEAAAC+D8UHLstpGHpjdbbWbimU1H5CqtsuG6ihfWJMTgYAAAB3w65ucElVdS36y5tfdZQeSZJh6FBZvXmhAAAA4LYoPnA5m/eW6cEXNmlfUY0uOTdVvj5WWS2SzWZVRgq7tQEAAODUsdQNLqO51a4Fa3K0YXux0hJCdeuMgUqICtKwvjHs1gYAAIAzQvGBSzhQXKvn392lsqomXTo6VTPH9pKPrX1Ckt3aAAAAcKYoPjCV02loxaZ8Ld5wQOEhfvr1nOEsZwMAAECno/jAFLmFNVq2qUBf7CrRwbJ6nZ0Zp+smZyg4gC2qAQAA0PkoPuh2OYeq9eQbW+VwGpKkaeel6vJxvWWxWExOBgAAAE/Frm7oVvsKazRvya6O0mOxSP6+NkoPAAAAuhQzPugWVXUt+u+6XH26q1TBgT6yWS0yDIMtqgEAANAtKD7oUq1tDq38vEDvfZYvp1O6dHSqLh2dqkPlDTpU0ajk6CB2bAMAAECXo/igSxiGoc1Z5frP2lxV1DZrZEasrpqQrtiIQEntW1SPHpas8vI6k5MCAADAG1B80OkKSuv0xpocZR+sVnJsiH599XD1T2U5GwAAAMxD8UGnqW1o1cL1+7VhW5GCA331o8kZGj+0h6xWNi4AAACAuSg+OGN2h1NrNh/S0k8OqLXNqYvO6qkZY9IUxDl5AAAA4CIoPjhthmFoW26F3lqbo9KqJg3pE63ZE9OVGB1sdjQAAADgKBQfnJbCww1684Mc7TpQqYSoIN195VAN6RNtdiwAAADgmCg+OCX1TW1asvGAPtxSqAA/m66e1FcTRiTJx8a5cAEAAOC6KD44KQ6nU+u2Fmnxhv1qbLHrgmFJumxcL4UG+ZkdDQAAAPheFB98r115lXpzTY4KDzcoMzVSP5zUVz3jQsyOBQAAAJw0ig+Oq7SqUW99kKuvcg8rNiJAd84arOF9Y2SxsD01AAAA3AvFB9/R1GLX0k/ytPqLg/LxseqK83vr4rN6ytfHZnY0AAAA4LRQfNDB6TS0cUexFn60T7WNbRozOEFXnN9HESH+ZkcDAAAAzgjFB5Kk7IPVWrAmR/mldUpPCtfPr+yrXolhZscCAAAAOgXFx8tV1DTr7XW5+nxPmSJD/XXrjAE6JzOe43gAAADgUSg+Xqql1aHln+Xr/c8LZJE0Y0yapp6bKn9fjuMBAACA56H4eBnDMPTZ7lL9d90+VdW16OzMOF15QbqiwwPMjgYAAAB0GYqPFzlQXKs31mRrX2GtUhNC9ZMZA9WvZ4TZsQAAAIAuR/HxAlV1LVr40T59vLNEYcF+uuGS/hozOFFWjuMBAACAl6D4eLA2u0OrvjioZZ/ky+F0auq5KZo2Ok2B/gw7AAAAvAufgD2QYRj6Mqtc//kwV4drmjW8b4xmT0xXXGSQ2dEAAAAAU1B8PExBaZ3e/CBHewuqlRQbrF/9cJgGpEWZHQsAAAAwFcXHQ9Q2tmrx+v36aFuRggN8de3F/XT+sB6yWa1mRwMAAABMR/Fxc3aHU2u/PKQlH+eppdWhSSOTNXNsLwUH+JodDQAAAHAZFB83tn3fYS34IFellY0a1CtKsyf1VVJMsNmxAAAAAJdD8XFDRYcb9ObaHO3cX6n4qCD9/AdDNKRPtCxsTw0AAAAcE8XHjTQ0t2nJxgP6cEuh/Hytmj0xXZNGJsvHxnE8AAAAwIlQfNyAw+nU+q+KtGjDATU0tWn8sB66fFxvhQX7mR0NAAAAcAsUHxe3J69SCz7I0aHyBmX0jNDVF/ZVSnyo2bEAAAAAt0LxcVFl1U36z9pcbckuV0x4gG6/bJBGZsRyHA8AAABwGig+Lqapxa73Ps3Xqi8KZLNaNWt8b00+u6d8fWxmRwMAAADcFsXHRTgNQ5/sKNE7H+1TTUOrzhuUoCvO76PIUH+zowEAAABuj+LjAnIOVWvBmhzlldSpT48w3XnFYPXpEW52LAAAAMBjUHxMkltYo63Z5covrdPuvCpFhPjplukDdM6AeFk5jqfLPfH6FknSb64ZYcpjmv38XcUVMpwMd8kpkdWdePv3D8B7ucv7H8XHBLmFNXri9S1yOA1J0pjBCbrmon4K8GM4AAAAgK7AmS9NkFVQ1VF6LBYpISqI0gMAAAB0IYqPCTJSIuXrY5XVIvnYrMpIiTQ7EgAAAODRmGYwQXpSuO69eriyCqqUkRKp9CQ2MgAAAAC6EsXHJOlJ4RQeAAAAoJuw1A0AAACAx6P4AAAAAPB4FB8AAAAAHo/iAwAAAMDjUXwAAAAAeDyKDwAAAACPR/EBAAAA4PEoPgAAAAA8HsUHAAAAgMej+AAAAADweBQfAAAAAB6P4gMAAADA41F8AAAAAHg8ig8AAAAAj0fxAQAAAODxKD4AAAAAPB7FBwAAAIDHo/gAAAAA8HgUHwAAAAAez8fsAGawWi1mR8ARZo1FZJh/pz//qTym2c9/Osz6vrqCu+SUTi+rJ72u3Mmpfv/e+nNyR4yV+2CszOFKv6tO9LgWwzCMLnlWAAAAAHARLHUDAAAA4PEoPgAAAAA8HsUHAAAAgMej+AAAAADweBQfAAAAAB6P4gMAAADA41F8AAAAAHg8ig8AAAAAj0fxAQAAAODxKD4AAAAAPB7FB91u3bp1uvzyyzV9+nRde+21OnjwoNmRcMQTTzyhiRMnKiMjQ9nZ2R3XHzhwQLNnz9bkyZM1e/Zs5eXlmRcSko4/Vse7HuY51phUVVXplltu0eTJkzV9+nTdeeedqqysNDmpdzvea+f222/XjBkzdNlll2nOnDnas2ePiSkhff/73DPPPMN7oIs43lhNnDhRU6ZM0cyZMzVz5kxt2LChW/JQfNCtampq9Jvf/EZ//etftXTpUl155ZV6+OGHzY6FIyZNmqTXX39dSUlJR13/0EMPac6cOVq5cqXmzJmjBx980KSE+Nrxxup418M8xxoTi8Wim2++WStXrtTSpUvVs2dP/fnPfzYxJY732nniiSf07rvvavHixbrxxht1//33m5QQXzvR+9yuXbv01Vdf8R7oIk40Vn//+9+1ZMkSLVmyROPGjeuWPBQfdKv8/HzFxMSoV69ekqTzzz9fGzdu5H86XcSoUaOUmJh41HUVFRXavXu3pk2bJkmaNm2adu/ezZiZ7FhjdaLrYZ5jjUlERITOOeecjsvDhg1TUVFRd0fDNxzvtRMaGtrx9/r6elkslu6MhWM43li1trbq0Ucf5T9UXYir/U7yMTsAvEuvXr10+PBhbd++XUOGDNHSpUslScXFxYqKijI5HY6luLhY8fHxstlskiSbzaa4uDjGDOgkTqdTCxYs0MSJE82OguP47W9/q48//liGYejf//632XFwHE8//bRmzJih5ORks6PgJPzqV7+SYRgaOXKkfvGLXygsLKzLn5MZH3Sr0NBQ/e1vf9Mf/vAHzZo1SxUVFQoLC+v4UA0A3ub3v/+9goKCdO2115odBcfx+OOPa926dbrnnnv05JNPmh0Hx7B161bt3LlTc+bMMTsKTsLrr7+ud999V++8844Mw9Cjjz7aLc9L8UG3O++887RgwQItXLhQ1157rZqbm5WSkmJ2LBxHYmKiSktL5XA4JEkOh0NlZWUuNXUNuKsnnnhC+fn5euqpp2S18ivZ1V122WXatGmTqqqqzI6Cb/niiy+0b98+TZo0SRMnTlRJSYluuukmbdy40exoOIavP0P4+flpzpw52rJlS7c8L++y6Hbl5eWS2pd3/PWvf9UPf/hDBQUFmZwKxxMdHa3MzEwtW7ZMkrRs2TJlZmayzA04Q3/961+1c+dOPfvss/Lz8zM7Do6hoaFBxcXFHZfXrl2r8PBwRUREmBcKx3Trrbdq48aNWrt2rdauXauEhAS98MILGjt2rNnR8C2NjY2qq6uTJBmGoeXLlyszM7NbnttiGIbRLc8EHPHb3/5WW7ZsUVtbm8aMGaP7779f/v7+ZseCpMcee0yrVq3S4cOHFRkZqYiICL333nvat2+f7rvvPtXW1iosLExPPPGEevfubXZcr3a8sTre9TDPscbkqaee0rRp05SWlqaAgABJUnJysp599lmT03qvY43TK6+8ottvv11NTU2yWq0KDw/Xb37zGw0cONDsuF7tZN7nJk6cqHnz5qlfv34mpYR07LGaN2+e7rrrLjkcDjmdTvXp00cPPPCA4uLiujwPxQcAAACAx2OpGwAAAACPR/EBAAAA4PEoPgAAAAA8HsUHAAAAgMej+AAAAADweBQfAIBbWLhwoa6++uozeoxNmzZp/Pjxpj0/AMA8FB8AAAAAHo/iAwAAAMDjUXwAAC7l+eef14UXXqjhw4frkksu0erVq495v5ycHN1www06++yzdd5552nevHmSpNbWVj3++OMaO3asxo4dq8cff1ytra1Hfe2LL76o0aNHa+zYsXrnnXc6rq+rq9Ovf/1rnXvuuZowYYLmzp0rp9PZdd8sAKDbUHwAAC6lZ8+eev311/Xll1/qzjvv1L333quysrKj7lNfX68bbrhB48aN04YNG7Rq1SqNHj1akvTcc89p27ZtWrJkid59913t2LFDc+fO7fjaw4cPq66uTuvXr9fjjz+uRx99VDU1NZKk3//+96qrq9OaNWv02muvacmSJUcVIwCA+6L4AABcytSpUxUfHy+r1apLLrlEqamp2r59+1H3WbdunWJiYnTjjTfK399fISEhGjp0qCRp6dKluuOOOxQdHa2oqCjdcccdevfddzu+1sfHR3fccYd8fX11/vnnKygoSAcOHJDD4dDy5cv1y1/+UiEhIUpOTtYNN9xw1NcCANyXj9kBAAD4psWLF+ull15SYWGhJKmxsVFVVVWy2Wwd9ykuLlZKSsoxv76srEw9evTouNyjR4+jZowiIiLk4/O/X3+BgYEdz9HW1vadry0tLe207w0AYB5mfAAALqOwsFAPPPCAfve732nTpk3avHmz+vbt+537JSYm6uDBg8d8jLi4OBUVFXVcLi4uVlxc3Pc+d2RkpHx9fb/ztfHx8afxnQAAXA3FBwDgMpqammSxWBQVFSVJeuedd5STk/Od+11wwQUqLy/Xyy+/rNbWVtXX12vbtm2SpEsvvVTPPfecKisrVVlZqWeffVbTp0//3ue22WyaMmWK/va3v6m+vl6FhYV66aWXNGPGjM79JgEApqD4AABcRnp6um688Ub98Ic/1Hnnnafs7GyNGDHiO/cLCQnRiy++qA8//FBjxozR5MmTtWnTJknS7bffrkGDBmnGjBmaMWOGBg4cqNtvv/2knv93v/udAgMDdeGFF2rOnDmaNm2arrjiik79HgEA5rAYhmGYHQIAAAAAuhIzPgAAAAA8HsUHAAAAgMej+AAAAADweBQfAAAAAB6P4gMAAADA41F8AAAAAHg8ig8AAAAAj0fxAQAAAODx/j/7aW7OnTz1SQAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from alibi.explainers import ALE\n", - "from alibi.explainers import plot_ale\n", - "\n", - "predict_fn = lambda x: model(scaler.transform(x)).numpy()[:, 0]\n", - "ale = ALE(predict_fn, feature_names=features)\n", - "exp = ale.explain(X_train)\n", - "plot_ale(exp, features=['alcohol'], line_kw={'label': 'Probability of \"good\" class'})" - ] - }, - { - "cell_type": "markdown", - "id": "43934de4-cdb7-497c-9eb4-d83bb1a9a8c6", - "metadata": {}, - "source": [ - "## Counterfactuals\n", - "\n", - "Next we apply each of the counterfactual methods, counterfactuals with reinforcement learning, counterfactual instances, counterfacutals with prototypes and contrastive explanation methods. We also plot the kernel SHAP values to show how the counterfactual method changes the attribution of each feature leading to the change in prediction." - ] - }, - { - "cell_type": "markdown", - "id": "aacbe189-a135-4ef9-bcf4-35df9019d5bb", - "metadata": {}, - "source": [ - "### Counter Factuals with Reinforcement Learning\n", - "\n", - "CFRL trains a new model when fitting the explainer called an actor that takes instances and produces counterfactuals. It does this using reinforcement learning. In reinforcement learning, an actor model takes some state as input and generates actions; in our case, the actor takes an instance with a target classification and attempts to produce a member of the target class. Outcomes of actions are assigned rewards dependent on a reward function designed to encourage specific behaviors. In our case, we reward correctly classified counterfactuals generated by the actor. As well as this, we reward counterfactuals that are close to the data distribution as modeled by an autoencoder. Finally, we require that they are sparse perturbations of the original instance. The reinforcement training step pushes the actor to take high reward actions. CFRL is a black-box method as the process by which we update the actor to maximize the reward only requires estimating the reward via sampling the counterfactuals." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "b7fbd60a-64af-43f9-80d3-9b78cfde8079", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 10000/10000 [02:31<00:00, 66.00it/s]\n", - "100%|██████████| 1/1 [00:00<00:00, 151.09it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Instance class prediction: 0\n", - "Counterfactual class prediction: 1\n" - ] - } - ], - "source": [ - "from alibi.explainers import CounterfactualRL \n", - "\n", - "predict_fn = lambda x: model(x)\n", - "\n", - "cfrl_explainer = CounterfactualRL(\n", - " predictor=predict_fn, # The model to explain\n", - " encoder=ae.encoder, # The encoder\n", - " decoder=ae.decoder, # The decoder\n", - " latent_dim=7, # The dimension of the autoencoder latent space\n", - " coeff_sparsity=0.5, # The coefficient of sparsity\n", - " coeff_consistency=0.5, # The coefficient of consistency\n", - " train_steps=10000, # The number of training steps\n", - " batch_size=100, # The batch size\n", - ")\n", - "\n", - "cfrl_explainer.fit(X=scaler.transform(X_train))\n", - "\n", - "result_cfrl = cfrl_explainer.explain(X=scaler.transform(x), Y_t=np.array([1]))\n", - "print(\"Instance class prediction:\", model.predict(scaler.transform(x))[0].argmax())\n", - "print(\"Counterfactual class prediction:\", model.predict(result_cfrl.data['cf']['X'])[0].argmax())\n" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "6559f2e3-72db-4ca3-b949-8e3d7371a10a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "fixed acidity instance: 8.965 counter factual: 9.2 difference: -0.2350657\n", - "volatile acidity instance: 0.349 counter factual: 0.36 difference: -0.0108247\n", - "citric acid instance: 0.242 counter factual: 0.34 difference: -0.0977357\n", - "residual sugar instance: 2.194 counter factual: 1.6 difference: 0.5943643\n", - "chlorides instance: 0.059 counter factual: 0.062 difference: -0.0031443\n", - "free sulfur dioxide instance: 6.331 counter factual: 5.0 difference: 1.3312454\n", - "total sulfur dioxide instance: 14.989 counter factual: 12.0 difference: 2.9894428\n", - "density instance: 0.997 counter factual: 0.997 difference: 0.0003435\n", - "pH instance: 3.188 counter factual: 3.2 difference: -0.0118126\n", - "sulphates instance: 0.598 counter factual: 0.67 difference: -0.0718592\n", - "alcohol instance: 9.829 counter factual: 10.5 difference: -0.6712008\n" - ] - } - ], - "source": [ - "cfrl = scaler.inverse_transform(result_cfrl.data['cf']['X'])\n", - "compare_instances(cfrl, x)" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "ce1c7e49-c6dc-41c5-9214-d33f42569231", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "1ea3785ba4d44d89bc55e41ac24d4180", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/1 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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SEggKSnJrKD+d4EuIiIiUpRoN49sKFGiBLVr12bLli2mtol7KV68OABJSUlWnbNixYp4eXmxZcsWi4+5ey57e3vT2Llz5zh06JDZPH9/f7Zt22ZxbD4+PgDs2bPHNJaQkMC3335rcWwiIiIihYnuTGfTmDFj6Nu3Ly+88ALPPPMMTk5OHD58mJo1a/LUU0+lm1+uXDkcHR3ZsmULLi4uFCtWzFSUWsLW1pZx48YxduxYxowZQ7t27bCxseG7776jbdu2Ga5VqVIlvL29mTdvHiNHjiQhIYGIiAg8PT3N5g0bNozQ0FB69uxJv379cHV15dixY7i6uhIaGppu3apVqxIYGMj06dOJj4/Hw8ODt956y+KeaxEREZHCRnems6lBgwasXr2axMRExo0bx6hRo/j+++/x9vbOcL6DgwOzZs3i559/pnfv3hkWqffSvn17IiMjOX36NCNGjGDChAmcOnUq0w+Hsbe3JzIyEjs7O0aMGMGiRYsYNGgQDRs2NJtXqVIl3n//fdzc3Jg0aRLDhg1jx44dmW63BzB37lyaNGnC7NmzmTRpEo0aNaJt27bZviYRERGRwsDGaGm/gkgO024eBZ9yZTnlynKFPVceHi60H/Nxjqy1Nbxjoc5VTivsX1s5Sbn6x71289CdaRERERERK6lnWkREJBclJqWwNbxjjqyVfDs1R9YREeupmBYREclFN+JukVP/eK5PqBPJe2rzEBERERGxkoppERERERErqZgWEREREbGSeqZFREQKqOTbqUWubzoxKYUbcbfyOgwRExXTIiIiBZR9cbsc27O6oNga3jHHHuAUyQlq8xARERERsZKKaRERERERKxWpYnrx4sU0bdqU6tWrExYWRnR0NAaDgePHj+fK+f38/IiMjHzg54mMjMTPz++e80JCQggLCzO9DgsLIyQkxPT6yJEjuRKviIiISEFVZHqmjx49SmRkJKNHj6Zhw4aUKVMGd3d3oqKiqFChQl6Hl6O6du3KU089le3jhg4dSmJioun1kSNHWLx4McOHD8/J8EREREQKjSJTTJ86dQqAnj174uzsbBr39fXNo4geHG9vb7y9vbN9XGH7oUJERETkQSsSbR5hYWGMHz8egHr16mEwGIiOjk7X5rFt2zaqV6/O/v37TceePXuWunXrsmDBAtPYwYMH6dWrF7Vr18bPz4/JkycTHx9v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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import shap\n", - "from alibi.explainers import KernelShap\n", - "\n", - "predict_fn = lambda x: model(scaler.transform(x))\n", - "\n", - "explainer = KernelShap(predict_fn, task='classification')\n", - "\n", - "explainer.fit(X_train[0:100])\n", - "\n", - "result_x = explainer.explain(x)\n", - "result_cfrl = explainer.explain(cfrl)\n", - "\n", - "plot_importance(result_x.shap_values[0], features, 0)\n", - "plot_importance(result_cfrl.shap_values[0], features, 0)" - ] - }, - { - "cell_type": "markdown", - "id": "9223ff2e-66c7-40a0-ba8a-7655ef7650ca", - "metadata": {}, - "source": [ - "### Counterfactual Instances" - ] - }, - { - "cell_type": "markdown", - "id": "6d142f8a-c97f-4965-8b76-840b0aed5164", - "metadata": {}, - "source": [ - "First we need to revert to using tfv1" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "4fc13edf-3e05-4a7f-b5d6-f822923df98d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING:tensorflow:From /home/alex/miniconda3/envs/alibi-explain/lib/python3.8/site-packages/tensorflow/python/compat/v2_compat.py:96: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "non-resource variables are not supported in the long term\n" - ] - } - ], - "source": [ - "import tensorflow.compat.v1 as tf\n", - "tf.disable_v2_behavior()" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "38105a7b-b86e-4720-9015-e7838ed82e0c", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING:tensorflow:OMP_NUM_THREADS is no longer used by the default Keras config. To configure the number of threads, use tf.config.threading APIs.\n", - "WARNING:tensorflow:No training configuration found in the save file, so the model was *not* compiled. Compile it manually.\n", - "WARNING:tensorflow:No training configuration found in the save file, so the model was *not* compiled. Compile it manually.\n" - ] - } - ], - "source": [ - "from tensorflow.keras.models import Model, load_model\n", - "model = load_tf_model() \n", - "ae = load_ae_model()" - ] - }, - { - "cell_type": "markdown", - "id": "3d48f384-3c88-4735-84c0-af9b0d76b7bd", - "metadata": {}, - "source": [ - "The counterfactual instance method in alibi generates counterfactuals by defining a loss that prefers interpretable instances close to the target class. It then uses gradient descent to move within the feature space until it obtain a counterfactual of sufficient quality. " - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "33cf22f1-0adb-4cfb-b258-aadcab34c46e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING:tensorflow:From /home/alex/Development/alibi-explain/alibi/explainers/counterfactual.py:169: The name tf.keras.backend.get_session is deprecated. Please use tf.compat.v1.keras.backend.get_session instead.\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "`Model.state_updates` will be removed in a future version. This property should not be used in TensorFlow 2.0, as `updates` are applied automatically.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Instance class prediction: 0\n", - "Counterfactual class prediction: 1\n" - ] - } - ], - "source": [ - "from alibi.explainers import Counterfactual\n", - "\n", - "explainer = Counterfactual(\n", - " model, # The model to explain\n", - " shape=(1,) + X_train.shape[1:], # The shape of the model input\n", - " target_proba=0.51, # The target class probability\n", - " tol=0.01, # The tolerance for the loss\n", - " target_class='other', # The target class to obtain \n", - ")\n", - "\n", - "result_cf = explainer.explain(scaler.transform(x))\n", - "print(\"Instance class prediction:\", model.predict(scaler.transform(x))[0].argmax())\n", - "print(\"Counterfactual class prediction:\", model.predict(result_cf.data['cf']['X'])[0].argmax())\n" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "56a4399b-659c-4d60-bd2c-e3c6ca259f28", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "fixed acidity instance: 9.2 counter factual: 9.23 difference: -0.030319\n", - "volatile acidity instance: 0.36 counter factual: 0.36 difference: 0.0004017\n", - "citric acid instance: 0.34 counter factual: 0.334 difference: 0.0064294\n", - "residual sugar instance: 1.6 counter factual: 1.582 difference: 0.0179322\n", - "chlorides instance: 0.062 counter factual: 0.061 difference: 0.0011683\n", - "free sulfur dioxide instance: 5.0 counter factual: 4.955 difference: 0.0449123\n", - "total sulfur dioxide instance: 12.0 counter factual: 11.324 difference: 0.6759205\n", - "density instance: 0.997 counter factual: 0.997 difference: -5.08e-05\n", - "pH instance: 3.2 counter factual: 3.199 difference: 0.0012383\n", - "sulphates instance: 0.67 counter factual: 0.64 difference: 0.0297857\n", - "alcohol instance: 10.5 counter factual: 9.88 difference: 0.6195097\n" - ] - } - ], - "source": [ - "cf = scaler.inverse_transform(result_cf.data['cf']['X'])\n", - "compare_instances(x, cf)" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "0d7becb3-3006-468a-9b98-1ebd02dc7288", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "6abeffc3bd6e4d51a4dc8021c96f5a19", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/1 [00:00,\n", - "
    )" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAFECAYAAADlf7JXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABmNklEQVR4nO3deVxU5fv/8ReDgigooCyZWa5jH0VxRRTTUJTcRTTXcsk9NVfINbVcMlLB3bQ0y9Ayyz65m5VlpKXpJytNs3InXBAVEJjfH/6crxP7iA7g+/l48Mi55z73uc59aLg4XOc+diaTyYSIiIiIiOSawdYBiIiIiIgUVEqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkVsHYA8vC5fvk5aWsFY5rx0aWfi4hJsHcZDTefAtjT/tqX5ty3Nv23Zev4NBjvc3Epk+r6SabGZtDRTgUmmgQIVa2Glc2Bbmn/b0vzblubftvLz/KvMQ0RERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKegKiFFouJZ0o5ph33+IeHi55NpZYR+fAdpJvpdo6BBGRfEnJtBRaxRyL0G7MJ7YOQ6RQ2BzRwdYhiIjkSyrzEBERERGxkpJpERERERErWZ1ML1y4kCZNmlCtWjXCw8PzMqYHrnfv3owYMcKibf369QQGBvKf//yH3r17P7BYjh07htFoJCYmxtxmNBpZu3Ztnu7n9OnTGI1Gvvjiiyz7rV27FqPRmKf7FhERESksrKqZPnLkCFFRUYwePZoGDRpQunTpvI7LpmJjY3nllVfo2bMnwcHBlCpVyqbxREdHU65cuTwd09PTk+joaCpWrJin44qIiIg8TKxKpk+ePAlAz549cXZ2zrRfYmIixYoVsy4yG/rzzz9JTU2lc+fOVKtW7Z7GSk1NJTU1FQcHB6vH8PX1vacYMuLg4HBfxhURERF5mOS6zCM8PJzx48cDULduXXNJQkxMDEajka+//prBgwdTu3Ztpk+fDsDZs2cZNWoUDRo0oFatWvTv39+ckN+RlJTE66+/TtOmTalRowbt27fnyy+/zDaeZcuWERQUhI+PD40aNaJ///7ExsYCsHHjRoxGI9evX7fYJjAwkDlz5mQ4XlRUFD179gSgQ4cOGI1GNm7caD6+Y8eOWfT/d4lIeHg4ISEh7Ny5kzZt2lCzZk0OHz6cafzvvfceTZs2xdfXl8GDB5tjv1tGZR5r166lZcuW1KhRg6CgIN555x3ze1u2bKFatWrs27fP3Hb69Gnq1KnDvHnzzK//XeaRnJzM9OnTqVevHg0aNGDmzJmkpKSki+fKlStMnjyZRo0a4ePjQ7du3fjpp58yPUYRERGRwirXV6aHDh2Kt7c3S5YsYfXq1RQrVozKlSvz888/AzBx4kRCQkJ4/vnncXR05MqVK/To0QNXV1deeeUVnJycWL58OX379mXbtm3mK9cjRozg8OHDDB8+nPLly7NlyxaGDBnCRx99xJNPPplhLJs2bWLp0qWMHTuWKlWqcOXKFb777jtu3rxp9YR06dIFd3d3pk+fzhtvvMFjjz1G+fLlOX78eI7HOHPmDHPnzmXo0KF4eHhkWqKxc+dOpk+fTrdu3WjRogX79+9nwoQJ2Y6/fv16ZsyYQd++fQkICCAmJobZs2eTnJzMwIEDeeaZZ9ixYwcTJkxg8+bNlChRgpdffply5coxbNiwTMd944032LBhA6NGjaJSpUps2LCBrVu3WvRJTk6mb9++xMfHM378eNzd3Vm3bh19+vRh+/bteHh45HieRERERAq6XCfT5cuXp3z58gD4+PhQokQJi/eDg4N56aWXzK/nz5/PzZs32bRpE66urgDUqVOHwMBAPvroI3r27Mm+ffvYs2cP7777Lg0aNAAgICCAU6dOsWTJEiIjIzOM5fDhwwQEBJivJAO0bNkyt4dkwdvbm8qVKwO3rwhXrVo112NcuXKFd955J9NfAu5YunQpTZo0Ydq0aQA0adKES5cusWHDhky3SUtLIyoqipCQEPONnwEBAVy7do1ly5aZf4mZMmUKbdu2ZebMmVSrVo2DBw/y4YcfZlpucvnyZT744AOGDx9Ov379zPG0bt3aot8nn3zC8ePH+eyzz3jiiScAaNSoEcHBwaxatYqwsLAczRFA6dKZlwiJSP6jh+bYlubftjT/tpWf5z/PH9rSrFkzi9f79u2jUaNGODs7m0sGSpQoQfXq1fnf//4HwLfffouHhwd16tSxKCvw9/dn48aNme7rySef5MMPPyQyMpJmzZpRvXp17O3t8/qQcs3LyyvbRDolJYWjR48yefJki/agoKAsk+nz589z8eJFgoODLdpbt27NunXr+O2336hZsyaurq68+uqrDBo0iKJFizJs2LAs67+PHTtGUlISzZs3N7cZDAaaN2/OW2+9ZW7bt28f1atXp1y5chbnqn79+ubzmVNxcQmkpZlytU1u5Of/8UQKotjYa7YO4aHl4eGi+bchzb9t2Xr+DQa7LC8A5nky/e+VPS5fvsyhQ4f4/PPP0/X19/c394mNjaV69erp+mSVHHfu3Jnr168THR3NokWLcHV1pVu3bowYMcKmSXWZMmWy7XP58mVSU1PTzVd2K6PcqanObLurV6+a2xo2bEiZMmW4cuUKXbt2zXLcf/75J8tx74770KFDGZ6rO3+xEBEREXlY5HkybWdnZ/G6VKlSBAYGMnTo0HR975SIlCpVCi8vLxYtWpSrfRkMBvr06UOfPn04d+4cmzdvZt68eXh7e9O9e3ccHR0BuHXrlsV2dyecOZXVWG5ubrkez83NDXt7e+Li4iza//363+7UJGe23d3L+L3xxhukpqZSpkwZZs6cSURERKbj3vkFIC4uzlyOk9F+SpUqRY0aNXjllVfSjXEvK5aIiIiIFER5nkz/m7+/P1u2bKFKlSqZLpPn7+/P22+/TfHixalUqZJV+3nkkUcYOHAgH330ESdOnABul1sAnDhxgrp16wLw008/kZCQkOvxvb29zWPduSp77tw5Tp48aa4dzo0iRYrw5JNPsmvXLrp3725u37FjR7ZxeHp6snXrVpo2bWpu37JlC87OzuYHrMTExLB27Vrmz5+Ps7Mz/fv3p2XLlrRq1SrDcatWrYqjoyO7du0yn4O0tDR27dpl0c/f359vvvmGsmXLFrr1xUVERERy674n03369OHTTz/l+eefp1evXnh5efHPP/+wf/9+6tatS9u2bWncuDEBAQH069ePAQMGULlyZRISEvj1119JSkpizJgxGY49ZcoUSpUqRa1atXBxcSEmJoY///yTcePGAVCzZk28vLx47bXXGDlyJFeuXOGtt97Kcm3szHh7e1OjRg0WLFiAk5MTaWlpLFu2zOIqbm4NHjyYF198kalTpxIUFMT+/fv5+uuvs9zGYDAwfPhwpkyZgqurK40bN2b//v2sW7eO0aNH4+joyPXr15kwYQKtW7c211Y/++yzvPLKK9SvXx93d/d047q5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Bw/mww8/xM7OLldzJSIiIlKQZZlMly9fHldXV0wmk0WpQVpaGlFRUYSEhJivNgcEBHDt2jWWLVvG888/j7e3N56enjg4OKQrU2jTpo353yaTifr163PhwgXWr1+fq2T6yJEj9OzZk9atW5vbOnTokOPtM3KnRtre3v6eyiuWLVuGo6Njpu9fvnyZDz74gOHDh9OvXz8AmjRpYnEsGTlx4gT//e9/mTVrFp06dTJv1759e5YsWcLKlSspXrw4s2fPplevXmzatImdO3dSokQJwsLCMh33q6++4ujRo6xfv55atWoBt+u1g4KCLJLphQsXUqZMGVasWIGDgwNw++r8M888w5dffkmzZs1yMj0AlC7tnOO++cHDumB/fqJzICLy4OWHz978EENmrKqZPn/+PBcvXiQ4ONiivXXr1qxbt47ffvuNmjVrZrr91atXiYqKYteuXVy4cMF89dbLyytXcVSrVo2VK1diMBho1KgRFSpUyP3B3AcNGzbMMpGG26USSUlJNG/e3NxmMBho3ry5+Yp4Ro4cOYLJZLKYe4PBQHBwsMV2devWpU+fPkyePJmUlBTeffddihcvnum4hw8fpkyZMuZEGuDRRx+levXqFv327dtHx44dMRgM5pKUcuXK8eijj/K///0vV8l0XFwCaWmmHPe3JQ8PF2JjtWy9Lekc2FZ+/kEmIveXrT97bf35bzDYZXkB0Kp1pu/Ux5YuXdqi/c7rq1evZrl9eHg4n3/+Of3792flypV8+OGHdO7cmaSkpFzFMWXKFFq0aMHixYsJDg6mZcuW/Pe//83VGPdDmTJlsu3zzz//AJnPYWYuXrxI8eLF063CUbp0aW7evElycrK5rW3btiQnJ1OlShXq1auX5bixsbEZ3pD473guX77MihUrqF69usXX33//zblz57Lch4iIiEhhY9WVaQ8PDwCLG9zufl2qVKlMt01KSmLPnj1MmTKF7t27m9vff//9XMdRsmRJJk2axKRJk/j111956623GDt2LEajkcqVK+Pg4MCtW7cstomPj8/1fgAcHR3TjZXZLw05qRu+k3DHxcXh6upqbv/3nP6bp6cnN27c4ObNmxYJdVxcHE5OTubSi5SUFCZPnkzVqlX5/fffiY6O5tlnn810XA8PDy5dupSuPS4uzmI1klKlStGiRQu6dOmSrq+bm1uWsYuIiIgUNtlemS5atGi6K8Z36qH/fbPcli1bcHZ2Nj90JKNtk5OTSUtLMyd9AAkJCezevdvqg4DbJR/jx48nLS2NkydPmuM8c+aMRQx3r3qRG15eXly/fp0LFy6Y27755hur461atSqOjo7s2rXL3JaWlmbxOiM+Pj7Y2dmxbds2c5vJZGLbtm0WK4csXbqUP/74g8WLFzNgwADmzJnD6dOnsxz3n3/+4aeffjK3nT17lqNHj1r08/f35/fff6dGjRr4+PhYfJUrVy7Hxy8iIiJSGGR7ZbpChQrs2rWLnTt34uXlhaenJ15eXgwfPpwpU6bg6upK48aN2b9/P+vWrWP06NHmeuGKFSvyzz//sHHjRqpUqYKbmxvlypXDx8eHRYsW4ezsjMFgYPny5Tg7O5OQkJCr4Lt3705QUBBVqlTBzs6O9evXU7x4cXO9dosWLYiMjGTixImEhIRw9OhRPvroIyum6fZNfsWKFWPChAn07duX06dP88EHH1g1Fty+itu1a1eioqIoUqQIlStXZsOGDdy4cSPL7SpVqkSbNm2YPn06169f57HHHmPDhg2cPHnSvOLK0aNHWbp0KZMmTeKxxx5j2LBh7N69mwkTJrB69eoMr5w3bdqUatWqMXLkSMaOHYuDgwNRUVHpSj9efPFFunTpwsCBA+ncuTNubm5cuHCBb7/9lk6dOmW4fKCIiIhIYZXtlekePXrQuHFjJkyYQGhoKOvXrwega9euTJw4kZ07dzJ48GA+++wzwsPDGThwoHnbZ555hpCQEObOnUtoaKh5ibyIiAgee+wxwsLCeO2112jZsiUdO3bMdfC+vr58/PHHjBgxgpdeeslcz3tn+b6qVasyc+ZMDh06xJAhQ9i/fz+zZs3K9X7g9rJ+kZGRnD9/nmHDhvHpp58SERFh1Vh3jB8/ns6dO7No0SLGjBmDp6cnffv2zXa7V199lU6dOrFo0SKGDh3KmTNnWLp0KfXq1SM5OZmwsDD8/Pzo1q0bAA4ODrz++uv8+OOPFmti383Ozo4lS5ZQqVIlJkyYwKxZs+jZsye1a9e26FehQgXzkxOnTJnCgAEDiIqKwsHBgccff/ye5kNERESkoLEzmUwFYzkFKXS0mofkhs6BbXl4uNBuzCe2DkNEHrDNER1s/tlr68//+7Kah4iIiIiIWLmah4iIPFySb6WyOeLeHoolIgVPYlKKrUPI95RMi4hIthyK2tv8T70PM1v/mfthp/mXrKjMQ0RERETESkqmRURERESspGRaRERERMRKqpkWEZFsJd9KxcPDxdZhPNQ0/7al+betrOY/MSmFa/E3H2A0lpRMi4hIthyK2mudaRHJlzZHdMCWt4eqzENERERExEoPRTIdFRWFn59frrZJTk4mKiqKX375xaL99OnTGI1GvvjiC3NbYGAgc+bMyZNY71VG8WVk7dq1GI1G8+uYmBiMRiPHjh0DMj9+EREREfk/D0UybY1bt26xcOHCdMmkp6cn0dHR1K1b10aRZc3a+KpXr050dDTly5cHMj9+EREREfk/qpnOJQcHB3x9fW0dRqasjc/Z2TlfH5eIiIhIfpRvr0xv3LiRGjVqEB8fb9F+/PhxjEYj3377rblt7dq1tGzZkho1ahAUFMQ777yT5dg3btxg+vTptGrVilq1ahEYGMi0adNISEgw96lTpw4AL7/8MkajEaPRyOnTp3NcRnHgwAF69epFrVq18PPzY9KkSRbjZ+TgwYMMHjyYgIAAfH196dChA59++mm6fmfOnGH06NH4+flRq1Yt2rVrx+bNm4GMyzySk5OZPn069erVo0GDBsycOZOUFMvHg/67zCOz4w8NDSU8PDxdTOHh4XTs2DHL4xMREREpbPJtMt2iRQsAduzYYdH++eefU6ZMGXMN9Pr165kxYwaBgYEsXbqU4OBgZs+ezfLlyzMdOzExkdTUVEaNGsWKFSsYOXIk3333HSNHjjT3Wb16NQBDhgwhOjqa6OhoPD09cxT7Dz/8QJ8+fShTpgyRkZG8/PLLfPnll0yYMCHL7c6ePUudOnV47bXXWLJkCS1btmTChAl89tln5j5xcXE8++yzHDlyhLCwMJYuXUpoaCjnzp3LdNw33niDDRs2MHToUObOncvZs2dZtWpVlrFkdvyhoaFs27aN69evm/tev36dbdu20blz55xMj4iIiEihkW/LPEqWLEmTJk34/PPPLZK0zz//nFatWmFvb09aWhpRUVGEhISYr5YGBARw7do1li1bxvPPP4+jo2O6sd3d3Zk2bZr5dUpKCuXKlaNHjx6cPXuWsmXL4uPjA0D58uVzXf4QERFB7dq1mT9/vrnNy8uLPn36cOzYMapWrZrhdm3atDH/22QyUb9+fS5cuMD69etp27YtAO+88w4JCQls3LjRnNz7+/tnGsvly5f54IMPGD58OP369QOgSZMmtG7dOstjyOz427Zty+zZs9m6dav5vGzZsoVbt26ZYxQRERF5WOTbZBqgdevWhIeHc/nyZdzc3Pjll184deoUr732GgDnz5/n4sWLBAcHp9tu3bp1/Pbbb9SsWTPDsTdt2sQ777zDn3/+yY0bN8ztp06domzZslbHfPPmTQ4dOsSkSZMsSinq1q1L0aJF+fnnnzNNpq9evUpUVBS7du3iwoULpKamArcT8Tu+++47mjRpkuOr5MeOHSMpKYnmzZub2wwGA82bN+ett97K9fE5OzvTqlUrPv74Y3My/fHHHxMYGIibm1uuxipd2jnX+7clLdhvezoHIiKSEVv+fMjXyXRgYCBFihRh+/btPPvss3z++ed4e3ubV6qIjY0FoHTp0hbb3Xl99erVDMfdsWMHYWFhdO/enVGjRuHq6kpsbCzDhg0jKSnpnmKOj48nNTWVadOmWVz9viOrcozw8HB++uknhg4dSqVKlXB2dmbdunXs2rXL3OfKlSvmq8Y58c8//wCZz5E1QkND6d27N3///Tcmk4kDBw5kWVaTmbi4BNLSTFbH8SB5eLgQG2vLJeFF58C29IuMiORn9/Png8Fgl+UFwHydTJcoUYKmTZvy+eef8+yzz7JlyxaCg4Oxs7MDwMPDA7hdR3y3O69LlSqV4bhbt26lVq1avPLKK+a277//Pk9idnFxwc7OjhdffJGmTZumez+zK8pJSUns2bOHKVOm0L17d3P7+++/b9HvTuKfU2XKlAFuz4mrq6u5/d9zlhv169fn8ccfZ+PGjZhMJjw9PQkICLB6PBEREZGCKt/egHhHmzZt2L9/P7t37+bvv/+2qCv29vbG09OTrVu3WmyzZcsWnJ2dLR5KcrfExEQcHBws2u6shnFH0aJFAXJ9pbp48eL4+vryxx9/4OPjk+7r7pKNuyUnJ5OWlmYRV0JCArt377bo5+/vz969e81XnLNTtWpVHB0dLa5up6WlWbzOSHbH37lzZzZt2sQnn3xCx44dsbe3z1E8IiIiIoVJvr4yDdC0aVOKFSvGlClTKFeunEUNtMFgYPjw4UyZMgVXV1caN27M/v37WbduHaNHj87w5kOARo0aMX36dJYsWUKtWrX48ssv2bdvn0UfBwcHypUrx5YtW6hSpQqOjo6ZJuf/NnbsWPr06YPBYKBVq1aUKFGCc+fOsWfPHkaNGkWFChXSbePi4oKPjw+LFi3C2dkZg8HA8uXLcXZ2tlhSr0+fPmzatImePXsyePBgvL29OXnyJDdu3GDAgAHpxnVzc6Nr165ERUVRpEgRKleuzIYNGyzqxDOS2fHfSfY7derEggULSElJISQkJEfzIiIiIlLY5PtkulixYgQGBrJ582YGDhyY7v2uXbuSlJTEmjVrePfdd/Hy8iI8PJw+ffpkOma3bt04ffo0a9asISkpicaNGxMREUHXrl0t+k2bNo05c+bQt29fkpOTs72ae0e9evV47733iIyMZPz48aSlpVG2bFmaNGliLrvISEREBFOmTCEsLAxXV1d69uxJYmIia9euNfdxd3dn3bp1zJ07l5kzZ5KcnMzjjz/OoEGDMh13/PjxpKSksGjRIgwGA+3bt6dv377Mnj07y+PI6PjLlSsH3C6xufOLTUa/HIiIiIg8DOxMJlPBuANM8pUrV67w1FNPMXnyZLp06WLVGLoBUXJD58C2PDxcaDfmE1uHISKSzuaIDroBUQqOhIQETpw4wZo1ayhRooTWlhYREZGHmpJpyZWff/6Z5557jkcffZQ5c+bg5ORk65BEREREbEZlHmIzKvOQ3NA5sK1SrsVxKKpVe0Qk/0lMSuFa/M37Nr7KPERE5J45FLXXLzM2pF8mbUvzb1v5ff7z/TrTIiIiIiL5lZJpERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaRERERERKymZFhERERGxkpJpERERERErKZkWEREREbGSnoAoNmMw2Nk6hFwpaPEWRjoHtqX5ty3Nv21p/m3LlvOf3b7tTCaT6QHFIiIiIiJSqKjMQ0RERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKSqZF/r+bN2/y0ksvERQURHBwMF988UWmfdevX09QUBAtWrRg+vTppKWlWbyflJREmzZtCAkJud9hFxp5Mf87d+4kJCSEtm3b0qZNG1atWvWgwi+Q/vjjD5599llatWrFs88+y6lTp9L1SU1NZdq0abRo0YKgoCA2bNiQo/ckZ+71HCxatIg2bdrQrl07QkJC+Prrrx9g9AXfvc7/HSdPnqRWrVrMmTPnAURd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SUk3XlpamunWrVumyZMnm3r37m1uf/fdd01Vq1ZN1z8sLMzUqVMni7a///7bVLVqVdPu3bvNbVWrVjV17NjRot+3335rqlq1qikmJsaivUePHqbhw4dnesw53S6j2L777jtT1apVTb/99luuxrt69aqpZs2appkzZ2Ya1/Dhw029evWyaDt8+LCpatWqpmvXrmW6XUaefvpp0+zZs82vU1NTTQEBAabw8HCLflOnTjXVqVPHlJiYaDKZ/u/7YceOHdnuY9SoUaYmTZqYbt68meH7Gc3V3VJSUkw3b940+fr6mj7++GOTyZT98W7ZssXUoEGDbGO728SJE03t27dP1/7mm2+aGjdunKuxRAoDlXmIiOQxFxcXPvzwQ4uvmjVrcvDgQW7cuEFwcDApKSnmr4YNG/LPP/9w/vx5AK5evcqrr77K008/TfXq1alevTrR0dGcOnUqT+N86qmnLF5/++23eHh4UKdOHYv4/P39+d///pfpONZudy/jHTx4kMTExFzfXFi+fHmKFy/O2LFj2blzJ/Hx8bmOD25fEb548SLBwcEW7a1btyYhIYHffvvN3GZnZ5durjPy3Xff0bp161zVrh86dIi+ffvi5+fHf/7zH2rVqsWNGzf4448/gOyPt2rVqly7do2wsDD27t3LjRs3crxvEblNZR4iInnM3t4eHx+fdO2XL18GoE2bNhlud+7cOR599FHCw8P56aefGDp0KJUqVcLZ2Zl169axa9euPI2zTJky6eKLjY2levXq6fra29tnOo61293LeFeuXAHAw8MjV2OXKlWKt99+m6ioKF566SVMJhONGzdm8uTJPPbYYzkeJzY2FoDSpUtbtN95fXeZRKlSpXBwcMh2zCtXruTqeM6ePUu/fv2oWbMm06ZNw9PTk6JFizJo0CCSk5PN+87qeCtWrMjixYtZvnw5AwcOpEiRIgQFBTFx4kTc3d0z3G/JkiUzLIuJj4/P09VYRAoKJdMiIg/InURj2bJl6ZIwgAoVKpCUlMSePXuYMmUK3bt3N7/3/vvv52gfDg4O3Lp1y6Its6uvdnZ26eLz8vJi0aJFOdrXvW53L+O5uroCt5PazJK+zPj6+rJy5UoSExP59ttvmT17NmPGjGH9+vU5HuNO0hsXF2fRfue1NUmlq6urOUnPia+//prExEQWL15M8eLFgdu1+v+ud87ueJs1a0azZs24du0ae/bsYebMmcyYMYN58+ZluN+KFSty/vx5bty4Yd4v3K6lrlixYm4PW6TAUzItIvKA1K5dm2LFinHx4kWaNWuWYZ9r166RlpZmcSUzISGB3bt3W/QrWrQocHvVi7uXWfP29ubMmTMW7XdWX8iOv78/b7/9NsWLF6dSpUo5Pi5rt7uX8e7M5aZNmwgLC8uwT9GiRUlKSsp0P8WKFSMwMJDjx4+zbNmyXMXo7e2Np6cnW7dupWnTpub2LVu24OzsjNFozNV4cPu4t2zZwqhRo3K0dF5iYiIGg4EiRf7vR/mWLVvS3fx6R3bH6+LiQrt27di/fz8HDx7MdL8BAQEA7Nixgw4dOgBw4cIFfvjhB/PNniIPEyXTIiIPSMmSJXnxxRd57bXXOHPmDPXr1yctLY1Tp04RExPDokWLcHFxwcfHh0WLFuHs7IzBYGD58uU4OzuTkJBgHuvOFcDVq1fTsGFDnJ2dqVixIi1atCAyMpKJEycSEhLC0aNH+eijj3IUX+PGjQkICKBfv34MGDCAypUrk5CQwK+//kpSUhJjxozJ0+3uJY6SJUsydOhQ5s2bx61bt3jqqadITk7myy+/5MUXX8TLy4sKFSqwa9cudu7ciZeXF56envzyyy989NFHNG/enLJly3LhwgWio6Np2LBhrmI0GAwMHz6cKVOm4OrqSuPGjdm/fz/r1q1j9OjRVq0jPWzYMEJDQ+nZsyf9+vXD1dWVo0eP4urqSmhoaLr+DRs2JDU1lZdffpnQ0FCOHz/OqlWrKFmypLnPnj17sjzeDz74gEOHDtGkSRM8PT05deoUW7duNSfJGfH29iY0NJSZM2diMplwd3dn4cKFlC1blvbt2+f6uEUKOiXTIiIP0IABA/D09GT16tW8/fbbODo68sQTT9C6dWtzn4iICKZMmUJYWBiurq707NmTxMRE1q5da+5Tr149+vfvz5o1a3jzzTepX78+7777LlWrVmXmzJksXryYHTt20LBhQ2bNmmVRMpIZOzs7Fi5cyNKlS1m9ejXnzp2jVKlSVKtWLcvHfFu73b2ON2jQIEqVKsWaNWv44IMPKFWqFPXq1TMv2dajRw9++eUXJkyYwNWrV3nxxRdp06YNdnZ2zJs3j7i4ONzd3WnWrBmjR4/OdZxdu3YlKSmJNWvW8O677+Ll5UV4eLjVj46vWLEi77//PhEREUycOBGAypUrZxqb0Whk1qxZLFy4kB07dlCtWjUWLFjAqFGjzH3Kly+f5fEajUZ2797NrFmzuHr1Kh4eHnTp0oWRI0dmGeukSZNwcnJi9uzZJCYmUr9+fSIiIgr0w2hErGVnMv3/xUVFRERERCRXtDSeiIiIiIiVlEyLiIiIiFhJybSIiIiIiJWUTIuIiIiIWEnJtIiIiIiIlZRMi4iIiIhYScm0iIiIiIiVlEyLiIiIiFhJybSIiIiIiJX+H0Z4zQNPbvGYAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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RYs4e/ZsjteIjo4mODj4foWYYzVr1iQ6OpqKFSvmdygiIiIiDxVd+Ghj7u7uuLu752nbxMRESpQoga+vr22DyiNnZ+cCE4uIiIjIw0RnsvPgwIED9O3bl7p161K/fn369u3LsWPHAMt2kTNnztChQwcA/vOf/2A0GjEajcD/tWJ89dVXDB06lLp16zJz5kwg83aRnTt3EhoaSu3atfHz82PQoEHZnh3fu3cv/fv3x9/fn3r16tG9e3f27duXYd4vv/zC0KFDadCgAXXr1iU0NJSvv/7aIsZ/tovEx8czbtw46tatS0BAAEuXLrUikyIiIiKFk85k51JMTAwDBgzAz8+PuXPn4uTkxA8//MDFixf597//bTHX09OT1157jfHjxzNt2jRq1qyZYb3JkycTEhLCs88+i6OjY6b73Lx5M2FhYbRr147hw4djMpn49ttvuXz5Mo8++mim25w5c4annnqKAQMGYDAY+PLLLxk0aBBr166lfv36AJw8eZKePXtSqVIlZsyYgaurK//73/84f/58lsf/4osv8t133/Hiiy9Srlw5Vq1axZ9//kmxYvooiYiIiKRTZZRLr7/+Okajkbfeegs7OzsAnnzyyUznOjg4mM9cV61aNdPWi+DgYF544YUs95eWlkZERARBQUG8/vrr5vGWLVtmG2efPn0s1vDz8+O3337jgw8+MBfZixcvxsXFhffff58SJUoA0LRp0yzXPHHiBLt27WLBggW0bdsWAD8/P5566imcnZ2zjSczZcvmfpvCriA9xOJhpRxaR/krfB627+nDFm9BpBxax1b5U5GdCzdv3uTHH39k8uTJ5gLbWi1atMj2/d9//51Lly4REhKSq3UvXLjAggUL+Oabb4iNjcVkMgFQr14985xvv/2Wjh07mgvsezl69ChgWeCXKlWKJk2acOTIkVzFBxAXl0BaminX2xVWHh4uxMbqsRHWUA6to/xZryAWNw/T91SfQesph9bJLH8Gg12eTgyqyM6F+Ph4TCYTHh4eNluzbNmy2b5/5coVgFztMy0tjWHDhnHjxg1GjRrFv/71L5ycnIiMjCQuLs487+rVq7la9++//6ZUqVIZ2lrudQwiIiIiRY2K7FwoXbo0BoOB2NhYm615rzPibm5uALna5x9//MGxY8dYuXKlRStLYmKixTxXV9dcrVuuXDlu3LhBUlKSRaH9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586dY8CAAZhMJmbMmMG6dev44IMPKFu2LMnJyQBcuXIFAA8PjxwfT2xsLO7u7hnG81pkOzs7ExwczKZNm4A7Z7HLlStHs2bN8rSeiIiISGGjM9mZeO2110hNTaVcuXLMnj2biIgIAFxcXLCzs+P555+nefPmGbbz9PQE7hTAcXFxFu/dunWLmzdvZrvfr776isTERJYsWWIuyFNSUrh27Zp5Tno7RmxsbI6Px8PDw3x3lX+6O8bc6NatG7169eL06dN8/PHHdO7cGXt7+zyvJyIiIlKYqMi+S0xMDGvXruWNN97A2dmZgQMH0rp1a9q0aUPJkiXx9fXl999/5/nnn89yjVq1arFp0yZu3bplbhnZuXPnPfedmJiIwWCgWLH/+7Zs3brVojWlUqVKeHl5sXnzZgIDA3N0TD4+PmzZsoULFy6YW0a+//77exbZxYsXByApKQlHR0eL9+rVq0elSpWYNGkS586do0uXLjmKRURERKQoULvIP9y4cYNJkybRtm1bgoODCQgI4JlnnuGll17i8uXLAIwfP57t27czYcIEdu3axf79+9m0aROjRo0y903369ePxMREhgwZwueff050dDRvvPEGJUqUyHb/jRs3JjU1lRdffJH9+/ezZs0aIiIiKF26tHmOwWBgwoQJbN++nXHjxvH555+zd+9e5s6dy9GjRzNdNyQkBDc3NwYPHszOnTvZsmULYWFh97xIsXLlygCsXr2aI0eOZDgbHhoayvfff0/dunWpUqVK9skVERERKUJUZP/DvHnzSEpKYtq0aeaxsLAwSpYsyfTp0wFo0KAB7733HpcvX2bixIkMGzaMN998k0ceeYRy5coBd+42smLFCq5cucLIkSN5//33mT9//j2LbKPRyJw5c/jxxx8ZMmQIn376KQsXLjTfui9dhw4diIqK4vfff2fUqFGEhYVx6tSpTPuu4U4/+JtvvknJkiUZM2YMixYtIjw8nPLly2cbT4MGDRg4cCBr1qyhe/fu5hyka9WqFQBdu3bNdh0RERGRosbOZDLp9g6SJ++99x6vvfYaX331lcVTNHNKdxexpCvCraccWkf5s56Hhwsdxn2c32EUKVsiOulz+w/6/9g6try7iHqyJdfOnDnD6dOnWb58OV26dMlTgS0iIiJSmKnIllxbtGgRn376KQ0bNmT06NH5HY6ISIGRfDuVLRGd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tGnTcHV1pWnTphw4cIB169YxduzYTC96BGjSpAkzZ85k6dKl1KlThy+++IL9+/dbzHFwcKBChQps3bqVatWq4ejomGXRfrfx48fTr18/DAYDbdq0oVSpUpw/f569e/cyZswYKlWqlGEbFxcXfHx8WLx4Mc7OzhgMBlasWIGzs7PFrf/69evH5s2b6d27N0OHDsXb25tTp05x8+ZNBg0alGFdNzc3unfvTlRUFMWKFaNq1aps3LjRog89M1kdf/ovAV26dGHhwoWkpKQQEhKSo7yIiIiIFBUFvsguUaIEgYGBbNmyhcGDB2d4v3v37iQlJbFmzRreffddvLy8CA8Pp1+/flmu2aNHD86cOcOaNWtISkqiadOmRERE0L17d4t5M2bMYN68efTv35/k5OR7nv1N16BBA9577z0iIyOZOHEiaWlplC9fnmbNmpnbNzITERHBtGnTCAsLw9XVld69e5OYmMjatWvNc9zd3Vm3bh3z589n9uzZJCcn869//YshQ4Zkue7EiRNJSUlh8eLFGAwGOnbsSP/+/Zk7d262x5HZ8VeoUAG406qT/gtPZr80iIiIiBRldiaTSVeeSa5dvXqVJ598kqlTp9KtW7c8raELHy3pojPrKYfWUf6s5+HhQodxH+d3GCJFypaITrrwUR5+CQkJnDx5kjVr1lCqVCndG1tEREQkEyqyJVd++ukn/vOf//Doo48yb948nJyc8jskERERkQJHRbbkip+fH7/++mt+hyEiUiAl305lS0Sn/A5DpEhJTEq596R8oCJbRETERhyK26uv3Qq6LsB6ymHBUeDvky0iIiIi8rBRkS0iIiIiYmMqskVEREREbExFtoiIiIiIjanIFhERERGxMRXZIiIiIiI2piJbRERERMTGVGSLiIiIiNiYimwRERERERvTEx8l3xgMdvkdQoGjnFhPObSO8mc95dA6yp/1lEPr3J2/vObTzmQymWwRkIiIiIiI3KF2ERERERERG1ORLSIiIiJiYyqyRURERERsTEW2iIiIiIiNqcgWEREREbExFdkiIiIiIjamIltERERExMZUZIuIiIiI2JiKbBERERERG1ORLfKA3Lp1ixdeeIGgoCCCg4P5/PPPs5y7YcMGgoKCaNWqFTNnziQtLc383s8//0zv3r1p27Ytbdu25YsvvngQ4RcItsohQFJSEu3atSMkJOR+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R4iKirLpmvfbzZs3GTNmDH5+fhiNRvOtEzds2EBgYCD//ve/6du3r83299lnn9ns9ownT56kV69e+Pr6YjQaOXPmjE3WzY2YmBiMRiPHjx9/4Pu+W3JyMnPnzsXf3x9fX18GDx6cLzkRKcj0xEcRERtzcXEx32P6n2O2dOTIERYtWsTIkSNtuu79tG7dOj7//HPmzZuHl5cXFStWJDY2lpdeeonevXsTHBxMmTJlbLa/bdu2ceXKFUJCQqxe69VXX+X69essXboUJycn81NXi6qXX36Z7du38+KLL+Lm5saiRYsYMGAAW7ZswdHRMb/DEykQVGSLiNiYvb09vr6++R1GriQmJlKiRIn7uo9Tp05RqVIli6cdHjx4kNTUVLp27XrPp6flp1OnThEYGIi/v79V65hMJpKTkx/qQvTChQt88MEHzJ492/xI6Ro1atCyZUs++eSTIvEkUJGcULuIiMgDtnHjRtq1a0etWrV46qmnWLlypcX7hw4dYujQoQQEBODr60unTp345JNPzO9v2rTJ/Ejk9HaU9DaL8PDwDGduz5w5g9Fo5PPPPzePGY1G3n77bV555RUaN25Mhw4dAEhKSuLVV1+lefPm1KpVi44dO/LFF1/c85jutV1gYCAffPABx44dM8ccFRVF7969AejUqZNFC0lO49iwYQMdOnTAx8eHJk2aMGrUKK5fv054eDjbt2/nu+++s9gf3Cnse/XqRb169ahXrx6dOnVi69atmR5Xeu7+/PNP3nnnHYtcA6xdu5bWrVtTq1YtgoKCeOeddyy2j4qKws/Pj4MHD9K1a1d8fHyy3BfAL7/8wtChQ2nQoAF169YlNDTU/PS5zKxatYquXbtSv359mjRpwtChQ/njjz8s5tzreHfv3k1ISAi+vr40bNiQbt268d1332W5z3379gEQFBRkHvPy8qJevXp8+eWXWW4nUtToTLaIyH2QkpJi8dre3h47OzvefPNNFixYwHPPPUejRo346aefWLhwIU5OTvTp0weAc+fOUa9ePXr27ImDgwM//PADkyZNwmAw0L59e1q0aMGAAQNYtWoV0dHRADg7O+c6xrfeeosGDRrw6quvkv7w31GjRnHkyBFGjhxJxYoV2bp1K8OGDePDDz/kiSeeyHKte223aNEi3njjDf766y/mzJkDgLe3N+7u7sycOZPXXnuNxx57jIoV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9PTk9OnTbNu2zVw8Z8bb25vQ0FBmz56NyWTC3d2dRYsWUb58eTp27Jjr4xYprFRki4g8QIMGDcLT05PVq1fz9ttv4+joyOOPP07btm3NcyIiIpg2bRphYWG4urrSu3dvEhMTWbt2rXlOgwYNGDhwIGvWrOH111+nYcOGvPvuu1SvXp3Zs2ezZMkSdu7cSePGjZkzZ45F60lW7OzsWLRoEcuWLWP16tWcP3+eMmXKUKNGjWwfd57X7axdb8iQIZQpU4Y1a9awfv16ypQpQ4MGDcy3luvVqxc///wzkyZN4tq1azz//PO0a9cOOzs7FixYQFxcHO7u7rRo0YKxY8fmOs7u3buTlJTEmjVrePfdd/Hy8iI8PJx+/frlei2484vT+++/T0REBJMnTwagatWqWcZmNBqZM2cOixYtYufOndSoUYOFCxcyZswY85yKFStme7xGo5E9e/YwZ84crl27hoeHB926dWP06NHZxjplyhScnJyYO3cuiYmJNGzYkIiIiIf6ITsitmZnMv3/m6OKiIiIiIhN6BZ+IiIiIiI2piJbRERERMTGVGSLiIiIiNiYimwRERERERtTkS0iIiIiYmMqskVEREREbExFtoiIiIiIjanIFhERERGxMRXZIiIiIiI29v8A3UG7/EyY1zAAAAAASUVORK5CYII=\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import shap\n", - "from alibi.explainers import KernelShap\n", - "\n", - "predict_fn = lambda x: model.predict(scaler.transform(x))\n", - "\n", - "explainer = KernelShap(predict_fn, task='classification')\n", - "\n", - "explainer.fit(X_train[0:100])\n", - "\n", - "result_x = explainer.explain(x)\n", - "result_cf = explainer.explain(cf)\n", - "\n", - "plot_importance(result_x.shap_values[0], features, 0)\n", - "plot_importance(result_cf.shap_values[0], features, 0)" - ] - }, - { - "cell_type": "markdown", - "id": "36ad53ba-d63e-4edc-b9d0-bc4ba305a593", - "metadata": {}, - "source": [ - "### Contrastive Explanations Method" - ] - }, - { - "cell_type": "markdown", - "id": "2f5db134-dd36-44c1-9b19-b04dddd66a2b", - "metadata": {}, - "source": [ - "The CEM method generates counterfactuals by defining a loss that prefers interpretable instances close to the target class. It also adds a autoencoder reconstruction loss to ensure the counterfactual stays within the data distribution." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "7aa6351b-01fd-4f6b-8f05-92f187b2737a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Instance class prediction: 0\n", - "Counterfactual class prediction: 1\n" - ] - } - ], - "source": [ - "from alibi.explainers import CEM\n", - "\n", - "cem = CEM(model, # model to explain\n", - " shape=(1,) + X_train.shape[1:], # shape of the model input\n", - " mode='PN', # pertinant negative mode\n", - " kappa=0.2, # Confidence parameter for the attack loss term\n", - " beta=0.1, # Regularization constant for L1 loss term\n", - " ae_model=ae # autoencoder model\n", - ")\n", - "\n", - "cem.fit(\n", - " scaler.transform(X_train), # scaled training data\n", - " no_info_type='median' # non-informative value for each feature\n", - ")\n", - "result_cem = cem.explain(scaler.transform(x), verbose=False)\n", - "cem_cf = result_cem.data['PN']\n", - "\n", - "print(\"Instance class prediction:\", model.predict(scaler.transform(x))[0].argmax())\n", - "print(\"Counterfactual class prediction:\", model.predict(cem_cf)[0].argmax())\n" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "96abe72c-2e01-402d-b2ed-9b61f208a95b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "fixed acidity instance: 9.2 counter factual: 9.2 difference: 2e-07\n", - "volatile acidity instance: 0.36 counter factual: 0.36 difference: -0.0 \n", - "citric acid instance: 0.34 counter factual: 0.34 difference: -0.0 \n", - "residual sugar instance: 1.6 counter factual: 1.479 difference: 0.1211611\n", - "chlorides instance: 0.062 counter factual: 0.057 difference: 0.0045941\n", - "free sulfur dioxide instance: 5.0 counter factual: 2.707 difference: 2.2929246\n", - "total sulfur dioxide instance: 12.0 counter factual: 12.0 difference: 1.9e-06\n", - "density instance: 0.997 counter factual: 0.997 difference: -0.0004602\n", - "pH instance: 3.2 counter factual: 3.2 difference: -0.0 \n", - "sulphates instance: 0.67 counter factual: 0.549 difference: 0.121454\n", - "alcohol instance: 10.5 counter factual: 9.652 difference: 0.8478804\n" - ] - } - ], - "source": [ - "cem_cf = result_cem.data['PN']\n", - "cem_cf = scaler.inverse_transform(cem_cf)\n", - "compare_instances(x, cem_cf)" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "298651d6-de8b-405e-a174-a207df37ffe9", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "984dbc2d6992460dba3e8859f45ff56f", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/1 [00:00,\n", - "
    )" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAFECAYAAADlf7JXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABmNklEQVR4nO3deVxU5fv/8ReDgigooCyZWa5jH0VxRRTTUJTcRTTXcsk9NVfINbVcMlLB3bQ0y9Ayyz65m5VlpKXpJytNs3InXBAVEJjfH/6crxP7iA7g+/l48Mi55z73uc59aLg4XOc+diaTyYSIiIiIiOSawdYBiIiIiIgUVEqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkVsHYA8vC5fvk5aWsFY5rx0aWfi4hJsHcZDTefAtjT/tqX5ty3Nv23Zev4NBjvc3Epk+r6SabGZtDRTgUmmgQIVa2Glc2Bbmn/b0vzblubftvLz/KvMQ0RERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKegKiFFouJZ0o5ph33+IeHi55NpZYR+fAdpJvpdo6BBGRfEnJtBRaxRyL0G7MJ7YOQ6RQ2BzRwdYhiIjkSyrzEBERERGxkpJpERERERErWZ1ML1y4kCZNmlCtWjXCw8PzMqYHrnfv3owYMcKibf369QQGBvKf//yH3r17P7BYjh07htFoJCYmxtxmNBpZu3Ztnu7n9OnTGI1Gvvjiiyz7rV27FqPRmKf7FhERESksrKqZPnLkCFFRUYwePZoGDRpQunTpvI7LpmJjY3nllVfo2bMnwcHBlCpVyqbxREdHU65cuTwd09PTk+joaCpWrJin44qIiIg8TKxKpk+ePAlAz549cXZ2zrRfYmIixYoVsy4yG/rzzz9JTU2lc+fOVKtW7Z7GSk1NJTU1FQcHB6vH8PX1vacYMuLg4HBfxhURERF5mOS6zCM8PJzx48cDULduXXNJQkxMDEajka+//prBgwdTu3Ztpk+fDsDZs2cZNWoUDRo0oFatWvTv39+ckN+RlJTE66+/TtOmTalRowbt27fnyy+/zDaeZcuWERQUhI+PD40aNaJ///7ExsYCsHHjRoxGI9evX7fYJjAwkDlz5mQ4XlRUFD179gSgQ4cOGI1GNm7caD6+Y8eOWfT/d4lIeHg4ISEh7Ny5kzZt2lCzZk0OHz6cafzvvfceTZs2xdfXl8GDB5tjv1tGZR5r166lZcuW1KhRg6CgIN555x3ze1u2bKFatWrs27fP3Hb69Gnq1KnDvHnzzK//XeaRnJzM9OnTqVevHg0aNGDmzJmkpKSki+fKlStMnjyZRo0a4ePjQ7du3fjpp58yPUYRERGRwirXV6aHDh2Kt7c3S5YsYfXq1RQrVozKlSvz888/AzBx4kRCQkJ4/vnncXR05MqVK/To0QNXV1deeeUVnJycWL58OX379mXbtm3mK9cjRozg8OHDDB8+nPLly7NlyxaGDBnCRx99xJNPPplhLJs2bWLp0qWMHTuWKlWqcOXKFb777jtu3rxp9YR06dIFd3d3pk+fzhtvvMFjjz1G+fLlOX78eI7HOHPmDHPnzmXo0KF4eHhkWqKxc+dOpk+fTrdu3WjRogX79+9nwoQJ2Y6/fv16ZsyYQd++fQkICCAmJobZs2eTnJzMwIEDeeaZZ9ixYwcTJkxg8+bNlChRgpdffply5coxbNiwTMd944032LBhA6NGjaJSpUps2LCBrVu3WvRJTk6mb9++xMfHM378eNzd3Vm3bh19+vRh+/bteHh45HieRERERAq6XCfT5cuXp3z58gD4+PhQokQJi/eDg4N56aWXzK/nz5/PzZs32bRpE66urgDUqVOHwMBAPvroI3r27Mm+ffvYs2cP7777Lg0aNAAgICCAU6dOsWTJEiIjIzOM5fDhwwQEBJivJAO0bNkyt4dkwdvbm8qVKwO3rwhXrVo112NcuXKFd955J9NfAu5YunQpTZo0Ydq0aQA0adKES5cusWHDhky3SUtLIyoqipCQEPONnwEBAVy7do1ly5aZf4mZMmUKbdu2ZebMmVSrVo2DBw/y4YcfZlpucvnyZT744AOGDx9Ov379zPG0bt3aot8nn3zC8ePH+eyzz3jiiScAaNSoEcHBwaxatYqwsLAczRFA6dKZlwiJSP6jh+bYlubftjT/tpWf5z/PH9rSrFkzi9f79u2jUaNGODs7m0sGSpQoQfXq1fnf//4HwLfffouHhwd16tSxKCvw9/dn48aNme7rySef5MMPPyQyMpJmzZpRvXp17O3t8/qQcs3LyyvbRDolJYWjR48yefJki/agoKAsk+nz589z8eJFgoODLdpbt27NunXr+O2336hZsyaurq68+uqrDBo0iKJFizJs2LAs67+PHTtGUlISzZs3N7cZDAaaN2/OW2+9ZW7bt28f1atXp1y5chbnqn79+ubzmVNxcQmkpZlytU1u5Of/8UQKotjYa7YO4aHl4eGi+bchzb9t2Xr+DQa7LC8A5nky/e+VPS5fvsyhQ4f4/PPP0/X19/c394mNjaV69erp+mSVHHfu3Jnr168THR3NokWLcHV1pVu3bowYMcKmSXWZMmWy7XP58mVSU1PTzVd2K6PcqanObLurV6+a2xo2bEiZMmW4cuUKXbt2zXLcf/75J8tx74770KFDGZ6rO3+xEBEREXlY5HkybWdnZ/G6VKlSBAYGMnTo0HR975SIlCpVCi8vLxYtWpSrfRkMBvr06UOfPn04d+4cmzdvZt68eXh7e9O9e3ccHR0BuHXrlsV2dyecOZXVWG5ubrkez83NDXt7e+Li4iza//363+7UJGe23d3L+L3xxhukpqZSpkwZZs6cSURERKbj3vkFIC4uzlyOk9F+SpUqRY0aNXjllVfSjXEvK5aIiIiIFER5nkz/m7+/P1u2bKFKlSqZLpPn7+/P22+/TfHixalUqZJV+3nkkUcYOHAgH330ESdOnABul1sAnDhxgrp16wLw008/kZCQkOvxvb29zWPduSp77tw5Tp48aa4dzo0iRYrw5JNPsmvXLrp3725u37FjR7ZxeHp6snXrVpo2bWpu37JlC87OzuYHrMTExLB27Vrmz5+Ps7Mz/fv3p2XLlrRq1SrDcatWrYqjoyO7du0yn4O0tDR27dpl0c/f359vvvmGsmXLFrr1xUVERERy674n03369OHTTz/l+eefp1evXnh5efHPP/+wf/9+6tatS9u2bWncuDEBAQH069ePAQMGULlyZRISEvj1119JSkpizJgxGY49ZcoUSpUqRa1atXBxcSEmJoY///yTcePGAVCzZk28vLx47bXXGDlyJFeuXOGtt97Kcm3szHh7e1OjRg0WLFiAk5MTaWlpLFu2zOIqbm4NHjyYF198kalTpxIUFMT+/fv5+uuvs9zGYDAwfPhwpkyZgqurK40bN2b//v2sW7eO0aNH4+joyPXr15kwYQKtW7c211Y/++yzvPLKK9SvXx93d/d047q5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Bw/mww8/xM7OLldzJSIiIlKQZZlMly9fHldXV0wmk0WpQVpaGlFRUYSEhJivNgcEBHDt2jWWLVvG888/j7e3N56enjg4OKQrU2jTpo353yaTifr163PhwgXWr1+fq2T6yJEj9OzZk9atW5vbOnTokOPtM3KnRtre3v6eyiuWLVuGo6Njpu9fvnyZDz74gOHDh9OvXz8AmjRpYnEsGTlx4gT//e9/mTVrFp06dTJv1759e5YsWcLKlSspXrw4s2fPplevXmzatImdO3dSokQJwsLCMh33q6++4ujRo6xfv55atWoBt+u1g4KCLJLphQsXUqZMGVasWIGDgwNw++r8M888w5dffkmzZs1yMj0AlC7tnOO++cHDumB/fqJzICLy4OWHz978EENmrKqZPn/+PBcvXiQ4ONiivXXr1qxbt47ffvuNmjVrZrr91atXiYqKYteuXVy4cMF89dbLyytXcVSrVo2VK1diMBho1KgRFSpUyP3B3AcNGzbMMpGG26USSUlJNG/e3NxmMBho3ry5+Yp4Ro4cOYLJZLKYe4PBQHBwsMV2devWpU+fPkyePJmUlBTeffddihcvnum4hw8fpkyZMuZEGuDRRx+levXqFv327dtHx44dMRgM5pKUcuXK8eijj/K///0vV8l0XFwCaWmmHPe3JQ8PF2JjtWy9Lekc2FZ+/kEmIveXrT97bf35bzDYZXkB0Kp1pu/Ux5YuXdqi/c7rq1evZrl9eHg4n3/+Of3792flypV8+OGHdO7cmaSkpFzFMWXKFFq0aMHixYsJDg6mZcuW/Pe//83VGPdDmTJlsu3zzz//AJnPYWYuXrxI8eLF063CUbp0aW7evElycrK5rW3btiQnJ1OlShXq1auX5bixsbEZ3pD473guX77MihUrqF69usXX33//zblz57Lch4iIiEhhY9WVaQ8PDwCLG9zufl2qVKlMt01KSmLPnj1MmTKF7t27m9vff//9XMdRsmRJJk2axKRJk/j111956623GDt2LEajkcqVK+Pg4MCtW7cstomPj8/1fgAcHR3TjZXZLw05qRu+k3DHxcXh6upqbv/3nP6bp6cnN27c4ObNmxYJdVxcHE5OTubSi5SUFCZPnkzVqlX5/fffiY6O5tlnn810XA8PDy5dupSuPS4uzmI1klKlStGiRQu6dOmSrq+bm1uWsYuIiIgUNtlemS5atGi6K8Z36qH/fbPcli1bcHZ2Nj90JKNtk5OTSUtLMyd9AAkJCezevdvqg4DbJR/jx48nLS2NkydPmuM8c+aMRQx3r3qRG15eXly/fp0LFy6Y27755hur461atSqOjo7s2rXL3JaWlmbxOiM+Pj7Y2dmxbds2c5vJZGLbtm0WK4csXbqUP/74g8WLFzNgwADmzJnD6dOnsxz3n3/+4aeffjK3nT17lqNHj1r08/f35/fff6dGjRr4+PhYfJUrVy7Hxy8iIiJSGGR7ZbpChQrs2rWLnTt34uXlhaenJ15eXgwfPpwpU6bg6upK48aN2b9/P+vWrWP06NHmeuGKFSvyzz//sHHjRqpUqYKbmxvlypXDx8eHRYsW4ezsjMFgYPny5Tg7O5OQkJCr4Lt3705QUBBVqlTBzs6O9evXU7x4cXO9dosWLYiMjGTixImEhIRw9OhRPvroIyum6fZNfsWKFWPChAn07duX06dP88EHH1g1Fty+itu1a1eioqIoUqQIlStXZsOGDdy4cSPL7SpVqkSbNm2YPn06169f57HHHmPDhg2cPHnSvOLK0aNHWbp0KZMmTeKxxx5j2LBh7N69mwkTJrB69eoMr5w3bdqUatWqMXLkSMaOHYuDgwNRUVHpSj9efPFFunTpwsCBA+ncuTNubm5cuHCBb7/9lk6dOmW4fKCIiIhIYZXtlekePXrQuHFjJkyYQGhoKOvXrwega9euTJw4kZ07dzJ48GA+++wzwsPDGThwoHnbZ555hpCQEObOnUtoaKh5ibyIiAgee+wxwsLCeO2112jZsiUdO3bMdfC+vr58/PHHjBgxgpdeeslcz3tn+b6qVasyc+ZMDh06xJAhQ9i/fz+zZs3K9X7g9rJ+kZGRnD9/nmHDhvHpp58SERFh1Vh3jB8/ns6dO7No0SLGjBmDp6cnffv2zXa7V199lU6dOrFo0SKGDh3KmTNnWLp0KfXq1SM5OZmwsDD8/Pzo1q0bAA4ODrz++uv8+OOPFmti383Ozo4lS5ZQqVIlJkyYwKxZs+jZsye1a9e26FehQgXzkxOnTJnCgAEDiIqKwsHBgccff/ye5kNERESkoLEzmUwFYzkFKXS0mofkhs6BbXl4uNBuzCe2DkNEHrDNER1s/tlr68//+7Kah4iIiIiIWLmah4iIPFySb6WyOeLeHoolIgVPYlKKrUPI95RMi4hIthyK2tv8T70PM1v/mfthp/mXrKjMQ0RERETESkqmRURERESspGRaRERERMRKqpkWEZFsJd9KxcPDxdZhPNQ0/7al+betrOY/MSmFa/E3H2A0lpRMi4hIthyK2mudaRHJlzZHdMCWt4eqzENERERExEoPRTIdFRWFn59frrZJTk4mKiqKX375xaL99OnTGI1GvvjiC3NbYGAgc+bMyZNY71VG8WVk7dq1GI1G8+uYmBiMRiPHjh0DMj9+EREREfk/D0UybY1bt26xcOHCdMmkp6cn0dHR1K1b10aRZc3a+KpXr050dDTly5cHMj9+EREREfk/qpnOJQcHB3x9fW0dRqasjc/Z2TlfH5eIiIhIfpRvr0xv3LiRGjVqEB8fb9F+/PhxjEYj3377rblt7dq1tGzZkho1ahAUFMQ777yT5dg3btxg+vTptGrVilq1ahEYGMi0adNISEgw96lTpw4AL7/8MkajEaPRyOnTp3NcRnHgwAF69epFrVq18PPzY9KkSRbjZ+TgwYMMHjyYgIAAfH196dChA59++mm6fmfOnGH06NH4+flRq1Yt2rVrx+bNm4GMyzySk5OZPn069erVo0GDBsycOZOUFMvHg/67zCOz4w8NDSU8PDxdTOHh4XTs2DHL4xMREREpbPJtMt2iRQsAduzYYdH++eefU6ZMGXMN9Pr165kxYwaBgYEsXbqU4OBgZs+ezfLlyzMdOzExkdTUVEaNGsWKFSsYOXIk3333HSNHjjT3Wb16NQBDhgwhOjqa6OhoPD09cxT7Dz/8QJ8+fShTpgyRkZG8/PLLfPnll0yYMCHL7c6ePUudOnV47bXXWLJkCS1btmTChAl89tln5j5xcXE8++yzHDlyhLCwMJYuXUpoaCjnzp3LdNw33niDDRs2MHToUObOncvZs2dZtWpVlrFkdvyhoaFs27aN69evm/tev36dbdu20blz55xMj4iIiEihkW/LPEqWLEmTJk34/PPPLZK0zz//nFatWmFvb09aWhpRUVGEhISYr5YGBARw7do1li1bxvPPP4+jo2O6sd3d3Zk2bZr5dUpKCuXKlaNHjx6cPXuWsmXL4uPjA0D58uVzXf4QERFB7dq1mT9/vrnNy8uLPn36cOzYMapWrZrhdm3atDH/22QyUb9+fS5cuMD69etp27YtAO+88w4JCQls3LjRnNz7+/tnGsvly5f54IMPGD58OP369QOgSZMmtG7dOstjyOz427Zty+zZs9m6dav5vGzZsoVbt26ZYxQRERF5WOTbZBqgdevWhIeHc/nyZdzc3Pjll184deoUr732GgDnz5/n4sWLBAcHp9tu3bp1/Pbbb9SsWTPDsTdt2sQ777zDn3/+yY0bN8ztp06domzZslbHfPPmTQ4dOsSkSZMsSinq1q1L0aJF+fnnnzNNpq9evUpUVBS7du3iwoULpKamArcT8Tu+++47mjRpkuOr5MeOHSMpKYnmzZub2wwGA82bN+ett97K9fE5OzvTqlUrPv74Y3My/fHHHxMYGIibm1uuxipd2jnX+7clLdhvezoHIiKSEVv+fMjXyXRgYCBFihRh+/btPPvss3z++ed4e3ubV6qIjY0FoHTp0hbb3Xl99erVDMfdsWMHYWFhdO/enVGjRuHq6kpsbCzDhg0jKSnpnmKOj48nNTWVadOmWVz9viOrcozw8HB++uknhg4dSqVKlXB2dmbdunXs2rXL3OfKlSvmq8Y58c8//wCZz5E1QkND6d27N3///Tcmk4kDBw5kWVaTmbi4BNLSTFbH8SB5eLgQG2vLJeFF58C29IuMiORn9/Png8Fgl+UFwHydTJcoUYKmTZvy+eef8+yzz7JlyxaCg4Oxs7MDwMPDA7hdR3y3O69LlSqV4bhbt26lVq1avPLKK+a277//Pk9idnFxwc7OjhdffJGmTZumez+zK8pJSUns2bOHKVOm0L17d3P7+++/b9HvTuKfU2XKlAFuz4mrq6u5/d9zlhv169fn8ccfZ+PGjZhMJjw9PQkICLB6PBEREZGCKt/egHhHmzZt2L9/P7t37+bvv/+2qCv29vbG09OTrVu3WmyzZcsWnJ2dLR5KcrfExEQcHBws2u6shnFH0aJFAXJ9pbp48eL4+vryxx9/4OPjk+7r7pKNuyUnJ5OWlmYRV0JCArt377bo5+/vz969e81XnLNTtWpVHB0dLa5up6WlWbzOSHbH37lzZzZt2sQnn3xCx44dsbe3z1E8IiIiIoVJvr4yDdC0aVOKFSvGlClTKFeunEUNtMFgYPjw4UyZMgVXV1caN27M/v37WbduHaNHj87w5kOARo0aMX36dJYsWUKtWrX48ssv2bdvn0UfBwcHypUrx5YtW6hSpQqOjo6ZJuf/NnbsWPr06YPBYKBVq1aUKFGCc+fOsWfPHkaNGkWFChXSbePi4oKPjw+LFi3C2dkZg8HA8uXLcXZ2tlhSr0+fPmzatImePXsyePBgvL29OXnyJDdu3GDAgAHpxnVzc6Nr165ERUVRpEgRKleuzIYNGyzqxDOS2fHfSfY7derEggULSElJISQkJEfzIiIiIlLY5PtkulixYgQGBrJ582YGDhyY7v2uXbuSlJTEmjVrePfdd/Hy8iI8PJw+ffpkOma3bt04ffo0a9asISkpicaNGxMREUHXrl0t+k2bNo05c+bQt29fkpOTs72ae0e9evV47733iIyMZPz48aSlpVG2bFmaNGliLrvISEREBFOmTCEsLAxXV1d69uxJYmIia9euNfdxd3dn3bp1zJ07l5kzZ5KcnMzjjz/OoEGDMh13/PjxpKSksGjRIgwGA+3bt6dv377Mnj07y+PI6PjLlSsH3C6xufOLTUa/HIiIiIg8DOxMJlPBuANM8pUrV67w1FNPMXnyZLp06WLVGLoBUXJD58C2PDxcaDfmE1uHISKSzuaIDroBUQqOhIQETpw4wZo1ayhRooTWlhYREZGHmpJpyZWff/6Z5557jkcffZQ5c+bg5ORk65BEREREbEZlHmIzKvOQ3NA5sK1SrsVxKKpVe0Qk/0lMSuFa/M37Nr7KPERE5J45FLXXLzM2pF8mbUvzb1v5ff7z/TrTIiIiIiL5lZJpERERERErKZkWEREREbGSkmkRERERESspmRYRERERsZKSaRERERERKymZFhERERGxkpJpERERERErKZkWEREREbGSnoAoNmMw2Nk6hFwpaPEWRjoHtqX5ty3Nv21p/m3LlvOf3b7tTCaT6QHFIiIiIiJSqKjMQ0RERETESkqmRURERESspGRaRERERMRKSqZFRERERKykZFpERERExEpKpkVERERErKRkWkRERETESkqmRURERESspGRaRERERMRKSqZF/r+bN2/y0ksvERQURHBwMF988UWmfdevX09QUBAtWrRg+vTppKWlWbyflJREmzZtCAkJud9hFxp5Mf87d+4kJCSEtm3b0qZNG1atWvWgwi+Q/vjjD5599llatWrFs88+y6lTp9L1SU1NZdq0abRo0YKgoCA2bNiQo/ckZ+71HCxatIg2bdrQrl07QkJC+Prrrx9g9AXfvc7/HSdPnqRWrVrMmTPnAURd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SUk3XlpamunWrVumyZMnm3r37m1uf/fdd01Vq1ZN1z8sLMzUqVMni7a///7bVLVqVdPu3bvNbVWrVjV17NjRot+3335rqlq1qikmJsaivUePHqbhw4dnesw53S6j2L777jtT1apVTb/99luuxrt69aqpZs2appkzZ2Ya1/Dhw029evWyaDt8+LCpatWqpmvXrmW6XUaefvpp0+zZs82vU1NTTQEBAabw8HCLflOnTjXVqVPHlJiYaDKZ/u/7YceOHdnuY9SoUaYmTZqYbt68meH7Gc3V3VJSUkw3b940+fr6mj7++GOTyZT98W7ZssXUoEGDbGO728SJE03t27dP1/7mm2+aGjdunKuxRAoDlXmIiOQxFxcXPvzwQ4uvmjVrcvDgQW7cuEFwcDApKSnmr4YNG/LPP/9w/vx5AK5evcqrr77K008/TfXq1alevTrR0dGcOnUqT+N86qmnLF5/++23eHh4UKdOHYv4/P39+d///pfpONZudy/jHTx4kMTExFzfXFi+fHmKFy/O2LFj2blzJ/Hx8bmOD25fEb548SLBwcEW7a1btyYhIYHffvvN3GZnZ5durjPy3Xff0bp161zVrh86dIi+ffvi5+fHf/7zH2rVqsWNGzf4448/gOyPt2rVqly7do2wsDD27t3LjRs3crxvEblNZR4iInnM3t4eHx+fdO2XL18GoE2bNhlud+7cOR599FHCw8P56aefGDp0KJUqVcLZ2Zl169axa9euPI2zTJky6eKLjY2levXq6fra29tnOo61293LeFeuXAHAw8MjV2OXKlWKt99+m6ioKF566SVMJhONGzdm8uTJPPbYYzkeJzY2FoDSpUtbtN95fXeZRKlSpXBwcMh2zCtXruTqeM6ePUu/fv2oWbMm06ZNw9PTk6JFizJo0CCSk5PN+87qeCtWrMjixYtZvnw5AwcOpEiRIgQFBTFx4kTc3d0z3G/JkiUzLIuJj4/P09VYRAoKJdMiIg/InURj2bJl6ZIwgAoVKpCUlMSePXuYMmUK3bt3N7/3/vvv52gfDg4O3Lp1y6Its6uvdnZ26eLz8vJi0aJFOdrXvW53L+O5uroCt5PazJK+zPj6+rJy5UoSExP59ttvmT17NmPGjGH9+vU5HuNO0hsXF2fRfue1NUmlq6urOUnPia+//prExEQWL15M8eLFgdu1+v+ud87ueJs1a0azZs24du0ae/bsYebMmcyYMYN58+ZluN+KFSty/vx5bty4Yd4v3K6lrlixYm4PW6TAUzItIvKA1K5dm2LFinHx4kWaNWuWYZ9r166RlpZmcSUzISGB3bt3W/QrWrQocHvVi7uXWfP29ubMmTMW7XdWX8iOv78/b7/9NsWLF6dSpUo5Pi5rt7uX8e7M5aZNmwgLC8uwT9GiRUlKSsp0P8WKFSMwMJDjx4+zbNmyXMXo7e2Np6cnW7dupWnTpub2LVu24OzsjNFozNV4cPu4t2zZwqhRo3K0dF5iYiIGg4EiRf7vR/mWLVvS3fx6R3bH6+LiQrt27di/fz8HDx7MdL8BAQEA7Nixgw4dOgBw4cIFfvjhB/PNniIPEyXTIiIPSMmSJXnxxRd57bXXOHPmDPXr1yctLY1Tp04RExPDokWLcHFxwcfHh0WLFuHs7IzBYGD58uU4OzuTkJBgHuvOFcDVq1fTsGFDnJ2dqVixIi1atCAyMpKJEycSEhLC0aNH+eijj3IUX+PGjQkICKBfv34MGDCAypUrk5CQwK+//kpSUhJjxozJ0+3uJY6SJUsydOhQ5s2bx61bt3jqqadITk7myy+/5MUXX8TLy4sKFSqwa9cudu7ciZeXF56envzyyy989NFHNG/enLJly3LhwgWio6Np2LBhrmI0GAwMHz6cKVOm4OrqSuPGjdm/fz/r1q1j9OjRVq0jPWzYMEJDQ+nZsyf9+vXD1dWVo0eP4urqSmhoaLr+DRs2JDU1lZdffpnQ0FCOHz/OqlWrKFmypLnPnj17sjzeDz74gEOHDtGkSRM8PT05deoUW7duNSfJGfH29iY0NJSZM2diMplwd3dn4cKFlC1blvbt2+f6uEUKOiXTIiIP0IABA/D09GT16tW8/fbbODo68sQTT9C6dWtzn4iICKZMmUJYWBiurq707NmTxMRE1q5da+5Tr149+vfvz5o1a3jzzTepX78+7777LlWrVmXmzJksXryYHTt20LBhQ2bNmmVRMpIZOzs7Fi5cyNKlS1m9ejXnzp2jVKlSVKtWLcvHfFu73b2ON2jQIEqVKsWaNWv44IMPKFWqFPXq1TMv2dajRw9++eUXJkyYwNWrV3nxxRdp06YNdnZ2zJs3j7i4ONzd3WnWrBmjR4/OdZxdu3YlKSmJNWvW8O677+Ll5UV4eLjVj46vWLEi77//PhEREUycOBGAypUrZxqb0Whk1qxZLFy4kB07dlCtWjUWLFjAqFGjzH3Kly+f5fEajUZ2797NrFmzuHr1Kh4eHnTp0oWRI0dmGeukSZNwcnJi9uzZJCYmUr9+fSIiIgr0w2hErGVnMv3/xUVFRERERCRXtDSeiIiIiIiVlEyLiIiIiFhJybSIiIiIiJWUTIuIiIiIWEnJtIiIiIiIlZRMi4iIiIhYScm0iIiIiIiVlEyLiIiIiFhJybSIiIiIiJX+H0Z4zQNPbvGYAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAFECAYAAADlf7JXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABoFUlEQVR4nO3de3zP9f//8dve2IGNbeyQpBzy1ocxc5gx0RjL2YwI5ZDThJyXYyiHtGRzVoqURrTSJ+foqFERn1REKgxrDjN2sO39+8PP+9vbDt57G7O5Xy8Xl7yfr+fr+Xq8Hr23PfbyeL3ediaTyYSIiIiIiOSbobADEBEREREpqlRMi4iIiIjYSMW0iIiIiIiNVEyLiIiIiNhIxbSIiIiIiI1UTIuIiIiI2EjFtIiIiIiIjUoWdgBy/7pw4QpZWcX/MeflyzuTmJhc2GEUCcqVdZQn6ylX1lOurKM8Wa+45MpgsMPNrUyu21VMS6HJyjLdF8U0cN+cZ0FQrqyjPFlPubKecmUd5cl690Ou1OYhIiIiImIjFdMiIiIiIjZSMS0iIiIiYiMV0yIiIiIiNlIxLSIiIiJiIxXTIiIiIiI2UjEtIiIiImIjFdMiIiIiIjZSMS0iIiIiYiN9AqIUWy5lnXB0uDfe4h4eLoUdQpGhXFlHebKecmWd9GuZhR2CSJF0b1QaIneAo0NJOoz5uLDDEBEpEjZFdirsEESKJLV5iIiIiIjYSMW0iIiIiIiNVEzf4zZu3IjRaOTKlSsFum5ERAShoaEFslafPn0YMWJEgawlIiIiUpSomBYRERERsZGKaRERERERG6mYLmT79+9nyJAhBAYG4uvrS6dOnfjkk0/y3Cc1NZVXX32VJ554gtq1axMUFERkZKR5e2ZmJtHR0bRo0YLatWvTrl07Nm3alONa33zzDR06dMDX15eePXty9OhRi+0pKSm8/PLLNG3aFB8fH7p27crXX399+ycuIiIiUgzo0XiF7PTp0/j5+dGzZ0/s7e358ccfmThxIgaDgfbt22ebbzKZCA8PZ//+/YSHh1O7dm3Onj3L999/b54TFRXFm2++ybBhw/Dx8WHbtm2MHTsWOzs7izXj4+N59dVXGTp0KA4ODrz66quMGjWKTZs2YWdnB8DkyZP5/PPPGT16NJUrV2b9+vUMHjyYVatW0aBBgzufIBEREZF7mIrpQtauXTvz300mEw0bNuTs2bOsW7cux2L666+/5ptvvmHx4sW0bNnSPN65c2cALl68yKpVqxg6dCjh4eEANGvWjDNnzhAdHW2x5qVLl1i7di2PPPKI+fjDhg3j+PHjVKtWjWPHjvHf//6X2bNn06VLF/NaHTt2ZMmSJbz11lu3de7lyzvf1v4iIlKw9AE31lGerHc/5ErFdCG7dOkS0dHR7Ny5k7Nnz5KZef0TqLy8vHKc/9133+Hq6mpRSP/b0aNHSUlJISQkxGK8bdu2REREcP78edzd3QF48MEHzYU0QLVq1QA4e/Ys1apV49ChQ5hMJou1DAYDISEhvPnmmzaf8w2JiclkZZlue53c3A9fwCIiBSkh4XJhh3DP8/BwUZ6sVFxyZTDY5XkBUMV0IYuIiOCnn34iPDycatWq4ezszNq1a9m5c2eO8y9evIiHh0eu6yUkJABQvnx5i/Ebry9evGgupl1cLIvNUqVKAZCWlgbAuXPnKF26NE5OTtnWSklJIT09HXt7e2tPVURERKTY0Q2IhSgtLY3du3czfPhwevfuTUBAAD4+PphMuV+tdXV1NRfMOblRaJ8/f95iPDEx0by/tTw9Pbl69SopKSnZ1nJyclIhLSIiIvc9FdOFKD09naysLIuiNDk5mc8//zzXfQICArh48SK7du3Kcfujjz6Kk5MTmzdvthjfvHkzjzzyiPmqtDV8fHyws7Nj69at5jGTycTWrVupX7++1euIiIiIFFdq8yhELi4u+Pj4sGjRIpydnTEYDCxfvhxnZ2eSk5Nz3Kdp06YEBgYyZswYhg0bxn/+8x8SEhL4/vvvmTFjBq6urjz77LMsXbqUkiVLUrt2bbZt28YXX3zB66+/nq/4qlWrRrt27ZgxYwZXrlzhoYceYv369Rw/fpxp06YVRApEREREijQV04UsMjKSqVOnMmHCBFxdXenVqxepqamsWbMmx/l2dnYsWrSIBQsWsGrVKs6fP4+npycdOnQwzxkxYgQlSpRg7dq1JCYmUrlyZebNm2fx5BBrvfzyy7z22mssWrSIpKQkatSowdKlS/VYPBERERHAzpRXg67IHXQ3nubRYczHd2x9EZHiZFNkp2Lx5IU7rbg8oeJuKC65utXTPNQzLSIiIiJiI7V5SLGVmpbBpshOhR2GiEiRkH4ts7BDECmSVExLsXU5KYV74R+Xiss/c90NypV1lCfrKVfW0wddidhGbR4iIiIiIjZSMS0iIiIiYiMV0yIiIiIiNlLPtEgx51LWCUeHovOlrr5N6yhP1lOurKMbEEVsU3R+woqITRwdSup52yJyS3r6kYht1OYhIiIiImIjFdMiIiIiIjZSMV0I4uLiMBqNHDlyJF/7bdy4EaPRyJUrV247hq+//pp33nnnttcRERERuZ+pmL5PffPNN6xevbqwwxAREREp0lRMi4iIiIjYSMW0DY4ePcqAAQNo1KgRvr6+PPnkk7z33nsABAUFMXfuXIv51rRnGI1G3n77bV5++WUaNWpEgwYNmDlzJunp6dnmnjx5kn79+uHr60tISAjbtm2z2L5792769etHQEAAfn5+dO/ena+//tq8PTo6mpUrV3Lq1CmMRiNGo5GIiAjz9u+//57evXtTt25d/P39mTx5MsnJyebtSUlJTJo0icDAQHx8fGjRogWTJ0/OXxJFREREigE9Gs8GQ4YMoVq1asybNw97e3uOHz9eIH3MK1euxNfXl3nz5vH7778zf/587O3tmTBhgsW8sWPH0r17dwYMGMCaNWsYPXo0O3bswNvbG7hebD/xxBP0798fg8HAl19+ycCBA1mzZg3169enW7dunDhxgri4OBYuXAiAu7s7AD/88AN9+/alVatWREVFceHCBSIjI0lKSiIqKgqA2bNns3//fiZOnEiFChWIj4/n+++/v+3zFxERESlqVEzn0/nz5zl58iSLFy/GaDQCEBAQUCBrlylThgULFmAwGGjevDnp6eksXbqUwYMH4+rqap737LPPEhYWBkCtWrVo2rQpu3btomfPngD07t3bPDcrKwt/f39+//13PvzwQ+rXr4+3tzeenp7Y29vj6+trEUNkZCT16tXjjTfeMI95eXnRt29fjhw5Qo0aNTh06BC9evWibdu25jmdOuX/+aTlyzvne5+iSh8aISJFgb5XWUd5st79kCsV0/nk6urKAw88wLRp03jmmWfw9/enfPnyBbJ2y5YtMRj+r/OmdevWvPHGGxw9epSGDRuaxwMDA81/d3Nzw93dnTNnzpjHzpw5w/z58/n2229JSEjAZDIB4Ofnl+fxU1JSOHDgAJMnTyYjI8M8Xr9+fUqVKsXPP/9MjRo1qFmzJm+99RYGg4EmTZpQpUoVm843MTGZrCyTTfsWJR4eLiQkXC7U44uIWKMw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0dyOk9NxypUrR+3atXnppZeyrXE7TywRERERKYru+MeJBwQEsHnzZh599NFcH5MXEBDA22+/TenSpalWrZpNx3nggQcYNGgQGzZs4NixY8D1dguAY8eOUb9+fQB++uknkpOT872+t7e3ea0bV2Xj4+M5fvy4uXc4P0qWLMljjz3Gzp076dmzp3l8+/btt4zD09OTLVu20Lx5c/P45s2bcXZ2Nn/ASlxcHGvWrOGNN97A2dmZAQMG0Lp1a9q0aZPjujVq1MDBwYGdO3ea/x9kZWWxc+dOi3kBAQF88803VKxYsdg9X1xEREQkv+54Md23b18++eQTnn32WXr37o2Xlxf//PMP+/bto379+rRv356mTZsSGBhI//79GThwINWrVyc5OZlff/2VtLQ0xowZk+PaU6dOpVy5ctStWxcXFxfi4uL4888/GTduHAB16tTBy8uLV155hZEjR3Lx4kXefPPNPJ+NnRtvb29q167NggULcHJyIisri2XLlllcxc2vIUOG8PzzzzNt2jSCg4PZt28fX331VZ77GAwGhg8fztSpU3F1daVp06bs27ePtWvXMnr0aBwcHLhy5QoTJ06kbdu25t7qp556ipdeeomGDRvi7u6ebV03Nze6d+9OdHQ0JUuWpHr16qxfv56rV69azOvcuTMffPABffr0oX///jz00ENcvHiRgwcP4uHhQd++fW3Oh4iIiEhRc8eLaXd3d2JiYnjjjTeYPXs2SUlJeHp64ufnZ76Kamdnx8KFC1m6dCmrVq0iPj6ecuXKUbNmzTw/ytvX15d169YRExNDWloalStXZubMmbRq1Qq43nawcOFCpk+fzogRI6hSpQovvfSSudjOr9dff53Jkyczbtw4vLy8GDduHKtWrbJpLbh+s+GUKVNYvnw5sbGxNGrUiFdeeYUBAwbkuV/37t1JS0tj9erVvPvuu3h5eREREWEuZOfOnUtaWhpTp0417zNhwgS++eYbpk2bRnR0dI7rjh8/noyMDBYtWoTBYKBjx47069ePOXPmmOc4ODiwevVqFixYQHR0NImJibi7u1OnTh2CgoJszoWIiIhIUWRnMpmK/x1gck/SDYhys4K+AbHDmI8LZC2R+8GmyE76XmUFfU+3XnHJ1a1uQMz3JyCKiIiIiMh1KqZFRERERGx0x3umRUQKQ2paBpsiOxV2GCJFRvq1zMIOQaRIUjEtIsXS5aQUin6nXs6KSx/i3aBcWU8fdCRiG7V5iIiIiIjYSMW0iIiIiIiN1OYhIiJ3hEtZJxwdCv/HjNoXrKOeaRHbFP53ORERKZYcHUrqWd9FiG7YFbGN2jxERERERGykYlpERERExEYqpoGIiAhCQ0NvOc/f35/o6Og7EoPRaGTNmjV3ZG0RERERuTPUMw2Eh4eTmppa2GGIiIiISBFTZIvpzMxMMjMzsbe3v+21KleuXAARybVr1zAYDJQoUaKwQxERERG5K4pMm8eNVowdO3bQrl076tSpw8GDBwHYsWMHoaGh+Pj40LRpU1599VWuXbtm3vfMmTOMHDmSgIAA6tSpQ6tWrXjjjTeyrf1v+/bto2PHjvj4+BAaGsqPP/6YLaagoCDmzp1rMbZx40aMRiNXrlwB4OrVq8yYMYM2bdpQt25dgoKCmD59OsnJyfnOwfr162nbti116tTB39+f3r17c/ToUQDi4uIwGo0cOXLEYp8+ffowYsQIi7E1a9bQvHlzfH19CQ8PZ8+ePRiNRuLi4sxzVq5cSdeuXalfvz5NmjRhyJAh/PnnnzmuHRMTQ6tWrahTpw7nzp3L93mJiIiIFFVF6sr0qVOnmDdvHuHh4Xh4eFCpUiU+++wzxowZw1NPPcXo0aP566+/eP311zGZTEyYMAGA8ePHk5aWxsyZM3FxceHvv//m+PHjuR7n7NmzDBw4EB8fH6Kiojh37hxjx461qRUkNTWVzMxMRo0ahbu7O/Hx8SxdupSRI0fy1ltvWb3Ovn37eOmllxgxYgS+vr4kJydz4MABLl/O38fkbt++nZkzZ/L000/TsmVLfvjhByZNmpRt3pkzZ+jduzcVK1YkOTmZDz74gB49erBt2zZcXP7vma0//vgjf/31F2PHjsXJyclim4iIiEhxV6SK6YsXL/LOO+/w2GOPAWAymZg3bx6dO3fmpZdeMs+zt7dnxowZDBo0CDc3Nw4dOkRkZCRBQUHA9RsJ87Jq1SocHBxYvnw5Tk5OADg5OTFu3Lh8x+zu7s706dPNrzMyMqhUqRJPP/00p0+fpmLFilatc/DgQYxGI4MHDzaPtWzZMt/xLF26lObNmzNt2jQAAgMDuXDhAmvXrrWYN3HiRPPfMzMzadq0KQEBAezcuZPOnTubtyUlJREbG0uFChXyHYuIiIhIUVekimkvLy9zIQ3wxx9/cPr0aUJCQsjIyDCPN27cmLS0NI4ePUqjRo2oWbMmr7/+OhcvXqRx48a3LGAPHTpEkyZNzIU0QHBwsM1xx8bG8s477/Dnn39y9epV8/iJEyesLqYfe+wx5s2bx6xZswgODqZu3br57hfPyMjgl19+YerUqRbjQUFB2YrpAwcOsGDBAg4fPszFixfN43/88YfFvFq1atlcSJcv72zTfkWRPoHNesqVdZQnuRP0vrKO8mS9+yFXRaqYvrlou3DhAgCDBg3KcX58fDwAb7zxBvPnz2f27NkkJSVRs2ZNIiIiCAgIyHG/hIQEjEajxZiTkxOlS5fOd8zbt29nwoQJ9OzZk1GjRuHq6kpCQgLDhg0jLS3N6nWaNGnC7Nmzeffdd1m9ejWlS5emU6dOjBs3zuq4Lly4QGZmJu7u7hbjN78+ffo0/fv3p06dOkyfPh1PT09KlSrF4MGDSU9Pt5h7O1ekExOTycoy2bx/UeHh4UJCQv7ace5XypV1ikqe7ocfosVNUXhfFbai8vV3LyguuTIY7PK8AFikiumbubq6AjBz5kyLK9Y3VKpUCbh+RXvOnDlkZWVx8OBBoqOjGTp0KLt27cLNzS3bfh4eHiQmJlqMpaSkWFxVhuvtJP++0RGutz3825YtW6hbt65FG8revXutPsd/69KlC126dOH8+fNs27aN2bNnU6ZMGcaOHYuDgwNAtnguXbpkPkc3NzdKlCjB+fPnLebc/Pqrr74iNTWVxYsXmwv1jIwMLl26lC0mOzs7m85FREREpDgoMk/zyEmVKlXw8vLi1KlT+Pj4ZPtzc6FsMBjw9fXl+eefJyUlhdOnT+e4bu3atfn2229JSUkxj23fvj3bPG9vb44dO2Yx9vXXX1u8Tk1NzdaOsWnTpnyd583c3d3p0aMHDRo04PfffzfHAljEEx8fb3GjZcmSJXnsscfYuXOnxXqff/55tpgNBgMlS/7f71qbN2+2aKURERERkSJ+ZdpgMBAREcH48eNJTk7m8ccfp1SpUvz999/s2LGDqKgoMjIyGDBgAJ06daJKlSqkp6ezcuVKPDw8qFatWo7r9u3bl/fff5/BgwfTr18/zp07x7Jly3B0dLSYFxwczMyZM1m6dCk+Pj5s3brVXNze0KRJE2bMmMGSJUuoW7cuX3zxBXv27Mn3uUZFRXHp0iUaNWqEm5sbhw8fZu/evYwZMwa4XkzXrl2bBQsW4OTkRFZWFsuWLTNfvb9h8ODBDB8+nBkzZhAUFMSPP/7IF198Yc4nXO85z8zM5MUXXyQsLIyjR4+ycuVKypYtm++4RURERIqzIl1MA7Rt25YyZcqwbNkyNmzYgMFg4KGHHqJFixaUKlWKEiVKUKNGDVavXs2ZM2dwdHTE19eXt956K1txfIOXlxfLly/n5ZdfZvjw4VSrVs38SL5/6969O3/99Rfvvvsu6enpdOrUiaFDh1rc4NejRw9OnjzJ6tWrSUtLo2nTpkRGRtK9e/d8naePjw/vvPMO//3vf7ly5QoVK1Zk+PDhPPvss+Y5r7/+OpMnT2bcuHF4eXkxbtw4Vq1aZbFO69atmTx5MitWrGDDhg00atSI8ePH88ILL+DsfL0fyGg0Mnv2bBYuXMj27dupWbMmCxYsYNSoUfmKWURERKS4szOZTMX/DjDJ0+LFi1m6dCl79+7N9ReMO0E3IMrNlCvrFJU8eXi40GHMx4UdhlhpU2SnIvG+KmxF5evvXlBcclWsb0CU/Dt//jzLli3D398fJycnvv/+e1asWEFYWNhdLaRFREREigMV0/eZUqVKcfz4cWJjY0lOTsbDw4NnnnmGkSNHFnZoIiIiIkWOiun7jIuLCytWrCjsMETkPpCalsGmyE6FHYZYKf1aZmGHIFIkqZgWEZE74nJSCoXdLVlcejbvBn3IjohtivRzpkVERERECpOKaRERERERG6nNQ0RE5P9zKeuEo8P9+aNRPdMitrk/v2OIiIjkwNGh5H37bGzdLCpiG7V5iIiIiIjYSMW0iIiIiIiNVEzfY44cOYLRaCQuLu6uHjcuLg6j0ciRI0cASE9PJzo6ml9++eWuxiEiIiJSlKiYFgBq1apFTEwMlStXBuDatWssXLhQxbSIiIhIHnQDogDg7OyMr69vYYchIiIiUqToynQhe++992jevDm+vr4MGTKEhIQEi+1ZWVksX76c4OBgateuTZs2bfjoo48s5vTp04cRI0awadMmgoOD8fPz47nnnuPMmTMW85YtW0ZwcDA+Pj40adKEAQMGmI93c5uHn58fAC+++CJGoxGj0cjJkycJCwsjIiIi23lERETQuXPngkqLiIiISJGgK9OFaMeOHcyYMYMePXrQqlUr9u3bx8SJEy3mzJw5k9jYWMLDw6lVqxbffPMNEydOxNXVlSeeeMI876effuLcuXNMmDCBtLQ0XnnlFaZMmcKKFSsAiI2NZenSpYwdO5ZHH32Uixcv8t1335GSkpJjbKtWreLZZ59l6NChtGjRAgBPT0/CwsKYO3cuU6ZMoUyZMgBcuXKFrVu3Mnr06DuQJREREZF7l4rpQrR06VKaNWvG9OnTAWjWrBnnz59n/fr1APz555+sXbuW2bNn06VLFwCaNGlCQkICCxcutCimk5OTWbZsGeXKlQMgISGB2bNnk5qaiqOjIwcPHiQwMJBevXqZ92ndunWusfn4+ABQuXJli/aP9u3bM2fOHLZs2ULXrl0B2Lx5M9euXaN9+/YFkBURERGRokPFdCHJyMjg8OHDTJkyxWI8ODjYXEzv2bMHg8FAcHAwGRkZ5jkBAQH897//JTMzkxIlSgDXi98bhTRA9erVATh79iwPP/wwjz32GB9++CFRUVG0aNGCWrVqmffND2dnZ3OryY1i+qOPPiIoKAg3N7d8rVW+vHO+j19UeXi4FHYIRYZyZR3lyXrKlfWUK+soT9a7H3KlYrqQXLhwgczMTMqXL28x/u/XN+bUr18/xzUSEhLw9vYGoGzZshbbSpUqBUBaWhoAXbt25cqVK8TExLBo0SJcXV3p0aMHI0aMyHdRHRYWRp8+ffj7778xmUx8//33LF++PF9rACQmJpOVZcr3fkWNh4cLCQmXCzuMIkG5so7yZL385up++MGfF72vbk1ff9YrLrkyGOzyvACoYrqQuLm5UaJECRITEy3G//26XLlylCxZkrVr12JnZ5dtDXd3d6uPZzAY6Nu3L3379iU+Pp5NmzYxf/58vL296dmzZ75ib9iwIQ8//DAbN27EZDLh6elJYGBgvtYQERERKQ5UTBeSkiVL8thjj7Fz506LYnb79u3mvzdu3JjMzEwuX75M06ZNC+zYDzzwAIMGDWLDhg0cO3Ysxzk3X9m+WdeuXVm7di0AnTt3tqllRERERKSoUzFdiIYMGcLzzz/PtGnTCA4OZt++fXz11Vfm7VWrVqVHjx6MHj2aAQMG4OPjQ1paGkePHuXEiRO88sorVh9r6tSplCtXjrp16+Li4kJcXBx//vkn48aNy3G+vb09lSpVYvPmzTz66KM4ODhgNBqxt7cHoEuXLixYsICMjAxCQ0NvLxEiIiIiRZSK6UIUHBzMlClTWL58ObGxsTRq1IhXXnmFAQMGmOdMmzaNRx55hPXr1xMVFYWzszPVq1cnLCwsX8fy9fVl3bp1xMTEkJaWRuXKlZk5cyatWrXKdZ/p06czd+5c+vXrR3p6Ojt37qRSpUoAeHh4UKdOHQCqVKliw9mLiIiIFH12JpOp+N8BJgXu4sWLPP7440yZMoVu3brZtIZuQJSbKVfWUZ6sZ8sNiB3GfHwHI7p3bYrspPeVFfT1Z73ikivdgCgFKjk5mWPHjrF69WrKlCmjZ0uLiIjIfU3FtOTLzz//zDPPPMODDz7I3LlzcXJyKuyQRERERAqNimnJF39/f3777bfCDkNE5I5ITctgU2Snwg6jUKRfyyzsEESKJBXTIiIi/9/lpBSKfoenbe73D6wRsZWhsAMQERERESmqVEyLiIiIiNhIbR4iIiJFjEtZJxwdCvZHuHqmRWyjYlpERKSIcXQoWeDPw75fb7wUuV1q8xARERERsZGKaRERERERG6mYFqsEBQUxd+7cHLcZjUbWrFlzlyMSERERKXwqpkVEREREbKRiWkRERETERiqmhYiICEJDQ9mxYwchISH4+PjQs2dPfv/998IOTUREROSepmJaADh9+jSzZ88mPDycyMhIkpOTGTBgAGlpaeY5JpOJjIyMbH9ERERE7ld6zrQAcOHCBRYvXoyfnx8AtWrVIjg4mI0bN9KzZ08A3n77bd5+++0CO2b58s4Ftta9zsPDpbBDKDKUK+soT9ZTrqynXFlHebLe/ZArFdMCQPny5c2FNMCDDz5IrVq1OHjwoLmY7tixI88880y2fcPCwmw6ZmJiMllZJtsCLkI8PFxISLhc2GEUCcqVdZQn6xXXXN2pAqU45qqgFdf31J1QXHJlMNjleQFQxbQA14vpnMYSEhLMrytUqICPj8/dDEtERETknqaeaQEgMTExxzEPD49CiEZERESkaFAxLcD1wvnHH380vz59+jSHDx+mTp06hRiViIiIyL1NbR4CgJubG+PGjeOFF17A0dGRqKgo3N3dCQ0NLezQRERERO5ZKqYFgIoVKzJkyBAiIyM5deoUtWvXJjIyEgcHh8IOTUREROSepWJazFq3bk3r1q1z3Pb555/nut9vv/12p0ISERERuaepZ1pERERExEYqpkVEREREbKQ2D2HOnDmFHYKIiORDaloGmyI7Feia6dcyC3Q9kfuFimkREZEi5nJSCgX9uXL3w8c+i9wJavMQEREREbGRimkRERERERupzUNERKQYcCnrhKOD7T/W1TMtYhsV0yIiIsWAo0NJOoz52Ob9C/qGRpH7hdo8RERERERspGJaRERERMRGKqbvgo0bN2I0Grly5Uqe8/r06cOIESMK7LhGo5E1a9bkOWfXrl0YjUZOnjxZYMcVERERuV+oZ7oYi4mJoVKlSoUdhoiIiEixpWK6GEpNTcXR0RFfX9/CDkVERESkWFObRwHat28fffr0oV69etSvX58+ffpw+PBh8/aTJ0/Sr18/fH19CQkJYdu2bbdcc8+ePXTr1g0fHx+aNGnCSy+9ZNEuEhcXh9Fo5KuvvmLIkCHUq1ePGTNmANnbPEwmE9HR0QQEBFCvXj3Gjx9PcnJytmOmpaXx6quv0rx5c2rXrk3Hjh354osvLObs3LmT0NBQfH19adiwId26dWPv3r35zpmIiIhIUaZiuoDExcXRt29fSpUqxZw5c5g/fz7169fn7Nmz5jljx44lKCiIhQsX8sgjjzB69GjOnDmT65pHjx5l4MCBuLm5ER0dzfDhw/n0009z7KueNGkSNWvWZPHixYSFheW43urVq1m0aBHdu3cnKioKR0dH5s2bl23eiBEj+Oijjxg8eDBLly7Fx8eHoUOH8ssvvwDw119/MXLkSPz9/VmyZAmvvfYaLVq04NKlS/lNm4iIiEiRpjaPAvL6669jNBp56623sLOzA+Dxxx8Hrt+ACPDss8+aC91atWrRtGlTdu3aRc+ePXNcc/HixVSsWJElS5ZQokQJAMqVK8eoUaPYv38/9erVM88NCQnhhRdeyDW+zMxMVqxYwVNPPcWoUaMAaNasGf369bMo+Pfs2cPu3bt59913adSoEQCBgYGcOHGCJUuWEBUVxeHDhylTpgwTJkww79e8efN85QugfHnnfO9TVHl4uBR2CEWGcmUd5cl6ypX1lCvrKE/Wux9ypWK6AFy9epWffvqJSZMmmQvpnAQGBpr/7ubmhru7e55Xpg8ePEibNm3MhTRAmzZtKFmyJD/88INFMd2iRYs8Y4yPjychIYGWLVtajAcHB/Ptt9+aX3/77bd4eHjg5+dHRkaGeTwgIMD8S0GNGjW4fPkyEyZMoEOHDvj5+VG6dOk8j5+TxMRksrJM+d6vqPHwcCEh4XJhh1EkKFfWUZ6sdz/lqiCKlvslV7fjfnpP3a7ikiuDwS7PC4AqpgtAUlISJpMJDw+PPOe5uFh+o7O3tyc9PT3X+QkJCVSoUMFirESJEri6umZrqShfvnyex/7nn39ynHfz6wsXLpCQkECtWrWyrXGjqK9atSqLFy9m+fLlDBo0iJIlSxIcHMykSZNwd3fPMw4RERGR4kTFdAEoW7YsBoOBhISEAl3Xw8ODxMREi7HMzEwuXrxIuXLlLMbzuiIOmIvym9e7+XW5cuXw8vJi0aJFea7XokULWrRoweXLl9m9ezezZs1i5syZzJ8/P8/9RERERIoT3YBYAEqXLk3dunWJjY3FZCq4toW6deuyY8cOMjMzzWPbtm0jIyOD+vXr52utBx54AA8PD3bu3Gkxvn37dovXAQEB/PPPP5QuXRofH59sf27m4uJChw4dCA4O5vfff89XTCIiIiJFna5MF5AxY8bQr18/nnvuOZ566imcnJw4cOAAtWvXtnnNoUOH0qVLF4YNG0bPnj05c+YMr732GoGBgRb90tYoUaIEzz33HHPnzsXNzY0GDRqwbds2jh07ZjGvadOmBAYG0r9/fwYOHEj16tVJTk7m119/JS0tjTFjxvDBBx9w4MABmjVrhqenJydOnGDLli106tTJ5nMVERERKYpUTBeQhg0bsnLlShYsWMC4ceMoVaoUjz32GK1ateLChQs2rfnoo4+yYsUKXn/9dZ5//nmcnZ1p164d48aNs2m9Z599losXL/LBBx+watUqgoKCGDduHGPHjjXPsbOzY+HChSxdupRVq1YRHx9PuXLlqFmzJn369AGuP7/6888/Z/bs2Vy6dAkPDw+6devGyJEjbYpLREREpKiyMxVkX4JIPuhpHnIz5co6ypP17qdceXi40GHMxzbvvymy032Tq9txP72nbldxydWtnuahnmkRERERERupzUNERKQYSE3LYFOk7feupF/LvPUkEclGxbSIiEgxcDkphdv5B/X74ZPqRO4EtXmIiIiIiNhIxbSIiIiIiI1UTIuIiIiI2Eg90yIiIkL6tcwC65tOTcvgclJKgawlcq9TMS0iIiLYlypxW8+p/rdNkZ1u62ZIkaJEbR4iIiIiIjZSMS0iIiIiYiMV0wVs48aNGI1Grly5AkBiYiLR0dGcPHnS6jWMRiNr1qy5UyFaLS4uDqPRyJEjR/KcN3fuXIKCgu5SVCIiIiL3DhXTBaxFixbExMTg5OQEXC+mFy5cyKlTp6xeIyYmhpCQkDsVotVq1apFTEwMlStXLuxQRERERO5JugGxgLm7u+Pu7m7TvqmpqTg6OuLr61uwQdnI2dn5nolFRERE5F6kK9M22LdvH3369KFevXrUr1+fPn36cPjwYcCyzePkyZN06NABgGeeeQaj0YjRaAT+r4Xiq6++YsiQIdSrV48ZM2YAObd5bN++nbCwMOrUqYO/vz8DBw7M82r37t276devHwEBAfj5+dG9e3e+/vrrbPN+/fVXhgwZQoMGDahXrx5hYWF88803FjH+u80jKSmJMWPGUK9ePQIDA1myZMltZFJERESkaNOV6XyKi4ujf//++Pv7M2fOHJycnPjxxx85e/Ys//nPfyzmenp68tprrzF27FimTp1KrVq1sq03adIkQkNDefbZZ3FwcMjxmLGxsUyYMIF27doRHh6OyWTiu+++4/z58zz44IM57nPy5EmeeOIJ+vfvj8Fg4Msvv2TgwIGsWbOG+vXrA3Ds2DF69uxJlSpVmD59Oq6urvzvf/8jPj4+1/N/8cUX2bt3Ly+++CIVKlRg5cqV/PXXX5QsqbeSiIiI3H9UAeXT66+/jtFo5K233sLOzg6Axx9/PMe59vb25ivR1atXz7FlIiQkhBdeeCHX42VlZREZGUlwcDCvv/66ebxly5Z5xtm7d2+LNfz9/fn999/58MMPzcX0okWLcHFx4f3338fR0RGApk2b5rrm0aNH2bFjB/Pnz6dt27YA+Pv788QTT+Ds7JxnPDkpXz7/+xRVBfVBCPcD5co6ypP1lKvCUZzzXpzPraDdD7lSMZ0PV69e5aeffmLSpEnmQvp2tWjRIs/tf/zxB+fOnSM0NDRf6545c4b58+fz7bffkpCQgMlkAsDPz88857vvvqNjx47mQvpWDh06BFgW8mXKlKFJkyYcPHgwX/EBJCYmk5Vlyvd+RY2HhwsJCfr4AmsoV9ZRnqynXFmvoIue4pp3vaesV1xyZTDY5XkBUMV0PiQlJWEymfDw8CiwNcuXL5/n9gsXLgDk65hZWVkMHTqUK1euMGLECB5++GGcnJyIiooiMTHRPO/ixYv5Wveff/6hTJky2dpRbnUOIiIiIsWViul8KFu2LAaDgYSEhAJb81ZXuN3c3ADydcw///yTw4cPs2LFCosWlNTUVIt5rq6u+Vq3QoUKXLlyhbS0NIuC+t8FuoiIiMj9RE/zyIfSpUtTt25dYmNjzW0Tt1KqVCkA0tLSbDpmlSpV8PLyIjY21up9bhzL3t7ePHbq1Cn2799vMS8gIIDNmzdbHZuPjw8AO3fuNI9duXKFb7/91urYRERERIoTXZnOpzFjxtCvXz+ee+45nnrqKZycnDhw4AC1a9fmiSeeyDa/YsWKODo6Ehsbi4uLCyVLljQXpdYwGAyMGzeOsWPHMmbMGNq3b4+dnR3fffcd7dq1y3GtqlWr4u3tzdy5cxk5ciRXrlwhKioKT09Pi3nDhg0jLCyMXr160b9/f1xdXTl8+DCurq6EhYVlW/fRRx8lKCiIl156ieTkZDw8PHjrrbes7rkWERERKW50ZTqfGjZsyMqVK0lNTWXcuHGMGjWKvXv34u3tneN8BwcHZs6cyc8//0yfPn1yLFJvpUOHDkRHR/PHH38wYsQIJkyYwPHjx3P9cBh7e3uio6MpUaIEI0aMYMGCBQwePJhGjRpZzKtatSrvv/8+bm5uTJo0iWHDhrF169ZcH7cHMGfOHJo2bcqsWbOYNGkSjRs3pl27dvk+JxEREZHiwM5kbb+CSAHT0zzkZsqVdZQn6ylX1vPwcKHDmI8LZK1NkZ2Kbd71nrJeccnVrZ7moSvTIiIiIiI2Us+0iIiIkH4tk02RnQpkrdS0jAJZR6QoUDEtIiIi2JcqUSz+SV7kblObh4iIiIiIjVRMi4iIiIjYSMW0iIiIiIiN1DMtIiIipF/LxMPDpbDDuOekpmVwOSmlsMOQe5iKaREREcG+VIkCe850cbIpshO6LVPyojYPEREREREbqZgWEREREbHRfVVML1y4kGbNmlGzZk0iIiKIi4vDaDRy5MiRu3J8f39/oqOj7/hxoqOj8ff3v+W80NBQIiIizK8jIiIIDQ01vz548OBdiVdERESkqLpveqYPHTpEdHQ0o0ePplGjRpQvXx53d3diYmKoXLlyYYdXoLp168YTTzyR7/3Cw8NJTU01vz548CALFy5k+PDhBRmeiIiISLFx3xTTx48fB6BXr144Ozubx319fQspojvH29sbb2/vfO9X3H6pEBEREbnT7os2j4iICMaPHw9A/fr1MRqNxMXFZWvz2Lx5MzVr1mTPnj3mfU+ePImfnx/z5883j33//ff07t2bunXr4u/vz+TJk0lOTrY45r59++jYsSM+Pj6Ehoby448/WhXrypUr6dq1K/Xr16dJkyYMGTKEP//8M9u87du3ExYWRp06dfD392fgwIGcOnUKyLnN48iRI/To0QMfHx+efPJJdu7cmWOebrR5bNy4kZkzZwJgNBoxGo306dOH33//3Zy/f7ty5Qr16tVj1apVVp2niIiISHFwX1yZDg8Px9vbmyVLlrBq1SocHR2pXr06P//8s8W8J598ku3btzNx4kQ2bdpEmTJlePHFF6lUqRLDhg0D4IcffqBv3760atWKqKgoLly4QGRkJElJSURFRQFw9uxZBg4ciI+PD1FRUZw7d46xY8datFDk5syZM/Tu3ZuKFSuSnJzMBx98QI8ePdi2bRsuLtef/xkbG8uECRNo164d4eHhmEwmvvvuO86fP8+DDz6Ybc3U1FQGDBiAm5sbkZGRpKamMmvWLK5evUqNGjVyjKNFixb079+flStXEhMTA4CzszPVq1fH19eXjz76yKJg37JlC9euXaNjx45W/B8RERERKR7ui2K6cuXK5hYGHx8fypQpk+vcqVOn0r59e2bNmkXNmjXZv38/H374Ifb29gBERkZSr1493njjDfM+Xl5e9O3blyNHjlCjRg1WrVqFg4MDy5cvx8nJCQAnJyfGjRt3y1gnTpxo/ntmZiZNmzYlICCAnTt30rlzZ7KysoiMjCQ4OJjXX3/dPLdly5a5rrlhwwbOnz/P+vXrze0fDz74IE8//XSu+7i7u5sL85tbYcLCwpg1axZTpkwx53Ljxo0EBQXh5uZ2y3O8oXx551tPKib0QQjWU66sozxZT7mS23Xze0jvKevdD7m6L4rp/HB1deXll19m8ODBlCpVimHDhlGzZk0AUlJSOHDgAJMnTyYjI8O8T/369SlVqhQ///wzNWrU4NChQzRp0sRcSAMEBwdbdfwDBw6wYMECDh8+zMWLF83jf/zxh/m/586ds3jqxq0cOnSIWrVqWfRR169fn/Lly1u9xr89+eSTzJo1iy1bttC1a1f++usvfvjhB5YuXZqvdRITk8nKMtkUQ1Hi4eFCQoIe+W8N5co6ypP1lCvr3Q9Fj63+/R7Se8p6xSVXBoNdnhcA74ue6fxq3LgxFSpUwGQy0b17d/N4UlISmZmZTJ8+nVq1apn/+Pj4cO3aNeLj4wFISEjIVqg6OTlRunTpPI97+vRp+vfvj8lkYvr06axdu5YPP/yQ8uXLk56eDsCFCxcA8PDwsPp8EhIScHd3zzZuazHt7OxMSEgIGzduBK5fla5QoQLNmjWzaT0RERGRokpXpnPw2muvkZmZSYUKFZg1axaRkZEAuLi4YGdnx/PPP0/z5s2z7efp6QlcL3QTExMttqWkpHD16tU8j/vVV1+RmprK4sWLzYV3RkYGly5dMs+50UaRkJBg9fl4eHiYn2bybzfHmB/dunXj6aef5sSJE3z88cd07tyZEiVK2LyeiIiISFGkYvomcXFxrFmzhjfeeANnZ2cGDBhA69atadOmDaVLl8bX15c//viD559/Ptc1ateuzcaNG0lJSTG3emzfvv2Wx05NTcVgMFCy5P/9b9m8ebNFS0mVKlXw8vIiNjaWoKAgq87Jx8eHTZs2cebMGXOrxw8//HDLYrpUqVIApKWl4eDgYLHNz8+PKlWqMHHiRE6fPk2XLl2sikVERESkOFGbx79cuXKFiRMn0rZtW0JCQggMDOSpp57ipZde4vz58wCMHTuWrVu3Mm7cOHbs2MGePXvYuHEjI0aMMPc19+3bl9TUVAYPHsyuXbuIiYnhjTfewNHRMc/jN27cmMzMTF588UX27NnD6tWriYyMpGzZsuY5BoOBcePGsXXrVsaMGcOuXbvYvXs3c+bM4dChQzmuGxoaipubG4MGDWL79u1s2rSJCRMm3PJmwapVqwKwatUqDh48mO3qdlhYGD/88AP16tWjWrVqeSdXREREpBhSMf0vc+fOJS0tjalTp5rHJkyYQOnSpZk2bRoADRo04L333uP8+fOMHz+eoUOH8uabb/LAAw9QoUIF4PrTPZYvX86FCxcYPnw477//PvPmzbtlMW00Gpk9ezY//fQTgwcP5tNPP2XBggXmR+Ld0KFDB6Kjo/njjz8YMWIEEyZM4Pjx4zn2RcP1fu0333yT0qVLM2rUKBYuXEhERAQVK1bMM54GDRowYMAAVq9eTffu3c05uKFVq1YAdO3aNc91RERERIorO5PJVPwfpyB3xHvvvcdrr73GV199ZfGpktbS0zzkZsqVdZQn6ylX1vPwcKHDmI8LO4x7zqbITnqah42KS65u9TQP9UxLvp08eZITJ06wbNkyunTpYlMhLSIiIlIcqJiWfFu4cCGffvopDRs2ZOTIkYUdjoiIFID0a5lsiuxU2GHcc1LTMm49Se5rKqYl3+bMmcOcOXMKOwwRESlA9qVKFIt/khe523QDooiIiIiIjVRMi4iIiIjYSMW0iIiIiIiN1DMtIiIipF/LxMPD5dYT5b7NU2paBpeTUgo7jHuOimkRERHBvlQJPWda8rQpshO6RTU7tXmIiIiIiNhIxbSIiIiIiI3ui2I6Ojoaf3//fO2Tnp5OdHQ0v/zyi8X4yZMnMRqN7Nq1yzwWFBTE3LlzCyTW25VTfDlZs2YNRqPR/DouLg6j0ciRI0eA3M9fRERERP7PfVFM2+LatWssXLgwWzHp6elJTEwM9evXL6TI8mZrfLVq1SImJobKlSsDuZ+/iIiIiPwf3YCYT/b29vj6+hZ2GLmyNT5nZ+d7+rxERERE7kX37JXpjRs3Urt2bZKSkizGjx49itFo5NtvvzWPrVmzhtatW1O7dm2Cg4N555138lz76tWrzJgxgzZt2lC3bl2CgoKYPn06ycnJ5jl+fn4AvPjiixiNRoxGIydPnrS6jeL777+nd+/e1K1bF39/fyZPnmyxfk7279/PkCFDCAwMxNfXl06dOvHJJ59km3fq1ClGjx6Nv78/devWpUOHDmzatAnIuc0jPT2dGTNm0KBBAxo1asSsWbPIyMiwWPPmNo/czj8sLIyIiIhsMUVERNC5c+c8z09ERESkuLlni+lWrVoBsH37dovxzz77jAoVKph7oNetW8fMmTMJCgpi6dKlhISEMGfOHJYvX57r2qmpqWRmZjJq1ChWrFjByJEj+e677xg5cqR5zqpVqwAYOnQoMTExxMTE4OnpaVXsP/zwA3379qVChQpERUXx4osv8sUXXzBx4sQ89zt9+jR+fn688sorLFmyhNatWzNx4kQ+/fRT85zExESeeuopDh06xIQJE1i6dClhYWHEx8fnuu5rr73G+vXrCQ8PZ968eZw+fZqVK1fmGUtu5x8WFsbWrVu5cuWKee6VK1fYunUrXbt2tSY9IiIiIsXGPdvmUbZsWZo1a8Znn31mUaR99tlntGnThhIlSpCVlUV0dDShoaHmq6WBgYFcvnyZZcuW8eyzz+Lg4JBtbXd3d6ZPn25+nZGRQaVKlXj66ac5ffo0FStWxMfHB4DKlSvnu/0hMjKSevXq8cYbb5jHvLy86Nu3L0eOHKFGjRo57teuXTvz300mEw0bNuTs2bOsW7eO9u3bA/DOO++QnJzMxo0bzcV9QEBArrFcuHCBDz74gOHDh9O/f38AmjVrRtu2bfM8h9zOv3379syZM4ctW7aY/79s3ryZa9eumWO0VvnyzvmaX5Tdrw/4t4VyZR3lyXrKlUjBye/X0/3w9XfPFtMAbdu2JSIiggsXLuDm5sYvv/zCiRMneOWVVwA4c+YM586dIyQkJNt+a9eu5bfffqNOnTo5rh0bG8s777zDn3/+ydWrV83jJ06coGLFijbHnJKSwoEDB5g8ebJFK0X9+vUpVaoUP//8c67F9KVLl4iOjmbnzp2cPXuWzMxM4HohfsN3331Hs2bNrL5KfuTIEdLS0mjZsqV5zGAw0LJlS9588818n5+zszNt2rTho48+MhfTH330EUFBQbi5ueVrrcTEZLKyTPmOoajx8HAhIUGPubeGcmUd5cl6ypX17oeiR25ffr6eisvXn8Fgl+cFwHu6mA4KCqJkyZJs27aNp556is8++wxvb2/zkyoSEhIAKF++vMV+N15funQpx3W3b9/OhAkT6NmzJ6NGjcLV1ZWEhASGDRtGWlrabcWclJREZmYm06dPt7j6fUNe7RgRERH89NNPhIeHU61aNZydnVm7di07d+40z7l48aL5qrE1/vnnHyD3HNkiLCyMPn368Pfff2Mymfj+++/zbKsRERERKa7u6WK6TJkyNG/enM8++4ynnnqKzZs3ExISgp2dHQAeHh7A9T7if7vxuly5cjmuu2XLFurWrctLL71kHtu7d2+BxOzi4oKdnR3PP/88zZs3z7Y9tyvKaWlp7N69m6lTp9KzZ0/z+Pvvv28x70bhb60KFSoA13Pi6upqHr85Z/nRsGFDHn74YTZu3IjJZMLT05PAwECb1xMREREpqu7ZGxBvaNeuHfv27ePzzz/n77//tugr9vb2xtPTky1btljss3nzZpydnS0+lOTfUlNTsbe3txi78TSMG0qVKgWQ7yvVpUuXxtfXlz/++AMfH59sf/7dsvFv6enpZGVlWcSVnJzM559/bjEvICCAr7/+2nzF+VZq1KiBg4ODxdXtrKwsi9c5udX5d+3aldjYWD7++GM6d+5MiRIlrIpHREREpDi5p69MAzRv3hxHR0emTp1KpUqVLHqgDQYDw4cPZ+rUqbi6utK0aVP27dvH2rVrGT16dI43HwI0adKEGTNmsGTJEurWrcsXX3zBnj17LObY29tTqVIlNm/ezKOPPoqDg0OuxfnNxo4dS9++fTEYDLRp04YyZcoQHx/P7t27GTVqFFWqVMm2j4uLCz4+PixatAhnZ2cMBgPLly/H2dnZ4pF6ffv2JTY2ll69ejFkyBC8vb05fvw4V69eZeDAgdnWdXNzo3v37kRHR1OyZEmqV6/O+vXrLfrEc5Lb+d8o9rt06cKCBQvIyMggNDTUqryIiIiIFDf3fDHt6OhIUFAQmzZtYtCgQdm2d+/enbS0NFavXs27776Ll5cXERER9O3bN9c1e/TowcmTJ1m9ejVpaWk0bdqUyMhIunfvbjFv+vTpzJ07l379+pGenn7Lq7k3NGjQgPfee4+oqCjGjx9PVlYWFStWpFmzZua2i5xERkYydepUJkyYgKurK7169SI1NZU1a9aY57i7u7N27VrmzZvHrFmzSE9P5+GHH2bw4MG5rjt+/HgyMjJYtGgRBoOBjh070q9fP+bMmZPneeR0/pUqVQKut9jc+MUmp18ORERERO4HdiaTqfg/TkEK3MWLF3n88ceZMmUK3bp1s2kNPc1DbqZcWUd5sp5yZT0PDxc6jPm4sMOQe9imyE56mkcO7vkr03JvSU5O5tixY6xevZoyZcrk+9nSIiIiIsWJimnJl59//plnnnmGBx98kLlz5+Lk5FTYIYmISAFIv5bJpshOhR2G3MNS0zJuPek+pGJa8sXf35/ffvutsMMQEZECZl+qRLH4J/k7rbi0LkjBuecfjSciIiIicq9SMS0iIiIiYiMV0yIiIiIiNlLPtIiIiJB+LRMPD5fCDqNIUJ6sdzdylZqWweWklDt+nNyomBYRERHsS5XQc6alSNoU2YnCvCVUbR4iIiIiIja6ZTH92WefsXHjRpsW//rrr3nnnXds2nfjxo0YjUauXLli0/75YTQaLT6yOysri+nTp9OkSROMRiPR0dF3PIYb1qxZg9FoNL+Oi4vDaDRy5MiRAj2OtfkdMWIEffr0KdBji4iIiBQXt2zz2LJlCxcuXCA0NDTfi3/zzTds3bqVvn372hJbodm2bRvvv/8+r7zyCtWrV8fb27vQYqlVqxYxMTFUrly5QNdt0aIFMTEx+tAVERERkdugnukcHD9+nHLlyhEWFnbba6WmpuLo6Gjz/s7Ozvj6+t52HDdzd3fH3d29wNcVERERuZ/k2eYRERHB1q1b2bt3L0ajMVvLw5o1a2jdujW1a9cmODjYoqUjOjqalStXcurUKfO+ERERAOzfv58hQ4YQGBiIr68vnTp14pNPPsl38ElJSUyaNInAwEB8fHxo0aIFkydPtoj/5ivqJ0+exGg0smvXrhzX7NOnDwsWLODSpUvmuE+ePEl0dDT+/v7Z5t/cIhIUFMScOXNYtGgRjz/+OPXr1881/vT0dGbMmEGDBg1o1KgRs2bNIiPD8qM6c2rzSElJ4eWXX6Zp06b4+PjQtWtXvv76a/P26dOn07hxYxITE81jW7duxWg0mufl1OYRHx/PwIEDqVOnDkFBQaxfvz7HuI8cOcKgQYOoV68e9erVY8SIESQkJOR6niIiIiLFVZ5XpsPDwzl9+jSXL19m2rRpAOaWh3Xr1jFz5kz69etHYGAgcXFxzJkzh/T0dAYNGkS3bt04ceIEcXFxLFy4EMB8JfT06dP4+fnRs2dP7O3t+fHHH5k4cSIGg4H27dtbHfzs2bPZv38/EydOpEKFCsTHx/P999/blIgbpk2bxttvv83WrVt58803AfD09MzXGp9++inVq1dn2rRpZGZm5jrvtddeY/369YwaNYpq1aqxfv16tmzZcsv1J0+ezOeff87o0aOpXLky69evZ/DgwaxatYoGDRowbtw4vv76a6ZOncqiRYtITEzkpZdeokePHgQGBua4pslkIjw8nAsXLvDKK6/g4OBAdHQ0Fy9e5JFHHjHP+/PPP+nZsye1a9dm3rx5ZGZmsmDBAoYMGcKHH36InZ1dvnIlIiIiUpTlWUxXrlwZV1dXTCaTRatBVlYW0dHRhIaGmq82BwYGcvnyZZYtW8azzz6Lt7c3np6e2NvbZ2tTaNeunfnvJpOJhg0bcvbsWdatW5evYvrQoUP06tWLtm3bmsc6depk9f45udEjXaJEidtqr1i2bBkODg65br9w4QIffPABw4cPp3///gA0a9bM4lxycuzYMf773/8ye/ZsunTpYt6vY8eOLFmyhLfeeovSpUszZ84cevfuTWxsLDt27KBMmTJMmDAh13W//PJLDh8+zLp166hbty5wvV87ODjYopheuHAhFSpUYMWKFdjb2wPXr84/+eSTfPHFF7Ro0cKa9IiIiIgUCzb1TJ85c4Zz584REhJiMd62bVvWrl3Lb7/9Rp06dXLd/9KlS0RHR7Nz507Onj1rvnrr5eWVrzhq1qzJW2+9hcFgoEmTJlSpUiX/J3MHNG7cOM9CGq63SqSlpdGyZUvzmMFgoGXLluYr4jk5dOgQJpPJIvcGg4GQkBCL/erXr0/fvn2ZMmUKGRkZvPvuu5QuXTrXdQ8ePEiFChXMhTTAgw8+SK1atSzm7dmzh86dO2MwGMwtKZUqVeLBBx/kf//7X76K6fLlna2eW9TpAf/WU66sozxZT7kSKf4K8+vcpmL6Rn9s+fLlLcZvvL506VKe+0dERPDTTz8RHh5OtWrVcHZ2Zu3atezcuTNfcUydOpWoqCgWL17MjBkzePjhhxk5cqTFle/CUKFChVvO+eeff4Dcc5ibc+fOUbp06WxP4ShfvjwpKSmkp6ebrxi3b9+elStXYjQaadCgQZ7rJiQk5HhDYvny5S36qi9cuMCKFStYsWJFtrnx8fF5HuNmiYnJZGWZ8rVPUeTh4UJCQmE+Tr7oUK6sozxZT7mynn7pkKLsTn6dGwx2eV4AtKmY9vDwALC4we3fr8uVK5frvmlpaezevZupU6fSs2dP8/j777+f7zjKli3L5MmTmTx5Mr/++itvvvkmY8eOxWg0Ur16dezt7bl27ZrFPklJSfk+DoCDg0O2tXL7pcGavuEbBXdiYiKurq7m8ZtzejNPT0+uXr1KSkqKRUGdmJiIk5OTuZDOyMhgypQp1KhRg99//52YmBieeuqpXNf18PDg/Pnz2cYTExMtnkZSrlw5WrVqRbdu3bLNdXNzyzN2ERERkeLmlh/aUqpUKdLS0izGbvRD33yz3ObNm3F2djZ/6EhO+6anp5OVlWUu+gCSk5P5/PPPbT4JuN7yMX78eLKysjh+/Lg5zlOnTlnE8O+nXuSHl5cXV65c4ezZs+axb775xuZ4a9SogYODg8XV+KysrFtenffx8cHOzo6tW7eax0wmE1u3brV4csjSpUv5448/WLx4MQMHDmTu3LmcPHkyz3X/+ecffvrpJ/PY6dOnOXz4sMW8gIAAfv/9d2rXro2Pj4/Fn0qVKll9/iIiIiLFwS2vTFepUoWdO3eyY8cOvLy88PT0xMvLi+HDhzN16lRcXV1p2rQp+/btY+3atYwePdrcL1y1alX++ecfNm7cyKOPPoqbmxuVKlXCx8eHRYsW4ezsjMFgYPny5Tg7O5OcnJyv4Hv27ElwcDCPPvoodnZ2rFu3jtKlS5v7tVu1akVUVBSTJk0iNDSUw4cPs2HDBhvSdP0mP0dHRyZOnEi/fv04efIkH3zwgU1rwfWruN27dyc6OpqSJUtSvXp11q9fz9WrV/Pcr1q1arRr144ZM2Zw5coVHnroIdavX8/x48fNT1w5fPgwS5cuZfLkyTz00EMMGzaMzz//nIkTJ7Jq1aocr5w3b96cmjVrMnLkSMaOHYu9vT3R0dHZWj+ef/55unXrxqBBg+jatStubm6cPXuWb7/9li5duuT4+EARERGR4uqWV6affvppmjZtysSJEwkLC2PdunUAdO/enUmTJrFjxw6GDBnCp59+SkREBIMGDTLv++STTxIaGsq8efMICwszPyIvMjKShx56iAkTJvDKK6/QunVrOnfunO/gfX19+eijjxgxYgQvvPCCuZ/3xuP7atSowaxZszhw4ABDhw5l3759zJ49O9/HgeuP9YuKiuLMmTMMGzaMTz75hMjISJvWumH8+PF07dqVRYsWMWbMGDw9PenXr98t93v55Zfp0qULixYtIjw8nFOnTrF06VIaNGhAeno6EyZMwN/fnx49egBgb2/Pq6++yo8//mjxTOx/s7OzY8mSJVSrVo2JEycye/ZsevXqRb169SzmValSxfzJiVOnTmXgwIFER0djb2/Pww8/fFv5EBERESlq7EwmU/G/A0zuSboBUW6mXFlHebKecmU9Dw8XOoz5uLDDEMm3TZGdCvUGxFtemRYRERERkZypmBYRERERsZFNj8YTERGR4iX9WiabIm/vU4RFCkNqWkahHl/FtIiIiGBfqoT6y62gPnzr3S+5UpuHiIiIiIiNVEyLiIiIiNhIxbSIiIiIiI1UTIuIiIiI2EjFtIiIiIiIjVRMi4iIiIjYSMW0iIiIiIiNVEyLiIiIiNhIxbSIiIiIiI30CYhSaAwGu8IO4a65n871dilX1lGerKdcWU+5so7yZL3ikKtbnYOdyWQy3aVYRERERESKFbV5iIiIiIjYSMW0iIiIiIiNVEyLiIiIiNhIxbSIiIiIiI1UTIuIiIiI2EjFtIiIiIiIjVRMi4iIiIjYSMW0iIiIiIiNVEyLiIiIiNhIxbSIDVJSUnjhhRcIDg4mJCSEXbt25Tjv7Nmz9OnTh/r16xMaGppt+7p16wgODqZVq1bMmDGDrKwsq7YVFdbmCXI/39WrV9OpUyfzHz8/P2bPng1AXFwcdevWNW/r1q3bXTmvO6EgcnWrfCxatIhWrVrRqlUrFi1adEfP504qiFzt2LGD0NBQ2rdvT7t27Vi5cqV5n40bN9KgQQNzHocNG3bHz6kg/fHHHzz11FO0adOGp556ihMnTmSbk5mZyfTp02nVqhXBwcGsX7/+trcVRbebq0WLFtGuXTs6dOhAaGgoX331lXlbREQEjz/+uPl9tGTJkrtxSnfE7eYpOjqagIAAcy6mT59u3pafr+d7lklE8i06Oto0adIkk8lkMv3xxx+mJk2amJKTk7PNS0pKMu3bt8+0a9cuU5cuXSy2/fXXX6ZmzZqZEhMTTZmZmab+/fubPvroo1tuK0qszZO155uenm5q3Lix6eDBgyaTyWT67rvvsuW1qCqIXOWVj71795rat29vSklJMaWkpJjat29v2rt37x07nzupIHJ14MAB05kzZ0wm0/Wv01atWpn27dtnMplMpg0bNpiGDx9+d07mDujTp48pNjbWZDKZTLGxsaY+ffpkm/PRRx+Z+vfvb8rMzDQlJiaamjVrZvr7779va1tRdLu5+vLLL01Xr141mUwm0y+//GKqX7++KSUlxWQymUwTJkwwvfvuu3fpTO6s281TVFSUac6cOTmube3X871MV6ZFbLB582aeeuopAB555BFq167Nl19+mW2ei4sLDRo0wMnJKdu2rVu30qpVK9zd3TEYDHTr1o3PPvvsltuKEmvzZO357tq1Cw8PD3x8fO547HdbQefqZp999hmdO3fG0dERR0dHOnfuXCTfU1Awuapbty5eXl7A9a/TatWqcerUqbt3EndIYmIihw8fpn379gC0b9+ew4cPc/78eYt5n332Gd26dcNgMODu7k6rVq3YsmXLbW0ragoiV82aNTN/fzcajZhMJi5evHhXz+NOK4g85cXar+d7mYppERucPn2aBx980Pz6gQce4MyZM/laIz4+nooVK5pfV6xYkfj4+FtuK0qszZO157thw4Zs7TInTpygS5cudOvWjY8++qgAo7+7CipXueXj5v0eeOCBIvmegoJ/Xx07dowDBw7QuHFj89jevXvp1KkTvXr1Yvfu3QV7AndQfHw8Xl5elChRAoASJUrg6emZ7bxzej/cyKGt24qagsjVv8XGxlK5cmW8vb3NY2+//TYdOnQgPDycY8eO3aEzubMKKk///e9/6dChA/3792f/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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import shap\n", - "from alibi.explainers import KernelShap\n", - "\n", - "predict_fn = lambda x: model.predict(scaler.transform(x))\n", - "\n", - "explainer = KernelShap(predict_fn, task='classification')\n", - "\n", - "explainer.fit(X_train[0:100])\n", - "\n", - "result_x = explainer.explain(x)\n", - "result_cem_cf = explainer.explain(cem_cf)\n", - "\n", - "plot_importance(result_x.shap_values[0], features, 0)\n", - "plot_importance(result_cem_cf.shap_values[0], features, 0)" - ] - }, - { - "cell_type": "markdown", - "id": "07f58f8b-944a-4a5d-8d74-fc2fce4b0f6d", - "metadata": {}, - "source": [ - "### Counterfactual With Prototypes" - ] - }, - { - "cell_type": "markdown", - "id": "8777b84e-7bc6-47ca-be2b-10943084103f", - "metadata": {}, - "source": [ - "Like the previous two methods counterfactuals with prototypes defines a loss that guides the counterfactual towards the target class while also using a autoencoder to ensure it stays within the data distribution. As well as this it uses prototype instances of the target class to ensure that the generated counterfactual is a interpretable as a member of the target class." - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "d7a63b6f-58a1-4fc0-9aa6-528507158eb0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Instance class prediction: 0\n", - "Counterfactual class prediction: 1\n" - ] - } - ], - "source": [ - "from alibi.explainers import CounterfactualProto\n", - "\n", - "explainer = CounterfactualProto(\n", - " model, # The model to explain\n", - " shape=(1,) + X_train.shape[1:], # shape of the model input\n", - " ae_model=ae, # The autoencoder\n", - " enc_model=ae.encoder # The encoder\n", - ")\n", - "\n", - "explainer.fit(scaler.transform(X_train)) # Fit the explainer with scaled data\n", - "\n", - "result_proto = explainer.explain(scaler.transform(x), verbose=False)\n", - "\n", - "proto_cf = result_proto.data['cf']['X']\n", - "print(\"Instance class prediction:\", model.predict(scaler.transform(x))[0].argmax())\n", - "print(\"Counterfactual class prediction:\", model.predict(proto_cf)[0].argmax())\n" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "3e6116d6-b739-436c-8179-1cbaddf218c0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "fixed acidity instance: 9.2 counter factual: 9.2 difference: 2e-07\n", - "volatile acidity instance: 0.36 counter factual: 0.36 difference: -0.0 \n", - "citric acid instance: 0.34 counter factual: 0.34 difference: -0.0 \n", - "residual sugar instance: 1.6 counter factual: 1.6 difference: 1e-07\n", - "chlorides instance: 0.062 counter factual: 0.062 difference: 0.0 \n", - "free sulfur dioxide instance: 5.0 counter factual: 5.0 difference: 0.0 \n", - "total sulfur dioxide instance: 12.0 counter factual: 12.0 difference: 1.9e-06\n", - "density instance: 0.997 counter factual: 0.997 difference: -0.0 \n", - "pH instance: 3.2 counter factual: 3.2 difference: -0.0 \n", - "sulphates instance: 0.67 counter factual: 0.623 difference: 0.0470144\n", - "alcohol instance: 10.5 counter factual: 9.942 difference: 0.558073\n" - ] - } - ], - "source": [ - "proto_cf = scaler.inverse_transform(proto_cf)\n", - "compare_instances(x, proto_cf)" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "1d1e5206-cca6-4897-a486-8a4bf070e93f", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "60d193882ceb40f988c5ef634202c491", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/1 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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ypV1lCfrKVfW0wddidhGbR4iIiIiIjZSMS0iIiIiYiMV0yIiIiIiNlLPtEgx51LWCUeHovOlrr5N6yhP1lOurKMbEEVsU3R+woqITRwdSup52yJyS3r6kYht1OYhIiIiImIjFdMiIiIiIjZSMV0I4uLiMBqNHDlyJF/7bdy4EaPRyJUrV247hq+//pp33nnnttcRERERuZ+pmL5PffPNN6xevbqwwxAREREp0lRMi4iIiIjYSMW0DY4ePcqAAQNo1KgRvr6+PPnkk7z33nsABAUFMXfuXIv51rRnGI1G3n77bV5++WUaNWpEgwYNmDlzJunp6dnmnjx5kn79+uHr60tISAjbtm2z2L5792769etHQEAAfn5+dO/ena+//tq8PTo6mpUrV3Lq1CmMRiNGo5GIiAjz9u+//57evXtTt25d/P39mTx5MsnJyebtSUlJTJo0icDAQHx8fGjRogWTJ0/OXxJFREREigE9Gs8GQ4YMoVq1asybNw97e3uOHz9eIH3MK1euxNfXl3nz5vH7778zf/587O3tmTBhgsW8sWPH0r17dwYMGMCaNWsYPXo0O3bswNvbG7hebD/xxBP0798fg8HAl19+ycCBA1mzZg3169enW7dunDhxgri4OBYuXAiAu7s7AD/88AN9+/alVatWREVFceHCBSIjI0lKSiIqKgqA2bNns3//fiZOnEiFChWIj4/n+++/v+3zFxERESlqVEzn0/nz5zl58iSLFy/GaDQCEBAQUCBrlylThgULFmAwGGjevDnp6eksXbqUwYMH4+rqap737LPPEhYWBkCtWrVo2rQpu3btomfPngD07t3bPDcrKwt/f39+//13PvzwQ+rXr4+3tzeenp7Y29vj6+trEUNkZCT16tXjjTfeMI95eXnRt29fjhw5Qo0aNTh06BC9evWibdu25jmdOuX/+aTlyzvne5+iSh8aISJFgb5XWUd5st79kCsV0/nk6urKAw88wLRp03jmmWfw9/enfPnyBbJ2y5YtMRj+r/OmdevWvPHGGxw9epSGDRuaxwMDA81/d3Nzw93dnTNnzpjHzpw5w/z58/n2229JSEjAZDIB4Ofnl+fxU1JSOHDgAJMnTyYjI8M8Xr9+fUqVKsXPP/9MjRo1qFmzJm+99RYGg4EmTZpQpUoVm843MTGZrCyTTfsWJR4eLiQkXC7U44uIWKMw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0dyOk9NxypUrR+3atXnppZeyrXE7TywRERERKYru+MeJBwQEsHnzZh599NFcH5MXEBDA22+/TenSpalWrZpNx3nggQcYNGgQGzZs4NixY8D1dguAY8eOUb9+fQB++uknkpOT872+t7e3ea0bV2Xj4+M5fvy4uXc4P0qWLMljjz3Gzp076dmzp3l8+/btt4zD09OTLVu20Lx5c/P45s2bcXZ2Nn/ASlxcHGvWrOGNN97A2dmZAQMG0Lp1a9q0aZPjujVq1MDBwYGdO3ea/x9kZWWxc+dOi3kBAQF88803VKxYsdg9X1xEREQkv+54Md23b18++eQTnn32WXr37o2Xlxf//PMP+/bto379+rRv356mTZsSGBhI//79GThwINWrVyc5OZlff/2VtLQ0xowZk+PaU6dOpVy5ctStWxcXFxfi4uL4888/GTduHAB16tTBy8uLV155hZEjR3Lx4kXefPPNPJ+NnRtvb29q167NggULcHJyIisri2XLlllcxc2vIUOG8PzzzzNt2jSCg4PZt28fX331VZ77GAwGhg8fztSpU3F1daVp06bs27ePtWvXMnr0aBwcHLhy5QoTJ06kbdu25t7qp556ipdeeomGDRvi7u6ebV03Nze6d+9OdHQ0JUuWpHr16qxfv56rV69azOvcuTMffPABffr0oX///jz00ENcvHiRgwcP4uHhQd++fW3Oh4iIiEhRc8eLaXd3d2JiYnjjjTeYPXs2SUlJeHp64ufnZ76Kamdnx8KFC1m6dCmrVq0iPj6ecuXKUbNmzTw/ytvX15d169YRExNDWloalStXZubMmbRq1Qq43nawcOFCpk+fzogRI6hSpQovvfSSudjOr9dff53Jkyczbtw4vLy8GDduHKtWrbJpLbh+s+GUKVNYvnw5sbGxNGrUiFdeeYUBAwbkuV/37t1JS0tj9erVvPvuu3h5eREREWEuZOfOnUtaWhpTp0417zNhwgS++eYbpk2bRnR0dI7rjh8/noyMDBYtWoTBYKBjx47069ePOXPmmOc4ODiwevVqFixYQHR0NImJibi7u1OnTh2CgoJszoWIiIhIUWRnMpmK/x1gck/SDYhys4K+AbHDmI8LZC2R+8GmyE76XmUFfU+3XnHJ1a1uQMz3JyCKiIiIiMh1KqZFRERERGx0x3umRUQKQ2paBpsiOxV2GCJFRvq1zMIO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devWNW/r1q3bXTmvO6EgcnWrfCxatIhWrVrRqlUrFi1adEfP504qiFzt2LGD0NBQ2rdvT7t27Vi5cqV5n40bN9KgQQNzHocNG3bHz6kg/fHHHzz11FO0adOGp556ihMnTmSbk5mZyfTp02nVqhXBwcGsX7/+trcVRbebq0WLFtGuXTs6dOhAaGgoX331lXlbREQEjz/+uPl9tGTJkrtxSnfE7eYpOjqagIAAcy6mT59u3pafr+d7lklE8i06Oto0adIkk8lkMv3xxx+mJk2amJKTk7PNS0pKMu3bt8+0a9cuU5cuXSy2/fXXX6ZmzZqZEhMTTZmZmab+/fubPvroo1tuK0qszZO155uenm5q3Lix6eDBgyaTyWT67rvvsuW1qCqIXOWVj71795rat29vSklJMaWkpJjat29v2rt37x07nzupIHJ14MAB05kzZ0wm0/Wv01atWpn27dtnMplMpg0bNpiGDx9+d07mDujTp48pNjbWZDKZTLGxsaY+ffpkm/PRRx+Z+vfvb8rMzDQlJiaamjVrZvr7779va1tRdLu5+vLLL01Xr141mUwm0y+//GKqX7++KSUlxWQymUwTJkwwvfvuu3fpTO6s281TVFSUac6cOTmube3X871MV6ZFbLB582aeeuopAB555BFq167Nl19+mW2ei4sLDRo0wMnJKdu2rVu30qpVK9zd3TEYDHTr1o3PPvvsltuKEmvzZO357tq1Cw8PD3x8fO547HdbQefqZp999hmdO3fG0dERR0dHOnfuXCTfU1Awuapbty5eXl7A9a/TatWqcerUqbt3EndIYmIihw8fpn379gC0b9+ew4cPc/78eYt5n332Gd26dcNgMODu7k6rVq3YsmXLbW0ragoiV82aNTN/fzcajZhMJi5evHhXz+NOK4g85cXar+d7mYppERucPn2aBx980Pz6gQce4MyZM/laIz4+nooVK5pfV6xYkfj4+FtuK0qszZO157thw4Zs7TInTpygS5cudOvWjY8++qgAo7+7CipXueXj5v0eeOCBIvmegoJ/Xx07dowDBw7QuHFj89jevXvp1KkTvXr1Yvfu3QV7AndQfHw8Xl5elChRAoASJUrg6emZ7bxzej/cyKGt24qagsjVv8XGxlK5cmW8vb3NY2+//TYdOnQgPDycY8eO3aEzubMKKk///e9/6dChA/3792f/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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import shap\n", - "from alibi.explainers import KernelShap\n", - "\n", - "predict_fn = lambda x: model.predict(scaler.transform(x))\n", - "\n", - "explainer = KernelShap(predict_fn, task='classification')\n", - "\n", - "explainer.fit(X_train[0:100])\n", - "\n", - "result_x = explainer.explain(x)\n", - "result_proto_cf = explainer.explain(cem_cf)\n", - "\n", - "plot_importance(result_x.shap_values[0], features, 0)\n", - "print(result_x.shap_values[0].sum())\n", - "plot_importance(result_proto_cf.shap_values[0], features, 0)\n", - "print(result_proto_cf.shap_values[0].sum())" - ] - }, - { - "cell_type": "markdown", - "id": "80f4ccc1-d2ef-4623-a8b8-dae2518c3d26", - "metadata": {}, - "source": [ - "Looking at the ALE plots below, we can see how the counterfactual methods change the features to flip the prediction. Note that the ALE plots potentially miss details local to individual instances as they are global insights." - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "20c990ef-808f-4502-9806-6d03c6635a18", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[,\n", - " ,\n", - " ],\n", - " [,\n", - " ,\n", - " ]],\n", - " dtype=object)" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_ale(exp, features=['sulphates', 'alcohol', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide'], line_kw={'label': 'Probability of \"good\" class'})" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4e929a28-8f20-4d2a-84a8-30ef5bae9e4e", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/overview.ipynb b/examples/overview.ipynb new file mode 120000 index 000000000..6f87c347f --- /dev/null +++ b/examples/overview.ipynb @@ -0,0 +1 @@ +../doc/source/examples/overview.ipynb \ No newline at end of file From 05bed290b1cbaa904baaf31f1237439f8d9941e6 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Wed, 15 Dec 2021 14:48:09 +0000 Subject: [PATCH 50/60] Add spelling and grammer fixes for overview notebook --- doc/source/examples/overview.ipynb | 40 +++++++++++++++--------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/doc/source/examples/overview.ipynb b/doc/source/examples/overview.ipynb index 7fa1bf126..dbb694c3a 100644 --- a/doc/source/examples/overview.ipynb +++ b/doc/source/examples/overview.ipynb @@ -140,11 +140,11 @@ "tags": [] }, "source": [ - "### Select Instance of good wine \n", + "### Select good wine instance \n", "\n", "We partition the dataset into good and bad portions and select an instance of interest. I've chosen it to be a good quality wine. \n", "\n", - "**Note** that bad wines are class 1 and correpsond to the second model output being high, whereas good wines are class 0 and correspond to the first model output being high." + "**Note** that bad wines are class 1 and correspond to the second model output being high, whereas good wines are class 0 and correspond to the first model output being high." ] }, { @@ -255,7 +255,7 @@ "id": "1371f3be-fafd-45c6-978b-d2c65924d21e", "metadata": {}, "source": [ - "In order to get results for the tree shap explainer we need a tree based model. Hence we train a random forest on the wine-quality dataset." + "We need a tree-based model to get results for the tree SHAP explainer. Hence we train a random forest on the wine-quality dataset." ] }, { @@ -304,7 +304,7 @@ "id": "5c29f129-3e75-4fc7-8893-18ab09019ae9", "metadata": {}, "source": [ - "Finally we also train a tensorflow model, between the tensorflow and random forest models we can apply each explainer method." + "Finally, we also train a TensorFlow model." ] }, { @@ -358,7 +358,7 @@ "id": "6faa7413-c589-45ed-9c64-96b8ddbac469", "metadata": {}, "source": [ - "In order to ensure stable results we save and load the same models each time unless they don't exist in which case we create new ones. If you want to generate new models on each run of the notebook then set `FROM_SCRATCH=True`" + "We save and load the same models each time to ensure stable results. If they don't exist we create new ones. If you want to generate new models on each notebook run, then set `FROM_SCRATCH=True`." ] }, { @@ -394,9 +394,9 @@ "id": "b0a89f7e-7a76-4c9f-b313-ce963227f548", "metadata": {}, "source": [ - "## Util functions for visualizing and comparing instance differences\n", + "## Util functions\n", "\n", - "These are utility functions for exploring results. The first just shows two instances of the data side by side and compares the difference. We'll use this to see how the counterfactuals differ from there original instances. The second plots the importance of each feature which will be useful for visualizing the attribution methods." + "These are utility functions for exploring results. The first shows two instances of the data side by side and compares the difference. We'll use this to see how the counterfactuals differ from their original instances. The second function plots the importance of each feature. This will be useful for visualizing the attribution methods." ] }, { @@ -449,7 +449,7 @@ "\n", "The integrated gradients (IG) method computes the attribution of each feature by integrating the model partial derivatives along a path from a baseline point to the instance. This accumulates the changes in the prediction that occur due to the changing feature values. These accumulated values represent how each feature contributes to the prediction for the instance of interest.\n", "\n", - "We illustrate the apllication of integrated to the instance of interest. " + "We illustrate the application of IG to the instance of interest." ] }, { @@ -503,7 +503,7 @@ "\n", "Kernel SHAP is a method for computing the Shapley values of a model around an instance. Shapley values are a game-theoretic method of assigning payout to players depending on their contribution to an overall goal. In our case, the features are the players, and the payouts are the attributions.\n", "\n", - "Example of Kernel SHAP method applied to the Tensorflow model" + "Here we give an example of Kernel SHAP method applied to the Tensorflow model." ] }, { @@ -568,7 +568,7 @@ "id": "53a6161f-13b6-4156-b378-bd689e68d00f", "metadata": {}, "source": [ - "Here we apply Kernel SHAP to the Tree-based model as well in order to compare to the tree-based methods we run later" + "Here we apply Kernel SHAP to the Tree-based model to compare to the tree-based methods we run later." ] }, { @@ -635,7 +635,7 @@ "source": [ "### Interventional treeSHAP\n", "\n", - "Interventional tree SHAP computes the same Shapley values as the kernel SHAP methood above. The difference is that it's much faster for tree-based models. He it is applied to the random forest we trained. Comparison with the kernel SHAP results above show very similar outcomes." + "Interventional tree SHAP computes the same Shapley values as the kernel SHAP method above. The difference is that it's much faster for tree-based models. Here it is applied to the random forest we trained. Comparison with the kernel SHAP results above show very similar outcomes." ] }, { @@ -683,7 +683,7 @@ "source": [ "### Path Dependent treeSHAP\n", "\n", - "Path Dependent tree SHAP also gives the same results as the Kernel SHAP model only faster. Here it is applied to random forest. Again very similar results to kernel SHAP and Interventional tree SHAP as expected. " + "Path Dependent tree SHAP gives the same results as the Kernel SHAP method, only faster. Here it is applied to a random forest model. Again very similar results to kernel SHAP and Interventional tree SHAP as expected." ] }, { @@ -729,7 +729,7 @@ "source": [ "### Note:\n", "\n", - "There is some difference between the kernel SHAP and integrated gradient applied to the tensorflow model and the SHAP methods applied to the random forest. This is to be exected due to the combination of different methods and different models. They are reasonably similar overall however. notably the ordering is nearly the same." + "There is some difference between the kernel SHAP and integrated gradient applied to the TensorFlow model and the SHAP methods applied to the random forest. This is expected due to the combination of different methods and models. They are reasonably similar overall. Notably, the ordering is nearly the same." ] }, { @@ -747,7 +747,7 @@ "source": [ "### Anchors\n", "\n", - "Anchors tell us what features need to stay the same for a specific instance in order for the model to give the same classification. In the case of a trained image classification model, an anchor for a given instance would be a minimal subset of the image that the model uses to make its decision.\n", + "Anchors tell us what features need to stay the same for a specific instance for the model to give the same classification. In the case of a trained image classification model, an anchor for a given instance would be a minimal subset of the image that the model uses to make its decision.\n", "\n", "Here we apply Anchors to the tensor flow model trained on the wine-quality dataset." ] @@ -772,7 +772,7 @@ "id": "1600dade-52d0-40b8-a29c-d8279bbb1a94", "metadata": {}, "source": [ - "The result is a set of predicates that tell you weather an point in the data set is in the anchor or not. If it is in the anchor then it is very likely to have the same classification as the instance `x`." + "The result is a set of predicates that tell you whether a point in the data set is in the anchor or not. If it is in the anchor, it is very likely to have the same classification as the instance `x`." ] }, { @@ -812,7 +812,7 @@ "source": [ "### ALE \n", "\n", - "ALE plots show the dependency of model output on a subset of the input features. They provide global insight describing the model's behaviour over the input space. Here we use ALE to directly visualize the relationship between the tensorflow models predictions and the alcohol content of wine.\n" + "ALE plots show the dependency of model output on a subset of the input features. They provide global insight describing the model's behaviour over the input space. Here we use ALE to directly visualize the relationship between the TensorFlow model's predictions and the alcohol content of wine." ] }, { @@ -859,7 +859,7 @@ "source": [ "## Counterfactuals\n", "\n", - "Next we apply each of the counterfactual methods, counterfactuals with reinforcement learning, counterfactual instances, counterfacutals with prototypes and contrastive explanation methods. We also plot the kernel SHAP values to show how the counterfactual method changes the attribution of each feature leading to the change in prediction." + "Next, we apply each of the \"counterfactuals with reinforcement learning\", \"counterfactual instances\", \"contrastive explanation method\", and the \"counterfactuals with prototypes\" methods. We also plot the kernel SHAP values to show how the counterfactual methods change the attribution of each feature leading to the change in prediction." ] }, { @@ -1091,7 +1091,7 @@ "id": "3d48f384-3c88-4735-84c0-af9b0d76b7bd", "metadata": {}, "source": [ - "The counterfactual instance method in alibi generates counterfactuals by defining a loss that prefers interpretable instances close to the target class. It then uses gradient descent to move within the feature space until it obtain a counterfactual of sufficient quality. " + "The counterfactual instance method in alibi generates counterfactuals by defining a loss that prefers interpretable instances close to the target class. It then uses gradient descent to move within the feature space until it obtains a counterfactual of sufficient quality. " ] }, { @@ -1265,7 +1265,7 @@ "id": "2f5db134-dd36-44c1-9b19-b04dddd66a2b", "metadata": {}, "source": [ - "The CEM method generates counterfactuals by defining a loss that prefers interpretable instances close to the target class. It also adds a autoencoder reconstruction loss to ensure the counterfactual stays within the data distribution." + "The CEM method generates counterfactuals by defining a loss that prefers interpretable instances close to the target class. It also adds an autoencoder reconstruction loss to ensure the counterfactual stays within the data distribution." ] }, { @@ -1431,7 +1431,7 @@ "id": "8777b84e-7bc6-47ca-be2b-10943084103f", "metadata": {}, "source": [ - "Like the previous two methods counterfactuals with prototypes defines a loss that guides the counterfactual towards the target class while also using a autoencoder to ensure it stays within the data distribution. As well as this it uses prototype instances of the target class to ensure that the generated counterfactual is a interpretable as a member of the target class." + "Like the previous two methods, \"counterfactuals with prototypes\" defines a loss that guides the counterfactual towards the target class while also using an autoencoder to ensure it stays within the data distribution. As well as this, it uses prototype instances of the target class to ensure that the generated counterfactual is interpretable as a member of the target class." ] }, { From f02604f24a02d1fc404666a036912cf2335d2ad0 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Wed, 15 Dec 2021 15:06:27 +0000 Subject: [PATCH 51/60] Remove aditivity check in interventional Tree SHAP example in notebook --- doc/source/examples/overview.ipynb | 244 ++++++++++------------------- 1 file changed, 85 insertions(+), 159 deletions(-) diff --git a/doc/source/examples/overview.ipynb b/doc/source/examples/overview.ipynb index dbb694c3a..8b536c270 100644 --- a/doc/source/examples/overview.ipynb +++ b/doc/source/examples/overview.ipynb @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 1, "id": "b42fe771-fbcd-45e0-a613-6d93a0d7e80d", "metadata": {}, "outputs": [], @@ -61,7 +61,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 2, "id": "07175f7a-df18-435c-8508-2c37b0242322", "metadata": {}, "outputs": [], @@ -81,7 +81,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 3, "id": "e4927000-30b8-4fe4-84eb-a5d778fa072a", "metadata": {}, "outputs": [], @@ -91,7 +91,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 4, "id": "ae34b435-ed6c-4380-ba8b-1005cf7868ce", "metadata": {}, "outputs": [ @@ -101,7 +101,7 @@ "StandardScaler()" ] }, - "execution_count": 22, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -227,10 +227,10 @@ " epochs=EPOCHS, \n", " verbose=False,)\n", "\n", - " loss = history.history['loss']\n", - " plt.plot(loss)\n", - " plt.xlabel('Epoch')\n", - " plt.ylabel('MSE-Loss')\n", + " # loss = history.history['loss']\n", + " # plt.plot(loss)\n", + " # plt.xlabel('Epoch')\n", + " # plt.ylabel('MSE-Loss')\n", "\n", " ae.encoder.save(f'{ENC_FNAME}.h5')\n", " ae.decoder.save(f'{DEC_FNAME}.h5')\n", @@ -280,9 +280,6 @@ " print('accuracy_score:', accuracy_score(y_pred, y_test_lab))\n", " print('f1_score:', f1_score(y_test_lab, y_pred, average=None))\n", "\n", - " disp = ConfusionMatrixDisplay(confusion_matrix(y_test_lab, y_pred), display_labels=rfc.classes_)\n", - " disp.plot()\n", - "\n", " joblib.dump(rfc, f\"{RFC_FNAME}.joblib\")\n", " return rfc\n", "\n", @@ -337,8 +334,6 @@ " print('f1_score:', f1_score(y_pred, y_test.argmax(axis=1), average=None))\n", "\n", " model.save(f'{TF_MODEL_FNAME}.h5')\n", - " disp = ConfusionMatrixDisplay(confusion_matrix(y_pred, y_test.argmax(axis=1)))\n", - " disp.plot()\n", " return model\n", "\n", "def load_tf_model():\n", @@ -371,9 +366,33 @@ "name": "stdout", "output_type": "stream", "text": [ - "WARNING:tensorflow:No training configuration found in the save file, so the model was *not* compiled. Compile it manually.\n", - "WARNING:tensorflow:No training configuration found in the save file, so the model was *not* compiled. Compile it manually.\n" + "accuracy_score: 0.74\n", + "f1_score: [0.75471698 0.72340426]\n", + "accuracy_score: 0.815\n", + "f1_score: [0.8 0.82790698]\n", + "WARNING:tensorflow:Compiled the loaded model, but the compiled metrics have yet to be built. `model.compile_metrics` will be empty until you train or evaluate the model.\n", + "WARNING:tensorflow:Compiled the loaded model, but the compiled metrics have yet to be built. `model.compile_metrics` will be empty until you train or evaluate the model.\n" ] + }, + { + "data": { + "image/png": "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jnz7vd14R2LOnDkqLy9XbW2tJkyYIK/Xq/vvv19LlixR3759ddVVV0mSevfurQcffFAul0tz585VUVGRGhsblZmZqXnz5kV0LZojAAAQ82bOnKmZM2cedPyTTz457GfOOussrVix4oivRXMEAABsNd+40cndao4N5TiaIwAAYM/hrfzi2WoAAADxgeQIAADYsnTki6jtxotVJEcAAABhSI4AAICttnp8SCwiOQIAAAhDcgQAAOwl0KIjmiMAAGCLaTUAAIAERXIEAABsNd8h29nxYhXJEQAAQBiSIwAAYIs1RwAAAAmK5AgAAETAcPhhsbGbHNEcAQAAWyzIBgAASFAkRwAAwF4C3SGb5AgAACAMyREAALDFVn4AAIAERXIEAADsJdCaI5ojAABgz+FpNWfvmeQsptUAAADCkBwBAAB7CTStRnIEAAAQhuQIAABEKHbXCTmJ5AgAACAMyREAALCXQGuOaI4AAEBkYrihcdJhm6Np06bJMOznFufOnetoQQAAANF02OaoT58+7VkHAACIZZbh7I0bY/gmkIdtjgoKCtqzDgAAgJgQ8Zqjd955RytXrlR9fb0WL16sdevWac+ePTrvvPPasj4AABADLKv55eR4sSqirfyPP/64Zs2apb59++rDDz+UJHXs2FEPPPBAmxYHAADQ3iJqjv70pz/pscce08SJE+VyNX+kX79+qqysbNPiAABAjLDa4BWjIppWa2hokM/nk6TQDrYDBw6oQ4cObVcZAACIHQm0IDui5GjIkCF6+OGHWxxbunSphg4d2iZFAQAAREtEydHMmTM1adIkLV++XA0NDcrOzlaXLl20ZMmStq4PAADEAMNqfjk5XqyKqDlKT0/XX//6V61bt07btm2Tz+fT6aefHlp/BAAA8H0R8VZ+0zS1f/9+SVIwGJQVy3vwAACAs3i2WksbNmzQ5MmT1dTUpIyMDFVVVSklJUUPPvigTjnllLauEQAAoN1E1BzNmDFDY8eO1YQJE2QYhizL0h//+EfNmDFDzzzzTFvXCAAAoo3dai1t3rxZ48ePD23jNwxD48aN0+bNm9uyNgAAEEsS4B5HUoTN0UUXXaTXXnutxbHXX39dF198cVvUBAAAEDWHnVabNm1aKCkKBoO6+eabNWjQIPXs2VNVVVVav369RowY0W6FAgCAKGJBttSnT58WPw8YMCD055NP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ABIbzREQZRkZGbrgggv06aefSmqeniopKdGll16qSy+9VJL0+uuvKzc3V36/X1dddZU2bNgQ+nxFRYWuuOIKnXnmmbrpppvU2NgYOvf+++/rwgsvDP0cCARUUFCgc889V0OHDtXs2bO1adMmFRUVac2aNTrzzDPl9/slSU1NTSouLtbFF1+s888/X4WFhdq3b19orEceeUTDhg3TsGHD9Je//CXi7/vFF19o3LhxGjp0qIYOHarf/OY32r17d4v3rFu3TpdddpmGDBmi22+/vcV3au13AQBOoDkCoiwQCOjNN99UVlZW6Ngrr7yip59+Wi+88IIqKio0Y8YMzZ49W++//77y8vJ04403qqmpSU1NTZo8ebJyc3P1wQcfaNSoUSovLz/kdYLBoG644Qb16tVLr732mt58801ddtllOumkk3TnnXdq8ODBWr16tVatWiVJmj9/viorK/Xcc8+pvLxcNTU1evDBByVJb775ph599FE9+uijKi8v17vvvhvx97UsSzfccIPeeustvfjii6qqqtKCBQtavGfFihX6wx/+oJdfflmVlZVatGiRJLX6uwAAp9AcAVEyefJk+f1+5efna8iQIZo0aVLo3MSJE+X1etWxY0c99dRTysvL0xlnnCG3260rrrhCHTp00Jo1a7R27Vrt379f48ePV4cOHTRq1Ciddtpph7ze//3f/6mmpka33nqrOnfurJSUlFBK9K8sy9LTTz+tGTNmyOv1qmvXrrrhhhtCz+V68cUXdeWVV2rAgAHq3LmzCgoKIv7effr00b/9278pOTlZqampmjBhgj788MMW7xk7dqx8Pp+8Xq9+9atfha7b2u8CAJySFO0CgET14IMP6vzzzz/kOZ/PF/rz9u3b9dxzz2nZsmWhY/v371dNTY0Mw1BGRoYMwwid69Wr1yHHDAQC6tWrl5KS7P9vX19fr7179+rKK68MHbMsS6ZpSpJqamo0aNCg0LnMzEzbMb9VW1ur3/72t1q1apUaGhpkWZY8Hk+L94R//169eqmmpkZS678LAHAKzREQg8KbHZ/Pp0mTJulXv/rVQe/74IMPVF1dLcuyQp/Zvn27TjjhhIPe6/P5FAgEdODAgYMapPDrSVK3bt3UsWNHrVy5UhkZGQeNlZ6erkAgEPp5+/btEX+3e++9V4ZhaMWKFfJ6vXrllVc0e/bsFu/517HT09ND3+FwvwsAcArTakCMGzNmjJ588kmtXbtWlmXp66+/1htvvKE9e/Zo8ODBSkpK0tKlS7V//36Vl5dr3bp1hxzn9NNPV1pamn73u9/p66+/VmNjoz766CNJUvfu3VVdXR1au+NyuTRmzBjdfffdqqurkyRVV1frrbfekiSNGjVKzz77rD777DPt3btXCxcujPj7NDQ0qHPnzjruuONUXV2tRx555KD3/PnPf1ZVVZV27dqlxYsX67LLLrP9XQCAU2iOgBh32mmn6a677tLs2bM1ZMgQXXrppXrmmWckScnJyVqwYIGeffZZnXPOOXrhhRc0cuTIQ47jdru1ePFibdmyRT/60Y904YUX6sUXX5QknXvuuTr55JM1bNgwDR06VJI0bdo09enTRz/72c901lln6dprr1VlZaUk6aKLLtL48eM1fvx4jRw5Uueee27E36egoEAVFRXy+/2aOHFiaEdeuJycHF133XW65JJLdOKJJ4aSotZ+FwDgFMOyLCvaRQAAAMQKkiMAAIAwNEcAAABhaI4AAADC0BwBAACEoTkCAAAIQ3MEAAAQhuYIAAAgDM0RAABAGJojAACAMP8fYIl64Nb3M3kAAAAASUVORK5CYII=\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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vBcJKQAAgIFunPMnbfc4IW1cs7b+2WOQpzG9QJc9AAAAIopBTQAAACYK47RPpiEhBQAAMJaZa897jS57AAAARBQVUgAAABNFUZc9FVIAAABEFBVSAAAAUxla0fQaFVIAAABEFBVSAAAAE7lW4eZ1TAORkAIAABjIdQs3r2Oa6Jy77L/66iv961//8rItAAAAiEKVTkjvv/9+ffvtt5KkN954Q08++aSeeuopTZkyJWyNAwAAiFpumDYDVToh/Z//+R+1adNGkvTuu+9q+vTpmjVrlmbOnBmutgEAACAKVPodUsdxZFmWtm7dKtd1deWVV0qSDh48GLbGAQAARC0GNZXVtm1bjR49Wnv37tXtt98uSdq6dasSEhLC1jgAAABc+CrdZf/CCy8oEAioRYsWGjJkiCRp8+bN6tevX9gaBwAAEK0sNzybiSpdIU1ISNCTTz5Z6tgtt9zidXsAAAAgsZZ9eaZNm6b169dLklavXq1bbrlFqampWrVqVdgaBwAAgAtfpRPSN998U40bN5Yk/fGPf9RDDz2kQYMG6fnnnw9b4wAAAKJW8aAmrzcDVTohPXz4sC6++GIdOXJE33//vR544AH17NlTWVlZ4WwfAAAALnCVfoc0KSlJK1eu1P/+7/8qJSVFfr9fR44ckd/vD2f7AAAAopeh73x6rdIJ6W9/+1v95je/UfXq1fXKK69Ikj7++GNdc801YWscAAAALnyW67rnnHvn5+dLkqpVq+ZZgwAAACDd+M4b2n74kKcxG18c0D/vH+hpTC9UukIqSVu2bNGCBQu0Z88e1a9fX926dVPTpk3D1DQAAIAoxrRPZS1fvlw9evRQVlaWateuraysLN19991atmxZONsHAACAC1ylK6QTJkzQ5MmT1b59+9CxFStWaMyYMerUqVNYGgcAABC1omgt+0pXSHft2qWUlJRSx9q2batdu3Z53igAAABEj0onpC1bttRf//rXUsemTZum5ORkzxvlhXmvfaDHf/a07ojro3EPv1buNZs+66m9a1opf0drOXs7yz02S4dyDmvu+Md0dHNLHdvcUid+aCV717VydjWXm7+2ip8CAABErXCsY/9jf4d01KhRmj17tm688Ub17NlTN954o2bNmqVRo0adVwNatGiho0ePnleMFStWqEePHqWO1WmYqL7P3q0uD99a7nd2btqlt8bF64m0Dvpu/duyEv4k98jLWjjpZX31USOp7kq5db5V+qO99emi2yT/pVLMVefVTgAAAJRV6XdIr7jiCi1atEirV68OjbK/9tprtXv37nC275zd1KOdJGnjN5u0d0d2mfOvDv6L7hwySK/++i9FRyxJltyCrfp52j2qGbhIkvTzO6/XZZf/X1k17pVlmfneBQAAuABF0Sj7s5r2KSYmptR7pHl5eercubPWr19/Xo2YOnWqli1bphMnTujJJ59Uly5dJElPPfWUsrKylJ+fr8suu0zPP/+8ateuLalwkNWiRYsUCAR0/fXXn9X9Pn33S23P36QPm07Vg8M2qFXyvXL3Odry/cVa9Fa+LrvqW838w1y98PFzWr1sqX551x4dONFZTu6R83pOAABgNp/PUkJCzUg3I+qcVUJanvOYVz/E5/Np/vz52rx5s/r06aOUlBTVqVNHzz77rBITEyUVJqB//vOfNWzYMC1fvlzLly/XvHnzFBcXp1//+teVvtexw8f112f/n5pMitX+vL1668WWmh2TqBrTjuraG45q384javiTAu3dnq0BzYdo6ARbBdZPVeA2lDx4VkQ313XlupJT9NN13cL/AA7tS5Irp+ivmuO6UqnrSlyronM6eb7Uvlv+cenkX2VXJ+9bJp57ss3F33GLPoT+o73M94qiuhWfLzpd6p8hJduhU+5R8v9+5V5X8vdQ4pmLv3jy/qf8eZS4vszHM333NPc/5avlxisd55T2nhLnTNxS9y/9Z1vedaF2l7pxOW0psVPiN3TG2G4FAcv/PbunHirzOy33Zir5uyoR7YzfLXvf8tpX/q++7H0r+v2V92d45vad4e/GaQ6e69+X0scqed8K4pX753+GgJX98y1P9Ri/+t7eXHVqx1XURPyInHdC6kU3ds+ePSVJzZo1U6tWrbR69Wp16tRJ8+fP1/vvv6/8/HwdO3YsNAn/ihUrdMcdd6hmzcL/grnnnns0efLkM97DOTBM8/+0RktnxmrPD3G6anpTjX17iiZ1vks/yd+jV9deok1ra6hadUfrPl8jyac/fjJKjRIf0qK3W2vr5hn6fN6/ZOcX6Kqft9TQPw1Q3UZ1zvvZTeS6rmzHVYHtyLaLfhbtO87Jfdt2ZTsnPztOiX2neN+VU+K64mN20bWOIzmOK8ctcX2J/VM/28UJ3annSvwMnS86VpwAlv1cdE1R4lbyfOH+ycQsdKwodnnH3ZKfneKksuinezLJBLxU/I9gq8SOVc75kkdLfed0AU9z3XnFK3sodLTksZPxyololf1Ysk3n82zl/f7K+erJdp25eWf+XZXfwDPet/x7nP7fweV/t+wvsKJ7nClg+c9bwX3PcJNKPZtlKT7hItWrc+FXMUMDkTyOaaLzTkjD5ZtvvtGMGTM0c+ZMJSYm6v3339esWbPKvXbhwoUVTj9l1fwv1W2+R4cPZ6pW/D7lHl6tIR1/qY2f15RVq6HsY9ITL25T/UZ52rOznl5+6mI1ar5PF9vHNW3MIdVvsl4vLBulGoGL9Jdhb+ql/3pD/2fa4HA8eojrFiZ/x/NsncizdSK3QCfybOUV2MrLd5SXbyuvwFFuvq28fFv5BY7yCxzlFTjKLzi5X2C7hftFyWVBgaMCxy36WXjetgt/FiebkWZZks+y5PNZRT8L9y3Lks+SrOLjRees0Oei85ZVKoZVdMwnFe1b8ltSjM93MmbJa0tcV7h/Mp5llTink8dC1xZdp+KfJZ7HKnmtSl9bfI+S54r/gVzcvlIxVfqelorj6JR7n/xXgVV00ipxXcn7hc6dEq842Tl53cm2lXfv4mcpdf6U75689uSJcuOf7roS9zo1dsm/R6d+79Rc4tTrQ59P+XTahKlMvPK/U949Tt7hZJDy2gXgFI6jvXsPhyW0z2epTp1aYYmN06swIe3YseNp/8HoRXe9JL333nt6/PHHtWXLFq1bt05t2rTRmjVrVKtWLcXHxysvL0/vvfde6Pr27dtrwoQJevDBBxUbG6t169aViWkX2LILbDm2I8d2lG83UYe0Zmp9y7XKHDtV2VkLdcttOTqyK0k7Nx3Q3zf/W7FxroI/VNefxySoz9Adql7wvjasaabYi2rp2luvVu36tSVJN6Rdr3dGziz3WRzXVW5RApmbb+tEXoFO5No6Ufw5zy7cL/6cV/J4gY7n2TpelHgezy046+SwWoxP1fw+VatW9DPm5M8Yv081YmNU7SKfYvyWYvw++f2Wqvl98vsLj/l9Pvl9VuFnf+Fnv++Uz0X7PsuS31+47/NZ8hcnhEXX+KzCn5bvTNeoRNJplUruAACIalE0MX6FCen48eM9udGSJUs0YcIExcXFqWvXrpowYYJWrlwpScrMzNSUKVNkWZaGDx+uOnXq6KabbtKECRN07bXXyu/369JLL1UgEJAkpaSkKD8/Xz/72c9UvXp1JSUllblf5tj39Pbod0P7y975TK98GKsWV/1bsYpXXl4N/aRtvl7p/YVkucpXnLbsqKuAb7ey1tnavaOB7hm0QH+f1V5X9Omkfy5aoezLm8itVk0bpy+Vr9ElGvPWN8rLL0w8i7e8fKfSv5Pq1XyqUT1GcdX9iqseoxqxftUJxKlGbOHn4mNxRdfEVvMrLrbwZ2w1v6pX86t6jC/0MybGF6qKAQAA/FhUmJCe7Qj28uzbt0/p6en629/+pqZNm+rNN9+UJB08eFAJCQl66623dOWVV+rdd9/VrFmzdP/99+uLL76Q67r66quvVLNmTT399NOqV6+eJGnSpElq06aNPvjgA+Xk5KhHjx5KS0srdc9+o+5Vv1H3lmmL69pS3ETtC/5Dv1/0pJzYk++g3HvDh9r9US1ZjevL6dlZ978hVWvgky+/QMerx+rLYa9LPkuxl9TRFYPSdFFcjBIvjlX1an7FVi9MCouTy8KfhcdL7sdVjylMLKv75fORPAIAgDOI/Ft0VeKc3iG97rrrQtXNylizZo1atWoVGpR0991364UXXtCGDRvUsmVLXXnllaHjzz33nI4cOaIvv/xSd9xxh2rVKnyP495779Xzzz8vqXBQ0+9+9ztJUmJiom6//fZKt8Wy/LL8SWraqq7GPXdce3N/qZiiLu06Ba/qkRGX6je/v0u/6J8qv79w3YA/PPCKTjSvqyf/8XvF1YzTrHHzteL9T/XCVy9U+r4AAAAo3zklpF69OxpJe7ft1Wfv/D/9Yugjuv/yxzV9xSr9Z8UJ5QTjldr757JyUpXtWyBJ+v7bzer9TA/lu5byj+Tq5r43662Rf1PWxqACdS6O8JMAAACvGDUPaWiOPY9jGqhKRtm3bt1azzzzjLZu3arLLrtMc+fOlSQlJydrw4YN2rRpk6644grNnTtXrVq1Uq1atXTDDTfoxRdfVL9+/VSzZk3Nnj1bHTp0kFQ4qGnOnDlq27at9u/fr48++khdu3Y97f1dO1vK+1K2/2bZdjXZeT+oToMTSn3wt7ILbL2TNVnOwd/pwzk7dNM91+mii2tIF3+i4kmdWrX/ib6a9y/d+Ku2ir0oVkteX6o6DRN0efOy764CAAB4gWmfKrBo0aKzur5u3boaNWqUBgwYoBo1auiWW25RtWrV1KBBA40bN07Dhg1TQUGBEhMTQ4OoOnbsqO+//169e/eWJF199dUaNGiQJOnxxx/XM888o65du6pevXqlVo8ql2XJPTZDmX94We/8MaHoYEDL3vuLHkg/qAdGpinvwGL9Y35Lpc++pczX/2t8P00a+lc91Pw3ys8rUNOrL9WoOcPP6ncAAACA8lluBf3vH3zwgX7xi1+E9jdv3qxmzZqF9t9880099NBDFd7oyJEjofdB33vvPc2ePVszZsw4x2YDAABc2G7+81+049AhT2M2CgT0jwGPehrTC76KLnj22WdL7RdXLIu98sorlbrR22+/rbS0NHXr1k1z5szR2LFjz6KZAAAAuFBV2GV/agG1ov3TGTRoUKjLHQAAABWIokFNFVZIT10xp6J9AAAA4GxUalCT67qhrbx9AAAAeItR9iUcO3ZMrVq1Cu27rhvad12XCikAAEA4sJb9ScuWLauKdgAAACBKVZiQNmrUqNzjBw8eVO3atT1vEAAAAMSgppLmzZunzz77LLT/3XffqWPHjmrfvr26dOmizZs3h7WB56pFixY6evToecVYsWKFevToccZrXn31VWVkZJzXfQAAAKJZhQnp1KlTVa9evdB+enq6OnTooL///e/q0KGDxo0bF9YGAgAARCNLJwc2ebZF+qFOo8Iu+127dql58+aSpGAwqI0bN2ratGmKj4/XU089pc6dO4e9kedq6tSpWrZsmbKzs2VZlurUqaOuXbtqwoQJatmypQ4fPqyDBw/qkksuUd26dTV69GjNmTNHixYtUm5urnJzc3X8+HH993//t373u9+pZs2aOnz4sJ599llt3LhR9erVC30XAAAA56bCCqnf71d+fr4kadWqVWrWrJni4+MlSTVq1NCJEyfC2sDz4fP5NHXqVJ04cULHjx/X1KlTFRcXJ0n605/+pGPHjumOO+7Qrbfeqm7dumngwIFavny5hg8frosvvljXXHONrrjiCtm2rcmTJ0uSJk2apJo1a2rx4sWaOHGivv7660g+IgAAuFC5YdoMVGFCev3112vChAnasGGD3n77bd16662hc5s3by7VnW+anj17as2aNbrmmmt0zTXXaPXq1br77rslSQ8++KByc3P1xRdfaP369br77ru1detW3XbbbVq5cqV++ctfqnfv3rIsS/fee6++/PJLSYXvld5zzz2SpMTERN1+++0Rez4AAHDh8ry7PgzzmnqlUmvZr1u3Tn369FGNGjU0YMCA0Ln58+frpptuCmsDvbZq1SpJ0uDBg9W6dWs98cQTysvLi3CrAAAAoleFCalt2/rDH/6gBQsWaOzYsTp8+LB27typnTt36r777lP//v2rop3n5L333lPr1q313Xff6bvvvlObNm20dOlSSVJKSoo2bNigd955R5I0d+5cNWnSRMuWLdN1112nRYsW6W9/+5tc19Xs2bPVoUMHSVL79u01Z84cSdL+/fv10UcfRebhAADAhS3CXfYZGRlKTU1VixYttHHjxtDxrKws9erVS126dFGvXr20ZcuWSp07kwoHNaWmppZajenU5UIty9L69esrdbOqZtu2Hn30UcXFxcmyLD3yyCO6+eabZVmWHnzwQcXHx2vbtm06duyYfD6fXn/9dc2ZM0fjx49Xbm6u9u7dq+PHj6tFixYaNGiQJOnxxx/XM888o65du6pevXpKSUmJ8FMCAAB4r1OnTurXr5/69u1b6vjIkSN13333KS0tTfPnz1d6erqmT59e4bkzsdwKFqS/8847deLECd11113q3r276tevX+Yav99/Ns9X5Y4cOaJatWpJKqyazp49WzNmzIhwqwAAAE7v1lenasfBQ57GbFQ7oI+HPKJgMCjbtkudCwQCCgQCZb6TmpqqKVOmqHnz5srOzlaXLl20YsUK+f1+2batdu3aaenSpXJd97TnEhMTz9iuCiuk8+bN08aNGzV37lz16dNHV1xxhdLS0tS5c+fQiHXTvf3221q8eLFs21bt2rU1duzYSDcJAAAgYvr27asdO3aUOjZ48GANGTLkjN8LBoNq0KBBqBjp9/tVv359BYNBua572nPnnZBKUvPmzfX0009r+PDh+vzzzzV37lyNHj1ab731lq666qrKhIioQYMGhbrcAQAAfgzCMSq+OF5mZma5FdJIqVRCWmzLli36+uuvtXr1aiUnJ0e04QAAADg3SUlJ5/y93bt3y7btULf8nj17lJSUJNd1T3uuIhUmpAcOHNDChQs1d+5cHT16VGlpaXrnnXfUsGHDc3oQAAAA/DjVqVNHycnJWrBggdLS0rRgwQIlJyeHuuTPdO5MKhzUdM0116hx48ZKS0tT69aty73mhhtuOIdHAgAAwOmkTgzPoKblQx+p1LVjx47V0qVLtW/fPiUkJCg+Pl4L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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ @@ -515,7 +534,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "0df18cbd9d024d4ba0dc5657a310ba25", + "model_id": "de38b3249db3436f88d6356fc0fc237f", "version_major": 2, "version_minor": 0 }, @@ -580,7 +599,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "d2b889f2c1ee423ba866d5b9481da293", + "model_id": "933233737ef249b69b3b1f9c3fa5ee22", "version_major": 2, "version_minor": 0 }, @@ -786,7 +805,7 @@ "output_type": "stream", "text": [ "Anchor = ['alcohol > 10.10', 'volatile acidity <= 0.39']\n", - "Precision = 0.9558665231431647\n", + "Precision = 0.9581993569131833\n", "Coverage = 0.16263552960800667\n" ] } @@ -874,7 +893,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 19, "id": "b7fbd60a-64af-43f9-80d3-9b78cfde8079", "metadata": {}, "outputs": [ @@ -882,8 +901,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 10000/10000 [02:31<00:00, 66.00it/s]\n", - "100%|██████████| 1/1 [00:00<00:00, 151.09it/s]\n" + "100%|██████████| 10000/10000 [01:39<00:00, 100.62it/s]\n", + "100%|██████████| 1/1 [00:00<00:00, 250.96it/s]" ] }, { @@ -893,6 +912,13 @@ "Instance class prediction: 0\n", "Counterfactual class prediction: 1\n" ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] } ], "source": [ @@ -920,7 +946,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 20, "id": "6559f2e3-72db-4ca3-b949-8e3d7371a10a", "metadata": {}, "outputs": [ @@ -949,14 +975,14 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 21, "id": "ce1c7e49-c6dc-41c5-9214-d33f42569231", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "1ea3785ba4d44d89bc55e41ac24d4180", + "model_id": "563ae08a5d98476a9fb67c957524b494", "version_major": 2, "version_minor": 0 }, @@ -970,7 +996,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "f844e8f099624c1f875db5276013d33b", + "model_id": "0509960d9ec24ffe9becd27d2345fb34", "version_major": 2, "version_minor": 0 }, @@ -982,12 +1008,15 @@ "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.16304969346684278\n", - "-0.09016794144836963\n" - ] + "data": { + "text/plain": [ + "(,\n", + "
    )" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" }, { "data": { @@ -1045,7 +1074,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 22, "id": "4fc13edf-3e05-4a7f-b5d6-f822923df98d", "metadata": {}, "outputs": [ @@ -1066,7 +1095,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 23, "id": "38105a7b-b86e-4720-9015-e7838ed82e0c", "metadata": {}, "outputs": [ @@ -1096,7 +1125,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 24, "id": "33cf22f1-0adb-4cfb-b258-aadcab34c46e", "metadata": {}, "outputs": [ @@ -1104,7 +1133,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "WARNING:tensorflow:From /home/alex/Development/alibi-explain/alibi/explainers/counterfactual.py:169: The name tf.keras.backend.get_session is deprecated. Please use tf.compat.v1.keras.backend.get_session instead.\n", + "WARNING:tensorflow:From /home/alex/Development/alibi-explain/alibi/explainers/counterfactual.py:170: The name tf.keras.backend.get_session is deprecated. Please use tf.compat.v1.keras.backend.get_session instead.\n", "\n" ] }, @@ -1142,7 +1171,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 25, "id": "56a4399b-659c-4d60-bd2c-e3c6ca259f28", "metadata": {}, "outputs": [ @@ -1171,14 +1200,14 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 26, "id": "0d7becb3-3006-468a-9b98-1ebd02dc7288", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "6abeffc3bd6e4d51a4dc8021c96f5a19", + "model_id": "503c3ed8365c4510908516039d2e2ccd", "version_major": 2, "version_minor": 0 }, @@ -1192,7 +1221,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "3cd5592c61c049238293c7a0467a3151", + "model_id": "9f7c347a0e7142b19e1371c7b1f3f95f", "version_major": 2, "version_minor": 0 }, @@ -1210,7 +1239,7 @@ "
    )" ] }, - "execution_count": 30, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" }, @@ -1270,7 +1299,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 27, "id": "7aa6351b-01fd-4f6b-8f05-92f187b2737a", "metadata": {}, "outputs": [ @@ -1307,7 +1336,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 28, "id": "96abe72c-2e01-402d-b2ed-9b61f208a95b", "metadata": {}, "outputs": [ @@ -1337,14 +1366,14 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 29, "id": "298651d6-de8b-405e-a174-a207df37ffe9", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "984dbc2d6992460dba3e8859f45ff56f", + "model_id": "eb01fa5d714f4c3daed24b2601f5b3ed", "version_major": 2, "version_minor": 0 }, @@ -1358,7 +1387,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "613cd1776bd14d78acaf8931b524f18f", + "model_id": "f91cb3f742db411889015388a7ea456e", "version_major": 2, "version_minor": 0 }, @@ -1376,7 +1405,7 @@ "
    )" ] }, - "execution_count": 33, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" }, @@ -1436,16 +1465,15 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": null, "id": "d7a63b6f-58a1-4fc0-9aa6-528507158eb0", "metadata": {}, "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Instance class prediction: 0\n", - "Counterfactual class prediction: 1\n" + "`Model.state_updates` will be removed in a future version. This property should not be used in TensorFlow 2.0, as `updates` are applied automatically.\n" ] } ], @@ -1470,28 +1498,10 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": null, "id": "3e6116d6-b739-436c-8179-1cbaddf218c0", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "fixed acidity instance: 9.2 counter factual: 9.2 difference: 2e-07\n", - "volatile acidity instance: 0.36 counter factual: 0.36 difference: -0.0 \n", - "citric acid instance: 0.34 counter factual: 0.34 difference: -0.0 \n", - "residual sugar instance: 1.6 counter factual: 1.6 difference: 1e-07\n", - "chlorides instance: 0.062 counter factual: 0.062 difference: 0.0 \n", - "free sulfur dioxide instance: 5.0 counter factual: 5.0 difference: 0.0 \n", - "total sulfur dioxide instance: 12.0 counter factual: 12.0 difference: 1.9e-06\n", - "density instance: 0.997 counter factual: 0.997 difference: -0.0 \n", - "pH instance: 3.2 counter factual: 3.2 difference: -0.0 \n", - "sulphates instance: 0.67 counter factual: 0.623 difference: 0.0470144\n", - "alcohol instance: 10.5 counter factual: 9.942 difference: 0.558073\n" - ] - } - ], + "outputs": [], "source": [ "proto_cf = scaler.inverse_transform(proto_cf)\n", "compare_instances(x, proto_cf)" @@ -1499,67 +1509,10 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": null, "id": "1d1e5206-cca6-4897-a486-8a4bf070e93f", "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "60d193882ceb40f988c5ef634202c491", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/1 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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ypV1lCfrKVfW0wddidhGbR4iIiIiIjZSMS0iIiIiYiMV0yIiIiIiNlLPtEgx51LWCUeHovOlrr5N6yhP1lOurKMbEEVsU3R+woqITRwdSup52yJyS3r6kYht1OYhIiIiImIjFdMiIiIiIjZSMV0I4uLiMBqNHDlyJF/7bdy4EaPRyJUrV247hq+//pp33nnnttcRERERuZ+pmL5PffPNN6xevbqwwxAREREp0lRMi4iIiIjYSMW0DY4ePcqAAQNo1KgRvr6+PPnkk7z33nsABAUFMXfuXIv51rRnGI1G3n77bV5++WUaNWpEgwYNmDlzJunp6dnmnjx5kn79+uHr60tISAjbtm2z2L5792769etHQEAAfn5+dO/ena+//tq8PTo6mpUrV3Lq1CmMRiNGo5GIiAjz9u+//57evXtTt25d/P39mTx5MsnJyebtSUlJTJo0icDAQHx8fGjRogWTJ0/OXxJFREREigE9Gs8GQ4YMoVq1asybNw97e3uOHz9eIH3MK1euxNfXl3nz5vH7778zf/587O3tmTBhgsW8sWPH0r17dwYMGMCaNWsYPXo0O3bswNvbG7hebD/xxBP0798fg8HAl19+ycCBA1mzZg3169enW7dunDhxgri4OBYuXAiAu7s7AD/88AN9+/alVatWREVFceHCBSIjI0lKSiIqKgqA2bNns3//fiZOnEiFChWIj4/n+++/v+3zFxERESlqVEzn0/nz5zl58iSLFy/GaDQCEBAQUCBrlylThgULFmAwGGjevDnp6eksXbqUwYMH4+rqap737LPPEhYWBkCtWrVo2rQpu3btomfPngD07t3bPDcrKwt/f39+//13PvzwQ+rXr4+3tzeenp7Y29vj6+trEUNkZCT16tXjjTfeMI95eXnRt29fjhw5Qo0aNTh06BC9evWibdu25jmdOuX/+aTlyzvne5+iSh8aISJFgb5XWUd5st79kCsV0/nk6urKAw88wLRp03jmmWfw9/enfPnyBbJ2y5YtMRj+r/OmdevWvPHGGxw9epSGDRuaxwMDA81/d3Nzw93dnTNnzpjHzpw5w/z58/n2229JSEjAZDIB4Ofnl+fxU1JSOHDgAJMnTyYjI8M8Xr9+fUqVKsXPP/9MjRo1qFmzJm+99RYGg4EmTZpQpUoVm843MTGZrCyTTfsWJR4eLiQkXC7U44uIWKMw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0dyOk9NxypUrR+3atXnppZeyrXE7TywRERERKYru+MeJBwQEsHnzZh599NFcH5MXEBDA22+/TenSpalWrZpNx3nggQcYNGgQGzZs4NixY8D1dguAY8eOUb9+fQB++uknkpOT872+t7e3ea0bV2Xj4+M5fvy4uXc4P0qWLMljjz3Gzp076dmzp3l8+/btt4zD09OTLVu20Lx5c/P45s2bcXZ2Nn/ASlxcHGvWrOGNN97A2dmZAQMG0Lp1a9q0aZPjujVq1MDBwYGdO3ea/x9kZWWxc+dOi3kBAQF88803VKxYsdg9X1xEREQkv+54Md23b18++eQTnn32WXr37o2Xlxf//PMP+/bto379+rRv356mTZsSGBhI//79GThwINWrVyc5OZlff/2VtLQ0xowZk+PaU6dOpVy5ctStWxcXFxfi4uL4888/GTduHAB16tTBy8uLV155hZEjR3Lx4kXefPPNPJ+NnRtvb29q167NggULcHJyIisri2XLlllcxc2vIUOG8PzzzzNt2jSCg4PZt28fX331VZ77GAwGhg8fztSpU3F1daVp06bs27ePtWvXMnr0aBwcHLhy5QoTJ06kbdu25t7qp556ipdeeomGDRvi7u6ebV03Nze6d+9OdHQ0JUuWpHr16qxfv56rV69azOvcuTMffPABffr0oX///jz00ENcvHiRgwcP4uHhQd++fW3Oh4iIiEhRc8eLaXd3d2JiYnjjjTeYPXs2SUlJeHp64ufnZ76Kamdnx8KFC1m6dCmrVq0iPj6ecuXKUbNmzTw/ytvX15d169YRExNDWloalStXZubMmbRq1Qq43nawcOFCpk+fzogRI6hSpQovvfSSudjOr9dff53Jkyczbtw4vLy8GDduHKtWrbJpLbh+s+GUKVNYvnw5sbGxNGrUiFdeeYUBAwbkuV/37t1JS0tj9erVvPvuu3h5eREREWEuZOfOnUtaWhpTp0417zNhwgS++eYbpk2bRnR0dI7rjh8/noyMDBYtWoTBYKBjx47069ePOXPmmOc4ODiwevVqFixYQHR0NImJibi7u1OnTh2CgoJszoWIiIhIUWRnMpmK/x1gck/SDYhys4K+AbHDmI8LZC2R+8GmyE76XmUFfU+3XnHJ1a1uQMz3JyCKiIiIiMh1KqZFRERERGx0x3umRUQKQ2paBpsiOxV2GCJFRvq1zMIO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devWNW/r1q3bXTmvO6EgcnWrfCxatIhWrVrRqlUrFi1adEfP504qiFzt2LGD0NBQ2rdvT7t27Vi5cqV5n40bN9KgQQNzHocNG3bHz6kg/fHHHzz11FO0adOGp556ihMnTmSbk5mZyfTp02nVqhXBwcGsX7/+trcVRbebq0WLFtGuXTs6dOhAaGgoX331lXlbREQEjz/+uPl9tGTJkrtxSnfE7eYpOjqagIAAcy6mT59u3pafr+d7lklE8i06Oto0adIkk8lkMv3xxx+mJk2amJKTk7PNS0pKMu3bt8+0a9cuU5cuXSy2/fXXX6ZmzZqZEhMTTZmZmab+/fubPvroo1tuK0qszZO155uenm5q3Lix6eDBgyaTyWT67rvvsuW1qCqIXOWVj71795rat29vSklJMaWkpJjat29v2rt37x07nzupIHJ14MAB05kzZ0wm0/Wv01atWpn27dtnMplMpg0bNpiGDx9+d07mDujTp48pNjbWZDKZTLGxsaY+ffpkm/PRRx+Z+vfvb8rMzDQlJiaamjVrZvr7779va1tRdLu5+vLLL01Xr141mUwm0y+//GKqX7++KSUlxWQymUwTJkwwvfvuu3fpTO6s281TVFSUac6cOTmube3X871MV6ZFbLB582aeeuopAB555BFq167Nl19+mW2ei4sLDRo0wMnJKdu2rVu30qpVK9zd3TEYDHTr1o3PPvvsltuKEmvzZO357tq1Cw8PD3x8fO547HdbQefqZp999hmdO3fG0dERR0dHOnfuXCTfU1Awuapbty5eXl7A9a/TatWqcerUqbt3EndIYmIihw8fpn379gC0b9+ew4cPc/78eYt5n332Gd26dcNgMODu7k6rVq3YsmXLbW0ragoiV82aNTN/fzcajZhMJi5evHhXz+NOK4g85cXar+d7mYppERucPn2aBx980Pz6gQce4MyZM/laIz4+nooVK5pfV6xYkfj4+FtuK0qszZO157thw4Zs7TInTpygS5cudOvWjY8++qgAo7+7CipXueXj5v0eeOCBIvmegoJ/Xx07dowDBw7QuHFj89jevXvp1KkTvXr1Yvfu3QV7AndQfHw8Xl5elChRAoASJUrg6emZ7bxzej/cyKGt24qagsjVv8XGxlK5cmW8vb3NY2+//TYdOnQgPDycY8eO3aEzubMKKk///e9/6dChA/3792f/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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "import shap\n", "from alibi.explainers import KernelShap\n", @@ -1589,37 +1542,10 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": null, "id": "20c990ef-808f-4502-9806-6d03c6635a18", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[,\n", - " ,\n", - " ],\n", - " [,\n", - " ,\n", - " ]],\n", - " dtype=object)" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "plot_ale(exp, features=['sulphates', 'alcohol', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide'], line_kw={'label': 'Probability of \"good\" class'})" ] From 20f8f3f7f7b35e4ceb44f77bf068159a0c7fccdd Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Wed, 15 Dec 2021 15:35:15 +0000 Subject: [PATCH 52/60] Add link to overview to notebook intro --- doc/source/examples/overview.ipynb | 179 +++++++++++++++++++++-------- 1 file changed, 132 insertions(+), 47 deletions(-) diff --git a/doc/source/examples/overview.ipynb b/doc/source/examples/overview.ipynb index 8b536c270..3e6cf37bf 100644 --- a/doc/source/examples/overview.ipynb +++ b/doc/source/examples/overview.ipynb @@ -7,7 +7,9 @@ "source": [ "# Alibi Overview Example\n", "\n", - "This notebook aims to demonstrate each of the explainers Alibi provides on the same model and dataset. Unfortunately, this isn't possible as white-box neural network methods exclude tree-based white-box methods. Hence we will train both a neural network(TensorFlow) and a random forest model on the same dataset and apply the full range of explainers to see what insights we can obtain." + "This notebook aims to demonstrate each of the explainers Alibi provides on the same model and dataset. Unfortunately, this isn't possible as white-box neural network methods exclude tree-based white-box methods. Hence we will train both a neural network(TensorFlow) and a random forest model on the same dataset and apply the full range of explainers to see what insights we can obtain.\n", + "\n", + "The results and code from this notebook are used in the [documentation overview](../overview/high_level.md)." ] }, { @@ -373,26 +375,6 @@ "WARNING:tensorflow:Compiled the loaded model, but the compiled metrics have yet to be built. `model.compile_metrics` will be empty until you train or evaluate the model.\n", "WARNING:tensorflow:Compiled the loaded model, but the compiled metrics have yet to be built. `model.compile_metrics` will be empty until you train or evaluate the model.\n" ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkcAAAH4CAYAAABAN0nKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAu9ElEQVR4nO3de3RU5b3/8c+eCQk3xyGQhCEoFAWMRUUdRD14KYjh2EiOtjQaLIi2SCX80FYUkZMgUj0B6qUggsdqi6ReaL0cgpp4rZd6wwMcaEQUA1KYJCQBkQgJzN6/P6LjpED2ADuZGef96pq1yN4zz/5OXF18+TzPs7dhWZYlAAAASJJc0S4AAAAgltAcAQAAhKE5AgAACENzBAAAEIbmCAAAIAzNEQAAQBiaIwAAEPOKi4s1fPhwDRw4UBs3bgwdb2xsVFFRkS699FJdfvnl+s///M/QucrKSuXl5Sk7O1t5eXnavHlzRNdKcrp4AAAAp40YMULjxo3T2LFjWxyfN2+eUlJSVFZWJsMwVFtbGzpXVFSk/Px85ebm6vnnn1dhYaGWLl1qey2SIwAAEPP8fr98Pl+LYw0NDXruuec0depUGYYhSerRo4ckqa6uThUVFcrJyZEk5eTkqKKiQvX19bbXIjkCAABRsXv3bu3evfug4x6PRx6Px/bzW7duldfr1cKFC/X++++rS5cumjp1qvx+vwKBgDIyMuR2uyVJbrdb6enpCgQCSk1NbXVcmiMAANAqy9wlw+V1fNzk5GRdeeWV+vLLL1scLygo0JQpU2w/HwwGtXXrVp166qm67bbbtHbtWk2aNEkvv/zyMdUVN82RWXeVZFZFuwwcBVfaGzJ3XBztMnAMxp1zarRLwDFYVrlI1/zgxmiXgaPQIzNV9789J9plyHB5daAuz9m/h1091bH7U3r++ecVDAZbnIokNZIkn8+npKSk0NTZGWecoW7duqmyslK9evVSdXW1gsGg3G63gsGgampqDpqaO5S4aY5kVknBbdGuAkeL/3ZxrXpLWrRLwDGq3rIj2iUg3rXR38ORNCuHk5qaqqFDh+qdd97RsGHDVFlZqbq6OvXp00cej0dZWVkqLS1Vbm6uSktLlZWVZTulJsVTcwQAAKImaJmSZTo3oGUeURMyZ84clZeXq7a2VhMmTJDX69XKlSt15513asaMGSouLlZSUpLmzp0bSp5mzZql6dOna9GiRfJ4PCouLo7oWoZlWdZRfKV2Z+64mPQhTrl6fiqzqn+0y8AxyO41ONol4Bi8bC7XSNeYaJeBo5DRJ03LKhdFuwxJUmPNBc7+PezOVEr6W86N5yCSIwAAYMv65n9OMRwcy2nc5wgAACAMyREAALBlypIl59YckRwBAADECZIjAABgK2hZcnIPlxHD+8FojgAAgK3mSTXnGhoX02oAAADxgeQIAADYCjqcHDl5WwCnkRwBAACEITkCAAC2TIeTI5EcAQAAxAeSIwAAYMu0LAWd3H7PVn4AABDPzG9eTjEcHMtpTKsBAACEITkCAAC2grIUZEE2AABA4iE5AgAAtkxLCjoY9hixGxyRHAEAAIQjOQIAALac3q3m5FhOozkCAAC2gjIUdHADvhHDm/mZVgMAAAhDcgQAAGyZVvPLyfFiFckRAABAGJIjAABgy3R4zZGLNUcAAADxgeQIAADYcnq3WiwnRzRHAADAlmkZMi3nGhonx3Ia02oAAABhSI4AAIAtpxdku2N4Wo3kCAAAIAzJEQAAsBWUS0EHMxUnx3Ja7FYGAAAQBSRHAADAVvPjQ5zcrebYUI6jOQIAALacXpBtsiAbAAAgPpAcAQAAW0G5FLRYkA0AAJBwSI4AAIAtUy6ZDmYqTo7ltNitDAAAIApIjgAAgK1E2q1GcwQAAGwFLcPZBdkO3jPJaUyrAQAAhCE5AgAAtkwZjk6FxfK0GskRAABAGJIjAABgy5TL0Rs3spUfAAAgTpAcAQAAW0HL4ceHODiW02iOAACALe6QDQAAkKBIjgAAgC3TcvbGjabl2FCOIzkCAAAIQ3IEAABsBR3eyu/kWE6L3coAAACigOQIAADYMi2XTAe33zs5ltNojgAAgC3ukA0AAJCgSI4AAICtoGU4upXfybGcRnIEAAAQhuQIAADYMmU4/PgQkiMAAIC4QHIEAABsmZZLQbbyAwAANGueVnPw2WpMqwEAAMQHkiMAAGAr6PC0mpNjOS12KwMAAIgCkiMAAGDLlOHw40NYcwQAABAXSI4AAIAtU4ZMBx/5EcvJEc0RAACwFZTL0Wk1J8dyWuxWBgAAEAUkRwAAwJZluRy9q7XFVn4AAID4QHMEAABsBWU4/joSxcXFGj58uAYOHKiNGzcedH7hwoUHnVuzZo1Gjx6t7OxsXXfddaqrq4voWjRHAAAg5o0YMUIlJSXKzMw86Nw//vEPrVmzpsU50zQ1bdo0FRYWqqysTH6/X/Pnz4/oWjRHAADAlmkZMr9Zd+TM68iSI7/fL5/Pd9DxpqYmzZ49W7NmzWpxfP369UpJSZHf75ckXXXVVXrppZciuhYLsgEAQNQEAgEFg8EWxzwejzweT0Sff+CBBzR69Gj17t37oHF79eoV+jk1NVWmaWrXrl3yer2tjklzBAAAbJlHsU7IbjxJGjt2rLZt29biXEFBgaZMmWI7xurVq7V+/XrdcsstjtUl0RwBAIAImA5v5f92rJKSkkMmR5H48MMPtWnTJo0YMUKSVFVVpeuvv1733HOPfD6ftm/fHnpvfX29XC6XbWok0RwBAIAoOtQ6okhNnDhREydODP08fPhwLV68WAMGDJBpmtq3b59WrVolv9+vJ598UqNGjYpoXJojAABgK2i5FHQwOTrSsebMmaPy8nLV1tZqwoQJ8nq9Wrly5WHf73K5NHfuXBUVFamxsVGZmZmaN29eRNeiOQIAADFv5syZmjlzZqvvee2111r8fNZZZ2nFihVHfC2aIwAAYMuSEVpE7dR4sYr7HAEAAIQhOQIAALaCluHwmqPYTY5ojgAAgK3mO2Q7eJ+jGG6OmFYDAAAIQ3IEAABsmXIp6GCmYsZwPhO7lQEAAEQByREAALDFmiMAAIAERXIEAABsmXI5uk4oltcc0RwBAABbQRmO3psoyB2yAQAA4gPJEQAAsGVZzi6itizHhnIcyREAAEAYkiMAAGDLtFwyHXy2mpNjOS12KwMAAIgCkiMAAGArKMPRHWaxvFuN5ggAANiyHL5DtsUdsgEAAOIDyREAALDFgmwAAIAERXOEo/b8oz1UMGqAcvqervk3ndji3L6vDS24vbfG/HCQcr3j9JsrTg6dsyzpkTk+/fSHg/TTHw7SI3N8MX0zMCDe9PpBo1Z8/n+6dcEWSZJlWbr6/1Xr8Q8r9Mwn63T7Q1vUuWswylUi3pgyHH/FKpojHLXuPfcrf2q1Lr2q/qBzD9x6gr7a6dZ/v/mxnql7TJPu3BY698Ky7nr3peP10MufaPErn+j9l4/Xyse7t2fpwPdawd3/1Ma1nb87sO9ZjfjpTv0692Tln3mqUjqaunHOtsMPACS4dmuOKisrlZeXp+zsbOXl5Wnz5s3tdWm0kWGXfanz//1LebodaHH8i09T9F758Zo6b6u83YNyu93qf/re0PmXn07VTybtUFqv/erh26+f3FCjl59Obe/yge+li3J3quFLt1a/3TV0zNr3ul56IlU7tidr39duPf1gui4avUspncwoVop4E7SkoGU4+Ir2Nzq8dmuOioqKlJ+fr7KyMuXn56uwsLC9Lo129smazkrv3aTH5/fUmB8O0i9P/7XeWnl86PyWjR3V79TvmqV+P9yrLZ90jEapwPdK565BjbulSkvu7HXQOSN8BsOQkjtayvxBY/sVh7hnfbMg26mXlegLsuvq6lRRUaGcnBxJUk5OjioqKlRff/B0DOJfbaCDNm/opC7Hmfrz6n+oYMH1mj/1RH3xaYokaV+DS52P+269Q5fjgtrb4GbdEXCMxt1apbInu6s2kNziuJFygUZdXaeM3k3qfFxQP5tcI0kkR8BhtMtW/kAgoIyMDLndbkmS2+1Wenq6AoGAUlMjm05xpb3RhhXiWBhdnpA61cnVs0CS1DGtVEkdluma/3pD7iS3zjhRGjz8HP3v/16vvhf8WB27jtO+lGfl6tlfkrR32yZ16jpLbt+n0fwaaMXL/B0a86z9FbK+vEVG9+f0ywXJMr/6vRT8QiMnz5dlmep9ekBLVz0n6YCMLpNlfXWPHnjvDzLcvmiXjjhhOnwTSCfHclrc3OfI3HGxFGQBYSyyGnpKe5NlVj0gSerbu6ukfjKrTpGRJLl6fio1vibrq+dlVt2kPv3767O3rtGAE5uTw01vpqrPgO4yq/pH8VugNdm9Bke7BNi44hc7dO30Kn29fbAkqVMXUy6XpS8+fFkDR67Vpce/LamHJOmsi57Sr3/XQT/PnBLTdymGlNEnTcsqF0W7jITTLtNqPp9P1dXVCgabp1KCwaBqamrk8/EvlngWPCA17TNkBg2ZweY/Bw9Ip527R2mZ+/XkggwFD0jr39mgtX/vqrMv+kqSdMmYej2zJF21gQ6qq0rSX5akaeTPmGIFjsULJd117Xmn6MaRA3TjyAFa+Xh3ffCqR3dc3U+WuUu+Po2SLJ3Yf59uKNqukvsyaIxwRBJpK3+7JEfdu3dXVlaWSktLlZubq9LSUmVlZUU8pYbY9Of7e2rZvT1DP7/611Rd8+sq/fyWKs16rFL333KCnlqYroy+izXt91/oxP7Niz9//PM6VW1J1g0jBkqS/v3qOv3453VR+Q7A90XjXpca93737929DS41NRr6sj5JMnfqrmWVSuvVpC/rkvTcI2l6sYTbZwCHY1hW+yyD3bRpk6ZPn67du3fL4/GouLhY/fr1i/jzTKvFL1fPT5kyi3NMq8W3l83lGukaE+0ycBRiaVptyurbVdvo3D9ke6R014Iz73FsPCe125qjk046ScuXL2+vywEAAAdZDj9bLeG38gMAAMSLuNmtBgAAose0nN1+b8bwve1IjgAAAMKQHAEAAFtOb7+P5a38JEcAAABhSI4AAIAtHh8CAAAQxnK4OYrlO7QzrQYAABCG5AgAANhKpGk1kiMAAIAwJEcAAMAWyREAAECCIjkCAAC2EukmkDRHAADAFlv5AQAAEhTJEQAAsGXK2UXUpmMjOY/kCAAAIAzJEQAAsMVWfgAAgARFcgQAAGwlUnJEcwQAAOxZhrPb72O4OWJaDQAAIAzJEQAAsJVId8gmOQIAAAhDcgQAAGwl0oJskiMAAIAwJEcAAMCW5fButVh+8CzNEQAAsMW0GgAAQIIiOQIAAPYsh6fCLOeGchrJEQAAQBiSIwAAYMuUw2uOuAkkAABAfCA5AgAAtiyr+eXkeLGK5AgAACAMyREAALCVSA+epTkCAAC2EukO2UyrAQAAhCE5AgAAtiyHHx9CcgQAABAnaI4AAICtb7fyO/k6EsXFxRo+fLgGDhyojRs3SpJ27typX/7yl8rOztbll1+ugoIC1dfXhz6zZs0ajR49WtnZ2bruuutUV1cX0bVojgAAQMwbMWKESkpKlJmZGTpmGIZ+8YtfqKysTCtWrNAJJ5yg+fPnS5JM09S0adNUWFiosrIy+f3+0Dk7NEcAAMDWt7vVnHwdCb/fL5/P1+KY1+vV0KFDQz8PHjxY27dvlyStX79eKSkp8vv9kqSrrrpKL730UkTXYkE2AACw1VZb+QOBgILBYItzHo9HHo/niMYzTVNPPPGEhg8fHhq3V69eofOpqakyTVO7du2S1+ttdSyaIwAAEDVjx47Vtm3bWhwrKCjQlClTjmicu+66S507d9Y111xzzDXRHAEAAFumw1v5vx2rpKTkkMnRkSguLtaWLVu0ePFiuVzNK4Z8Pl9oik2S6uvr5XK5bFMjieYIAABE0b+uIzpS9957r9avX6+HH35YycnJoeODBg3Svn37tGrVKvn9fj355JMaNWpURGPSHAEAAFuWjnz7vd14R2LOnDkqLy9XbW2tJkyYIK/Xq/vvv19LlixR3759ddVVV0mSevfurQcffFAul0tz585VUVGRGhsblZmZqXnz5kV0LZojAAAQ82bOnKmZM2cedPyTTz457GfOOussrVix4oivRXMEAABsNd+40cndao4N5TiaIwAAYM/hrfzi2WoAAADxgeQIAADYsnTki6jtxotVJEcAAABhSI4AAICttnp8SCwiOQIAAAhDcgQAAOwl0KIjmiMAAGCLaTUAAIAERXIEAABsNd8h29nxYhXJEQAAQBiSIwAAYIs1RwAAAAmK5AgAAETAcPhhsbGbHNEcAQAAWyzIBgAASFAkRwAAwF4C3SGb5AgAACAMyREAALDFVn4AAIAERXIEAADsJdCaI5ojAABgz+FpNWfvmeQsptUAAADCkBwBAAB7CTStRnIEAAAQhuQIAABEKHbXCTmJ5AgAACAMyREAALCXQGuOaI4AAEBkYrihcdJhm6Np06bJMOznFufOnetoQQAAANF02OaoT58+7VkHAACIZZbh7I0bY/gmkIdtjgoKCtqzDgAAgJgQ8Zqjd955RytXrlR9fb0WL16sdevWac+ePTrvvPPasj4AABADLKv55eR4sSqirfyPP/64Zs2apb59++rDDz+UJHXs2FEPPPBAmxYHAADQ3iJqjv70pz/pscce08SJE+VyNX+kX79+qqysbNPiAABAjLDa4BWjIppWa2hokM/nk6TQDrYDBw6oQ4cObVcZAACIHQm0IDui5GjIkCF6+OGHWxxbunSphg4d2iZFAQAAREtEydHMmTM1adIkLV++XA0NDcrOzlaXLl20ZMmStq4PAADEAMNqfjk5XqyKqDlKT0/XX//6V61bt07btm2Tz+fT6aefHlp/BAAA8H0R8VZ+0zS1f/9+SVIwGJQVy3vwAACAs3i2WksbNmzQ5MmT1dTUpIyMDFVVVSklJUUPPvigTjnllLauEQAAoN1E1BzNmDFDY8eO1YQJE2QYhizL0h//+EfNmDFDzzzzTFvXCAAAoo3dai1t3rxZ48ePD23jNwxD48aN0+bNm9uyNgAAEEsS4B5HUoTN0UUXXaTXXnutxbHXX39dF198cVvUBAAAEDWHnVabNm1aKCkKBoO6+eabNWjQIPXs2VNVVVVav369RowY0W6FAgCAKGJBttSnT58WPw8YMCD055NP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ABIbzREQZRkZGbrgggv06aefSmqeniopKdGll16qSy+9VJL0+uuvKzc3V36/X1dddZU2bNgQ+nxFRYWuuOIKnXnmmbrpppvU2NgYOvf+++/rwgsvDP0cCARUUFCgc889V0OHDtXs2bO1adMmFRUVac2aNTrzzDPl9/slSU1NTSouLtbFF1+s888/X4WFhdq3b19orEceeUTDhg3TsGHD9Je//CXi7/vFF19o3LhxGjp0qIYOHarf/OY32r17d4v3rFu3TpdddpmGDBmi22+/vcV3au13AQBOoDkCoiwQCOjNN99UVlZW6Ngrr7yip59+Wi+88IIqKio0Y8YMzZ49W++//77y8vJ04403qqmpSU1NTZo8ebJyc3P1wQcfaNSoUSovLz/kdYLBoG644Qb16tVLr732mt58801ddtllOumkk3TnnXdq8ODBWr16tVatWiVJmj9/viorK/Xcc8+pvLxcNTU1evDBByVJb775ph599FE9+uijKi8v17vvvhvx97UsSzfccIPeeustvfjii6qqqtKCBQtavGfFihX6wx/+oJdfflmVlZVatGiRJLX6uwAAp9AcAVEyefJk+f1+5efna8iQIZo0aVLo3MSJE+X1etWxY0c99dRTysvL0xlnnCG3260rrrhCHTp00Jo1a7R27Vrt379f48ePV4cOHTRq1Ciddtpph7ze//3f/6mmpka33nqrOnfurJSUlFBK9K8sy9LTTz+tGTNmyOv1qmvXrrrhhhtCz+V68cUXdeWVV2rAgAHq3LmzCgoKIv7effr00b/9278pOTlZqampmjBhgj788MMW7xk7dqx8Pp+8Xq9+9atfha7b2u8CAJySFO0CgET14IMP6vzzzz/kOZ/PF/rz9u3b9dxzz2nZsmWhY/v371dNTY0Mw1BGRoYMwwid69Wr1yHHDAQC6tWrl5KS7P9vX19fr7179+rKK68MHbMsS6ZpSpJqamo0aNCg0LnMzEzbMb9VW1ur3/72t1q1apUaGhpkWZY8Hk+L94R//169eqmmpkZS678LAHAKzREQg8KbHZ/Pp0mTJulXv/rVQe/74IMPVF1dLcuyQp/Zvn27TjjhhIPe6/P5FAgEdODAgYMapPDrSVK3bt3UsWNHrVy5UhkZGQeNlZ6erkAgEPp5+/btEX+3e++9V4ZhaMWKFfJ6vXrllVc0e/bsFu/517HT09ND3+FwvwsAcArTakCMGzNmjJ588kmtXbtWlmXp66+/1htvvKE9e/Zo8ODBSkpK0tKlS7V//36Vl5dr3bp1hxzn9NNPV1pamn73u9/p66+/VmNjoz766CNJUvfu3VVdXR1au+NyuTRmzBjdfffdqqurkyRVV1frrbfekiSNGjVKzz77rD777DPt3btXCxcujPj7NDQ0qHPnzjruuONUXV2tRx555KD3/PnPf1ZVVZV27dqlxYsX67LLLrP9XQCAU2iOgBh32mmn6a677tLs2bM1ZMgQXXrppXrmmWckScnJyVqwYIGeffZZnXPOOXrhhRc0cuTIQ47jdru1ePFibdmyRT/60Y904YUX6sUXX5QknXvuuTr55JM1bNgwDR06VJI0bdo09enTRz/72c901lln6dprr1VlZaUk6aKLLtL48eM1fvx4jRw5Uueee27E36egoEAVFRXy+/2aOHFiaEdeuJycHF133XW65JJLdOKJJ4aSotZ+FwDgFMOyLCvaRQAAAMQKkiMAAIAwNEcAAABhaI4AAADC0BwBAACEoTkCAAAIQ3MEAAAQhuYIAAAgDM0RAABAGJojAACAMP8fYIl64Nb3M3kAAAAASUVORK5CYII=\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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vBcJKQAAgIFunPMnbfc4IW1cs7b+2WOQpzG9QJc9AAAAIopBTQAAACYK47RPpiEhBQAAMJaZa897jS57AAAARBQVUgAAABNFUZc9FVIAAABEFBVSAAAAUxla0fQaFVIAAABEFBVSAAAAE7lW4eZ1TAORkAIAABjIdQs3r2Oa6Jy77L/66iv961//8rItAAAAiEKVTkjvv/9+ffvtt5KkN954Q08++aSeeuopTZkyJWyNAwAAiFpumDYDVToh/Z//+R+1adNGkvTuu+9q+vTpmjVrlmbOnBmutgEAACAKVPodUsdxZFmWtm7dKtd1deWVV0qSDh48GLbGAQAARC0GNZXVtm1bjR49Wnv37tXtt98uSdq6dasSEhLC1jgAAABc+CrdZf/CCy8oEAioRYsWGjJkiCRp8+bN6tevX9gaBwAAEK0sNzybiSpdIU1ISNCTTz5Z6tgtt9zidXsAAAAgsZZ9eaZNm6b169dLklavXq1bbrlFqampWrVqVdgaBwAAgAtfpRPSN998U40bN5Yk/fGPf9RDDz2kQYMG6fnnnw9b4wAAAKJW8aAmrzcDVTohPXz4sC6++GIdOXJE33//vR544AH17NlTWVlZ4WwfAAAALnCVfoc0KSlJK1eu1P/+7/8qJSVFfr9fR44ckd/vD2f7AAAAopeh73x6rdIJ6W9/+1v95je/UfXq1fXKK69Ikj7++GNdc801YWscAAAALnyW67rnnHvn5+dLkqpVq+ZZgwAAACDd+M4b2n74kKcxG18c0D/vH+hpTC9UukIqSVu2bNGCBQu0Z88e1a9fX926dVPTpk3D1DQAAIAoxrRPZS1fvlw9evRQVlaWateuraysLN19991atmxZONsHAACAC1ylK6QTJkzQ5MmT1b59+9CxFStWaMyYMerUqVNYGgcAABC1omgt+0pXSHft2qWUlJRSx9q2batdu3Z53igAAABEj0onpC1bttRf//rXUsemTZum5ORkzxvlhXmvfaDHf/a07ojro3EPv1buNZs+66m9a1opf0drOXs7yz02S4dyDmvu+Md0dHNLHdvcUid+aCV717VydjWXm7+2ip8CAABErXCsY/9jf4d01KhRmj17tm688Ub17NlTN954o2bNmqVRo0adVwNatGiho0ePnleMFStWqEePHqWO1WmYqL7P3q0uD99a7nd2btqlt8bF64m0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A40bN07Dhg1TQUGBEhMTQ4OoOnbsqO+//169e/eWJF199dUaNGiQJOnxxx/XM888o65du6pevXqlVo8ql2XJPTZDmX94We/8MaHoYEDL3vuLHkg/qAdGpinvwGL9Y35Lpc++pczX/2t8P00a+lc91Pw3ys8rUNOrL9WoOcPP6ncAAACA8lluBf3vH3zwgX7xi1+E9jdv3qxmzZqF9t9880099NBDFd7oyJEjofdB33vvPc2ePVszZsw4x2YDAABc2G7+81+049AhT2M2CgT0jwGPehrTC76KLnj22WdL7RdXLIu98sorlbrR22+/rbS0NHXr1k1z5szR2LFjz6KZAAAAuFBV2GV/agG1ov3TGTRoUKjLHQAAABWIokFNFVZIT10xp6J9AAAA4GxUalCT67qhrbx9AAAAeItR9iUcO3ZMrVq1Cu27rhvad12XCikAAEA4sJb9ScuWLauKdgAAACBKVZiQNmrUqNzjBw8eVO3atT1vEAAAAMSgppLmzZunzz77LLT/3XffqWPHjmrfvr26dOmizZs3h7WB56pFixY6evToecVYsWKFevToccZrXn31VWVkZJzXfQAAAKJZhQnp1KlTVa9evdB+enq6OnTooL///e/q0KGDxo0bF9YGAgAARCNLJwc2ebZF+qFOo8Iu+127dql58+aSpGAwqI0bN2ratGmKj4/XU089pc6dO4e9kedq6tSpWrZsmbKzs2VZlurUqaOuXbtqwoQJatmypQ4fPqyDBw/qkksuUd26dTV69GjNmTNHixYtUm5urnJzc3X8+HH993//t373u9+pZs2aOnz4sJ599llt3LhR9erVC30XAAAA56bCCqnf71d+fr4kadWqVWrWrJni4+MlSTVq1NCJEyfC2sDz4fP5NHXqVJ04cULHjx/X1KlTFRcXJ0n605/+pGPHjumOO+7Qrbfeqm7dumngwIFavny5hg8frosvvljXXHONrrjiCtm2rcmTJ0uSJk2apJo1a2rx4sWaOHGivv7660g+IgAAuFC5YdoMVGFCev3112vChAnasGGD3n77bd16662hc5s3by7VnW+anj17as2aNbrmmmt0zTXXaPXq1br77rslSQ8++KByc3P1xRdfaP369br77ru1detW3XbbbVq5cqV++ctfqnfv3rIsS/fee6++/PJLSYXvld5zzz2SpMTERN1+++0Rez4AAHDh8ry7PgzzmnqlUmvZr1u3Tn369FGNGjU0YMCA0Ln58+frpptuCmsDvbZq1SpJ0uDBg9W6dWs98cQTysvLi3CrAAAAoleFCalt2/rDH/6gBQsWaOzYsTp8+LB27typnTt36r777lP//v2rop3n5L333lPr1q313Xff6bvvvlObNm20dOlSSVJKSoo2bNigd955R5I0d+5cNWnSRMuWLdN1112nRYsW6W9/+5tc19Xs2bPVoUMHSVL79u01Z84cSdL+/fv10UcfRebhAADAhS3CXfYZGRlKTU1VixYttHHjxtDxrKws9erVS126dFGvXr20ZcuWSp07kwoHNaWmppZajenU5UIty9L69esrdbOqZtu2Hn30UcXFxcmyLD3yyCO6+eabZVmWHnzwQcXHx2vbtm06duyYfD6fXn/9dc2ZM0fjx49Xbm6u9u7dq+PHj6tFixYaNGiQJOnxxx/XM888o65du6pevXpKSUmJ8FMCAAB4r1OnTurXr5/69u1b6vjIkSN13333KS0tTfPnz1d6erqmT59e4bkzsdwKFqS/8847deLECd11113q3r276tevX+Yav99/Ns9X5Y4cOaJatWpJKqyazp49WzNmzIhwqwAAAE7v1lenasfBQ57GbFQ7oI+HPKJgMCjbtkudCwQCCgQCZb6TmpqqKVOmqHnz5srOzlaXLl20YsUK+f1+2batdu3aaenSpXJd97TnEhMTz9iuCiuk8+bN08aNGzV37lz16dNHV1xxhdLS0tS5c+fQiHXTvf3221q8eLFs21bt2rU1duzYSDcJAAAgYvr27asdO3aUOjZ48GANGTLkjN8LBoNq0KBBqBjp9/tVv359BYNBua572nPnnZBKUvPmzfX0009r+PDh+vzzzzV37lyNHj1ab731lq666qrKhIioQYMGhbrcAQAAfgzCMSq+OF5mZma5FdJIqVRCWmzLli36+uuvtXr1aiUnJ0e04QAAADg3SUlJ5/y93bt3y7btULf8nj17lJSUJNd1T3uuIhUmpAcOHNDChQs1d+5cHT16VGlpaXrnnXfUsGHDc3oQAAAA/DjVqVNHycnJWrBggdLS0rRgwQIlJyeHuuTPdO5MKhzUdM0116hx48ZKS0tT69aty73mhhtuOIdHAgAAwOmkTgzPoKblQx+p1LVjx47V0qVLtW/fPiUkJCg+Pl4L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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" } ], "source": [ @@ -534,7 +516,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "de38b3249db3436f88d6356fc0fc237f", + "model_id": "9cf0df4fbfdd4b32b84c920efa841d05", "version_major": 2, "version_minor": 0 }, @@ -599,7 +581,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "933233737ef249b69b3b1f9c3fa5ee22", + "model_id": "dd00913e9f1247aaa55ff64e739d57c9", "version_major": 2, "version_minor": 0 }, @@ -690,7 +672,7 @@ "\n", "tree_explainer_interventional = TreeShap(rfc, model_output='raw', task='classification')\n", "tree_explainer_interventional.fit(scaler.transform(X_train[0:100]))\n", - "result = tree_explainer_interventional.explain(scaler.transform(x))\n", + "result = tree_explainer_interventional.explain(scaler.transform(x), check_additivity=False)\n", "\n", "plot_importance(result.shap_values[1], features, '\"Good\"')\n" ] @@ -805,7 +787,7 @@ "output_type": "stream", "text": [ "Anchor = ['alcohol > 10.10', 'volatile acidity <= 0.39']\n", - "Precision = 0.9581993569131833\n", + "Precision = 0.9542168674698795\n", "Coverage = 0.16263552960800667\n" ] } @@ -901,8 +883,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 10000/10000 [01:39<00:00, 100.62it/s]\n", - "100%|██████████| 1/1 [00:00<00:00, 250.96it/s]" + "100%|██████████| 10000/10000 [01:40<00:00, 99.82it/s]\n", + "100%|██████████| 1/1 [00:00<00:00, 224.34it/s]\n" ] }, { @@ -912,13 +894,6 @@ "Instance class prediction: 0\n", "Counterfactual class prediction: 1\n" ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n" - ] } ], "source": [ @@ -982,7 +957,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "563ae08a5d98476a9fb67c957524b494", + "model_id": "b97a06ffae564ab99d090d5995131dfa", "version_major": 2, "version_minor": 0 }, @@ -996,7 +971,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "0509960d9ec24ffe9becd27d2345fb34", + "model_id": "43c2cb57aa7c4623930006f905275d8c", "version_major": 2, "version_minor": 0 }, @@ -1207,7 +1182,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "503c3ed8365c4510908516039d2e2ccd", + "model_id": "96113e9447e04cbaba5cdf80b4951115", "version_major": 2, "version_minor": 0 }, @@ -1221,7 +1196,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "9f7c347a0e7142b19e1371c7b1f3f95f", + "model_id": "0a4d4bf548754589906fe06f4747cc9d", "version_major": 2, "version_minor": 0 }, @@ -1373,7 +1348,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "eb01fa5d714f4c3daed24b2601f5b3ed", + "model_id": "1d0da7aab3a34c73a81f322a235950e2", "version_major": 2, "version_minor": 0 }, @@ -1387,7 +1362,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "f91cb3f742db411889015388a7ea456e", + "model_id": "0bb39aad9e794a5e827815d42b6e54eb", "version_major": 2, "version_minor": 0 }, @@ -1465,7 +1440,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "id": "d7a63b6f-58a1-4fc0-9aa6-528507158eb0", "metadata": {}, "outputs": [ @@ -1475,6 +1450,14 @@ "text": [ "`Model.state_updates` will be removed in a future version. This property should not be used in TensorFlow 2.0, as `updates` are applied automatically.\n" ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Instance class prediction: 0\n", + "Counterfactual class prediction: 1\n" + ] } ], "source": [ @@ -1498,10 +1481,28 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 31, "id": "3e6116d6-b739-436c-8179-1cbaddf218c0", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fixed acidity instance: 9.2 counter factual: 9.2 difference: 2e-07\n", + "volatile acidity instance: 0.36 counter factual: 0.36 difference: -0.0 \n", + "citric acid instance: 0.34 counter factual: 0.34 difference: -0.0 \n", + "residual sugar instance: 1.6 counter factual: 1.6 difference: 1e-07\n", + "chlorides instance: 0.062 counter factual: 0.062 difference: 0.0 \n", + "free sulfur dioxide instance: 5.0 counter factual: 5.0 difference: 0.0 \n", + "total sulfur dioxide instance: 12.0 counter factual: 12.0 difference: 1.9e-06\n", + "density instance: 0.997 counter factual: 0.997 difference: -0.0 \n", + "pH instance: 3.2 counter factual: 3.2 difference: -0.0 \n", + "sulphates instance: 0.67 counter factual: 0.623 difference: 0.0470144\n", + "alcohol instance: 10.5 counter factual: 9.942 difference: 0.558073\n" + ] + } + ], "source": [ "proto_cf = scaler.inverse_transform(proto_cf)\n", "compare_instances(x, proto_cf)" @@ -1509,10 +1510,67 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "id": "1d1e5206-cca6-4897-a486-8a4bf070e93f", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "00a1c1c8c2674f5ba15abd016be40466", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/1 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAFECAYAAADlf7JXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABoFUlEQVR4nO3de3zP9f//8dve2IGNbeyQpBzy1ocxc5gx0RjL2YwI5ZDThJyXYyiHtGRzVoqURrTSJ+foqFERn1REKgxrDjN2sO39+8PP+9vbDt57G7O5Xy8Xl7yfr+fr+Xq8Hr23PfbyeL3ediaTyYSIiIiIiOSbobADEBEREREpqlRMi4iIiIjYSMW0iIiIiIiNVEyLiIiIiNhIxbSIiIiIiI1UTIuIiIiI2EjFtIiIiIiIjUoWdgBy/7pw4QpZWcX/MeflyzuTmJhc2GEUCcqVdZQn6ylX1lOurKM8Wa+45MpgsMPNrUyu21VMS6HJyjLdF8U0cN+cZ0FQrqyjPFlPubKecmUd5cl690Ou1OYhIiIiImIjFdMiIiIiIjZSMS0iIiIiYiMV0yIiIiIiNlIxLSIiIiJiIxXTIiIiIiI2UjEtIiIiImIjFdMiIiIiIjZSMS0iIiIiYiN9AqIUWy5lnXB0uDfe4h4eLoUdQpGhXFlHebKecmWd9GuZhR2CSJF0b1QaIneAo0NJOoz5uLDDEBEpEjZFdirsEESKJLV5iIiIiIjYSMW0iIiIiIiNVEzf4zZu3IjRaOTKlSsFum5ERAShoaEFslafPn0YMWJEgawlIiIiUpSomBYRERERsZGKaRERERERG6mYLmT79+9nyJAhBAYG4uvrS6dOnfjkk0/y3Cc1NZVXX32VJ554gtq1axMUFERkZKR5e2ZmJtHR0bRo0YLatWvTrl07Nm3alONa33zzDR06dMDX15eePXty9OhRi+0pKSm8/PLLNG3aFB8fH7p27crXX399+ycuIiIiUgzo0XiF7PTp0/j5+dGzZ0/s7e358ccfmThxIgaDgfbt22ebbzKZCA8PZ//+/YSHh1O7dm3Onj3L999/b54TFRXFm2++ybBhw/Dx8WHbtm2MHTsWOzs7izXj4+N59dVXGTp0KA4ODrz66quMGjWKTZs2YWdnB8DkyZP5/PPPGT16NJUrV2b9+vUMHjyYVatW0aBBgzufIBEREZF7mIrpQtauXTvz300mEw0bNuTs2bOsW7cux2L666+/5ptvvmHx4sW0bNnSPN65c2cALl68yKpVqxg6dCjh4eEANGvWjDNnzhAdHW2x5qVLl1i7di2PPPKI+fjDhg3j+PHjVKtWjWPHjvHf//6X2bNn06VLF/NaHTt2ZMmSJbz11lu3de7lyzvf1v4iIlKw9AE31lGerHc/5ErFdCG7dOkS0dHR7Ny5k7Nnz5KZef0TqLy8vHKc/9133+Hq6mpRSP/b0aNHSUlJISQkxGK8bdu2REREcP78edzd3QF48MEHzYU0QLVq1QA4e/Ys1apV49ChQ5hMJou1DAYDISEhvPnmmzaf8w2JiclkZZlue53c3A9fwCIiBSkh4XJhh3DP8/BwUZ6sVFxyZTDY5XkBUMV0IYuIiOCnn34iPDycatWq4ezszNq1a9m5c2eO8y9evIiHh0eu6yUkJABQvnx5i/Ebry9evGgupl1cLIvNUqVKAZCWlgbAuXPnKF26NE5OTtnWSklJIT09HXt7e2tPVURERKTY0Q2IhSgtLY3du3czfPhwevfuTUBAAD4+PphMuV+tdXV1NRfMOblRaJ8/f95iPDEx0by/tTw9Pbl69SopKSnZ1nJyclIhLSIiIvc9FdOFKD09naysLIuiNDk5mc8//zzXfQICArh48SK7du3Kcfujjz6Kk5MTmzdvthjfvHkzjzzyiPmqtDV8fHyws7Nj69at5jGTycTWrVupX7++1euIiIiIFFdq8yhELi4u+Pj4sGjRIpydnTEYDCxfvhxnZ2eSk5Nz3Kdp06YEBgYyZswYhg0bxn/+8x8SEhL4/vvvmTFjBq6urjz77LMsXbqUkiVLUrt2bbZt28YXX3zB66+/nq/4qlWrRrt27ZgxYwZXrlzhoYceYv369Rw/fpxp06YVRApEREREijQV04UsMjKSqVOnMmHCBFxdXenVqxepqamsWbMmx/l2dnYsWrSIBQsWsGrVKs6fP4+npycdOnQwzxkxYgQlSpRg7dq1JCYmUrlyZebNm2fx5BBrvfzyy7z22mssWrSIpKQkatSowdKlS/VYPBERERHAzpRXg67IHXQ3nubRYczHd2x9EZHiZFNkp2Lx5IU7rbg8oeJuKC65utXTPNQzLSIiIiJiI7V5SLGVmpbBpshOhR2GiEiRkH4ts7BDECmSVExLsXU5KYV74R+Xiss/c90NypV1lCfrKVfW0wddidhGbR4iIiIiIjZSMS0iIiIiYiMV0yIiIiIiNlLPtEgx51LWCUeHovOlrr5N6yhP1lOurKMbEEVsU3R+woqITRwdSup52yJyS3r6kYht1OYhIiIiImIjFdMiIiIiIjZSMV0I4uLiMBqNHDlyJF/7bdy4EaPRyJUrV247hq+//pp33nnnttcRERERuZ+pmL5PffPNN6xevbqwwxAREREp0lRMi4iIiIjYSMW0DY4ePcqAAQNo1KgRvr6+PPnkk7z33nsABAUFMXfuXIv51rRnGI1G3n77bV5++WUaNWpEgwYNmDlzJunp6dnmnjx5kn79+uHr60tISAjbtm2z2L5792769etHQEAAfn5+dO/ena+//tq8PTo6mpUrV3Lq1CmMRiNGo5GIiAjz9u+//57evXtTt25d/P39mTx5MsnJyebtSUlJTJo0icDAQHx8fGjRogWTJ0/OXxJFREREigE9Gs8GQ4YMoVq1asybNw97e3uOHz9eIH3MK1euxNfXl3nz5vH7778zf/587O3tmTBhgsW8sWPH0r17dwYMGMCaNWsYPXo0O3bswNvbG7hebD/xxBP0798fg8HAl19+ycCBA1mzZg3169enW7dunDhxgri4OBYuXAiAu7s7AD/88AN9+/alVatWREVFceHCBSIjI0lKSiIqKgqA2bNns3//fiZOnEiFChWIj4/n+++/v+3zFxERESlqVEzn0/nz5zl58iSLFy/GaDQCEBAQUCBrlylThgULFmAwGGjevDnp6eksXbqUwYMH4+rqap737LPPEhYWBkCtWrVo2rQpu3btomfPngD07t3bPDcrKwt/f39+//13PvzwQ+rXr4+3tzeenp7Y29vj6+trEUNkZCT16tXjjTfeMI95eXnRt29fjhw5Qo0aNTh06BC9evWibdu25jmdOuX/+aTlyzvne5+iSh8aISJFgb5XWUd5st79kCsV0/nk6urKAw88wLRp03jmmWfw9/enfPnyBbJ2y5YtMRj+r/OmdevWvPHGGxw9epSGDRuaxwMDA81/d3Nzw93dnTNnzpjHzpw5w/z58/n2229JSEjAZDIB4Ofnl+fxU1JSOHDgAJMnTyYjI8M8Xr9+fUqVKsXPP/9MjRo1qFmzJm+99RYGg4EmTZpQpUoVm843MTGZrCyTTfsWJR4eLiQkXC7U44uIWKMw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0dyOk9NxypUrR+3atXnppZeyrXE7TywRERERKYru+MeJBwQEsHnzZh599NFcH5MXEBDA22+/TenSpalWrZpNx3nggQcYNGgQGzZs4NixY8D1dguAY8eOUb9+fQB++uknkpOT872+t7e3ea0bV2Xj4+M5fvy4uXc4P0qWLMljjz3Gzp076dmzp3l8+/btt4zD09OTLVu20Lx5c/P45s2bcXZ2Nn/ASlxcHGvWrOGNN97A2dmZAQMG0Lp1a9q0aZPjujVq1MDBwYGdO3ea/x9kZWWxc+dOi3kBAQF88803VKxYsdg9X1xEREQkv+54Md23b18++eQTnn32WXr37o2Xlxf//PMP+/bto379+rRv356mTZsSGBhI//79GThwINWrVyc5OZlff/2VtLQ0xowZk+PaU6dOpVy5ctStWxcXFxfi4uL4888/GTduHAB16tTBy8uLV155hZEjR3Lx4kXefPPNPJ+NnRtvb29q167NggULcHJyIisri2XLlllcxc2vIUOG8PzzzzNt2jSCg4PZt28fX331VZ77GAwGhg8fztSpU3F1daVp06bs27ePtWvXMnr0aBwcHLhy5QoTJ06kbdu25t7qp556ipdeeomGDRvi7u6ebV03Nze6d+9OdHQ0JUuWpHr16qxfv56rV69azOvcuTMffPABffr0oX///jz00ENcvHiRgwcP4uHhQd++fW3Oh4iIiEhRc8eLaXd3d2JiYnjjjTeYPXs2SUlJeHp64ufnZ76Kamdnx8KFC1m6dCmrVq0iPj6ecuXKUbNmzTw/ytvX15d169YRExNDWloalStXZubMmbRq1Qq43nawcOFCpk+fzogRI6hSpQovvfSSudjOr9dff53Jkyczbtw4vLy8GDduHKtWrbJpLbh+s+GUKVNYvnw5sbGxNGrUiFdeeYUBAwbkuV/37t1JS0tj9erVvPvuu3h5eREREWEuZOfOnUtaWhpTp0417zNhwgS++eYbpk2bRnR0dI7rjh8/noyMDBYtWoTBYKBjx47069ePOXPmmOc4ODiwevVqFixYQHR0NImJibi7u1OnTh2CgoJszoWIiIhIUWRnMpmK/x1gck/SDYhys4K+AbHDmI8LZC2R+8GmyE76XmUFfU+3XnHJ1a1uQMz3JyCKiIiIiMh1KqZFRERERGx0x3umRUQKQ2paBpsiOxV2GCJFRvq1zMIO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devWNW/r1q3bXTmvO6EgcnWrfCxatIhWrVrRqlUrFi1adEfP504qiFzt2LGD0NBQ2rdvT7t27Vi5cqV5n40bN9KgQQNzHocNG3bHz6kg/fHHHzz11FO0adOGp556ihMnTmSbk5mZyfTp02nVqhXBwcGsX7/+trcVRbebq0WLFtGuXTs6dOhAaGgoX331lXlbREQEjz/+uPl9tGTJkrtxSnfE7eYpOjqagIAAcy6mT59u3pafr+d7lklE8i06Oto0adIkk8lkMv3xxx+mJk2amJKTk7PNS0pKMu3bt8+0a9cuU5cuXSy2/fXXX6ZmzZqZEhMTTZmZmab+/fubPvroo1tuK0qszZO155uenm5q3Lix6eDBgyaTyWT67rvvsuW1qCqIXOWVj71795rat29vSklJMaWkpJjat29v2rt37x07nzupIHJ14MAB05kzZ0wm0/Wv01atWpn27dtnMplMpg0bNpiGDx9+d07mDujTp48pNjbWZDKZTLGxsaY+ffpkm/PRRx+Z+vfvb8rMzDQlJiaamjVrZvr7779va1tRdLu5+vLLL01Xr141mUwm0y+//GKqX7++KSUlxWQymUwTJkwwvfvuu3fpTO6s281TVFSUac6cOTmube3X871MV6ZFbLB582aeeuopAB555BFq167Nl19+mW2ei4sLDRo0wMnJKdu2rVu30qpVK9zd3TEYDHTr1o3PPvvsltuKEmvzZO357tq1Cw8PD3x8fO547HdbQefqZp999hmdO3fG0dERR0dHOnfuXCTfU1Awuapbty5eXl7A9a/TatWqcerUqbt3EndIYmIihw8fpn379gC0b9+ew4cPc/78eYt5n332Gd26dcNgMODu7k6rVq3YsmXLbW0ragoiV82aNTN/fzcajZhMJi5evHhXz+NOK4g85cXar+d7mYppERucPn2aBx980Pz6gQce4MyZM/laIz4+nooVK5pfV6xYkfj4+FtuK0qszZO157thw4Zs7TInTpygS5cudOvWjY8++qgAo7+7CipXueXj5v0eeOCBIvmegoJ/Xx07dowDBw7QuHFj89jevXvp1KkTvXr1Yvfu3QV7AndQfHw8Xl5elChRAoASJUrg6emZ7bxzej/cyKGt24qagsjVv8XGxlK5cmW8vb3NY2+//TYdOnQgPDycY8eO3aEzubMKKk///e9/6dChA/3792f/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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "import shap\n", "from alibi.explainers import KernelShap\n", @@ -1542,10 +1600,37 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 33, "id": "20c990ef-808f-4502-9806-6d03c6635a18", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([[,\n", + " ,\n", + " ],\n", + " [,\n", + " ,\n", + " ]],\n", + " dtype=object)" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plot_ale(exp, features=['sulphates', 'alcohol', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide'], line_kw={'label': 'Probability of \"good\" class'})" ] From 4bd5b07479385aa26ccd74436143b968f8ff2b15 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Wed, 15 Dec 2021 16:01:56 +0000 Subject: [PATCH 53/60] Add wine dataset discription, white and black box discusson link and supported library model lists in summary table. --- doc/source/examples/overview.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/source/examples/overview.ipynb b/doc/source/examples/overview.ipynb index 3e6cf37bf..ab59be315 100644 --- a/doc/source/examples/overview.ipynb +++ b/doc/source/examples/overview.ipynb @@ -1665,4 +1665,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file From 10f6fd430f7bb6050eefa9c02b55fce86d61244c Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Wed, 15 Dec 2021 16:03:24 +0000 Subject: [PATCH 54/60] Updates to main doc, including added details about wine-quality dataset --- doc/source/overview/high_level.md | 35 +++++++++++++++++-------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index f55726b37..8eb969b09 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -67,7 +67,8 @@ underlying method doesn't make use of the model internals. Instead, they only ne given particular inputs. Methods that apply in this general setting are known as **black-box** methods. Note that white-box methods are a subset of black-box methods and an explainer being a white-box method is a much stronger constraint than it being a black-box method. Typically, white-box methods are faster than black-box methods as they can -exploit the model internals. +exploit the model internals. For a more detailed discussion see +[white-box and black-box models](./white_box_black_box.md). :::{admonition} **Note 1: Black-box Definition** The use of black-box here varies subtly from the conventional use within machine learning. In most other contexts a @@ -124,19 +125,19 @@ model performs as desired. Alibi provides several local and global insights with which to explore and understand models. The following gives the practitioner an understanding of which explainers are suitable in which situations. -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|--------------------------------------------------------------------------------------------|--------|---------------------|----------------------------|--------------------------------------|-------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------| -| [Accumulated Local Effects](accumulated-local-effects) | Global | Black-box | Classification, Regression | Tabular(numeric) | How does model prediction vary with respect to features of interest | [docs](../methods/ALE.ipynb), [paper](https://arxiv.org/abs/1612.08468) | -| [Anchors](anchors) | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | [docs](../methods/Anchors.ipynb), [paper](https://homes.cs.washington.edu/~marcotcr/aaai18.pdf) | -| [Pertinent Positives](contrastive-explanation-method-pertinent-positives) | Local | Black-box/White-box | Classification | Tabular(numeric), Image | "" | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | -| [Integrated Gradients](integrated-gradients) | Local | White-box | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | [docs](../methods/IntegratedGradients.ipynb), [paper](https://arxiv.org/abs/1703.01365) | -| [Kernel SHAP](kernel-shap) | Local | Black-box | Classification, Regression | Tabular, Categorical | "" | [docs](../methods/KernelSHAP.ipynb), [paper](https://papers.nips.cc/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html) | -| [Tree SHAP (path-dependent)](path-dependent-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | -| [Tree SHAP (interventional)](interventional-tree-shap) | Local | White-box | Classification, Regression | Tabular, Categorical | "" | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | -| [Counterfactuals Instances](counterfactual-instances) | Local | Black-box/White-box | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CF.ipynb), [paper](https://arxiv.org/abs/1711.00399) | -| [Contrastive Explanation Method](contrastive-explanation-method-pertinent-negatives) | Local | Black-box/White-box | Classification | Tabular(numeric), Image | "" | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | -| [Counterfactuals Guided by Prototypes](counterfactuals-guided-by-prototypes) | Local | Black-box/White-box | Classification | Tabular, Categorical, Image | "" | [docs](../methods/CFProto.ipynb), [paper](https://arxiv.org/abs/1907.02584) | -| [counterfactuals-with-reinforcement-learning](counterfactuals-with-reinforcement-learning) | Local | Black-box | Classification | Tabular, Categorical, Image | "" | [docs](../methods/CFRL.ipynb), [paper](https://arxiv.org/abs/2106.02597) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|--------------------------------------------------------------------------------------------|--------|----------------------------------------------------------------------------------|----------------------------|--------------------------------------|-------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------| +| [Accumulated Local Effects](accumulated-local-effects) | Global | Black-box | Classification, Regression | Tabular(numeric) | How does model prediction vary with respect to features of interest | [docs](../methods/ALE.ipynb), [paper](https://arxiv.org/abs/1612.08468) | +| [Anchors](anchors) | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | [docs](../methods/Anchors.ipynb), [paper](https://homes.cs.washington.edu/~marcotcr/aaai18.pdf) | +| [Pertinent Positives](contrastive-explanation-method-pertinent-positives) | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular(numeric), Image | "" | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | +| [Integrated Gradients](integrated-gradients) | Local | White-box _(keras, TensorFlow)_ | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | [docs](../methods/IntegratedGradients.ipynb), [paper](https://arxiv.org/abs/1703.01365) | +| [Kernel SHAP](kernel-shap) | Local | Black-box | Classification, Regression | Tabular, Categorical | "" | [docs](../methods/KernelSHAP.ipynb), [paper](https://papers.nips.cc/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html) | +| [Tree SHAP (path-dependent)](path-dependent-tree-shap) | Local | White-box _(XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models)_ | Classification, Regression | Tabular, Categorical | "" | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | +| [Tree SHAP (interventional)](interventional-tree-shap) | Local | White-box _(XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models)_ | Classification, Regression | Tabular, Categorical | "" | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | +| [Counterfactuals Instances](counterfactual-instances) | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CF.ipynb), [paper](https://arxiv.org/abs/1711.00399) | +| [Contrastive Explanation Method](contrastive-explanation-method-pertinent-negatives) | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular(numeric), Image | "" | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | +| [Counterfactuals Guided by Prototypes](counterfactuals-guided-by-prototypes) | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular, Categorical, Image | "" | [docs](../methods/CFProto.ipynb), [paper](https://arxiv.org/abs/1907.02584) | +| [counterfactuals-with-reinforcement-learning](counterfactuals-with-reinforcement-learning) | Local | Black-box | Classification | Tabular, Categorical, Image | "" | [docs](../methods/CFRL.ipynb), [paper](https://arxiv.org/abs/2106.02597) | ### 1. Global Feature Attribution @@ -168,8 +169,10 @@ conditional probability distribution instead of the marginal distribution and re due to correlated input variables by accumulating local differences in the model output instead of averaging them. See the [following](../methods/ALE.ipynb) for a more expansive explanation. -Considering the case of the wine dataset, we can compute the ALE with Alibi (see [notebook](../examples/overview.ipynb)) -by simply using: +We illustrate the use of ALE on the [wine-quality dataset](https://archive.ics.uci.edu/ml/datasets/wine+quality) which +is a tabular numeric dataset with wine quality as the target variable. Because we want a classification task we split +the data into good and bad classes using 5 as the threshold. We can compute the ALE with Alibi (see +[notebook](../examples/overview.ipynb)) by simply using: ```ipython3 from alibi.explainers import ALE, plot_ale From 1d3aa3ccf941a65508f5f5c8f7b9c03d3787cc74 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Wed, 15 Dec 2021 16:38:25 +0000 Subject: [PATCH 55/60] Add indication of differntiable requirement for some black-box methods --- doc/source/index.md | 2 +- doc/source/overview/high_level.md | 83 +++++++++++++++---------------- 2 files changed, 42 insertions(+), 43 deletions(-) diff --git a/doc/source/index.md b/doc/source/index.md index 96a4bebb0..20282f45c 100644 --- a/doc/source/index.md +++ b/doc/source/index.md @@ -39,6 +39,7 @@ methods/TreeSHAP.ipynb :caption: Examples :maxdepth: 1 +examples/overview.ipynb examples/ale_regression_boston examples/ale_classification examples/anchor_tabular_adult @@ -70,7 +71,6 @@ examples/integrated_gradients_imagenet.ipynb examples/integrated_gradients_mnist.ipynb examples/integrated_gradients_imdb.ipynb examples/integrated_gradients_transformers.ipynb -examples/overview.ipynb ``` ```{toctree} diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 8eb969b09..aacc8a317 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -125,19 +125,19 @@ model performs as desired. Alibi provides several local and global insights with which to explore and understand models. The following gives the practitioner an understanding of which explainers are suitable in which situations. -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|--------------------------------------------------------------------------------------------|--------|----------------------------------------------------------------------------------|----------------------------|--------------------------------------|-------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------| -| [Accumulated Local Effects](accumulated-local-effects) | Global | Black-box | Classification, Regression | Tabular(numeric) | How does model prediction vary with respect to features of interest | [docs](../methods/ALE.ipynb), [paper](https://arxiv.org/abs/1612.08468) | -| [Anchors](anchors) | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | [docs](../methods/Anchors.ipynb), [paper](https://homes.cs.washington.edu/~marcotcr/aaai18.pdf) | -| [Pertinent Positives](contrastive-explanation-method-pertinent-positives) | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular(numeric), Image | "" | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | -| [Integrated Gradients](integrated-gradients) | Local | White-box _(keras, TensorFlow)_ | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | [docs](../methods/IntegratedGradients.ipynb), [paper](https://arxiv.org/abs/1703.01365) | -| [Kernel SHAP](kernel-shap) | Local | Black-box | Classification, Regression | Tabular, Categorical | "" | [docs](../methods/KernelSHAP.ipynb), [paper](https://papers.nips.cc/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html) | -| [Tree SHAP (path-dependent)](path-dependent-tree-shap) | Local | White-box _(XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models)_ | Classification, Regression | Tabular, Categorical | "" | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | -| [Tree SHAP (interventional)](interventional-tree-shap) | Local | White-box _(XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models)_ | Classification, Regression | Tabular, Categorical | "" | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | -| [Counterfactuals Instances](counterfactual-instances) | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CF.ipynb), [paper](https://arxiv.org/abs/1711.00399) | -| [Contrastive Explanation Method](contrastive-explanation-method-pertinent-negatives) | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular(numeric), Image | "" | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | -| [Counterfactuals Guided by Prototypes](counterfactuals-guided-by-prototypes) | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular, Categorical, Image | "" | [docs](../methods/CFProto.ipynb), [paper](https://arxiv.org/abs/1907.02584) | -| [counterfactuals-with-reinforcement-learning](counterfactuals-with-reinforcement-learning) | Local | Black-box | Classification | Tabular, Categorical, Image | "" | [docs](../methods/CFRL.ipynb), [paper](https://arxiv.org/abs/2106.02597) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|--------------------------------------------------------------------------------------------|--------|--------------------------------------------------------------------------------|----------------------------|--------------------------------------|-------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------| +| [Accumulated Local Effects](accumulated-local-effects) | Global | Black-box | Classification, Regression | Tabular(numeric) | How does model prediction vary with respect to features of interest | [docs](../methods/ALE.ipynb), [paper](https://arxiv.org/abs/1612.08468) | +| [Anchors](anchors) | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | [docs](../methods/Anchors.ipynb), [paper](https://homes.cs.washington.edu/~marcotcr/aaai18.pdf) | +| [Pertinent Positives](contrastive-explanation-method-pertinent-positives) | Local | Black-box/White-box(_keras, TensorFlow_) | Classification | Tabular(numeric), Image | "" | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | +| [Integrated Gradients](integrated-gradients) | Local | White-box(_keras, TensorFlow_) | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | [docs](../methods/IntegratedGradients.ipynb), [paper](https://arxiv.org/abs/1703.01365) | +| [Kernel SHAP](kernel-shap) | Local | Black-box | Classification, Regression | Tabular, Categorical | "" | [docs](../methods/KernelSHAP.ipynb), [paper](https://papers.nips.cc/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html) | +| [Tree SHAP (path-dependent)](path-dependent-tree-shap) | Local | White-box(_XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models_) | Classification, Regression | Tabular, Categorical | "" | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | +| [Tree SHAP (interventional)](interventional-tree-shap) | Local | White-box(_XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models_) | Classification, Regression | Tabular, Categorical | "" | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | +| [Counterfactuals Instances](counterfactual-instances) | Local | Black-box(_differentiable_)/White-box(_keras, TensorFlow_) | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CF.ipynb), [paper](https://arxiv.org/abs/1711.00399) | +| [Contrastive Explanation Method](contrastive-explanation-method-pertinent-negatives) | Local | Black-box(_differentiable_)/White-box(_keras, TensorFlow_) | Classification | Tabular(numeric), Image | "" | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | +| [Counterfactuals Guided by Prototypes](counterfactuals-guided-by-prototypes) | Local | Black-box(_differentiable_)/White-box(_keras, TensorFlow_) | Classification | Tabular, Categorical, Image | "" | [docs](../methods/CFProto.ipynb), [paper](https://arxiv.org/abs/1907.02584) | +| [counterfactuals-with-reinforcement-learning](counterfactuals-with-reinforcement-learning) | Local | Black-box | Classification | Tabular, Categorical, Image | "" | [docs](../methods/CFRL.ipynb), [paper](https://arxiv.org/abs/2106.02597) | ### 1. Global Feature Attribution @@ -331,9 +331,9 @@ required predictive property. This makes them less interpretable. #### Contrastive Explanation Method (Pertinent Positives) -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|---------------------------------------------|-------|-------------------------------------------|----------------|-------------------------|-------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------| -| [Pertinent Positives](../methods/CEM.ipynb) | Local | Black-box/White-box _(Keras, TensorFlow)_ | Classification | Tabular(numeric), Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|---------------------------------------------|-------|------------------------------------------|----------------|-------------------------|-------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------| +| [Pertinent Positives](../methods/CEM.ipynb) | Local | Black-box/White-box(_Keras, TensorFlow_) | Classification | Tabular(numeric), Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | Introduced by [Amit Dhurandhar, et al](https://arxiv.org/abs/1802.07623), a Pertinent Positive is the subset of features of an instance that still obtains the same classification as that instance. These differ from [anchors](anchors) @@ -438,9 +438,9 @@ ones provided by Alibi ([integrated gradients](integrated-gradients), [Kernel SH #### Integrated Gradients -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|--------------------------------------------------------------|-------|---------------------------------|----------------------------|--------------------------------------|------------------------------------------------------------|-----------------------------------------------------------------------------------------| -| [Integrated Gradients](../methods/IntegratedGradients.ipynb) | Local | White-box _(keras, TensorFlow)_ | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | [docs](../methods/IntegratedGradients.ipynb), [paper](https://arxiv.org/abs/1703.01365) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|--------------------------------------------------------------|-------|--------------------------------|----------------------------|--------------------------------------|------------------------------------------------------------|-----------------------------------------------------------------------------------------| +| [Integrated Gradients](../methods/IntegratedGradients.ipynb) | Local | White-box(_keras, TensorFlow_) | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | [docs](../methods/IntegratedGradients.ipynb), [paper](https://arxiv.org/abs/1703.01365) | The [integrated gradients](https://arxiv.org/abs/1703.01365) (IG) method computes the attribution of each feature by integrating the model partial derivatives along a path from a baseline point to the instance. This accumulates the @@ -453,10 +453,9 @@ assigns the probability of each class equally. This is dependent on domain knowl MNIST for instance a common choice is an image set to black. For numerical tabular data we can set the baseline as the average of each feature. -:::{admonition} **Note 3: Choice of Baseline** - (choice-of-baseline)= +:::{admonition} **Note 3: Choice of Baseline** The main difficulty with this method is that as IG is very [dependent on the baseline](https://distill.pub/2020/attribution-baselines/), it's essential to make sure you choose it well. Choosing a black image baseline for a classifier trained to distinguish between photos taken at day or @@ -496,11 +495,11 @@ for a wine classed as "Good" and is consistent with the ALE plot. (The median fo 9.7%) ::: -| Pros | Cons | -|----------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------| -| Simple to understand and visualize, especially with image data | White-box method. Requires the partial derivatives of the model outputs with respect to inputs | -| Doesn't require access to the training data | Requires [choosing the baseline](choice-of-baseline) which can have a significant effect on the outcome (See Note 5) | -| [Satisfies several desirable properties](lfa-properties) | | +| Pros | Cons | +|----------------------------------------------------------------|---------------------------------------------------------------------------------------------------------| +| Simple to understand and visualize, especially with image data | White-box method. Requires the partial derivatives of the model outputs with respect to inputs | +| Doesn't require access to the training data | Requires [choosing the baseline](choice-of-baseline) which can have a significant effect on the outcome | +| [Satisfies several desirable properties](lfa-properties) | | (kernel-shap)= @@ -569,9 +568,9 @@ using different methods and models in each case. #### Path-dependent tree SHAP -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|---------------------------------------------------------|--------|---------------------------------------------------------------------------------|----------------------------|----------------------|------------------------------------------------------------|-----------------------------------------------------------------------------------------------| -| [Tree SHAP (path-dependent)](../methods/TreeSHAP.ipynb) | Local | White-box _(XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models)_ | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|---------------------------------------------------------|--------|--------------------------------------------------------------------------------|----------------------------|----------------------|------------------------------------------------------------|-----------------------------------------------------------------------------------------------| +| [Tree SHAP (path-dependent)](../methods/TreeSHAP.ipynb) | Local | White-box(_XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models_) | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | Computing the Shapley values for a model requires computing the interventional conditional expectation for each member of the [power set](https://en.wikipedia.org/wiki/Power_set) of instance features. For tree-based models we can @@ -620,9 +619,9 @@ although there are differences due to using different methods and models in each #### Interventional Tree SHAP -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|---------------------------------------------------------|-------|---------------------------------------------------------------------------------|----------------------------|----------------------|------------------------------------------------------------|-----------------------------------------------------------------------------------------------| -| [Tree SHAP (interventional)](../methods/TreeSHAP.ipynb) | Local | White-box _(XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models)_ | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|---------------------------------------------------------|-------|--------------------------------------------------------------------------------|----------------------------|----------------------|------------------------------------------------------------|-----------------------------------------------------------------------------------------------| +| [Tree SHAP (interventional)](../methods/TreeSHAP.ipynb) | Local | White-box(_XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models_) | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | Suppose we sample a reference data point, $r$, from the training dataset. Let $F$ be the set of all features. For each feature, $i$, we then enumerate over all subsets of $S\subset F \setminus \{i\}$. If a subset is missing a feature, we @@ -681,7 +680,7 @@ method [see](https://hughchen.github.io/its_blog/index.html). Given an instance of the dataset and a prediction given by a model, a question naturally arises how would the instance minimally have to change for a different prediction to be provided. Such a generated instance is known as a -[counterfactual](https://en.wikipedia.org/wiki/Counterfactual_thinking). Counterfactuals are local explanations as they +counterfactual. Counterfactuals are local explanations as they relate to a single instance and model prediction. Given a classification model trained on the MNIST dataset and a sample from the dataset, a counterfactual would be a @@ -774,9 +773,9 @@ quick. If you want performant explanations in production environments, then the #### Counterfactual Instances -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|--------------------------------------------------|-------|-------------------------------------------|----------------|-------------------------|-----------------------------------------------------------------------------------|------------------------------------------------------------------------| -| [Counterfactuals Instances](../methods/CF.ipynb) | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CF.ipynb), [paper](https://arxiv.org/abs/1711.00399) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|--------------------------------------------------|-------|--------------------------------------------------------------|----------------|-------------------------|-----------------------------------------------------------------------------------|------------------------------------------------------------------------| +| [Counterfactuals Instances](../methods/CF.ipynb) | Local | Black-box(_differentiable_)/White-box(_keras, TensorFlow_) | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CF.ipynb), [paper](https://arxiv.org/abs/1711.00399) | Let the model be given by $f$, and let $p_t$ be the target probability of class $t$. Let $\lambda$ be a hyperparameter. This method constructs counterfactual instances from an instance $X$ by running gradient descent on a new instance $X'$ @@ -831,9 +830,9 @@ Counterfactual prediction: 1 #### Contrastive Explanation Method (Pertinent Negatives) -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|--------------------------------------------------------|-------|-------------------------------------------|----------------|-------------------------|-----------------------------------------------------------------------------------|-------------------------------------------------------------------------| -| [Contrastive Explanation Method](../methods/CEM.ipynb) | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|--------------------------------------------------------|-------|--------------------------------------------------------------|----------------|-------------------------|-----------------------------------------------------------------------------------|-------------------------------------------------------------------------| +| [Contrastive Explanation Method](../methods/CEM.ipynb) | Local | Black-box(_differentiable_)/White-box(_keras, TensorFlow_) | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | CEM follows a similar approach to the above but includes three new details. Firstly an elastic net $\beta L_{1} + L_{2}$ regularizer term is added to the loss. This term causes the solutions to be both close to the original instance and @@ -918,9 +917,9 @@ gradients in the black-box case due to having to numerically evaluate gradients. #### Counterfactuals Guided by Prototypes -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|------------------------------------------------------------------|-------|-------------------------------------------|----------------|-----------------------------|-----------------------------------------------------------------------------------|-----------------------------------------------------------------------------| -| [Counterfactuals Guided by Prototypes](../methods/CFProto.ipynb) | Local | Black-box/White-box _(keras, TensorFlow)_ | Classification | Tabular, Categorical, Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CFProto.ipynb), [paper](https://arxiv.org/abs/1907.02584) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|------------------------------------------------------------------|-------|--------------------------------------------------------------|----------------|-----------------------------|-----------------------------------------------------------------------------------|-----------------------------------------------------------------------------| +| [Counterfactuals Guided by Prototypes](../methods/CFProto.ipynb) | Local | Black-box(_differentiable_)/White-box(_keras, TensorFlow_) | Classification | Tabular, Categorical, Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CFProto.ipynb), [paper](https://arxiv.org/abs/1907.02584) | For this method, we add another term to the loss that optimizes for the distance between the counterfactual instance and representative members of the target class. In doing this, we require interpretability also to mean that the generated From ed1edf4cc905496a05b6e60027c91b032cb7ccdd Mon Sep 17 00:00:00 2001 From: Janis Klaise Date: Wed, 15 Dec 2021 17:32:53 +0000 Subject: [PATCH 56/60] Minor improvements to style and phrasing, image sizing --- doc/source/overview/high_level.md | 204 +++++++++++++++--------------- 1 file changed, 102 insertions(+), 102 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index aacc8a317..57fc3916e 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -23,7 +23,7 @@ answer questions such as: Alibi provides a set of **algorithms** or **methods** known as **explainers**. Each explainer provides some kind of insight about a model. The set of insights available given a trained model is dependent on a number of factors. For instance, if the model is a [regression](https://en.wikipedia.org/wiki/Regression_analysis) it makes sense to ask how -the prediction varies for some regressor. Whereas, it doesn't make sense to ask what minimal change is required to +the prediction varies for some regressor. Whereas it doesn't make sense to ask what minimal change is required to obtain a new class prediction. In general, given a model the explainers we can use are constrained by: - The **type of data** the model handles. Each insight applies to some or all of the following kinds of data: image, @@ -78,7 +78,7 @@ Here we use black-box to mean that the explainer method doesn't need access to t ### Global and Local Insights -Insights can be categorised into two categories — Local and global. Intuitively, a local insight says something +Insights can be categorised into two categories — local and global. Intuitively, a local insight says something about a single prediction that a model makes. For example, given an image classified as a cat by a model, a local insight might give the set of features (pixels) that need to stay the same for that image to remain classified as a cat. @@ -100,7 +100,7 @@ indirectly. There are several pitfalls of which the practitioner must be wary. Often bias exists in the data we feed machine learning models even when we exclude sensitive factors. Ostensibly explainability is a solution to this problem as it allows us to understand the model's decisions to check if they're appropriate. However, human bias itself is still an element. Hence, if the model is doing what we expect it to on biased -data, we are venerable to using explainability to justify relations in the data that may not be accurate. Consider: +data, we are vulnerable to using explainability to justify relations in the data that may not be accurate. Consider: > _"Before launching the model, risk analysts are asked to review the Shapley value explanations to ensure that the > model exhibits expected behavior (i.e., the model uses the same features that a human would for the same task)."_ > — [Explainable Machine Learning in Deployment](https://dl.acm.org/doi/pdf/10.1145/3351095.3375624) @@ -125,19 +125,19 @@ model performs as desired. Alibi provides several local and global insights with which to explore and understand models. The following gives the practitioner an understanding of which explainers are suitable in which situations. -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|--------------------------------------------------------------------------------------------|--------|--------------------------------------------------------------------------------|----------------------------|--------------------------------------|-------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------| -| [Accumulated Local Effects](accumulated-local-effects) | Global | Black-box | Classification, Regression | Tabular(numeric) | How does model prediction vary with respect to features of interest | [docs](../methods/ALE.ipynb), [paper](https://arxiv.org/abs/1612.08468) | -| [Anchors](anchors) | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | [docs](../methods/Anchors.ipynb), [paper](https://homes.cs.washington.edu/~marcotcr/aaai18.pdf) | -| [Pertinent Positives](contrastive-explanation-method-pertinent-positives) | Local | Black-box/White-box(_keras, TensorFlow_) | Classification | Tabular(numeric), Image | "" | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | -| [Integrated Gradients](integrated-gradients) | Local | White-box(_keras, TensorFlow_) | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | [docs](../methods/IntegratedGradients.ipynb), [paper](https://arxiv.org/abs/1703.01365) | -| [Kernel SHAP](kernel-shap) | Local | Black-box | Classification, Regression | Tabular, Categorical | "" | [docs](../methods/KernelSHAP.ipynb), [paper](https://papers.nips.cc/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html) | -| [Tree SHAP (path-dependent)](path-dependent-tree-shap) | Local | White-box(_XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models_) | Classification, Regression | Tabular, Categorical | "" | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | -| [Tree SHAP (interventional)](interventional-tree-shap) | Local | White-box(_XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models_) | Classification, Regression | Tabular, Categorical | "" | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | -| [Counterfactuals Instances](counterfactual-instances) | Local | Black-box(_differentiable_)/White-box(_keras, TensorFlow_) | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CF.ipynb), [paper](https://arxiv.org/abs/1711.00399) | -| [Contrastive Explanation Method](contrastive-explanation-method-pertinent-negatives) | Local | Black-box(_differentiable_)/White-box(_keras, TensorFlow_) | Classification | Tabular(numeric), Image | "" | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | -| [Counterfactuals Guided by Prototypes](counterfactuals-guided-by-prototypes) | Local | Black-box(_differentiable_)/White-box(_keras, TensorFlow_) | Classification | Tabular, Categorical, Image | "" | [docs](../methods/CFProto.ipynb), [paper](https://arxiv.org/abs/1907.02584) | -| [counterfactuals-with-reinforcement-learning](counterfactuals-with-reinforcement-learning) | Local | Black-box | Classification | Tabular, Categorical, Image | "" | [docs](../methods/CFRL.ipynb), [paper](https://arxiv.org/abs/2106.02597) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|--------------------------------------------------------------------------------------------|--------|--------------------------------------------------------------------------------|----------------------------|--------------------------------------------------|--------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------| +| [Accumulated Local Effects](accumulated-local-effects) | Global | Black-box | Classification, Regression | Tabular (numerical) | How does model prediction vary with respect to features of interest? | [docs](../methods/ALE.ipynb), [paper](https://arxiv.org/abs/1612.08468) | +| [Anchors](anchors) | Local | Black-box | Classification | Tabular (numerical, categorical), Text and Image | Which set of features of a given instance are sufficient to ensure the prediction stays the same?| [docs](../methods/Anchors.ipynb), [paper](https://homes.cs.washington.edu/~marcotcr/aaai18.pdf) | +| [Pertinent Positives](contrastive-explanation-method-pertinent-positives) | Local | Black-box, White-box (_TensorFlow_) | Classification | Tabular (numerical), Image | "" | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | +| [Integrated Gradients](integrated-gradients) | Local | White-box (_TensorFlow_) | Classification, Regression | Tabular (numerical, categorical), Text and Image | What does each feature contribute to the model prediction? | [docs](../methods/IntegratedGradients.ipynb), [paper](https://arxiv.org/abs/1703.01365) | +| [Kernel SHAP](kernel-shap) | Local | Black-box | Classification, Regression | Tabular (numerical, categorical) | "" | [docs](../methods/KernelSHAP.ipynb), [paper](https://papers.nips.cc/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html) | +| [Tree SHAP (path-dependent)](path-dependent-tree-shap) | Local | White-box (_XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models_)| Classification, Regression | Tabular (numerical, categorical) | "" | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | +| [Tree SHAP (interventional)](interventional-tree-shap) | Local | White-box (_XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models_)| Classification, Regression | Tabular (numerical, categorical) | "" | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | +| [Counterfactual Instances](counterfactual-instances) | Local | Black-box (_differentiable_), White-box (_TensorFlow_) | Classification | Tabular (numerical), Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CF.ipynb), [paper](https://arxiv.org/abs/1711.00399) | +| [Contrastive Explanation Method](contrastive-explanation-method-pertinent-negatives) | Local | Black-box (_differentiable_), White-box (_TensorFlow_) | Classification | Tabular (numerical), Image | "" | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | +| [Counterfactuals Guided by Prototypes](counterfactuals-guided-by-prototypes) | Local | Black-box (_differentiable_), White-box (_TensorFlow_) | Classification | Tabular (numerical, categorical), Image | "" | [docs](../methods/CFProto.ipynb), [paper](https://arxiv.org/abs/1907.02584) | +| [Counterfactuals with Reinforcement Learning](counterfactuals-with-reinforcement-learning) | Local | Black-box | Classification | Tabular (numerical, categorical), Image | "" | [docs](../methods/CFRL.ipynb), [paper](https://arxiv.org/abs/2106.02597) | ### 1. Global Feature Attribution @@ -155,9 +155,9 @@ decrease after it gets too hot. #### Accumulated Local Effects -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|---------------------------------------------------|--------|---------------|----------------------------|-------------------|---------------------------------------------------------------------|-------------------------------------------------------------------------| -| [Accumulated Local Effects](../methods/ALE.ipynb) | Global | Black-box | Classification, Regression | Tabular (numeric) | How does model prediction vary with respect to features of interest | [docs](../methods/ALE.ipynb), [paper](https://arxiv.org/abs/1612.08468) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|---------------------------------------------------|--------|---------------|----------------------------|---------------------|----------------------------------------------------------------------|-------------------------------------------------------------------------| +| [Accumulated Local Effects](../methods/ALE.ipynb) | Global | Black-box | Classification, Regression | Tabular (numerical) | How does model prediction vary with respect to features of interest? | [docs](../methods/ALE.ipynb), [paper](https://arxiv.org/abs/1612.08468) | Alibi only provides [accumulated local effects (ALE)](../methods/ALE.ipynb) plots because they give the most accurate insight. Alternatives include Partial Dependence Plots (PDP), of which ALE is a natural extension. Suppose we have a @@ -193,20 +193,20 @@ Hence, we see the model predicts higher alcohol content wines as being better: ```{image} images/ale-wine-quality.png :align: center :alt: ALE Plot of wine quality "good" class probability dependency on alcohol -:width: 700px +:width: 650px ``` :::{admonition} **Note 2: Categorical Variables and ALE** -Note that while ALE is well-defined on numeric tabular data, it isn't on categorical data. This is because it's unclear +Note that while ALE is well-defined on numerical tabular data, it isn't on categorical data. This is because it's unclear what the difference between two categorical values should be. Note that if the dataset has a mix of categorical and -numerical features, we can always take the ALE of the numerical ones. +numerical features, we can always compute the ALE of the numerical ones. ::: | Pros | Cons | |---------------------------------------------------------------------------------|------------------------------------------------------------------------------------------| -| ALE plots are easy to visualize and understand intuitively | Harder to explain the underlying motivation behind the method than PDP plots or M plots. | -| Very general as it is a black-box algorithm | Requires access to the training dataset. | -| Doesn't struggle with dependencies in the underlying features, unlike PDP plots | ALE of categorical variables is not well-defined. | +| ALE plots are easy to visualize and understand intuitively | Harder to explain the underlying motivation behind the method than PDP plots or M plots | +| Very general as it is a black-box algorithm | Requires access to the training dataset | +| Doesn't struggle with dependencies in the underlying features, unlike PDP plots | ALE of categorical variables is not well-defined | | ALE plots are fast | | ### 2. Local Necessary Features @@ -221,17 +221,16 @@ and [pertinent positives](contrastive-explanation-method-pertinent-positives). #### Anchors -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|-------------------------------------|---------|---------------|------------------|---------------------------------------|--------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------| -| [Anchors](../methods/Anchors.ipynb) | Local | Black-box | Classification | Tabular, Categorical, Text and Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | [docs](../methods/Anchors.ipynb), [paper](https://homes.cs.washington.edu/~marcotcr/aaai18.pdf) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|-------------------------------------|---------|---------------|------------------|---------------------------------------------------|---------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------| +| [Anchors](../methods/Anchors.ipynb) | Local | Black-box | Classification | Tabular (numerical, categorical), Text and Image | Which set of features of a given instance are sufficient to ensure the prediction stays the same? | [docs](../methods/Anchors.ipynb), [paper](https://homes.cs.washington.edu/~marcotcr/aaai18.pdf) | Anchors are introduced -in [Anchors: High-Precision Model-Agnostic Explanations](https://homes.cs.washington.edu/~marcotcr/aaai18.pdf). Further, -more detailed documentation can be found [here](../methods/Anchors.ipynb). +in [Anchors: High-Precision Model-Agnostic Explanations](https://homes.cs.washington.edu/~marcotcr/aaai18.pdf). More detailed documentation can be found [here](../methods/Anchors.ipynb). Let $A$ be a rule (set of predicates) acting on input instances, such that $A(x)$ returns $1$ if all its feature predicates are true. Consider the [wine quality dataset](https://archive.ics.uci.edu/ml/datasets/wine+quality) adjusted -by partitioning the data into good and bad wine based on a quality threshold of 0.5. +by partitioning the data into good and bad wine based on a quality threshold of 0.5: ```{image} images/wine-quality-ds.png :align: center @@ -245,13 +244,12 @@ by partitioning the data into good and bad wine based on a quality threshold of ``` An example of a predicate for this dataset would be a rule of the form: `'alcohol > 11.00'`. Note that the more -predicates we add to an anchor, the smaller it becomes, as by doing so, we filter out more instances of the data. +predicates we add to an anchor, the fewer instances it applies to, as by doing so, we filter out more instances of the data. Anchors are sets of predicates associated to a specific instance $x$ such that $x$ is in the anchor ($A(x)=1$) and any other point in the anchor has the same classification as $x$ ($z$ such that $A(z) = 1 \implies f(z) = f(x)$ where $f$ is the model). We're interested in finding the largest possible Anchor that contains $x$. -To construct an anchor using Alibi for tabular data such as the wine quality dataset ( -see [notebook](../examples/overview.ipynb)), we use: +To construct an anchor using Alibi for tabular data such as the wine quality dataset (see [notebook](../examples/overview.ipynb)), we use:
    @@ -277,18 +275,18 @@ Anchor = ['sulphates <= 0.55', 'volatile acidity > 0.52', 'alcohol <= 11.00', 'p Coverage = 0.0316930775646372 ``` -Note Alibi also gives an idea of the size (coverage) of the Anchor. +Note: Alibi also gives an idea of the size (coverage) of the Anchor. To find anchors Alibi sequentially builds them by generating a set of candidates from an initial anchor candidate, picking the best candidate of that set and then using that to generate the next set of candidates and repeating. Candidates are favoured on the basis of the number of instances they contain that are in the same class as $x$ under -$f$. The proportion of instances the anchor contains that are classified the same as $x$ is known as the precision of +$f$. The proportion of instances the anchor contains that are classified the same as $x$ is known as the *precision* of the anchor. We repeat the above process until we obtain a candidate anchor with satisfactory precision. If there are -multiple such anchors we choose the largest. +multiple such anchors we choose the largest (as measured by *coverage*). To compute which of two anchors is better, Alibi obtains an estimate by sampling from $\mathcal{D}(z|A)$ where $\mathcal{D}$ is the data distribution. The sampling process is dependent on the type of data. For tabular data, this -process is easy; we can fix the values in the Anchor and replace the rest with values from a point sampled from the +process is easy; we can fix the values in the Anchor and replace the rest with values from pointsS sampled from the dataset. In the case of textual data, anchors are sets of words that the sentence must include to be **in the** anchor. To sample @@ -296,7 +294,7 @@ from $\mathcal{D}(z|A)$, we need to find realistic sentences that include those support for three [transformer](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)) based language models: `DistilbertBaseUncased`, `BertBaseUncased`, and `RobertaBase`. -Image data being high dimensional means we first need to reduce it to a lower dimension. We can do this using image +Image data being high-dimensional means we first need to reduce it to a lower dimension. We can do this using image segmentation algorithms (Alibi supports [felzenszwalb](https://scikit-image.org/docs/dev/auto_examples/segmentation/plot_segmentations.html#felzenszwalb-s-efficient-graph-based-segmentation) , @@ -306,14 +304,14 @@ to find super-pixels. As a result, the anchors are made up of sets of these supe $\mathcal{D}(z|A)$ we replace those super-pixels that aren't in $A$ with something else. Alibi supports superimposing over the absent super-pixels with an image sampled from the dataset or taking the average value of the super-pixel. -The fact that the method requires perturbing and comparing anchors at each stage leads to some issues. For instance, the +The fact that the method requires perturbing and comparing anchors at each stage leads to some limitations. For instance, the more features, the more candidate anchors you can obtain at each process stage. The algorithm uses -a [Beam search](https://en.wikipedia.org/wiki/Beam_search) among the candidate anchors and solves for the best $B$ +a [beam search](https://en.wikipedia.org/wiki/Beam_search) among the candidate anchors and solves for the best $B$ anchors at each stage in the process by framing the problem as a [multi-armed bandit](https://en.wikipedia.org/wiki/Multi-armed_bandit). The runtime complexity is $\mathcal{O}(B \cdot p^2 + p^2 \cdot \mathcal{O}_{MAB[B \cdot p, B]})$ where $p$ is the number of features and $\mathcal{O}_ -{MAB[B \cdot p, B]}$ is the runtime for the multi-armed bandit. ( -See [Molnar](https://christophm.github.io/interpretable-ml-book/anchors.html#complexity-and-runtime) for more details.) +{MAB[B \cdot p, B]}$ is the runtime for the multi-armed bandit ( +see [Molnar](https://christophm.github.io/interpretable-ml-book/anchors.html#complexity-and-runtime) for more details). Similarly, comparing anchors that are close to decision boundaries can require many samples to obtain a clear winner between the two. Also, note that anchors close to decision boundaries are likely to have many predicates to ensure the @@ -331,9 +329,9 @@ required predictive property. This makes them less interpretable. #### Contrastive Explanation Method (Pertinent Positives) -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|---------------------------------------------|-------|------------------------------------------|----------------|-------------------------|-------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------| -| [Pertinent Positives](../methods/CEM.ipynb) | Local | Black-box/White-box(_Keras, TensorFlow_) | Classification | Tabular(numeric), Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|---------------------------------------------|-------|------------------------------------------|----------------|----------------------------|-------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------| +| [Pertinent Positives](../methods/CEM.ipynb) | Local | Black-box, White-box (_TensorFlow_) | Classification | Tabular (numerical), Image | Which set of features of a given instance is sufficient to ensure the prediction stays the same | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | Introduced by [Amit Dhurandhar, et al](https://arxiv.org/abs/1802.07623), a Pertinent Positive is the subset of features of an instance that still obtains the same classification as that instance. These differ from [anchors](anchors) @@ -362,7 +360,7 @@ Note that $\delta$ is constrained to only "take away" features from the instance here: removing features from an instance requires correctly defining non-informative feature values. For the [MNIST digits](http://yann.lecun.com/exdb/mnist/), it's reasonable to assume that the black background behind each digit represents an absence of information. Similarly, in the case of colour images, you might take the median pixel -value to convey no information, and moving away from this value adds information. For numeric tabular data we can use +value to convey no information, and moving away from this value adds information. For numerical tabular data we can use the feature mean. In general, having to choose a non-informative value for each feature is non-trivial and domain knowledge is required. This is the reverse to the [contrastive explanation method (pertinent-negatives)](contrastive-explanation-method-pertinent-negatives) method @@ -411,10 +409,10 @@ regression or a probability of a class in a classification model. If $x=(x_1,... attribution of the prediction at input $x$ is a vector $a=(a_1,... ,a_n) \in \mathbb{R}^n$ where $a_i$ is the contribution of $x_i$ to the prediction $f(x)$. -Alibi exposes four explainers to compute LFAs. [Integrated gradients](integrated-gradients) -, [kernel SHAP](kernel-shap) -, [path-dependent tree SHAP](path-dependent-tree-shap) and [interventional tree SHAP](interventional-tree-shap). The -last three of these are implemented in The [SHAP library](https://github.com/slundberg/shap) and Alibi acts as a +Alibi exposes four explainers to compute LFAs: [Integrated Gradients](integrated-gradients) +, [Kernel SHAP](kernel-shap) +, [Path-dependent Tree SHAP](path-dependent-tree-shap) and [Interventional Tree SHAP](interventional-tree-shap). The +last three of these are implemented in the [SHAP library](https://github.com/slundberg/shap) and Alibi acts as a wrapper. Interventional and path-dependent tree SHAP are white-box methods that apply to tree based models. (lfa-properties)= @@ -431,18 +429,18 @@ they should satisfy the following properties. Not all LFA methods satisfy these methods ([LIME](https://papers.nips.cc/paper/2017/file/8a20a8621978632d76c43dfd28b67767-Paper.pdf) for example) but the -ones provided by Alibi ([integrated gradients](integrated-gradients), [Kernel SHAP](kernel-shap) -, [path-dependent](path-dependent-tree-shap) and [interventional](interventional-tree-shap) tree SHAP) do. +ones provided by Alibi ([Integrated Gradients](integrated-gradients), [Kernel SHAP](kernel-shap) +, [Path-dependent](path-dependent-tree-shap) and [Interventional](interventional-tree-shap) Tree SHAP) do. (integrated-gradients)= #### Integrated Gradients -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|--------------------------------------------------------------|-------|--------------------------------|----------------------------|--------------------------------------|------------------------------------------------------------|-----------------------------------------------------------------------------------------| -| [Integrated Gradients](../methods/IntegratedGradients.ipynb) | Local | White-box(_keras, TensorFlow_) | Classification, Regression | Tabular, Categorical, Text and Image | What does each feature contribute to the model prediction? | [docs](../methods/IntegratedGradients.ipynb), [paper](https://arxiv.org/abs/1703.01365) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|--------------------------------------------------------------|-------|--------------------------------|----------------------------|--------------------------------------------------|------------------------------------------------------------|-----------------------------------------------------------------------------------------| +| [Integrated Gradients](../methods/IntegratedGradients.ipynb) | Local | White-box (_TensorFlow_) | Classification, Regression | Tabular (numerical, categorical), Text and Image | What does each feature contribute to the model prediction? | [docs](../methods/IntegratedGradients.ipynb), [paper](https://arxiv.org/abs/1703.01365) | -The [integrated gradients](https://arxiv.org/abs/1703.01365) (IG) method computes the attribution of each feature by +The [Integrated Gradients](https://arxiv.org/abs/1703.01365) (IG) method computes the attribution of each feature by integrating the model partial derivatives along a path from a baseline point to the instance. This accumulates the changes in the prediction that occur due to the changing feature values. These accumulated values represent how each feature contributes to the prediction for the instance of interest. A more detailed explanation of the method can be @@ -463,7 +461,7 @@ night may not be the best choice. ::: Note that IG is a white-box method that requires access to the model internals in order to compute the partial -derivatives. Alibi provides support for TensorFlow models. For example given a Tensorflow classifier trained on the wine +derivatives. Alibi provides support for TensorFlow models. For example given a TensorFlow classifier trained on the wine quality dataset we can compute the IG attributions (see [notebook](../examples/overview.ipynb)) by doing: ```ipython3 @@ -505,9 +503,9 @@ for a wine classed as "Good" and is consistent with the ALE plot. (The median fo #### Kernel SHAP -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|--------------------------------------------|-------|-------------|----------------------------|-----------------------|------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------| -| [Kernel SHAP](../methods/KernelSHAP.ipynb) | Local | Black-box | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | [docs](../methods/KernelSHAP.ipynb), [paper](https://papers.nips.cc/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|--------------------------------------------|-------|-------------|----------------------------|-----------------------------------|------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------| +| [Kernel SHAP](../methods/KernelSHAP.ipynb) | Local | Black-box | Classification, Regression | Tabular (numerical, categorical) | What does each feature contribute to the model prediction? | [docs](../methods/KernelSHAP.ipynb), [paper](https://papers.nips.cc/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html) | [Kernel SHAP](https://papers.nips.cc/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html) ([Alibi method docs](../methods/KernelSHAP.ipynb)) is a method for computing the Shapley values of a model around an @@ -519,8 +517,8 @@ Given any subset of features, we can ask how a feature's presence in that set co this by computing the model output for the set with and without the specific feature. We obtain the Shapley value for that feature by considering these contributions with and without it present for all possible subsets of features. -Two problems arise. Most models are not trained to take a variable number of input features. And secondly, -the [power set](https://en.wikipedia.org/wiki/Power_set) is prohibitively large when there are many features. +Two problems arise. Most models are not trained to take a variable number of input features. And secondly, considering all possible sets of absent features leads to considering +the [power set](https://en.wikipedia.org/wiki/Power_set) which is prohibitively large when there are many features. To solve the former, we sample from the **interventional conditional expectation**. This replaces missing features with values sampled from the training distribution. And to solve the latter, the kernel SHAP method samples on the space of @@ -529,7 +527,7 @@ subsets to obtain an estimate. A downside of interfering in the distribution like this is that doing so introduces unrealistic samples if there are dependencies between the features. -Alibi provides a wrapper to the [Shap library](https://github.com/slundberg/shap). We can use this explainer to compute +Alibi provides a wrapper to the [SHAP library](https://github.com/slundberg/shap). We can use this explainer to compute the Shapley values for a [sklearn](https://scikit-learn.org/stable/) [random forest](https://en.wikipedia.org/wiki/Random_forest) model using the following (see [notebook](../examples/overview.ipynb)): @@ -555,7 +553,7 @@ This gives the following output: :alt: Kernel SHAP applied to Wine quality dataset for class "Good" ``` -This result is similar to the one for [integrated gradients](comparison-to-ale) although there are differences due to +This result is similar to the one for [Integrated Gradients](comparison-to-ale) although there are differences due to using different methods and models in each case. | Pros | Cons | @@ -566,17 +564,17 @@ using different methods and models in each case. (path-dependent-tree-shap)= -#### Path-dependent tree SHAP +#### Path-dependent Tree SHAP -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|---------------------------------------------------------|--------|--------------------------------------------------------------------------------|----------------------------|----------------------|------------------------------------------------------------|-----------------------------------------------------------------------------------------------| -| [Tree SHAP (path-dependent)](../methods/TreeSHAP.ipynb) | Local | White-box(_XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models_) | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|---------------------------------------------------------|--------|--------------------------------------------------------------------------------|----------------------------|----------------------------------|------------------------------------------------------------|-----------------------------------------------------------------------------------------------| +| [Tree SHAP (path-dependent)](../methods/TreeSHAP.ipynb) | Local | White-box (_XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models_)| Classification, Regression | Tabular (numerical, categorical) | What does each feature contribute to the model prediction? | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | Computing the Shapley values for a model requires computing the interventional conditional expectation for each member of the [power set](https://en.wikipedia.org/wiki/Power_set) of instance features. For tree-based models we can approximate this distribution by applying the tree as usual. However, for missing features, we take both routes down the tree, weighting each path taken by the proportion of samples from the training dataset that go each way. The tree SHAP -method does this simultaneously for all members of the feature powerset, obtaining +method does this simultaneously for all members of the feature power set, obtaining a [significant speedup](https://www.researchgate.net/publication/333077391_Explainable_AI_for_Trees_From_Local_Explanations_to_Global_Understanding) . Assume the random forest has $T$ trees, with a depth of $D$, let $L$ be the number of leaves and let $M$ be the size of the feature set. If we compute the approximation for each member of the power set we obtain a time complexity of $O( @@ -605,7 +603,7 @@ From this we obtain: :alt: Path-dependent tree SHAP applied to Wine quality dataset for class "Good" ``` -This result is similar to the one for [integrated gradients](comparison-to-ale) and [kernel SHAP](kern-shap-plot) +This result is similar to the one for [Integrated Gradients](comparison-to-ale) and [Kernel SHAP](kern-shap-plot) although there are differences due to using different methods and models in each case. | Pros | Cons | @@ -619,9 +617,9 @@ although there are differences due to using different methods and models in each #### Interventional Tree SHAP -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|---------------------------------------------------------|-------|--------------------------------------------------------------------------------|----------------------------|----------------------|------------------------------------------------------------|-----------------------------------------------------------------------------------------------| -| [Tree SHAP (interventional)](../methods/TreeSHAP.ipynb) | Local | White-box(_XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models_) | Classification, Regression | Tabular, Categorical | What does each feature contribute to the model prediction? | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|---------------------------------------------------------|-------|--------------------------------------------------------------------------------|----------------------------|----------------------------------|------------------------------------------------------------|-----------------------------------------------------------------------------------------------| +| [Tree SHAP (interventional)](../methods/TreeSHAP.ipynb) | Local | White-box (_XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models_)| Classification, Regression | Tabular (numerical, categorical) | What does each feature contribute to the model prediction? | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | Suppose we sample a reference data point, $r$, from the training dataset. Let $F$ be the set of all features. For each feature, $i$, we then enumerate over all subsets of $S\subset F \setminus \{i\}$. If a subset is missing a feature, we @@ -662,11 +660,11 @@ From this we obtain: :alt: Interventional tree SHAP applied to Wine quality dataset for class "Good" ``` -This result is similar to the one for [integrated gradients](comparison-to-ale), [kernel SHAP](kern-shap-plot) -, [path-dependent tree SHAP](pd-tree-shap-plot) although there are differences due to using different methods and models +This result is similar to the one for [Integrated Gradients](comparison-to-ale), [Kernel SHAP](kern-shap-plot) +, [Path-dependent Tree SHAP](pd-tree-shap-plot) although there are differences due to using different methods and models in each case. -For a great interactive explanation of the interventional tree SHAP +For a great interactive explanation of the interventional Tree SHAP method [see](https://hughchen.github.io/its_blog/index.html). | Pros | Cons | @@ -680,7 +678,7 @@ method [see](https://hughchen.github.io/its_blog/index.html). Given an instance of the dataset and a prediction given by a model, a question naturally arises how would the instance minimally have to change for a different prediction to be provided. Such a generated instance is known as a -counterfactual. Counterfactuals are local explanations as they +*counterfactual*. Counterfactuals are local explanations as they relate to a single instance and model prediction. Given a classification model trained on the MNIST dataset and a sample from the dataset, a counterfactual would be a @@ -690,7 +688,7 @@ number from the original instance. ```{figure} images/rlcf-digits.png :align: center :alt: Samples from MNIST and counterfactuals for each. -:width: 700px +:width: 500px *From Samoilescu RF et al., Model-agnostic and Scalable Counterfactual Explanations via Reinforcement Learning, 2021* ``` @@ -724,7 +722,7 @@ require that the counterfactual be in distribution in order to be interpretable. ```{figure} images/interp-and-non-interp-cfs.png :align: center :alt: Examples of counterfactuals constructed using CFI and CFP methods -:width: 700px +:width: 500px *Original MNIST 7 instance, Counterfactual instances constructed using 1) **counterfactual instances** method, 2) **counterfactual instances with prototypes** method* @@ -741,7 +739,7 @@ data-distribution. ```{figure} images/interp-cfs.png :align: center :alt: Construction of different types of interpretable counterfactuals -:width: 500px +:width: 400px *Obtaining counterfactuals using gradient descent with and without autoencoder trained on data distribution* ``` @@ -762,7 +760,7 @@ Among the explainers in this section, there are two approaches taken. The first requests the insight. This happens during the `.explain()` method call on the explainer class. This is done by running gradient descent on model inputs to find a counterfactual. The methods that take this approach are **counterfactual instances**, **contrastive explanation**, and **counterfactuals guided by prototypes**. Thus, the `fit` method in these -cases are quick, but the `explain` method is slow. +cases is quick, but the `explain` method is slow. The other approach, **counterfactuals with reinforcement learning**, trains a model that produces explanations on demand. The training takes place during the `fit` method call, so this has a long runtime while the `explain` method is @@ -773,9 +771,9 @@ quick. If you want performant explanations in production environments, then the #### Counterfactual Instances -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|--------------------------------------------------|-------|--------------------------------------------------------------|----------------|-------------------------|-----------------------------------------------------------------------------------|------------------------------------------------------------------------| -| [Counterfactuals Instances](../methods/CF.ipynb) | Local | Black-box(_differentiable_)/White-box(_keras, TensorFlow_) | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CF.ipynb), [paper](https://arxiv.org/abs/1711.00399) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|--------------------------------------------------|-------|--------------------------------------------------------------|----------------|---------------------------|-----------------------------------------------------------------------------------|------------------------------------------------------------------------| +| [Counterfactual Instances](../methods/CF.ipynb) | Local | Black-box (_differentiable_), White-box (_TensorFlow_) | Classification | Tabular(numerical), Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CF.ipynb), [paper](https://arxiv.org/abs/1711.00399) | Let the model be given by $f$, and let $p_t$ be the target probability of class $t$. Let $\lambda$ be a hyperparameter. This method constructs counterfactual instances from an instance $X$ by running gradient descent on a new instance $X'$ @@ -794,8 +792,7 @@ A problem arises here in that encouraging sparse solutions doesn't necessarily g This happens because the loss doesn't prevent the counterfactual solution from moving off the data distribution. Thus, you will likely get an answer that doesn't look like something that you would expect to see from the data. -To use the counterfactual instances method from Alibi applied to the wine quality dataset ( -see [notebook](../examples/overview.ipynb)), use: +To use the counterfactual instances method from Alibi applied to the wine quality dataset (see [notebook](../examples/overview.ipynb)), use: ```ipython3 from alibi.explainers import Counterfactual @@ -820,7 +817,7 @@ Instance prediction: 0 Counterfactual prediction: 1 ``` -| pros | cons | +| Pros | Cons | |------------------------------------------------|---------------------------------------------------------------------------| | Both a black-box and white-box method | Not likely to give human interpretable instances | | Doesn't require access to the training dataset | Requires tuning of $\lambda$ hyperparameter | @@ -830,9 +827,9 @@ Counterfactual prediction: 1 #### Contrastive Explanation Method (Pertinent Negatives) -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|--------------------------------------------------------|-------|--------------------------------------------------------------|----------------|-------------------------|-----------------------------------------------------------------------------------|-------------------------------------------------------------------------| -| [Contrastive Explanation Method](../methods/CEM.ipynb) | Local | Black-box(_differentiable_)/White-box(_keras, TensorFlow_) | Classification | Tabular(numeric), Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|--------------------------------------------------------|-------|--------------------------------------------------------------|----------------|---------------------------|-----------------------------------------------------------------------------------|-------------------------------------------------------------------------| +| [Contrastive Explanation Method](../methods/CEM.ipynb) | Local | Black-box (_differentiable_), White-box (_TensorFlow_) | Classification | Tabular(numerical), Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | CEM follows a similar approach to the above but includes three new details. Firstly an elastic net $\beta L_{1} + L_{2}$ regularizer term is added to the loss. This term causes the solutions to be both close to the original instance and @@ -854,20 +851,23 @@ $$ A subtle aspect of this method is that it requires defining the absence or presence of features as delta is restrained only to allow you to add information. For the MNIST digits, it's reasonable to assume that the black background behind each written number represents an absence of information. Similarly, in the case of colour images, you might take the -median pixel value to convey no information, and moving away from this value adds information. For numeric tabular data, +median pixel value to convey no information, and moving away from this value adds information. For numerical tabular data, we can use the feature mean. In general, choosing a non-informative value for each feature is non-trivial, and domain knowledge is required. This is the reverse process to the [contrastive explanation method (pertinent-positives)](contrastive-explanation-method-pertinent-positives) method -introduced in the section on [local necessary features](#2-local-necessary-features) in which they take away features +introduced in the section on [local necessary features](#2-local-necessary-features) in which we take away features rather than add them. This approach extends the definition of interpretable to include a requirement that the computed counterfactual be believably a member of the dataset. This isn't always satisfied (see image below). In particular, the constructed counterfactual often doesn't look like a member of the target class. -```{image} images/cem-non-interp.png +```{figure} images/cem-non-interp.png :align: center -:alt: Example of less interpretable result obtained by CEM +:alt: Example of less interpretable result obtained by CEM +:width: 400 + +*An original MNIST instance and a pertinent negative obtained using CEM.* ``` To compute a pertinent-negative using Alibi (see [notebook](../examples/overview.ipynb)) we use: @@ -905,7 +905,7 @@ Counterfactual prediction: 1 This method can apply to both black-box and white-box models. There is a performance cost from computing the numerical gradients in the black-box case due to having to numerically evaluate gradients. -| pros | cons | +| Pros | Cons | |----------------------------------------------------------------------------------|------------------------------------------------------------------------------------------| | Provides more interpretable instances than the counterfactual instances' method. | Requires access to the dataset to train the autoencoder | | Applies to both white and black-box models | Requires setup and configuration in choosing $c$, $\gamma$ and $\beta$ | @@ -917,9 +917,9 @@ gradients in the black-box case due to having to numerically evaluate gradients. #### Counterfactuals Guided by Prototypes -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|------------------------------------------------------------------|-------|--------------------------------------------------------------|----------------|-----------------------------|-----------------------------------------------------------------------------------|-----------------------------------------------------------------------------| -| [Counterfactuals Guided by Prototypes](../methods/CFProto.ipynb) | Local | Black-box(_differentiable_)/White-box(_keras, TensorFlow_) | Classification | Tabular, Categorical, Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CFProto.ipynb), [paper](https://arxiv.org/abs/1907.02584) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|------------------------------------------------------------------|-------|--------------------------------------------------------------|----------------|-----------------------------------------|-----------------------------------------------------------------------------------|-----------------------------------------------------------------------------| +| [Counterfactuals Guided by Prototypes](../methods/CFProto.ipynb) | Local | Black-box (_differentiable_), White-box (_TensorFlow_) | Classification | Tabular (numerical, categorical), Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CFProto.ipynb), [paper](https://arxiv.org/abs/1907.02584) | For this method, we add another term to the loss that optimizes for the distance between the counterfactual instance and representative members of the target class. In doing this, we require interpretability also to mean that the generated @@ -966,7 +966,7 @@ Instance prediction: 0 Counterfactual prediction: 1 ``` -| pros | cons | +| Pros | Cons | |------------------------------------------------------------|------------------------------------------------------------------------| | Generates more interpretable instances than the CEM method | Requires access to the dataset | | Black-box version of the method is fast | Requires setup and configuration in choosing $\gamma$, $\beta$ and $c$ | @@ -978,7 +978,7 @@ Counterfactual prediction: 1 | Explainer | Scope | Model types | Task types | Data types | Use | Resources | |----------------------------------------------------------------------|--------|-------------|----------------|-----------------------------|-----------------------------------------------------------------------------------|--------------------------------------------------------------------------| -| [counterfactuals-with-reinforcement-learning](../methods/CFRL.ipynb) | Local | Black-box | Classification | Tabular, Categorical, Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CFRL.ipynb), [paper](https://arxiv.org/abs/2106.02597) | +| [Counterfactuals with Reinforcement Learning](../methods/CFRL.ipynb) | Local | Black-box | Classification | Tabular (numerical, categorical), Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CFRL.ipynb), [paper](https://arxiv.org/abs/2106.02597) | This black-box method splits from the approach taken by the above three significantly. Instead of minimizing a loss during the explain method call, it trains a **new model** when **fitting** the explainer called an **actor** that takes @@ -1037,7 +1037,7 @@ Instance prediction: 0 Counterfactual prediction: 1 ``` -| pros | cons | +| Pros | Cons | |------------------------------------------------------------|-----------------------------------------| | Generates more interpretable instances than the CEM method | Longer to fit the model | | Very fast at runtime | Requires to fit an autoencoder | From 7af04d5cce20ee1fe7f8873cc9d54ed79f64be27 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Thu, 16 Dec 2021 15:17:34 +0000 Subject: [PATCH 57/60] Add final requested PR changes --- doc/source/examples/overview.ipynb | 69 ++++++++--------- doc/source/overview/high_level.md | 119 ++++++++++++++++------------- 2 files changed, 101 insertions(+), 87 deletions(-) diff --git a/doc/source/examples/overview.ipynb b/doc/source/examples/overview.ipynb index ab59be315..31383b603 100644 --- a/doc/source/examples/overview.ipynb +++ b/doc/source/examples/overview.ipynb @@ -368,12 +368,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "accuracy_score: 0.74\n", - "f1_score: [0.75471698 0.72340426]\n", - "accuracy_score: 0.815\n", - "f1_score: [0.8 0.82790698]\n", - "WARNING:tensorflow:Compiled the loaded model, but the compiled metrics have yet to be built. `model.compile_metrics` will be empty until you train or evaluate the model.\n", - "WARNING:tensorflow:Compiled the loaded model, but the compiled metrics have yet to be built. `model.compile_metrics` will be empty until you train or evaluate the model.\n" + "WARNING:tensorflow:No training configuration found in the save file, so the model was *not* compiled. Compile it manually.\n", + "WARNING:tensorflow:No training configuration found in the save file, so the model was *not* compiled. Compile it manually.\n" ] } ], @@ -516,7 +512,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "9cf0df4fbfdd4b32b84c920efa841d05", + "model_id": "e52c778f264e41be9ebf8faea9f9ff0c", "version_major": 2, "version_minor": 0 }, @@ -581,7 +577,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "dd00913e9f1247aaa55ff64e739d57c9", + "model_id": "eb5d9faccb284069be131b73df50ed16", "version_major": 2, "version_minor": 0 }, @@ -728,9 +724,7 @@ "id": "d7ccd4c7-b4b9-4b3b-bf5e-75aeb8653bc7", "metadata": {}, "source": [ - "### Note:\n", - "\n", - "There is some difference between the kernel SHAP and integrated gradient applied to the TensorFlow model and the SHAP methods applied to the random forest. This is expected due to the combination of different methods and models. They are reasonably similar overall. Notably, the ordering is nearly the same." + "**Note**: There is some difference between the kernel SHAP and integrated gradient applied to the TensorFlow model and the SHAP methods applied to the random forest. This is expected due to the combination of different methods and models. They are reasonably similar overall. Notably, the ordering is nearly the same." ] }, { @@ -787,7 +781,7 @@ "output_type": "stream", "text": [ "Anchor = ['alcohol > 10.10', 'volatile acidity <= 0.39']\n", - "Precision = 0.9542168674698795\n", + "Precision = 0.9527938342967245\n", "Coverage = 0.16263552960800667\n" ] } @@ -883,8 +877,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 10000/10000 [01:40<00:00, 99.82it/s]\n", - "100%|██████████| 1/1 [00:00<00:00, 224.34it/s]\n" + "100%|██████████| 10000/10000 [01:51<00:00, 89.81it/s]\n", + "100%|██████████| 1/1 [00:00<00:00, 231.84it/s]" ] }, { @@ -894,6 +888,13 @@ "Instance class prediction: 0\n", "Counterfactual class prediction: 1\n" ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] } ], "source": [ @@ -929,23 +930,23 @@ "name": "stdout", "output_type": "stream", "text": [ - "fixed acidity instance: 8.965 counter factual: 9.2 difference: -0.2350657\n", - "volatile acidity instance: 0.349 counter factual: 0.36 difference: -0.0108247\n", - "citric acid instance: 0.242 counter factual: 0.34 difference: -0.0977357\n", - "residual sugar instance: 2.194 counter factual: 1.6 difference: 0.5943643\n", - "chlorides instance: 0.059 counter factual: 0.062 difference: -0.0031443\n", - "free sulfur dioxide instance: 6.331 counter factual: 5.0 difference: 1.3312454\n", - "total sulfur dioxide instance: 14.989 counter factual: 12.0 difference: 2.9894428\n", - "density instance: 0.997 counter factual: 0.997 difference: 0.0003435\n", - "pH instance: 3.188 counter factual: 3.2 difference: -0.0118126\n", - "sulphates instance: 0.598 counter factual: 0.67 difference: -0.0718592\n", - "alcohol instance: 9.829 counter factual: 10.5 difference: -0.6712008\n" + "fixed acidity instance: 9.2 counter factual: 8.965 difference: 0.2350657\n", + "volatile acidity instance: 0.36 counter factual: 0.349 difference: 0.0108247\n", + "citric acid instance: 0.34 counter factual: 0.242 difference: 0.0977357\n", + "residual sugar instance: 1.6 counter factual: 2.194 difference: -0.5943643\n", + "chlorides instance: 0.062 counter factual: 0.059 difference: 0.0031443\n", + "free sulfur dioxide instance: 5.0 counter factual: 6.331 difference: -1.3312454\n", + "total sulfur dioxide instance: 12.0 counter factual: 14.989 difference: -2.9894428\n", + "density instance: 0.997 counter factual: 0.997 difference: -0.0003435\n", + "pH instance: 3.2 counter factual: 3.188 difference: 0.0118126\n", + "sulphates instance: 0.67 counter factual: 0.598 difference: 0.0718592\n", + "alcohol instance: 10.5 counter factual: 9.829 difference: 0.6712008\n" ] } ], "source": [ "cfrl = scaler.inverse_transform(result_cfrl.data['cf']['X'])\n", - "compare_instances(cfrl, x)" + "compare_instances(x, cfrl)" ] }, { @@ -957,7 +958,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "b97a06ffae564ab99d090d5995131dfa", + "model_id": "1e1742c764f0459d9e0ebc0c4c7afb0b", "version_major": 2, "version_minor": 0 }, @@ -971,7 +972,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "43c2cb57aa7c4623930006f905275d8c", + "model_id": "89ac33919803418d85d1df849799ae21", "version_major": 2, "version_minor": 0 }, @@ -1182,7 +1183,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "96113e9447e04cbaba5cdf80b4951115", + "model_id": "4919612e7bbc4260b3257970605e31a6", "version_major": 2, "version_minor": 0 }, @@ -1196,7 +1197,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "0a4d4bf548754589906fe06f4747cc9d", + "model_id": "617fb09172ca4c23b9ab0d9f78b99fa5", "version_major": 2, "version_minor": 0 }, @@ -1348,7 +1349,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "1d0da7aab3a34c73a81f322a235950e2", + "model_id": "1c1153a1778d43adb1ba9e3439db7759", "version_major": 2, "version_minor": 0 }, @@ -1362,7 +1363,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "0bb39aad9e794a5e827815d42b6e54eb", + "model_id": "8f1aaf7051324c8ead52947100a8259c", "version_major": 2, "version_minor": 0 }, @@ -1517,7 +1518,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "00a1c1c8c2674f5ba15abd016be40466", + "model_id": "3b77abedf32a4ed0be74476571b1336e", "version_major": 2, "version_minor": 0 }, @@ -1531,7 +1532,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "a582dac64c90406a96092e3c1474dd90", + "model_id": "86c295cacd564aaab813dca4c1951d3f", "version_major": 2, "version_minor": 0 }, diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 57fc3916e..3bdc91201 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -125,19 +125,19 @@ model performs as desired. Alibi provides several local and global insights with which to explore and understand models. The following gives the practitioner an understanding of which explainers are suitable in which situations. -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|--------------------------------------------------------------------------------------------|--------|--------------------------------------------------------------------------------|----------------------------|--------------------------------------------------|--------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------| -| [Accumulated Local Effects](accumulated-local-effects) | Global | Black-box | Classification, Regression | Tabular (numerical) | How does model prediction vary with respect to features of interest? | [docs](../methods/ALE.ipynb), [paper](https://arxiv.org/abs/1612.08468) | -| [Anchors](anchors) | Local | Black-box | Classification | Tabular (numerical, categorical), Text and Image | Which set of features of a given instance are sufficient to ensure the prediction stays the same?| [docs](../methods/Anchors.ipynb), [paper](https://homes.cs.washington.edu/~marcotcr/aaai18.pdf) | -| [Pertinent Positives](contrastive-explanation-method-pertinent-positives) | Local | Black-box, White-box (_TensorFlow_) | Classification | Tabular (numerical), Image | "" | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | -| [Integrated Gradients](integrated-gradients) | Local | White-box (_TensorFlow_) | Classification, Regression | Tabular (numerical, categorical), Text and Image | What does each feature contribute to the model prediction? | [docs](../methods/IntegratedGradients.ipynb), [paper](https://arxiv.org/abs/1703.01365) | -| [Kernel SHAP](kernel-shap) | Local | Black-box | Classification, Regression | Tabular (numerical, categorical) | "" | [docs](../methods/KernelSHAP.ipynb), [paper](https://papers.nips.cc/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html) | -| [Tree SHAP (path-dependent)](path-dependent-tree-shap) | Local | White-box (_XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models_)| Classification, Regression | Tabular (numerical, categorical) | "" | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | -| [Tree SHAP (interventional)](interventional-tree-shap) | Local | White-box (_XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models_)| Classification, Regression | Tabular (numerical, categorical) | "" | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | -| [Counterfactual Instances](counterfactual-instances) | Local | Black-box (_differentiable_), White-box (_TensorFlow_) | Classification | Tabular (numerical), Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CF.ipynb), [paper](https://arxiv.org/abs/1711.00399) | -| [Contrastive Explanation Method](contrastive-explanation-method-pertinent-negatives) | Local | Black-box (_differentiable_), White-box (_TensorFlow_) | Classification | Tabular (numerical), Image | "" | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | -| [Counterfactuals Guided by Prototypes](counterfactuals-guided-by-prototypes) | Local | Black-box (_differentiable_), White-box (_TensorFlow_) | Classification | Tabular (numerical, categorical), Image | "" | [docs](../methods/CFProto.ipynb), [paper](https://arxiv.org/abs/1907.02584) | -| [Counterfactuals with Reinforcement Learning](counterfactuals-with-reinforcement-learning) | Local | Black-box | Classification | Tabular (numerical, categorical), Image | "" | [docs](../methods/CFRL.ipynb), [paper](https://arxiv.org/abs/2106.02597) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|--------------------------------------------------------------------------------------------|--------|---------------------------------------------------------------------------------|----------------------------|--------------------------------------------------|---------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------| +| [Accumulated Local Effects](accumulated-local-effects) | Global | Black-box | Classification, Regression | Tabular (numerical) | How does model prediction vary with respect to features of interest? | [docs](../methods/ALE.ipynb), [paper](https://arxiv.org/abs/1612.08468) | +| [Anchors](anchors) | Local | Black-box | Classification | Tabular (numerical, categorical), Text and Image | Which set of features of a given instance are sufficient to ensure the prediction stays the same? | [docs](../methods/Anchors.ipynb), [paper](https://homes.cs.washington.edu/~marcotcr/aaai18.pdf) | +| [Pertinent Positives](contrastive-explanation-method-pertinent-positives) | Local | Black-box, White-box (_TensorFlow_) | Classification | Tabular (numerical), Image | "" | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | +| [Integrated Gradients](integrated-gradients) | Local | White-box (_TensorFlow_) | Classification, Regression | Tabular (numerical, categorical), Text and Image | What does each feature contribute to the model prediction? | [docs](../methods/IntegratedGradients.ipynb), [paper](https://arxiv.org/abs/1703.01365) | +| [Kernel SHAP](kernel-shap) | Local | Black-box | Classification, Regression | Tabular (numerical, categorical) | "" | [docs](../methods/KernelSHAP.ipynb), [paper](https://papers.nips.cc/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html) | +| [Tree SHAP (path-dependent)](path-dependent-tree-shap) | Local | White-box (_XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models_) | Classification, Regression | Tabular (numerical, categorical) | "" | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | +| [Tree SHAP (interventional)](interventional-tree-shap) | Local | White-box (_XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models_) | Classification, Regression | Tabular (numerical, categorical) | "" | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | +| [Counterfactual Instances](counterfactual-instances) | Local | Black-box (_differentiable_), White-box (_TensorFlow_) | Classification | Tabular (numerical), Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CF.ipynb), [paper](https://arxiv.org/abs/1711.00399) | +| [Contrastive Explanation Method](contrastive-explanation-method-pertinent-negatives) | Local | Black-box (_differentiable_), White-box (_TensorFlow_) | Classification | Tabular (numerical), Image | "" | [docs](../methods/CEM.ipynb), [paper](https://arxiv.org/abs/1802.07623) | +| [Counterfactuals Guided by Prototypes](counterfactuals-guided-by-prototypes) | Local | Black-box (_differentiable_), White-box (_TensorFlow_) | Classification | Tabular (numerical, categorical), Image | "" | [docs](../methods/CFProto.ipynb), [paper](https://arxiv.org/abs/1907.02584) | +| [Counterfactuals with Reinforcement Learning](counterfactuals-with-reinforcement-learning) | Local | Black-box | Classification | Tabular (numerical, categorical), Image | "" | [docs](../methods/CFRL.ipynb), [paper](https://arxiv.org/abs/2106.02597) | ### 1. Global Feature Attribution @@ -244,12 +244,13 @@ by partitioning the data into good and bad wine based on a quality threshold of ``` An example of a predicate for this dataset would be a rule of the form: `'alcohol > 11.00'`. Note that the more -predicates we add to an anchor, the fewer instances it applies to, as by doing so, we filter out more instances of the data. -Anchors are sets of predicates associated to a specific instance $x$ such that $x$ is in the anchor ($A(x)=1$) and any -other point in the anchor has the same classification as $x$ ($z$ such that $A(z) = 1 \implies f(z) = f(x)$ where $f$ is -the model). We're interested in finding the largest possible Anchor that contains $x$. +predicates we add to an anchor, the fewer instances it applies to, as by doing so, we filter out more instances of the +data. Anchors are sets of predicates associated to a specific instance $x$ such that $x$ is in the anchor ($A(x)=1$) and +any other point in the anchor has the same classification as $x$ ($z$ such that $A(z) = 1 \implies f(z) = f(x)$ where +$f$ is the model). We're interested in finding the Anchor that contains both the most instances and also $x$. -To construct an anchor using Alibi for tabular data such as the wine quality dataset (see [notebook](../examples/overview.ipynb)), we use: +To construct an anchor using Alibi for tabular data such as the wine quality +dataset (see [notebook](../examples/overview.ipynb)), we use:
    @@ -275,18 +276,19 @@ Anchor = ['sulphates <= 0.55', 'volatile acidity > 0.52', 'alcohol <= 11.00', 'p Coverage = 0.0316930775646372 ``` -Note: Alibi also gives an idea of the size (coverage) of the Anchor. +Note: Alibi also gives an idea of the size (coverage) of the Anchor which is the proportion of the input space the +anchor applies to. To find anchors Alibi sequentially builds them by generating a set of candidates from an initial anchor candidate, picking the best candidate of that set and then using that to generate the next set of candidates and repeating. Candidates are favoured on the basis of the number of instances they contain that are in the same class as $x$ under $f$. The proportion of instances the anchor contains that are classified the same as $x$ is known as the *precision* of the anchor. We repeat the above process until we obtain a candidate anchor with satisfactory precision. If there are -multiple such anchors we choose the largest (as measured by *coverage*). +multiple such anchors we choose the one that contains the most instances (as measured by *coverage*). To compute which of two anchors is better, Alibi obtains an estimate by sampling from $\mathcal{D}(z|A)$ where $\mathcal{D}$ is the data distribution. The sampling process is dependent on the type of data. For tabular data, this -process is easy; we can fix the values in the Anchor and replace the rest with values from pointsS sampled from the +process is easy; we can fix the values in the Anchor and replace the rest with values from points sampled from the dataset. In the case of textual data, anchors are sets of words that the sentence must include to be **in the** anchor. To sample @@ -566,9 +568,9 @@ using different methods and models in each case. #### Path-dependent Tree SHAP -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|---------------------------------------------------------|--------|--------------------------------------------------------------------------------|----------------------------|----------------------------------|------------------------------------------------------------|-----------------------------------------------------------------------------------------------| -| [Tree SHAP (path-dependent)](../methods/TreeSHAP.ipynb) | Local | White-box (_XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models_)| Classification, Regression | Tabular (numerical, categorical) | What does each feature contribute to the model prediction? | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|---------------------------------------------------------|-------|---------------------------------------------------------------------------------|----------------------------|----------------------------------|------------------------------------------------------------|-----------------------------------------------------------------------------------------------| +| [Tree SHAP (path-dependent)](../methods/TreeSHAP.ipynb) | Local | White-box (_XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models_) | Classification, Regression | Tabular (numerical, categorical) | What does each feature contribute to the model prediction? | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | Computing the Shapley values for a model requires computing the interventional conditional expectation for each member of the [power set](https://en.wikipedia.org/wiki/Power_set) of instance features. For tree-based models we can @@ -617,9 +619,9 @@ although there are differences due to using different methods and models in each #### Interventional Tree SHAP -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|---------------------------------------------------------|-------|--------------------------------------------------------------------------------|----------------------------|----------------------------------|------------------------------------------------------------|-----------------------------------------------------------------------------------------------| -| [Tree SHAP (interventional)](../methods/TreeSHAP.ipynb) | Local | White-box (_XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models_)| Classification, Regression | Tabular (numerical, categorical) | What does each feature contribute to the model prediction? | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|---------------------------------------------------------|-------|---------------------------------------------------------------------------------|----------------------------|----------------------------------|------------------------------------------------------------|-----------------------------------------------------------------------------------------------| +| [Tree SHAP (interventional)](../methods/TreeSHAP.ipynb) | Local | White-box (_XGBoost, LightGBM, CatBoost, scikit-learn and pyspark tree models_) | Classification, Regression | Tabular (numerical, categorical) | What does each feature contribute to the model prediction? | [docs](../methods/TreeSHAP.ipynb), [paper](https://www.nature.com/articles/s42256-019-0138-9) | Suppose we sample a reference data point, $r$, from the training dataset. Let $F$ be the set of all features. For each feature, $i$, we then enumerate over all subsets of $S\subset F \setminus \{i\}$. If a subset is missing a feature, we @@ -813,8 +815,8 @@ print("Counterfactual prediction:", model.predict(result_cf.data['cf']['X'])[0]. Gives the expected result: ``` -Instance prediction: 0 -Counterfactual prediction: 1 +Instance prediction: 0 # "good" +Counterfactual prediction: 1 # "bad" ``` | Pros | Cons | @@ -898,8 +900,8 @@ print("Counterfactual prediction:", model.predict(cem_cf)[0].argmax()) Gives the expected result: ``` -Instance prediction: 0 -Counterfactual prediction: 1 +Instance prediction: 0 # "good" +Counterfactual prediction: 1 # "bad" ``` This method can apply to both black-box and white-box models. There is a performance cost from computing the numerical @@ -962,10 +964,11 @@ print("Counterfactual prediction:", model.predict(proto_cf)[0].argmax()) We get the following results: ``` -Instance prediction: 0 -Counterfactual prediction: 1 +Instance prediction: 0 # "good" +Counterfactual prediction: 1 # "bad" ``` + | Pros | Cons | |------------------------------------------------------------|------------------------------------------------------------------------| | Generates more interpretable instances than the CEM method | Requires access to the dataset | @@ -976,9 +979,9 @@ Counterfactual prediction: 1 #### Counterfactuals with Reinforcement Learning -| Explainer | Scope | Model types | Task types | Data types | Use | Resources | -|----------------------------------------------------------------------|--------|-------------|----------------|-----------------------------|-----------------------------------------------------------------------------------|--------------------------------------------------------------------------| -| [Counterfactuals with Reinforcement Learning](../methods/CFRL.ipynb) | Local | Black-box | Classification | Tabular (numerical, categorical), Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CFRL.ipynb), [paper](https://arxiv.org/abs/2106.02597) | +| Explainer | Scope | Model types | Task types | Data types | Use | Resources | +|----------------------------------------------------------------------|-------|-------------|----------------|-----------------------------------------|-----------------------------------------------------------------------------------|--------------------------------------------------------------------------| +| [Counterfactuals with Reinforcement Learning](../methods/CFRL.ipynb) | Local | Black-box | Classification | Tabular (numerical, categorical), Image | What minimal change to features is required to reclassify the current prediction? | [docs](../methods/CFRL.ipynb), [paper](https://arxiv.org/abs/2106.02597) | This black-box method splits from the approach taken by the above three significantly. Instead of minimizing a loss during the explain method call, it trains a **new model** when **fitting** the explainer called an **actor** that takes @@ -1033,10 +1036,18 @@ print("Counterfactual prediction:", model.predict(result_cfrl.data['cf']['X'])[0 Which gives the following output: ``` -Instance prediction: 0 -Counterfactual prediction: 1 +Instance prediction: 0 # "good" +Counterfactual prediction: 1 # "bad" ``` + +:::{admonition} **Note 6: CFRL explainers** +Alibi exposes two explainer methods for counterfactuals with reinforcement learning. The first is the CounterfactualRL +and the second is CounterfactualRlTabular. The difference is that CounterfactualRlTabular is designed to support +categorical features. See the [CFRL documentation page](../methods/CFRL.ipynb) for more details. +::: + + | Pros | Cons | |------------------------------------------------------------|-----------------------------------------| | Generates more interpretable instances than the CEM method | Longer to fit the model | @@ -1050,21 +1061,23 @@ Counterfactual prediction: 1 For each of the four explainers, we have generated a counterfactual instance. We compare the original instance to each: -| Feature | Instance | CFI | CEM | CFP | CFRL | -|----------------------|----------|------------|------------|-----------|----------| -| sulphates | 0.67 | **0.64** | **0.549** | **0.623** | **0.67** | -| alcohol | 10.5 | **9.88** | **9.652** | **9.942** | **10.5** | -| residual sugar | 1.6 | **1.582** | **1.479** | 1.6 | 1.6 | -| chlorides | 0.062 | 0.061 | **0.057** | 0.062 | 0.062 | -| free sulfur dioxide | 5.0 | **4.955** | **2.707** | 5.0 | 5.0 | -| total sulfur dioxide | 12.0 | **11.324** | 12.0 | 12.0 | 12.0 | -| fixed acidity | 9.2 | **9.23** | 9.2 | 9.2 | 9.2 | -| volatile acidity | 0.36 | 0.36 | 0.36 | 0.36 | 0.36 | -| citric acid | 0.34 | 0.334 | 0.34 | 0.34 | 0.34 | -| density | 0.997 | 0.997 | 0.997 | 0.997 | 0.997 | -| pH | 3.2 | 3.199 | 3.2 | 3.2 | 3.2 | - -Looking at the ALE plots, we can see how the counterfactual methods change the features to flip the prediction. Note +| Feature | Instance | CFI | CEM | CFP | CFRL | +|----------------------|----------|------------|------------|-----------|------------| +| sulphates | 0.67 | **0.64** | **0.549** | **0.623** | **0.598** | +| alcohol | 10.5 | **9.88** | **9.652** | **9.942** | **9.829** | +| residual sugar | 1.6 | **1.582** | **1.479** | 1.6 | **2.194** | +| chlorides | 0.062 | 0.061 | **0.057** | 0.062 | **0.059** | +| free sulfur dioxide | 5.0 | **4.955** | **2.707** | 5.0 | **6.331** | +| total sulfur dioxide | 12.0 | **11.324** | 12.0 | 12.0 | **14.989** | +| fixed acidity | 9.2 | **9.23** | 9.2 | 9.2 | **8.965** | +| volatile acidity | 0.36 | 0.36 | 0.36 | 0.36 | **0.349** | +| citric acid | 0.34 | 0.334 | 0.34 | 0.34 | 0.242 | +| density | 0.997 | 0.997 | 0.997 | 0.997 | 0.997 | +| pH | 3.2 | 3.199 | 3.2 | 3.2 | 3.188 | + +The CFI, CEM, and CFRL methods all perturb more features than CFP, making them less interpretable. Looking at the ALE +plots, we can see how the counterfactual methods change the features to flip the prediction. In general, each method +seems to decrease the sulphates and alcohol content to obtain a "bad" classification consistent with the ALE plots. Note that the ALE plots potentially miss details local to individual instances as they are global insights. ```{image} images/ale-plots.png From 8981a2d57bddd8540d976cff54026026a72b1906 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Mon, 20 Dec 2021 15:42:58 +0000 Subject: [PATCH 58/60] Minor fix to black-box vs white-box methods section --- doc/source/overview/high_level.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 3bdc91201..699e004a4 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -64,11 +64,9 @@ an explainer uses some aspect of that model's internal structure. If the model i require taking gradients of the model predictions with respect to the inputs. Methods that require access to the model internals are known as **white-box** methods. Other explainers apply to any type of model. They can do so because the underlying method doesn't make use of the model internals. Instead, they only need to have access to the model outputs -given particular inputs. Methods that apply in this general setting are known as **black-box** methods. Note that -white-box methods are a subset of black-box methods and an explainer being a white-box method is a much stronger -constraint than it being a black-box method. Typically, white-box methods are faster than black-box methods as they can -exploit the model internals. For a more detailed discussion see -[white-box and black-box models](./white_box_black_box.md). +given particular inputs. Methods that apply in this general setting are known as **black-box** methods. Typically, +white-box methods are faster than black-box methods as they can exploit the model internals. For a more detailed +discussion see [white-box and black-box models](./white_box_black_box.md). :::{admonition} **Note 1: Black-box Definition** The use of black-box here varies subtly from the conventional use within machine learning. In most other contexts a From f6eb2c0143c273cd02372f276d5f4719d3bcb363 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Mon, 10 Jan 2022 17:01:37 +0000 Subject: [PATCH 59/60] Fix requested changes in PR --- doc/source/overview/high_level.md | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/doc/source/overview/high_level.md b/doc/source/overview/high_level.md index 699e004a4..71db726d8 100644 --- a/doc/source/overview/high_level.md +++ b/doc/source/overview/high_level.md @@ -7,7 +7,7 @@ ## What is Explainability? -**Explainability provides us with algorithms that give insights into trained models predictions.** It allows us to +**Explainability provides us with algorithms that give insights into trained model predictions.** It allows us to answer questions such as: - How does a prediction **change** dependent on feature inputs? @@ -22,14 +22,14 @@ answer questions such as: Alibi provides a set of **algorithms** or **methods** known as **explainers**. Each explainer provides some kind of insight about a model. The set of insights available given a trained model is dependent on a number of factors. For -instance, if the model is a [regression](https://en.wikipedia.org/wiki/Regression_analysis) it makes sense to ask how +instance, if the model is a [regression model](https://en.wikipedia.org/wiki/Regression_analysis) it makes sense to ask how the prediction varies for some regressor. Whereas it doesn't make sense to ask what minimal change is required to -obtain a new class prediction. In general, given a model the explainers we can use are constrained by: +obtain a new class prediction. In general, given a model the explainers available from **Alibi** are constrained by: - The **type of data** the model handles. Each insight applies to some or all of the following kinds of data: image, tabular or textual. -- The **task the model** performs, regression - or [classification](https://en.wikipedia.org/wiki/Statistical_classification). +- The **task the model** performs. Alibi provides explainers for regression + or [classification](https://en.wikipedia.org/wiki/Statistical_classification) models. - The **type of model** used. Examples of model types include [neural networks](https://en.wikipedia.org/wiki/Neural_network) and [random forests](https://en.wikipedia.org/wiki/Random_forest). @@ -300,9 +300,10 @@ segmentation algorithms (Alibi supports , [slic](https://scikit-image.org/docs/dev/auto_examples/segmentation/plot_segmentations.html#slic-k-means-based-image-segmentation) and [quickshift](https://scikit-image.org/docs/dev/auto_examples/segmentation/plot_segmentations.html#quickshift-image-segmentation)) -to find super-pixels. As a result, the anchors are made up of sets of these super-pixels, and so to sample from -$\mathcal{D}(z|A)$ we replace those super-pixels that aren't in $A$ with something else. Alibi supports superimposing -over the absent super-pixels with an image sampled from the dataset or taking the average value of the super-pixel. +to find super-pixels. The user can also use their own custom defined segmentation function. We then create the anchors +from these super-pixels. To sample from $\mathcal{D}(z|A)$ we replace those super-pixels that aren't in $A$ with +something else. Alibi supports superimposing over the absent super-pixels with an image sampled from the dataset or +taking the average value of the super-pixel. The fact that the method requires perturbing and comparing anchors at each stage leads to some limitations. For instance, the more features, the more candidate anchors you can obtain at each process stage. The algorithm uses @@ -359,10 +360,8 @@ Thus, we ensure that $\delta$ remains close to the original dataset distribution Note that $\delta$ is constrained to only "take away" features from the instance $x$. There is a slightly subtle point here: removing features from an instance requires correctly defining non-informative feature values. For the [MNIST digits](http://yann.lecun.com/exdb/mnist/), it's reasonable to assume that the black background behind each -digit represents an absence of information. Similarly, in the case of colour images, you might take the median pixel -value to convey no information, and moving away from this value adds information. For numerical tabular data we can use -the feature mean. In general, having to choose a non-informative value for each feature is non-trivial and domain -knowledge is required. This is the reverse to +digit represents an absence of information. In general, having to choose a non-informative value for each feature is +non-trivial and domain knowledge is required. This is the reverse to the [contrastive explanation method (pertinent-negatives)](contrastive-explanation-method-pertinent-negatives) method introduced in the section on [counterfactual instances](#4-counterfactual-instances). From 2fecd5e14a001dd52a3893cbeabbaf64196eb932 Mon Sep 17 00:00:00 2001 From: Alex Athorne Date: Tue, 11 Jan 2022 11:54:02 +0000 Subject: [PATCH 60/60] Fix alibi-testing git-protocol issue in dev requirements --- requirements/dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index 91ea9a9f2..0b497b09c 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -13,7 +13,7 @@ ipykernel>=5.1.0, <6.0.0 # for notebook tests nbconvert>=6.0.7, <7.0.0 # for notebook tests codecov>=2.0.15, <3.0.0 catboost>=1.0.0, <2.0.0 -alibi-testing @ git+git://github.com/SeldonIO/alibi-testing@master#egg=alibi-testing # pre-trained models for testing +alibi-testing @ git+https://github.com/SeldonIO/alibi-testing@master#egg=alibi-testing # pre-trained models for testing ray>=0.8.7, <2.0.0 # other pre-commit>=1.20.0, <3.0.0