From 23ad6d75c00f703cd1461666dd52fc1f9ac1be09 Mon Sep 17 00:00:00 2001
From: pat-alt <altmeyerpat@gmail.com>
Date: Fri, 21 Apr 2023 07:37:26 +0200
Subject: [PATCH] ECCCo

---
 CITATION.bib                                  |   6 +-
 Project.toml                                  |   2 +-
 README.md                                     |   4 +-
 .../dev/proposal/execute-results/html.json    |   2 +-
 .../notebooks/intro/execute-results/html.json |   2 +-
 .../proposal/execute-results/html.json        |   2 +-
 .../synthetic/execute-results/html.json       |   2 +-
 docs/notebooks/intro.html                     |  16 +--
 docs/notebooks/proposal.html                  |   2 +-
 docs/notebooks/synthetic.html                 |  12 +-
 docs/search.json                              |   8 +-
 notebooks/Manifest.toml                       |   2 +-
 notebooks/Project.toml                        |   2 +-
 notebooks/intro.qmd                           |  20 ++--
 notebooks/mnist.qmd                           | 111 ++++++++++++++++--
 notebooks/proposal.qmd                        |   2 +-
 notebooks/setup.jl                            |   4 +-
 notebooks/synthetic.qmd                       |  30 ++---
 paper/paper.pdf                               | Bin 303536 -> 303533 bytes
 paper/paper.tex                               |   6 +-
 src/{ECCCE.jl => ECCCo.jl}                    |   4 +-
 src/generator.jl                              |  18 +--
 src/penalties.jl                              |   2 +-
 test/runtests.jl                              |   4 +-
 www/cce_mnist.png                             | Bin 22069 -> 23455 bytes
 25 files changed, 174 insertions(+), 89 deletions(-)
 rename src/{ECCCE.jl => ECCCo.jl} (71%)

diff --git a/CITATION.bib b/CITATION.bib
index 752944a7..860cec36 100644
--- a/CITATION.bib
+++ b/CITATION.bib
@@ -1,7 +1,7 @@
-@misc{ECCCE.jl,
+@misc{ECCCo.jl,
 	author  = {Patrick Altmeyer},
-	title   = {ECCCE.jl},
-	url     = {https://github.com/pat-alt/ECCCE.jl},
+	title   = {ECCCo.jl},
+	url     = {https://github.com/pat-alt/ECCCo.jl},
 	version = {v0.1.0},
 	year    = {2023},
 	month   = {2}
diff --git a/Project.toml b/Project.toml
index 647598d4..0d31db08 100644
--- a/Project.toml
+++ b/Project.toml
@@ -1,4 +1,4 @@
-name = "ECCCE"
+name = "ECCCo"
 uuid = "0232c203-4013-4b0d-ad96-43e3e11ac3bf"
 authors = ["Patrick Altmeyer"]
 version = "0.1.0"
diff --git a/README.md b/README.md
index c599843e..dff821d3 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,3 @@
-# ECCCE
+# ECCCo
 
-[![Build Status](https://github.com/pat-alt/ECCCE.jl/actions/workflows/CI.yml/badge.svg?branch=main)](https://github.com/pat-alt/ECCCE.jl/actions/workflows/CI.yml?query=branch%3Amain)
+[![Build Status](https://github.com/pat-alt/ECCCo.jl/actions/workflows/CI.yml/badge.svg?branch=main)](https://github.com/pat-alt/ECCCo.jl/actions/workflows/CI.yml?query=branch%3Amain)
diff --git a/_freeze/dev/proposal/execute-results/html.json b/_freeze/dev/proposal/execute-results/html.json
index 195e16d6..2dc9aae2 100644
--- a/_freeze/dev/proposal/execute-results/html.json
+++ b/_freeze/dev/proposal/execute-results/html.json
@@ -1,7 +1,7 @@
 {
   "hash": "d7b4f9bf7f4bff7ce610fc8be4dcfb8b",
   "result": {
-    "markdown": "---\ntitle: High-Fidelity Counterfactual Explanations through Conformal Prediction\nsubtitle: Research Proposal\nabstract: |\n    We propose Conformal Counterfactual Explanations: an effortless and rigorous way to produce realistic and faithful Counterfactual Explanations using Conformal Prediction. To address the need for realistic counterfactuals, existing work has primarily relied on separate generative models to learn the data-generating process. While this is an effective way to produce plausible and model-agnostic counterfactual explanations, it not only introduces a significant engineering overhead but also reallocates the task of creating realistic model explanations from the model itself to the generative model. Recent work has shown that there is no need for any of this when working with probabilistic models that explicitly quantify their own uncertainty. Unfortunately, most models used in practice still do not fulfil that basic requirement, in which case we would like to have a way to quantify predictive uncertainty in a post-hoc fashion.\n---\n\n\n\n## Motivation\n\nCounterfactual Explanations are a powerful, flexible and intuitive way to not only explain black-box models but also enable affected individuals to challenge them through the means of Algorithmic Recourse. \n\n### Counterfactual Explanations or Adversarial Examples?\n\nMost state-of-the-art approaches to generating Counterfactual Explanations (CE) rely on gradient descent in the feature space. The key idea is to perturb inputs $x\\in\\mathcal{X}$ into a black-box model $f: \\mathcal{X} \\mapsto \\mathcal{Y}$ in order to change the model output $f(x)$ to some pre-specified target value $t\\in\\mathcal{Y}$. Formally, this boils down to defining some loss function $\\ell(f(x),t)$ and taking gradient steps in the minimizing direction. The so-generated counterfactuals are considered valid as soon as the predicted label matches the target label. A stripped-down counterfactual explanation is therefore little different from an adversarial example. In @fig-adv, for example, generic counterfactual search as in @wachter2017counterfactual has been applied to MNIST data.\n\n\n\n\n\n![You may not like it, but this is what stripped-down counterfactuals look like. Here we have used @wachter2017counterfactual to generate multiple counterfactuals for turning an 8 (eight) into a 3 (three).](www/you_may_not_like_it.png){#fig-adv}\n\nThe crucial difference between adversarial examples and counterfactuals is one of intent. While adversarial examples are typically intended to go unnoticed, counterfactuals in the context of Explainable AI are generally sought to be \"plausible\", \"realistic\" or \"feasible\". To fulfil this latter goal, researchers have come up with a myriad of ways. @joshi2019realistic were among the first to suggest that instead of searching counterfactuals in the feature space, we can instead traverse a latent embedding learned by a surrogate generative model. Similarly, @poyiadzi2020face use density ... Finally, @karimi2021algorithmic argues that counterfactuals should comply with the causal model that generates them [CHECK IF WE CAN PHASE THIS LIKE THIS]. Other related approaches include ... All of these different approaches have a common goal: they aim to ensure that the generated counterfactuals comply with the (learned) data-generating process (DGB). \n\n::: {#def-plausible}\n\n## Plausible Counterfactuals\n\nFormally, if $x \\sim \\mathcal{X}$ and for the corresponding counterfactual we have $x^{\\prime}\\sim\\mathcal{X}^{\\prime}$, then for $x^{\\prime}$ to be considered a plausible counterfactual, we need: $\\mathcal{X} \\approxeq \\mathcal{X}^{\\prime}$.\n\n:::\n\nIn the context of Algorithmic Recourse, it makes sense to strive for plausible counterfactuals, since anything else would essentially require individuals to move to out-of-distribution states. But it is worth noting that our ambition to meet this goal, may have implications on our ability to faithfully explain the behaviour of the underlying black-box model (arguably our principal goal). By essentially decoupling the task of learning plausible representations of the data from the model itself, we open ourselves up to vulnerabilities. Using a separate generative model to learn $\\mathcal{X}$, for example, has very serious implications for the generated counterfactuals. @fig-latent compares the results of applying REVISE [@joshi2019realistic] to MNIST data using two different Variational Auto-Encoders: while the counterfactual generated using an expressive (strong) VAE is compelling, the result relying on a less expressive (weak) VAE is not even valid. In this latter case, the decoder step of the VAE fails to yield values in $\\mathcal{X}$ and hence the counterfactual search in the learned latent space is doomed. \n\n![Counterfactual explanations for MNIST using a Latent Space generator: turning a nine (9) into a four (4).](www/mnist_9to4_latent.png){#fig-latent}\n\n> Here it would be nice to have another example where we poison the data going into the generative model to hide biases present in the data (e.g. Boston housing).\n\n- Latent can be manipulated: \n    - train biased model\n    - train VAE with biased variable removed/attacked (use Boston housing dataset)\n    - hypothesis: will generate bias-free explanations\n\n### From Plausible to High-Fidelity Counterfactuals {#sec-fidelity}\n\nIn light of the findings, we propose to generally avoid using surrogate models to learn $\\mathcal{X}$ in the context of Counterfactual Explanations.\n\n::: {#prp-surrogate}\n\n## Avoid Surrogates\n\nSince we are in the business of explaining a black-box model, the task of learning realistic representations of the data should not be reallocated from the model itself to some surrogate model.\n\n:::\n\nIn cases where the use of surrogate models cannot be avoided, we propose to weigh the plausibility of counterfactuals against their fidelity to the black-box model. In the context of Explainable AI, fidelity is defined as describing how an explanation approximates the prediction of the black-box model [@molnar2020interpretable]. Fidelity has become the default metric for evaluating Local Model-Agnostic Models, since they often involve local surrogate models whose predictions need not always match those of the black-box model. \n\nIn the case of Counterfactual Explanations, the concept of fidelity has so far been ignored. This is not altogether surprising, since by construction and design, Counterfactual Explanations work with the predictions of the black-box model directly: as stated above, a counterfactual $x^{\\prime}$ is considered valid if and only if $f(x^{\\prime})=t$, where $t$ denote some target outcome. \n\nDoes fidelity even make sense in the context of CE, and if so, how can we define it? In light of the examples in the previous section, we think it is urgent to introduce a notion of fidelity in this context, that relates to the distributional properties of the generated counterfactuals. In particular, we propose that a high-fidelity counterfactual $x^{\\prime}$ complies with the class-conditional distribution $\\mathcal{X}_{\\theta} = p_{\\theta}(X|y)$ where $\\theta$ denote the black-box model parameters. \n\n::: {#def-fidele}\n\n## High-Fidelity Counterfactuals\n\nLet $\\mathcal{X}_{\\theta}|y = p_{\\theta}(X|y)$ denote the class-conditional distribution of $X$ defined by $\\theta$. Then for $x^{\\prime}$ to be considered a high-fidelity counterfactual, we need: $\\mathcal{X}_{\\theta}|t \\approxeq \\mathcal{X}^{\\prime}$ where $t$ denotes the target outcome.\n\n:::\n\nIn order to assess the fidelity of counterfactuals, we propose the following two-step procedure:\n\n1) Generate samples $X_{\\theta}|y$ and $X^{\\prime}$ from $\\mathcal{X}_{\\theta}|t$ and $\\mathcal{X}^{\\prime}$, respectively.\n2) Compute the Maximum Mean Discrepancy (MMD) between $X_{\\theta}|y$ and $X^{\\prime}$. \n\nIf the computed value is different from zero, we can reject the null-hypothesis of fidelity.\n\n> Two challenges here: 1) implementing the sampling procedure in @grathwohl2020your; 2) it is unclear if MMD is really the right way to measure this. \n\n## Conformal Counterfactual Explanations\n\nIn @sec-fidelity, we have advocated for avoiding surrogate models in the context of Counterfactual Explanations. In this section, we introduce an alternative way to generate high-fidelity Counterfactual Explanations. In particular, we propose Conformal Counterfactual Explanations (ECCCE), that is Counterfactual Explanations that minimize the predictive uncertainty of conformal models. \n\n### Minimizing Predictive Uncertainty\n\n@schut2021generating demonstrated that the goal of generating realistic (plausible) counterfactuals can also be achieved by seeking counterfactuals that minimize the predictive uncertainty of the underlying black-box model. Similarly, @antoran2020getting ...\n\n- Problem: restricted to Bayesian models.\n- Solution: post-hoc predictive uncertainty quantification. In particular, Conformal Prediction. \n\n### Background on Conformal Prediction\n\n- Distribution-free, model-agnostic and scalable approach to predictive uncertainty quantification.\n- Conformal prediction is instance-based. So is CE. \n- Take any fitted model and turn it into a conformal model using calibration data.\n- Our approach, therefore, relaxes the restriction on the family of black-box models, at the cost of relying on a subset of the data. Arguably, data is often abundant and in most applications practitioners tend to hold out a test data set anyway. \n\n> Does the coverage guarantee carry over to counterfactuals?\n\n### Generating Conformal Counterfactuals\n\nWhile Conformal Prediction has recently grown in popularity, it does introduce a challenge in the context of classification: the predictions of Conformal Classifiers are set-valued and therefore difficult to work with, since they are, for example, non-differentiable. Fortunately, @stutz2022learning introduced carefully designed differentiable loss functions that make it possible to evaluate the performance of conformal predictions in training. We can leverage these recent advances in the context of gradient-based counterfactual search ...\n\n> Challenge: still need to implement these loss functions. \n\n## Experiments\n\n### Research Questions\n\n- Is CP alone enough to ensure realistic counterfactuals?\n- Do counterfactuals improve further as the models get better?\n- Do counterfactuals get more realistic as coverage\n- What happens as we vary coverage and setsize?\n- What happens as we improve the model robustness?\n- What happens as we improve the model's ability to incorporate predictive uncertainty (deep ensemble, laplace)?\n- What happens if we combine with DiCE, ClaPROAR, Gravitational?\n- What about CE robustness to endogenous shifts [@altmeyer2023endogenous]?\n\n- Benchmarking:\n    - add PROBE [@pawelczyk2022probabilistically] into the mix.\n    - compare travel costs to domain shits.\n\n> Nice to have: What about using Laplace Approximation, then Conformal Prediction? What about using Conformalised Laplace? \n\n## References\n\n",
+    "markdown": "---\ntitle: High-Fidelity Counterfactual Explanations through Conformal Prediction\nsubtitle: Research Proposal\nabstract: |\n    We propose Conformal Counterfactual Explanations: an effortless and rigorous way to produce realistic and faithful Counterfactual Explanations using Conformal Prediction. To address the need for realistic counterfactuals, existing work has primarily relied on separate generative models to learn the data-generating process. While this is an effective way to produce plausible and model-agnostic counterfactual explanations, it not only introduces a significant engineering overhead but also reallocates the task of creating realistic model explanations from the model itself to the generative model. Recent work has shown that there is no need for any of this when working with probabilistic models that explicitly quantify their own uncertainty. Unfortunately, most models used in practice still do not fulfil that basic requirement, in which case we would like to have a way to quantify predictive uncertainty in a post-hoc fashion.\n---\n\n\n\n## Motivation\n\nCounterfactual Explanations are a powerful, flexible and intuitive way to not only explain black-box models but also enable affected individuals to challenge them through the means of Algorithmic Recourse. \n\n### Counterfactual Explanations or Adversarial Examples?\n\nMost state-of-the-art approaches to generating Counterfactual Explanations (CE) rely on gradient descent in the feature space. The key idea is to perturb inputs $x\\in\\mathcal{X}$ into a black-box model $f: \\mathcal{X} \\mapsto \\mathcal{Y}$ in order to change the model output $f(x)$ to some pre-specified target value $t\\in\\mathcal{Y}$. Formally, this boils down to defining some loss function $\\ell(f(x),t)$ and taking gradient steps in the minimizing direction. The so-generated counterfactuals are considered valid as soon as the predicted label matches the target label. A stripped-down counterfactual explanation is therefore little different from an adversarial example. In @fig-adv, for example, generic counterfactual search as in @wachter2017counterfactual has been applied to MNIST data.\n\n\n\n\n\n![You may not like it, but this is what stripped-down counterfactuals look like. Here we have used @wachter2017counterfactual to generate multiple counterfactuals for turning an 8 (eight) into a 3 (three).](www/you_may_not_like_it.png){#fig-adv}\n\nThe crucial difference between adversarial examples and counterfactuals is one of intent. While adversarial examples are typically intended to go unnoticed, counterfactuals in the context of Explainable AI are generally sought to be \"plausible\", \"realistic\" or \"feasible\". To fulfil this latter goal, researchers have come up with a myriad of ways. @joshi2019realistic were among the first to suggest that instead of searching counterfactuals in the feature space, we can instead traverse a latent embedding learned by a surrogate generative model. Similarly, @poyiadzi2020face use density ... Finally, @karimi2021algorithmic argues that counterfactuals should comply with the causal model that generates them [CHECK IF WE CAN PHASE THIS LIKE THIS]. Other related approaches include ... All of these different approaches have a common goal: they aim to ensure that the generated counterfactuals comply with the (learned) data-generating process (DGB). \n\n::: {#def-plausible}\n\n## Plausible Counterfactuals\n\nFormally, if $x \\sim \\mathcal{X}$ and for the corresponding counterfactual we have $x^{\\prime}\\sim\\mathcal{X}^{\\prime}$, then for $x^{\\prime}$ to be considered a plausible counterfactual, we need: $\\mathcal{X} \\approxeq \\mathcal{X}^{\\prime}$.\n\n:::\n\nIn the context of Algorithmic Recourse, it makes sense to strive for plausible counterfactuals, since anything else would essentially require individuals to move to out-of-distribution states. But it is worth noting that our ambition to meet this goal, may have implications on our ability to faithfully explain the behaviour of the underlying black-box model (arguably our principal goal). By essentially decoupling the task of learning plausible representations of the data from the model itself, we open ourselves up to vulnerabilities. Using a separate generative model to learn $\\mathcal{X}$, for example, has very serious implications for the generated counterfactuals. @fig-latent compares the results of applying REVISE [@joshi2019realistic] to MNIST data using two different Variational Auto-Encoders: while the counterfactual generated using an expressive (strong) VAE is compelling, the result relying on a less expressive (weak) VAE is not even valid. In this latter case, the decoder step of the VAE fails to yield values in $\\mathcal{X}$ and hence the counterfactual search in the learned latent space is doomed. \n\n![Counterfactual explanations for MNIST using a Latent Space generator: turning a nine (9) into a four (4).](www/mnist_9to4_latent.png){#fig-latent}\n\n> Here it would be nice to have another example where we poison the data going into the generative model to hide biases present in the data (e.g. Boston housing).\n\n- Latent can be manipulated: \n    - train biased model\n    - train VAE with biased variable removed/attacked (use Boston housing dataset)\n    - hypothesis: will generate bias-free explanations\n\n### From Plausible to High-Fidelity Counterfactuals {#sec-fidelity}\n\nIn light of the findings, we propose to generally avoid using surrogate models to learn $\\mathcal{X}$ in the context of Counterfactual Explanations.\n\n::: {#prp-surrogate}\n\n## Avoid Surrogates\n\nSince we are in the business of explaining a black-box model, the task of learning realistic representations of the data should not be reallocated from the model itself to some surrogate model.\n\n:::\n\nIn cases where the use of surrogate models cannot be avoided, we propose to weigh the plausibility of counterfactuals against their fidelity to the black-box model. In the context of Explainable AI, fidelity is defined as describing how an explanation approximates the prediction of the black-box model [@molnar2020interpretable]. Fidelity has become the default metric for evaluating Local Model-Agnostic Models, since they often involve local surrogate models whose predictions need not always match those of the black-box model. \n\nIn the case of Counterfactual Explanations, the concept of fidelity has so far been ignored. This is not altogether surprising, since by construction and design, Counterfactual Explanations work with the predictions of the black-box model directly: as stated above, a counterfactual $x^{\\prime}$ is considered valid if and only if $f(x^{\\prime})=t$, where $t$ denote some target outcome. \n\nDoes fidelity even make sense in the context of CE, and if so, how can we define it? In light of the examples in the previous section, we think it is urgent to introduce a notion of fidelity in this context, that relates to the distributional properties of the generated counterfactuals. In particular, we propose that a high-fidelity counterfactual $x^{\\prime}$ complies with the class-conditional distribution $\\mathcal{X}_{\\theta} = p_{\\theta}(X|y)$ where $\\theta$ denote the black-box model parameters. \n\n::: {#def-fidele}\n\n## High-Fidelity Counterfactuals\n\nLet $\\mathcal{X}_{\\theta}|y = p_{\\theta}(X|y)$ denote the class-conditional distribution of $X$ defined by $\\theta$. Then for $x^{\\prime}$ to be considered a high-fidelity counterfactual, we need: $\\mathcal{X}_{\\theta}|t \\approxeq \\mathcal{X}^{\\prime}$ where $t$ denotes the target outcome.\n\n:::\n\nIn order to assess the fidelity of counterfactuals, we propose the following two-step procedure:\n\n1) Generate samples $X_{\\theta}|y$ and $X^{\\prime}$ from $\\mathcal{X}_{\\theta}|t$ and $\\mathcal{X}^{\\prime}$, respectively.\n2) Compute the Maximum Mean Discrepancy (MMD) between $X_{\\theta}|y$ and $X^{\\prime}$. \n\nIf the computed value is different from zero, we can reject the null-hypothesis of fidelity.\n\n> Two challenges here: 1) implementing the sampling procedure in @grathwohl2020your; 2) it is unclear if MMD is really the right way to measure this. \n\n## Conformal Counterfactual Explanations\n\nIn @sec-fidelity, we have advocated for avoiding surrogate models in the context of Counterfactual Explanations. In this section, we introduce an alternative way to generate high-fidelity Counterfactual Explanations. In particular, we propose Conformal Counterfactual Explanations (ECCCo), that is Counterfactual Explanations that minimize the predictive uncertainty of conformal models. \n\n### Minimizing Predictive Uncertainty\n\n@schut2021generating demonstrated that the goal of generating realistic (plausible) counterfactuals can also be achieved by seeking counterfactuals that minimize the predictive uncertainty of the underlying black-box model. Similarly, @antoran2020getting ...\n\n- Problem: restricted to Bayesian models.\n- Solution: post-hoc predictive uncertainty quantification. In particular, Conformal Prediction. \n\n### Background on Conformal Prediction\n\n- Distribution-free, model-agnostic and scalable approach to predictive uncertainty quantification.\n- Conformal prediction is instance-based. So is CE. \n- Take any fitted model and turn it into a conformal model using calibration data.\n- Our approach, therefore, relaxes the restriction on the family of black-box models, at the cost of relying on a subset of the data. Arguably, data is often abundant and in most applications practitioners tend to hold out a test data set anyway. \n\n> Does the coverage guarantee carry over to counterfactuals?\n\n### Generating Conformal Counterfactuals\n\nWhile Conformal Prediction has recently grown in popularity, it does introduce a challenge in the context of classification: the predictions of Conformal Classifiers are set-valued and therefore difficult to work with, since they are, for example, non-differentiable. Fortunately, @stutz2022learning introduced carefully designed differentiable loss functions that make it possible to evaluate the performance of conformal predictions in training. We can leverage these recent advances in the context of gradient-based counterfactual search ...\n\n> Challenge: still need to implement these loss functions. \n\n## Experiments\n\n### Research Questions\n\n- Is CP alone enough to ensure realistic counterfactuals?\n- Do counterfactuals improve further as the models get better?\n- Do counterfactuals get more realistic as coverage\n- What happens as we vary coverage and setsize?\n- What happens as we improve the model robustness?\n- What happens as we improve the model's ability to incorporate predictive uncertainty (deep ensemble, laplace)?\n- What happens if we combine with DiCE, ClaPROAR, Gravitational?\n- What about CE robustness to endogenous shifts [@altmeyer2023endogenous]?\n\n- Benchmarking:\n    - add PROBE [@pawelczyk2022probabilistically] into the mix.\n    - compare travel costs to domain shits.\n\n> Nice to have: What about using Laplace Approximation, then Conformal Prediction? What about using Conformalised Laplace? \n\n## References\n\n",
     "supporting": [
       "proposal_files/figure-html"
     ],
diff --git a/_freeze/notebooks/intro/execute-results/html.json b/_freeze/notebooks/intro/execute-results/html.json
index 28ce12ee..f296ca9b 100644
--- a/_freeze/notebooks/intro/execute-results/html.json
+++ b/_freeze/notebooks/intro/execute-results/html.json
@@ -1,7 +1,7 @@
 {
   "hash": "43d5045964ca39def434cb65914681bc",
   "result": {
-    "markdown": "::: {.cell execution_count=1}\n``` {.julia .cell-code}\ninclude(\"notebooks/setup.jl\")\neval(setup_notebooks)\n```\n:::\n\n\n# `ConformalGenerator`\n\nIn this section, we will look at a simple example involving synthetic data, a black-box model and a generic Conformal Counterfactual Generator.\n\n## Black-box Model\n\nWe consider a simple binary classification problem. Let $(X_i, Y_i), \\ i=1,...,n$ denote our feature-label pairs and let $\\mu: \\mathcal{X} \\mapsto \\mathcal{Y}$ denote the mapping from features to labels. For illustration purposes, we will use linearly separable data. \n\n::: {.cell execution_count=2}\n``` {.julia .cell-code}\ncounterfactual_data = load_linearly_separable()\n```\n:::\n\n\nWhile we could use a linear classifier in this case, let's pretend we need a black-box model for this task and rely on a small Multi-Layer Perceptron (MLP):\n\n::: {.cell execution_count=3}\n``` {.julia .cell-code}\nbuilder = MLJFlux.@builder Flux.Chain(\n    Dense(n_in, 32, relu),\n    Dense(32, n_out)\n)\nclf = NeuralNetworkClassifier(builder=builder, epochs=100)\n```\n:::\n\n\nWe can fit this model to data to produce plug-in predictions. \n\n## Conformal Prediction\n\nHere we will instead use a specific case of CP called *split conformal prediction* which can then be summarized as follows:^[In other places split conformal prediction is sometimes referred to as *inductive* conformal prediction.]\n\n1. Partition the training into a proper training set and a separate calibration set: $\\mathcal{D}_n=\\mathcal{D}^{\\text{train}} \\cup \\mathcal{D}^{\\text{cali}}$.\n2. Train the machine learning model on the proper training set: $\\hat\\mu_{i \\in \\mathcal{D}^{\\text{train}}}(X_i,Y_i)$.\n\nThe model $\\hat\\mu_{i \\in \\mathcal{D}^{\\text{train}}}$ can now produce plug-in predictions. \n\n::: callout-note\n\n## Starting Point\n\nNote that this represents the starting point in applications of Algorithmic Recourse: we have some pre-trained classifier $M$ for which we would like to generate plausible Counterfactual Explanations. Next, we turn to the calibration step. \n:::\n\n3. Compute nonconformity scores, $\\mathcal{S}$, using the calibration data $\\mathcal{D}^{\\text{cali}}$ and the fitted model $\\hat\\mu_{i \\in \\mathcal{D}^{\\text{train}}}$. \n4. For a user-specified desired coverage ratio $(1-\\alpha)$ compute the corresponding quantile, $\\hat{q}$, of the empirical distribution of nonconformity scores, $\\mathcal{S}$.\n5. For the given quantile and test sample $X_{\\text{test}}$, form the corresponding conformal prediction set: \n\n$$\nC(X_{\\text{test}})=\\{y:s(X_{\\text{test}},y) \\le \\hat{q}\\}\n$$ {#eq-set}\n\nThis is the default procedure used for classification and regression in [`ConformalPrediction.jl`](https://github.com/pat-alt/ConformalPrediction.jl). \n\nUsing the package, we can apply Split Conformal Prediction as follows:\n\n::: {.cell execution_count=4}\n``` {.julia .cell-code}\nX = table(permutedims(counterfactual_data.X))\ny =  counterfactual_data.output_encoder.labels\nconf_model = conformal_model(clf; method=:simple_inductive)\nmach = machine(conf_model, X, y)\nfit!(mach)\n```\n:::\n\n\nTo be clear, all of the calibration steps (3 to 5) are post hoc, and yet none of them involved any changes to the model parameters. These are two important characteristics of Split Conformal Prediction (SCP) that make it particularly useful in the context of Algorithmic Recourse. Firstly, the fact that SCP involves posthoc calibration steps that happen after training, ensures that we need not place any restrictions on the black-box model itself. This stands in contrast to the approach proposed by @schut2021generating in which they essentially restrict the class of models to Bayesian models. Secondly, the fact that the model itself is kept entirely intact ensures that the generated counterfactuals maintain fidelity to the model. Finally, note that we also have not resorted to a surrogate model to learn more about $X \\sim \\mathcal{X}$. Instead, we have used the fitted model itself and a calibration data set to learn about the model's predictive uncertainty. \n\n## Differentiable CP\n\nIn order to use CP in the context of gradient-based counterfactual search, we need it to be differentiable. @stutz2022learning introduce a framework for training differentiable conformal predictors. They introduce a configurable loss function as well as smooth set size penalty.\n\n### Smooth Set Size Penalty\n\nStarting with the former, @stutz2022learning propose the following:\n\n$$\n\\Omega(C_{\\theta}(x;\\tau)) = = \\max (0, \\sum_k C_{\\theta,k}(x;\\tau) - \\kappa)\n$$ {#eq-size-loss}\n\nHere, $C_{\\theta,k}(x;\\tau)$ is loosely defined as the probability that class $k$ is assigned to the conformal prediction set $C$. In the context of Conformal Training, this penalty reduces the **inefficiency** of the conformal predictor. \n\nIn our context, we are not interested in improving the model itself, but rather in producing **plausible** counterfactuals. Provided that our counterfactual $x^\\prime$ is already inside the target domain ($\\mathbb{I}_{y^\\prime = t}=1$), penalizing $\\Omega(C_{\\theta}(x;\\tau))$ corresponds to guiding counterfactuals into regions of the target domain that are characterized by low ambiguity: for $\\kappa=1$ the conformal prediction set includes only the target label $t$ as $\\Omega(C_{\\theta}(x;\\tau))$. Arguably, less ambiguous counterfactuals are more **plausible**. Since the search is guided purely by properties of the model itself and (exchangeable) calibration data, counterfactuals also maintain **high fidelity**.\n\nThe left panel of @fig-losses shows the smooth size penalty in the two-dimensional feature space of our synthetic data.\n\n### Configurable Classification Loss\n\nThe right panel of @fig-losses shows the configurable classification loss in the two-dimensional feature space of our synthetic data.\n\n::: {.cell execution_count=5}\n\n::: {.cell-output .cell-output-display execution_count=6}\n![Illustration of the smooth size loss and the configurable classification loss.](intro_files/figure-html/fig-losses-output-1.svg){#fig-losses}\n:::\n:::\n\n\n## Fidelity and Plausibility\n\nThe main evaluation criteria we are interested in are *fidelity* and *plausibility*. Interestingly, we could also consider using these measures as penalties in the counterfactual search.\n\n### Fidelity\n\nWe propose to define fidelity as follows:\n\n::: {#def-fidelity}\n\n## High-Fidelity Counterfactuals\n\nLet $\\mathcal{X}_{\\theta}|y = p_{\\theta}(X|y)$ denote the class-conditional distribution of $X$ defined by $\\theta$. Then for $x^{\\prime}$ to be considered a high-fidelity counterfactual, we need: $\\mathcal{X}_{\\theta}|t \\approxeq \\mathcal{X}^{\\prime}$ where $t$ denotes the target outcome.\n\n:::\n\nWe can generate samples from $p_{\\theta}(X|y)$ following @grathwohl2020your. In @fig-energy, I have applied the methodology to our synthetic data.\n\n::: {.cell execution_count=6}\n``` {.julia .cell-code}\nM = ECCCE.ConformalModel(conf_model, mach.fitresult)\n\nniter = 100\nnsamples = 100\n\nplts = []\nfor (i,target) ∈ enumerate(counterfactual_data.y_levels)\n    sampler = ECCCE.EnergySampler(M, counterfactual_data, target; niter=niter, nsamples=100)\n    Xgen = rand(sampler, nsamples)\n    plt = Plots.plot(M, counterfactual_data; target=target, zoom=-3,cbar=false)\n    Plots.scatter!(Xgen[1,:],Xgen[2,:],alpha=0.5,color=i,shape=:star,label=\"X|y=$target\")\n    push!(plts, plt)\nend\nPlots.plot(plts..., layout=(1,length(plts)), size=(img_height*length(plts),img_height))\n```\n\n::: {.cell-output .cell-output-display execution_count=7}\n![Energy-based conditional samples.](intro_files/figure-html/fig-energy-output-1.svg){#fig-energy}\n:::\n:::\n\n\nAs an evaluation metric and penalty, we could use the average distance of the counterfactual $x^{\\prime}$ from these generated samples, for example.\n\n### Plausibility\n\nWe propose to define plausibility as follows:\n\n::: {#def-plausible}\n\n## Plausible Counterfactuals\n\nFormally, let $\\mathcal{X}|t$ denote the conditional distribution of samples in the target class. As before, we have $x^{\\prime}\\sim\\mathcal{X}^{\\prime}$, then for $x^{\\prime}$ to be considered a plausible counterfactual, we need: $\\mathcal{X}|t \\approxeq \\mathcal{X}^{\\prime}$.\n\n:::\n\nAs an evaluation metric and penalty, we could use the average distance of the counterfactual $x^{\\prime}$ from (potentially bootstrapped) training samples in the target class, for example.\n\n## Counterfactual Explanations\n\nNext, let's generate counterfactual explanations for our synthetic data. We first wrap our model in a container that makes it compatible with `CounterfactualExplanations.jl`. Then we draw a random sample, determine its predicted label $\\hat{y}$ and choose the opposite label as our target. \n\n::: {.cell execution_count=7}\n``` {.julia .cell-code}\nx = select_factual(counterfactual_data,rand(1:size(counterfactual_data.X,2)))\ny_factual = predict_label(M, counterfactual_data, x)[1]\ntarget = counterfactual_data.y_levels[counterfactual_data.y_levels .!= y_factual][1]\n```\n:::\n\n\nThe generic Conformal Counterfactual Generator penalises the only the set size only:\n\n$$\nx^\\prime = \\arg \\min_{x^\\prime}  \\ell(M(x^\\prime),t) + \\lambda \\mathbb{I}_{y^\\prime = t} \\Omega(C_{\\theta}(x;\\tau)) \n$$ {#eq-solution}\n\n::: {.cell execution_count=8}\n\n::: {.cell-output .cell-output-display execution_count=9}\n![Comparison of counterfactuals produced using different generators.](intro_files/figure-html/fig-ce-output-1.svg){#fig-ce}\n:::\n:::\n\n\n## Multi-Class\n\n::: {.cell execution_count=9}\n``` {.julia .cell-code}\ncounterfactual_data = load_multi_class()\n```\n:::\n\n\n::: {.cell execution_count=10}\n``` {.julia .cell-code}\nX = table(permutedims(counterfactual_data.X))\ny =  counterfactual_data.output_encoder.labels\n```\n:::\n\n\n::: {.cell execution_count=11}\n\n::: {.cell-output .cell-output-display execution_count=12}\n![Illustration of the smooth size loss.](intro_files/figure-html/fig-pen-multi-output-1.svg){#fig-pen-multi}\n:::\n:::\n\n\n::: {.cell execution_count=12}\n\n::: {.cell-output .cell-output-display execution_count=13}\n![Illustration of the configurable classification loss.](intro_files/figure-html/fig-losses-multi-output-1.svg){#fig-losses-multi}\n:::\n:::\n\n\n::: {.cell execution_count=13}\n\n::: {.cell-output .cell-output-display execution_count=14}\n![Energy-based conditional samples.](intro_files/figure-html/fig-energy-multi-output-1.svg){#fig-energy-multi}\n:::\n:::\n\n\n::: {.cell execution_count=14}\n``` {.julia .cell-code}\nx = select_factual(counterfactual_data,rand(1:size(counterfactual_data.X,2)))\ny_factual = predict_label(M, counterfactual_data, x)[1]\ntarget = counterfactual_data.y_levels[counterfactual_data.y_levels .!= y_factual][1]\n```\n:::\n\n\n::: {.cell execution_count=15}\n\n::: {.cell-output .cell-output-display execution_count=16}\n![Comparison of counterfactuals produced using different generators.](intro_files/figure-html/fig-ce-multi-output-1.svg){#fig-ce-multi}\n:::\n:::\n\n\n## Benchmarks\n\n::: {.cell execution_count=16}\n``` {.julia .cell-code}\n# Data:\ndatasets = Dict(\n    :linearly_separable => load_linearly_separable(),\n    :overlapping => load_overlapping(),\n    :moons => load_moons(),\n    :circles => load_circles(),\n    :multi_class => load_multi_class(),\n)\n\n# Untrained Models:\nmodels = Dict(\n    :cov75 => ECCCE.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.75)),\n    :cov80 => ECCCE.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.80)),\n    :cov90 => ECCCE.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.90)),\n    :cov99 => ECCCE.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.99)),\n)\n```\n:::\n\n\nThen we can simply loop over the datasets and eventually concatenate the results like so:\n\n::: {.cell execution_count=17}\n``` {.julia .cell-code}\nusing CounterfactualExplanations.Evaluation: benchmark\nbmks = []\nmeasures = [\n    CounterfactualExplanations.distance,\n    ECCCE.distance_from_energy,\n    ECCCE.distance_from_targets\n]\nfor (dataname, dataset) in datasets\n    bmk = benchmark(\n        dataset; \n        models=deepcopy(models), \n        generators=generators, \n        measure=measures,\n        suppress_training=false, dataname=dataname,\n        n_individuals=10\n    )\n    push!(bmks, bmk)\nend\nbmk = reduce(vcat, bmks)\n```\n:::\n\n\n::: {.cell execution_count=18}\n``` {.julia .cell-code}\nf(ce) = CounterfactualExplanations.model_evaluation(ce.M, ce.data)\n@chain bmk() begin\n    @group_by(model, generator, dataname, variable)\n    @select(model, generator, dataname, ce, value)\n    @mutate(performance = f(ce))\n    @summarize(model=unique(model), generator=unique(generator), dataname=unique(dataname), performace=unique(performance), value=mean(value))\n    @ungroup\n    @filter(dataname == :multi_class)\n    @filter(model == :cov99)\n    @filter(variable == \"distance\")\nend\n```\n:::\n\n\n::: {#fig-benchmark .cell execution_count=19}\n\n::: {.cell-output .cell-output-display}\n![Circles.](intro_files/figure-html/fig-benchmark-output-1.png){#fig-benchmark-1}\n:::\n\n::: {.cell-output .cell-output-display}\n![Linearly Separable.](intro_files/figure-html/fig-benchmark-output-2.png){#fig-benchmark-2}\n:::\n\n::: {.cell-output .cell-output-display}\n![Moons.](intro_files/figure-html/fig-benchmark-output-3.png){#fig-benchmark-3}\n:::\n\n::: {.cell-output .cell-output-display}\n![Multi-class.](intro_files/figure-html/fig-benchmark-output-4.png){#fig-benchmark-4}\n:::\n\n::: {.cell-output .cell-output-display}\n![Overlapping.](intro_files/figure-html/fig-benchmark-output-5.png){#fig-benchmark-5}\n:::\n\nBenchmark results for the different generators.\n:::\n\n\n",
+    "markdown": "::: {.cell execution_count=1}\n``` {.julia .cell-code}\ninclude(\"notebooks/setup.jl\")\neval(setup_notebooks)\n```\n:::\n\n\n# `ConformalGenerator`\n\nIn this section, we will look at a simple example involving synthetic data, a black-box model and a generic Conformal Counterfactual Generator.\n\n## Black-box Model\n\nWe consider a simple binary classification problem. Let $(X_i, Y_i), \\ i=1,...,n$ denote our feature-label pairs and let $\\mu: \\mathcal{X} \\mapsto \\mathcal{Y}$ denote the mapping from features to labels. For illustration purposes, we will use linearly separable data. \n\n::: {.cell execution_count=2}\n``` {.julia .cell-code}\ncounterfactual_data = load_linearly_separable()\n```\n:::\n\n\nWhile we could use a linear classifier in this case, let's pretend we need a black-box model for this task and rely on a small Multi-Layer Perceptron (MLP):\n\n::: {.cell execution_count=3}\n``` {.julia .cell-code}\nbuilder = MLJFlux.@builder Flux.Chain(\n    Dense(n_in, 32, relu),\n    Dense(32, n_out)\n)\nclf = NeuralNetworkClassifier(builder=builder, epochs=100)\n```\n:::\n\n\nWe can fit this model to data to produce plug-in predictions. \n\n## Conformal Prediction\n\nHere we will instead use a specific case of CP called *split conformal prediction* which can then be summarized as follows:^[In other places split conformal prediction is sometimes referred to as *inductive* conformal prediction.]\n\n1. Partition the training into a proper training set and a separate calibration set: $\\mathcal{D}_n=\\mathcal{D}^{\\text{train}} \\cup \\mathcal{D}^{\\text{cali}}$.\n2. Train the machine learning model on the proper training set: $\\hat\\mu_{i \\in \\mathcal{D}^{\\text{train}}}(X_i,Y_i)$.\n\nThe model $\\hat\\mu_{i \\in \\mathcal{D}^{\\text{train}}}$ can now produce plug-in predictions. \n\n::: callout-note\n\n## Starting Point\n\nNote that this represents the starting point in applications of Algorithmic Recourse: we have some pre-trained classifier $M$ for which we would like to generate plausible Counterfactual Explanations. Next, we turn to the calibration step. \n:::\n\n3. Compute nonconformity scores, $\\mathcal{S}$, using the calibration data $\\mathcal{D}^{\\text{cali}}$ and the fitted model $\\hat\\mu_{i \\in \\mathcal{D}^{\\text{train}}}$. \n4. For a user-specified desired coverage ratio $(1-\\alpha)$ compute the corresponding quantile, $\\hat{q}$, of the empirical distribution of nonconformity scores, $\\mathcal{S}$.\n5. For the given quantile and test sample $X_{\\text{test}}$, form the corresponding conformal prediction set: \n\n$$\nC(X_{\\text{test}})=\\{y:s(X_{\\text{test}},y) \\le \\hat{q}\\}\n$$ {#eq-set}\n\nThis is the default procedure used for classification and regression in [`ConformalPrediction.jl`](https://github.com/pat-alt/ConformalPrediction.jl). \n\nUsing the package, we can apply Split Conformal Prediction as follows:\n\n::: {.cell execution_count=4}\n``` {.julia .cell-code}\nX = table(permutedims(counterfactual_data.X))\ny =  counterfactual_data.output_encoder.labels\nconf_model = conformal_model(clf; method=:simple_inductive)\nmach = machine(conf_model, X, y)\nfit!(mach)\n```\n:::\n\n\nTo be clear, all of the calibration steps (3 to 5) are post hoc, and yet none of them involved any changes to the model parameters. These are two important characteristics of Split Conformal Prediction (SCP) that make it particularly useful in the context of Algorithmic Recourse. Firstly, the fact that SCP involves posthoc calibration steps that happen after training, ensures that we need not place any restrictions on the black-box model itself. This stands in contrast to the approach proposed by @schut2021generating in which they essentially restrict the class of models to Bayesian models. Secondly, the fact that the model itself is kept entirely intact ensures that the generated counterfactuals maintain fidelity to the model. Finally, note that we also have not resorted to a surrogate model to learn more about $X \\sim \\mathcal{X}$. Instead, we have used the fitted model itself and a calibration data set to learn about the model's predictive uncertainty. \n\n## Differentiable CP\n\nIn order to use CP in the context of gradient-based counterfactual search, we need it to be differentiable. @stutz2022learning introduce a framework for training differentiable conformal predictors. They introduce a configurable loss function as well as smooth set size penalty.\n\n### Smooth Set Size Penalty\n\nStarting with the former, @stutz2022learning propose the following:\n\n$$\n\\Omega(C_{\\theta}(x;\\tau)) = = \\max (0, \\sum_k C_{\\theta,k}(x;\\tau) - \\kappa)\n$$ {#eq-size-loss}\n\nHere, $C_{\\theta,k}(x;\\tau)$ is loosely defined as the probability that class $k$ is assigned to the conformal prediction set $C$. In the context of Conformal Training, this penalty reduces the **inefficiency** of the conformal predictor. \n\nIn our context, we are not interested in improving the model itself, but rather in producing **plausible** counterfactuals. Provided that our counterfactual $x^\\prime$ is already inside the target domain ($\\mathbb{I}_{y^\\prime = t}=1$), penalizing $\\Omega(C_{\\theta}(x;\\tau))$ corresponds to guiding counterfactuals into regions of the target domain that are characterized by low ambiguity: for $\\kappa=1$ the conformal prediction set includes only the target label $t$ as $\\Omega(C_{\\theta}(x;\\tau))$. Arguably, less ambiguous counterfactuals are more **plausible**. Since the search is guided purely by properties of the model itself and (exchangeable) calibration data, counterfactuals also maintain **high fidelity**.\n\nThe left panel of @fig-losses shows the smooth size penalty in the two-dimensional feature space of our synthetic data.\n\n### Configurable Classification Loss\n\nThe right panel of @fig-losses shows the configurable classification loss in the two-dimensional feature space of our synthetic data.\n\n::: {.cell execution_count=5}\n\n::: {.cell-output .cell-output-display execution_count=6}\n![Illustration of the smooth size loss and the configurable classification loss.](intro_files/figure-html/fig-losses-output-1.svg){#fig-losses}\n:::\n:::\n\n\n## Fidelity and Plausibility\n\nThe main evaluation criteria we are interested in are *fidelity* and *plausibility*. Interestingly, we could also consider using these measures as penalties in the counterfactual search.\n\n### Fidelity\n\nWe propose to define fidelity as follows:\n\n::: {#def-fidelity}\n\n## High-Fidelity Counterfactuals\n\nLet $\\mathcal{X}_{\\theta}|y = p_{\\theta}(X|y)$ denote the class-conditional distribution of $X$ defined by $\\theta$. Then for $x^{\\prime}$ to be considered a high-fidelity counterfactual, we need: $\\mathcal{X}_{\\theta}|t \\approxeq \\mathcal{X}^{\\prime}$ where $t$ denotes the target outcome.\n\n:::\n\nWe can generate samples from $p_{\\theta}(X|y)$ following @grathwohl2020your. In @fig-energy, I have applied the methodology to our synthetic data.\n\n::: {.cell execution_count=6}\n``` {.julia .cell-code}\nM = ECCCo.ConformalModel(conf_model, mach.fitresult)\n\nniter = 100\nnsamples = 100\n\nplts = []\nfor (i,target) ∈ enumerate(counterfactual_data.y_levels)\n    sampler = ECCCo.EnergySampler(M, counterfactual_data, target; niter=niter, nsamples=100)\n    Xgen = rand(sampler, nsamples)\n    plt = Plots.plot(M, counterfactual_data; target=target, zoom=-3,cbar=false)\n    Plots.scatter!(Xgen[1,:],Xgen[2,:],alpha=0.5,color=i,shape=:star,label=\"X|y=$target\")\n    push!(plts, plt)\nend\nPlots.plot(plts..., layout=(1,length(plts)), size=(img_height*length(plts),img_height))\n```\n\n::: {.cell-output .cell-output-display execution_count=7}\n![Energy-based conditional samples.](intro_files/figure-html/fig-energy-output-1.svg){#fig-energy}\n:::\n:::\n\n\nAs an evaluation metric and penalty, we could use the average distance of the counterfactual $x^{\\prime}$ from these generated samples, for example.\n\n### Plausibility\n\nWe propose to define plausibility as follows:\n\n::: {#def-plausible}\n\n## Plausible Counterfactuals\n\nFormally, let $\\mathcal{X}|t$ denote the conditional distribution of samples in the target class. As before, we have $x^{\\prime}\\sim\\mathcal{X}^{\\prime}$, then for $x^{\\prime}$ to be considered a plausible counterfactual, we need: $\\mathcal{X}|t \\approxeq \\mathcal{X}^{\\prime}$.\n\n:::\n\nAs an evaluation metric and penalty, we could use the average distance of the counterfactual $x^{\\prime}$ from (potentially bootstrapped) training samples in the target class, for example.\n\n## Counterfactual Explanations\n\nNext, let's generate counterfactual explanations for our synthetic data. We first wrap our model in a container that makes it compatible with `CounterfactualExplanations.jl`. Then we draw a random sample, determine its predicted label $\\hat{y}$ and choose the opposite label as our target. \n\n::: {.cell execution_count=7}\n``` {.julia .cell-code}\nx = select_factual(counterfactual_data,rand(1:size(counterfactual_data.X,2)))\ny_factual = predict_label(M, counterfactual_data, x)[1]\ntarget = counterfactual_data.y_levels[counterfactual_data.y_levels .!= y_factual][1]\n```\n:::\n\n\nThe generic Conformal Counterfactual Generator penalises the only the set size only:\n\n$$\nx^\\prime = \\arg \\min_{x^\\prime}  \\ell(M(x^\\prime),t) + \\lambda \\mathbb{I}_{y^\\prime = t} \\Omega(C_{\\theta}(x;\\tau)) \n$$ {#eq-solution}\n\n::: {.cell execution_count=8}\n\n::: {.cell-output .cell-output-display execution_count=9}\n![Comparison of counterfactuals produced using different generators.](intro_files/figure-html/fig-ce-output-1.svg){#fig-ce}\n:::\n:::\n\n\n## Multi-Class\n\n::: {.cell execution_count=9}\n``` {.julia .cell-code}\ncounterfactual_data = load_multi_class()\n```\n:::\n\n\n::: {.cell execution_count=10}\n``` {.julia .cell-code}\nX = table(permutedims(counterfactual_data.X))\ny =  counterfactual_data.output_encoder.labels\n```\n:::\n\n\n::: {.cell execution_count=11}\n\n::: {.cell-output .cell-output-display execution_count=12}\n![Illustration of the smooth size loss.](intro_files/figure-html/fig-pen-multi-output-1.svg){#fig-pen-multi}\n:::\n:::\n\n\n::: {.cell execution_count=12}\n\n::: {.cell-output .cell-output-display execution_count=13}\n![Illustration of the configurable classification loss.](intro_files/figure-html/fig-losses-multi-output-1.svg){#fig-losses-multi}\n:::\n:::\n\n\n::: {.cell execution_count=13}\n\n::: {.cell-output .cell-output-display execution_count=14}\n![Energy-based conditional samples.](intro_files/figure-html/fig-energy-multi-output-1.svg){#fig-energy-multi}\n:::\n:::\n\n\n::: {.cell execution_count=14}\n``` {.julia .cell-code}\nx = select_factual(counterfactual_data,rand(1:size(counterfactual_data.X,2)))\ny_factual = predict_label(M, counterfactual_data, x)[1]\ntarget = counterfactual_data.y_levels[counterfactual_data.y_levels .!= y_factual][1]\n```\n:::\n\n\n::: {.cell execution_count=15}\n\n::: {.cell-output .cell-output-display execution_count=16}\n![Comparison of counterfactuals produced using different generators.](intro_files/figure-html/fig-ce-multi-output-1.svg){#fig-ce-multi}\n:::\n:::\n\n\n## Benchmarks\n\n::: {.cell execution_count=16}\n``` {.julia .cell-code}\n# Data:\ndatasets = Dict(\n    :linearly_separable => load_linearly_separable(),\n    :overlapping => load_overlapping(),\n    :moons => load_moons(),\n    :circles => load_circles(),\n    :multi_class => load_multi_class(),\n)\n\n# Untrained Models:\nmodels = Dict(\n    :cov75 => ECCCo.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.75)),\n    :cov80 => ECCCo.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.80)),\n    :cov90 => ECCCo.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.90)),\n    :cov99 => ECCCo.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.99)),\n)\n```\n:::\n\n\nThen we can simply loop over the datasets and eventually concatenate the results like so:\n\n::: {.cell execution_count=17}\n``` {.julia .cell-code}\nusing CounterfactualExplanations.Evaluation: benchmark\nbmks = []\nmeasures = [\n    CounterfactualExplanations.distance,\n    ECCCo.distance_from_energy,\n    ECCCo.distance_from_targets\n]\nfor (dataname, dataset) in datasets\n    bmk = benchmark(\n        dataset; \n        models=deepcopy(models), \n        generators=generators, \n        measure=measures,\n        suppress_training=false, dataname=dataname,\n        n_individuals=10\n    )\n    push!(bmks, bmk)\nend\nbmk = reduce(vcat, bmks)\n```\n:::\n\n\n::: {.cell execution_count=18}\n``` {.julia .cell-code}\nf(ce) = CounterfactualExplanations.model_evaluation(ce.M, ce.data)\n@chain bmk() begin\n    @group_by(model, generator, dataname, variable)\n    @select(model, generator, dataname, ce, value)\n    @mutate(performance = f(ce))\n    @summarize(model=unique(model), generator=unique(generator), dataname=unique(dataname), performace=unique(performance), value=mean(value))\n    @ungroup\n    @filter(dataname == :multi_class)\n    @filter(model == :cov99)\n    @filter(variable == \"distance\")\nend\n```\n:::\n\n\n::: {#fig-benchmark .cell execution_count=19}\n\n::: {.cell-output .cell-output-display}\n![Circles.](intro_files/figure-html/fig-benchmark-output-1.png){#fig-benchmark-1}\n:::\n\n::: {.cell-output .cell-output-display}\n![Linearly Separable.](intro_files/figure-html/fig-benchmark-output-2.png){#fig-benchmark-2}\n:::\n\n::: {.cell-output .cell-output-display}\n![Moons.](intro_files/figure-html/fig-benchmark-output-3.png){#fig-benchmark-3}\n:::\n\n::: {.cell-output .cell-output-display}\n![Multi-class.](intro_files/figure-html/fig-benchmark-output-4.png){#fig-benchmark-4}\n:::\n\n::: {.cell-output .cell-output-display}\n![Overlapping.](intro_files/figure-html/fig-benchmark-output-5.png){#fig-benchmark-5}\n:::\n\nBenchmark results for the different generators.\n:::\n\n\n",
     "supporting": [
       "intro_files/figure-html"
     ],
diff --git a/_freeze/notebooks/proposal/execute-results/html.json b/_freeze/notebooks/proposal/execute-results/html.json
index e9804de6..87f9d399 100644
--- a/_freeze/notebooks/proposal/execute-results/html.json
+++ b/_freeze/notebooks/proposal/execute-results/html.json
@@ -1,7 +1,7 @@
 {
   "hash": "24ab407f04257b00a84f7dcaee456281",
   "result": {
-    "markdown": "---\ntitle: High-Fidelity Counterfactual Explanations through Conformal Prediction\nsubtitle: Research Proposal\nabstract: |\n    We propose Conformal Counterfactual Explanations: an effortless and rigorous way to produce realistic and faithful Counterfactual Explanations using Conformal Prediction. To address the need for realistic counterfactuals, existing work has primarily relied on separate generative models to learn the data-generating process. While this is an effective way to produce plausible and model-agnostic counterfactual explanations, it not only introduces a significant engineering overhead but also reallocates the task of creating realistic model explanations from the model itself to the generative model. Recent work has shown that there is no need for any of this when working with probabilistic models that explicitly quantify their own uncertainty. Unfortunately, most models used in practice still do not fulfil that basic requirement, in which case we would like to have a way to quantify predictive uncertainty in a post-hoc fashion.\n---\n\n\n\n## Motivation\n\nCounterfactual Explanations are a powerful, flexible and intuitive way to not only explain black-box models but also enable affected individuals to challenge them through the means of Algorithmic Recourse. \n\n### Counterfactual Explanations or Adversarial Examples?\n\nMost state-of-the-art approaches to generating Counterfactual Explanations (CE) rely on gradient descent in the feature space. The key idea is to perturb inputs $x\\in\\mathcal{X}$ into a black-box model $f: \\mathcal{X} \\mapsto \\mathcal{Y}$ in order to change the model output $f(x)$ to some pre-specified target value $t\\in\\mathcal{Y}$. Formally, this boils down to defining some loss function $\\ell(f(x),t)$ and taking gradient steps in the minimizing direction. The so-generated counterfactuals are considered valid as soon as the predicted label matches the target label. A stripped-down counterfactual explanation is therefore little different from an adversarial example. In @fig-adv, for example, generic counterfactual search as in @wachter2017counterfactual has been applied to MNIST data.\n\n\n\n\n\n\n\n![You may not like it, but this is what stripped-down counterfactuals look like. Here we have used @wachter2017counterfactual to generate multiple counterfactuals for turning an 8 (eight) into a 3 (three).](www/you_may_not_like_it.png){#fig-adv}\n\nThe crucial difference between adversarial examples and counterfactuals is one of intent. While adversarial examples are typically intended to go unnoticed, counterfactuals in the context of Explainable AI are generally sought to be \"plausible\", \"realistic\" or \"feasible\". To fulfil this latter goal, researchers have come up with a myriad of ways. @joshi2019realistic were among the first to suggest that instead of searching counterfactuals in the feature space, we can instead traverse a latent embedding learned by a surrogate generative model. Similarly, @poyiadzi2020face use density ... Finally, @karimi2021algorithmic argues that counterfactuals should comply with the causal model that generates them [CHECK IF WE CAN PHASE THIS LIKE THIS]. Other related approaches include ... All of these different approaches have a common goal: they aim to ensure that the generated counterfactuals comply with the (learned) data-generating process (DGB). \n\n::: {#def-plausible}\n\n## Plausible Counterfactuals\n\nFormally, if $x \\sim \\mathcal{X}$ and for the corresponding counterfactual we have $x^{\\prime}\\sim\\mathcal{X}^{\\prime}$, then for $x^{\\prime}$ to be considered a plausible counterfactual, we need: $\\mathcal{X} \\approxeq \\mathcal{X}^{\\prime}$.\n\n:::\n\nIn the context of Algorithmic Recourse, it makes sense to strive for plausible counterfactuals, since anything else would essentially require individuals to move to out-of-distribution states. But it is worth noting that our ambition to meet this goal, may have implications on our ability to faithfully explain the behaviour of the underlying black-box model (arguably our principal goal). By essentially decoupling the task of learning plausible representations of the data from the model itself, we open ourselves up to vulnerabilities. Using a separate generative model to learn $\\mathcal{X}$, for example, has very serious implications for the generated counterfactuals. @fig-latent compares the results of applying REVISE [@joshi2019realistic] to MNIST data using two different Variational Auto-Encoders: while the counterfactual generated using an expressive (strong) VAE is compelling, the result relying on a less expressive (weak) VAE is not even valid. In this latter case, the decoder step of the VAE fails to yield values in $\\mathcal{X}$ and hence the counterfactual search in the learned latent space is doomed. \n\n\n\n\n\n\n\n![Counterfactual explanations for MNIST using a Latent Space generator: turning a nine (9) into a four (4).](www/mnist_9to4_latent.png){#fig-latent}\n\n> Here it would be nice to have another example where we poison the data going into the generative model to hide biases present in the data (e.g. Boston housing).\n\n- Latent can be manipulated: \n    - train biased model\n    - train VAE with biased variable removed/attacked (use Boston housing dataset)\n    - hypothesis: will generate bias-free explanations\n\n### From Plausible to High-Fidelity Counterfactuals {#sec-fidelity}\n\nIn light of the findings, we propose to generally avoid using surrogate models to learn $\\mathcal{X}$ in the context of Counterfactual Explanations.\n\n::: {#prp-surrogate}\n\n## Avoid Surrogates\n\nSince we are in the business of explaining a black-box model, the task of learning realistic representations of the data should not be reallocated from the model itself to some surrogate model.\n\n:::\n\nIn cases where the use of surrogate models cannot be avoided, we propose to weigh the plausibility of counterfactuals against their fidelity to the black-box model. In the context of Explainable AI, fidelity is defined as describing how an explanation approximates the prediction of the black-box model [@molnar2020interpretable]. Fidelity has become the default metric for evaluating Local Model-Agnostic Models, since they often involve local surrogate models whose predictions need not always match those of the black-box model. \n\nIn the case of Counterfactual Explanations, the concept of fidelity has so far been ignored. This is not altogether surprising, since by construction and design, Counterfactual Explanations work with the predictions of the black-box model directly: as stated above, a counterfactual $x^{\\prime}$ is considered valid if and only if $f(x^{\\prime})=t$, where $t$ denote some target outcome. \n\nDoes fidelity even make sense in the context of CE, and if so, how can we define it? In light of the examples in the previous section, we think it is urgent to introduce a notion of fidelity in this context, that relates to the distributional properties of the generated counterfactuals. In particular, we propose that a high-fidelity counterfactual $x^{\\prime}$ complies with the class-conditional distribution $\\mathcal{X}_{\\theta} = p_{\\theta}(X|y)$ where $\\theta$ denote the black-box model parameters. \n\n::: {#def-fidele}\n\n## High-Fidelity Counterfactuals\n\nLet $\\mathcal{X}_{\\theta}|y = p_{\\theta}(X|y)$ denote the class-conditional distribution of $X$ defined by $\\theta$. Then for $x^{\\prime}$ to be considered a high-fidelity counterfactual, we need: $\\mathcal{X}_{\\theta}|t \\approxeq \\mathcal{X}^{\\prime}$ where $t$ denotes the target outcome.\n\n:::\n\nIn order to assess the fidelity of counterfactuals, we propose the following two-step procedure:\n\n1) Generate samples $X_{\\theta}|y$ and $X^{\\prime}$ from $\\mathcal{X}_{\\theta}|t$ and $\\mathcal{X}^{\\prime}$, respectively.\n2) Compute the Maximum Mean Discrepancy (MMD) between $X_{\\theta}|y$ and $X^{\\prime}$. \n\nIf the computed value is different from zero, we can reject the null-hypothesis of fidelity.\n\n> Two challenges here: 1) implementing the sampling procedure in @grathwohl2020your; 2) it is unclear if MMD is really the right way to measure this. \n\n## Conformal Counterfactual Explanations\n\nIn @sec-fidelity, we have advocated for avoiding surrogate models in the context of Counterfactual Explanations. In this section, we introduce an alternative way to generate high-fidelity Counterfactual Explanations. In particular, we propose Conformal Counterfactual Explanations (ECCCE), that is Counterfactual Explanations that minimize the predictive uncertainty of conformal models. \n\n### Minimizing Predictive Uncertainty\n\n@schut2021generating demonstrated that the goal of generating realistic (plausible) counterfactuals can also be achieved by seeking counterfactuals that minimize the predictive uncertainty of the underlying black-box model. Similarly, @antoran2020getting ...\n\n- Problem: restricted to Bayesian models.\n- Solution: post-hoc predictive uncertainty quantification. In particular, Conformal Prediction. \n\n### Background on Conformal Prediction\n\n- Distribution-free, model-agnostic and scalable approach to predictive uncertainty quantification.\n- Conformal prediction is instance-based. So is CE. \n- Take any fitted model and turn it into a conformal model using calibration data.\n- Our approach, therefore, relaxes the restriction on the family of black-box models, at the cost of relying on a subset of the data. Arguably, data is often abundant and in most applications practitioners tend to hold out a test data set anyway. \n\n> Does the coverage guarantee carry over to counterfactuals?\n\n### Generating Conformal Counterfactuals\n\nWhile Conformal Prediction has recently grown in popularity, it does introduce a challenge in the context of classification: the predictions of Conformal Classifiers are set-valued and therefore difficult to work with, since they are, for example, non-differentiable. Fortunately, @stutz2022learning introduced carefully designed differentiable loss functions that make it possible to evaluate the performance of conformal predictions in training. We can leverage these recent advances in the context of gradient-based counterfactual search ...\n\n> Challenge: still need to implement these loss functions. \n\n## Experiments\n\n### Research Questions\n\n- Is CP alone enough to ensure realistic counterfactuals?\n- Do counterfactuals improve further as the models get better?\n- Do counterfactuals get more realistic as coverage\n- What happens as we vary coverage and setsize?\n- What happens as we improve the model robustness?\n- What happens as we improve the model's ability to incorporate predictive uncertainty (deep ensemble, laplace)?\n- What happens if we combine with DiCE, ClaPROAR, Gravitational?\n- What about CE robustness to endogenous shifts [@altmeyer2023endogenous]?\n\n- Benchmarking:\n    - add PROBE [@pawelczyk2022probabilistically] into the mix.\n    - compare travel costs to domain shits.\n\n> Nice to have: What about using Laplace Approximation, then Conformal Prediction? What about using Conformalised Laplace? \n\n## References\n\n",
+    "markdown": "---\ntitle: High-Fidelity Counterfactual Explanations through Conformal Prediction\nsubtitle: Research Proposal\nabstract: |\n    We propose Conformal Counterfactual Explanations: an effortless and rigorous way to produce realistic and faithful Counterfactual Explanations using Conformal Prediction. To address the need for realistic counterfactuals, existing work has primarily relied on separate generative models to learn the data-generating process. While this is an effective way to produce plausible and model-agnostic counterfactual explanations, it not only introduces a significant engineering overhead but also reallocates the task of creating realistic model explanations from the model itself to the generative model. Recent work has shown that there is no need for any of this when working with probabilistic models that explicitly quantify their own uncertainty. Unfortunately, most models used in practice still do not fulfil that basic requirement, in which case we would like to have a way to quantify predictive uncertainty in a post-hoc fashion.\n---\n\n\n\n## Motivation\n\nCounterfactual Explanations are a powerful, flexible and intuitive way to not only explain black-box models but also enable affected individuals to challenge them through the means of Algorithmic Recourse. \n\n### Counterfactual Explanations or Adversarial Examples?\n\nMost state-of-the-art approaches to generating Counterfactual Explanations (CE) rely on gradient descent in the feature space. The key idea is to perturb inputs $x\\in\\mathcal{X}$ into a black-box model $f: \\mathcal{X} \\mapsto \\mathcal{Y}$ in order to change the model output $f(x)$ to some pre-specified target value $t\\in\\mathcal{Y}$. Formally, this boils down to defining some loss function $\\ell(f(x),t)$ and taking gradient steps in the minimizing direction. The so-generated counterfactuals are considered valid as soon as the predicted label matches the target label. A stripped-down counterfactual explanation is therefore little different from an adversarial example. In @fig-adv, for example, generic counterfactual search as in @wachter2017counterfactual has been applied to MNIST data.\n\n\n\n\n\n\n\n![You may not like it, but this is what stripped-down counterfactuals look like. Here we have used @wachter2017counterfactual to generate multiple counterfactuals for turning an 8 (eight) into a 3 (three).](www/you_may_not_like_it.png){#fig-adv}\n\nThe crucial difference between adversarial examples and counterfactuals is one of intent. While adversarial examples are typically intended to go unnoticed, counterfactuals in the context of Explainable AI are generally sought to be \"plausible\", \"realistic\" or \"feasible\". To fulfil this latter goal, researchers have come up with a myriad of ways. @joshi2019realistic were among the first to suggest that instead of searching counterfactuals in the feature space, we can instead traverse a latent embedding learned by a surrogate generative model. Similarly, @poyiadzi2020face use density ... Finally, @karimi2021algorithmic argues that counterfactuals should comply with the causal model that generates them [CHECK IF WE CAN PHASE THIS LIKE THIS]. Other related approaches include ... All of these different approaches have a common goal: they aim to ensure that the generated counterfactuals comply with the (learned) data-generating process (DGB). \n\n::: {#def-plausible}\n\n## Plausible Counterfactuals\n\nFormally, if $x \\sim \\mathcal{X}$ and for the corresponding counterfactual we have $x^{\\prime}\\sim\\mathcal{X}^{\\prime}$, then for $x^{\\prime}$ to be considered a plausible counterfactual, we need: $\\mathcal{X} \\approxeq \\mathcal{X}^{\\prime}$.\n\n:::\n\nIn the context of Algorithmic Recourse, it makes sense to strive for plausible counterfactuals, since anything else would essentially require individuals to move to out-of-distribution states. But it is worth noting that our ambition to meet this goal, may have implications on our ability to faithfully explain the behaviour of the underlying black-box model (arguably our principal goal). By essentially decoupling the task of learning plausible representations of the data from the model itself, we open ourselves up to vulnerabilities. Using a separate generative model to learn $\\mathcal{X}$, for example, has very serious implications for the generated counterfactuals. @fig-latent compares the results of applying REVISE [@joshi2019realistic] to MNIST data using two different Variational Auto-Encoders: while the counterfactual generated using an expressive (strong) VAE is compelling, the result relying on a less expressive (weak) VAE is not even valid. In this latter case, the decoder step of the VAE fails to yield values in $\\mathcal{X}$ and hence the counterfactual search in the learned latent space is doomed. \n\n\n\n\n\n\n\n![Counterfactual explanations for MNIST using a Latent Space generator: turning a nine (9) into a four (4).](www/mnist_9to4_latent.png){#fig-latent}\n\n> Here it would be nice to have another example where we poison the data going into the generative model to hide biases present in the data (e.g. Boston housing).\n\n- Latent can be manipulated: \n    - train biased model\n    - train VAE with biased variable removed/attacked (use Boston housing dataset)\n    - hypothesis: will generate bias-free explanations\n\n### From Plausible to High-Fidelity Counterfactuals {#sec-fidelity}\n\nIn light of the findings, we propose to generally avoid using surrogate models to learn $\\mathcal{X}$ in the context of Counterfactual Explanations.\n\n::: {#prp-surrogate}\n\n## Avoid Surrogates\n\nSince we are in the business of explaining a black-box model, the task of learning realistic representations of the data should not be reallocated from the model itself to some surrogate model.\n\n:::\n\nIn cases where the use of surrogate models cannot be avoided, we propose to weigh the plausibility of counterfactuals against their fidelity to the black-box model. In the context of Explainable AI, fidelity is defined as describing how an explanation approximates the prediction of the black-box model [@molnar2020interpretable]. Fidelity has become the default metric for evaluating Local Model-Agnostic Models, since they often involve local surrogate models whose predictions need not always match those of the black-box model. \n\nIn the case of Counterfactual Explanations, the concept of fidelity has so far been ignored. This is not altogether surprising, since by construction and design, Counterfactual Explanations work with the predictions of the black-box model directly: as stated above, a counterfactual $x^{\\prime}$ is considered valid if and only if $f(x^{\\prime})=t$, where $t$ denote some target outcome. \n\nDoes fidelity even make sense in the context of CE, and if so, how can we define it? In light of the examples in the previous section, we think it is urgent to introduce a notion of fidelity in this context, that relates to the distributional properties of the generated counterfactuals. In particular, we propose that a high-fidelity counterfactual $x^{\\prime}$ complies with the class-conditional distribution $\\mathcal{X}_{\\theta} = p_{\\theta}(X|y)$ where $\\theta$ denote the black-box model parameters. \n\n::: {#def-fidele}\n\n## High-Fidelity Counterfactuals\n\nLet $\\mathcal{X}_{\\theta}|y = p_{\\theta}(X|y)$ denote the class-conditional distribution of $X$ defined by $\\theta$. Then for $x^{\\prime}$ to be considered a high-fidelity counterfactual, we need: $\\mathcal{X}_{\\theta}|t \\approxeq \\mathcal{X}^{\\prime}$ where $t$ denotes the target outcome.\n\n:::\n\nIn order to assess the fidelity of counterfactuals, we propose the following two-step procedure:\n\n1) Generate samples $X_{\\theta}|y$ and $X^{\\prime}$ from $\\mathcal{X}_{\\theta}|t$ and $\\mathcal{X}^{\\prime}$, respectively.\n2) Compute the Maximum Mean Discrepancy (MMD) between $X_{\\theta}|y$ and $X^{\\prime}$. \n\nIf the computed value is different from zero, we can reject the null-hypothesis of fidelity.\n\n> Two challenges here: 1) implementing the sampling procedure in @grathwohl2020your; 2) it is unclear if MMD is really the right way to measure this. \n\n## Conformal Counterfactual Explanations\n\nIn @sec-fidelity, we have advocated for avoiding surrogate models in the context of Counterfactual Explanations. In this section, we introduce an alternative way to generate high-fidelity Counterfactual Explanations. In particular, we propose Conformal Counterfactual Explanations (ECCCo), that is Counterfactual Explanations that minimize the predictive uncertainty of conformal models. \n\n### Minimizing Predictive Uncertainty\n\n@schut2021generating demonstrated that the goal of generating realistic (plausible) counterfactuals can also be achieved by seeking counterfactuals that minimize the predictive uncertainty of the underlying black-box model. Similarly, @antoran2020getting ...\n\n- Problem: restricted to Bayesian models.\n- Solution: post-hoc predictive uncertainty quantification. In particular, Conformal Prediction. \n\n### Background on Conformal Prediction\n\n- Distribution-free, model-agnostic and scalable approach to predictive uncertainty quantification.\n- Conformal prediction is instance-based. So is CE. \n- Take any fitted model and turn it into a conformal model using calibration data.\n- Our approach, therefore, relaxes the restriction on the family of black-box models, at the cost of relying on a subset of the data. Arguably, data is often abundant and in most applications practitioners tend to hold out a test data set anyway. \n\n> Does the coverage guarantee carry over to counterfactuals?\n\n### Generating Conformal Counterfactuals\n\nWhile Conformal Prediction has recently grown in popularity, it does introduce a challenge in the context of classification: the predictions of Conformal Classifiers are set-valued and therefore difficult to work with, since they are, for example, non-differentiable. Fortunately, @stutz2022learning introduced carefully designed differentiable loss functions that make it possible to evaluate the performance of conformal predictions in training. We can leverage these recent advances in the context of gradient-based counterfactual search ...\n\n> Challenge: still need to implement these loss functions. \n\n## Experiments\n\n### Research Questions\n\n- Is CP alone enough to ensure realistic counterfactuals?\n- Do counterfactuals improve further as the models get better?\n- Do counterfactuals get more realistic as coverage\n- What happens as we vary coverage and setsize?\n- What happens as we improve the model robustness?\n- What happens as we improve the model's ability to incorporate predictive uncertainty (deep ensemble, laplace)?\n- What happens if we combine with DiCE, ClaPROAR, Gravitational?\n- What about CE robustness to endogenous shifts [@altmeyer2023endogenous]?\n\n- Benchmarking:\n    - add PROBE [@pawelczyk2022probabilistically] into the mix.\n    - compare travel costs to domain shits.\n\n> Nice to have: What about using Laplace Approximation, then Conformal Prediction? What about using Conformalised Laplace? \n\n## References\n\n",
     "supporting": [
       "proposal_files/figure-html"
     ],
diff --git a/_freeze/notebooks/synthetic/execute-results/html.json b/_freeze/notebooks/synthetic/execute-results/html.json
index 682d0f96..273069ba 100644
--- a/_freeze/notebooks/synthetic/execute-results/html.json
+++ b/_freeze/notebooks/synthetic/execute-results/html.json
@@ -1,7 +1,7 @@
 {
   "hash": "617bb13e20ec081d43c585fd80675156",
   "result": {
-    "markdown": "::: {.cell execution_count=1}\n``` {.julia .cell-code}\ninclude(\"notebooks/setup.jl\")\neval(setup_notebooks);\n```\n:::\n\n\n# Synthetic data\n\n::: {.cell execution_count=2}\n``` {.julia .cell-code}\n# Data:\ndatasets = Dict(\n    :linearly_separable => load_linearly_separable(),\n    :overlapping => load_overlapping(),\n    :moons => load_moons(),\n    :circles => load_circles(),\n    :multi_class => load_multi_class(),\n)\n\n# Hyperparameters:\ncvgs = [0.5, 0.75, 0.95]\ntemps = [0.01, 0.1, 1.0]\nΛ = [0.0, 0.1, 1.0, 10.0]\nl2_λ = 0.1\n\n# Classifiers:\nepochs = 250\nlink_fun = relu\nlogreg = NeuralNetworkClassifier(builder=MLJFlux.Linear(σ=link_fun), epochs=epochs)\nmlp = NeuralNetworkClassifier(builder=MLJFlux.MLP(hidden=(32,), σ=link_fun), epochs=epochs)\nensmbl = EnsembleModel(model=mlp, n=5)\nclassifiers = Dict(\n    # :logreg => logreg,\n    :mlp => mlp,\n    # :ensmbl => ensmbl,\n)\n\n# Search parameters:\ntarget = 2\nfactual = 1\nmax_iter = 50\ngradient_tol = 1e-2\nopt = Descent(0.01)\n```\n:::\n\n\n\n\n\n\n::: {.cell execution_count=5}\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-1.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-2.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-3.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-4.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-5.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-6.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-7.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-8.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-9.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-10.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-11.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-12.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-13.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-14.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-15.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-16.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-17.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-18.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-19.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-20.svg){}\n:::\n:::\n\n\n## Benchmark\n\n::: {.cell execution_count=6}\n``` {.julia .cell-code}\n# Benchmark generators:\ngenerators = Dict(\n    :wachter => GenericGenerator(opt=opt, λ=l2_λ),\n    :revise => REVISEGenerator(opt=opt, λ=l2_λ),\n    :greedy => GreedyGenerator(),\n)\n\n# Untrained Models:\nmodels = Dict(Symbol(\"cov$(Int(100*cov))\") => ECCCE.ConformalModel(conformal_model(mlp; method=:simple_inductive, coverage=cov)) for cov in cvgs)\n\n# Measures:\nmeasures = [\n    CounterfactualExplanations.distance,\n    ECCCE.distance_from_energy,\n    ECCCE.distance_from_targets,\n    CounterfactualExplanations.validity,\n]\n```\n:::\n\n\n### Single CE\n\n\n\n\n\n::: {.cell execution_count=9}\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-1.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-2.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-3.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-4.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-5.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-6.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-7.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-8.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-9.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-10.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-11.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-12.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-13.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-14.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-15.png){}\n:::\n:::\n\n\n### Full Benchmark\n\n::: {.cell execution_count=10}\n``` {.julia .cell-code}\nbmks = []\nfor (dataname, dataset) in datasets\n    for λ in Λ, temp in temps\n        _generators = deepcopy(generators)\n        _generators[:cce] = ECCCEGenerator(temp=temp, λ=[l2_λ,λ], opt=opt)\n        _generators[:energy] = ECCCE.EnergyDrivenGenerator(λ=[l2_λ,λ], opt=opt)\n        _generators[:target] = ECCCE.TargetDrivenGenerator(λ=[l2_λ,λ], opt=opt)\n        bmk = benchmark(\n            dataset; \n            models=deepcopy(models), \n            generators=_generators, \n            measure=measures,\n            suppress_training=false, dataname=dataname,\n            n_individuals=5,\n            initialization=:identity,\n        )\n        bmk.evaluation.λ .= λ\n        bmk.evaluation.temperature .= temp\n        push!(bmks, bmk)\n    end\nend\nbmk = reduce(vcat, bmks)\n```\n:::\n\n\n::: {.cell execution_count=11}\n``` {.julia .cell-code}\nCSV.write(joinpath(output_path, \"synthetic_benchmark.csv\"), bmk())\n```\n:::\n\n\n::: {.cell execution_count=12}\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-1.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-2.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-3.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-4.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-5.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-6.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-7.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-8.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-9.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-10.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-11.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-12.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-13.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-14.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-15.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-16.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-17.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-18.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-19.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-20.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-21.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-22.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-23.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-24.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-25.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-26.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-27.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-28.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-29.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-30.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-31.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-32.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-33.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-34.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-35.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-36.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-37.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-38.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-39.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-40.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-41.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-42.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-43.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-44.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-45.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-46.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-47.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-48.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-49.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-50.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-51.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-52.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-53.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-54.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-55.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-56.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-57.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-58.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-59.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-60.png){}\n:::\n:::\n\n\n",
+    "markdown": "::: {.cell execution_count=1}\n``` {.julia .cell-code}\ninclude(\"notebooks/setup.jl\")\neval(setup_notebooks);\n```\n:::\n\n\n# Synthetic data\n\n::: {.cell execution_count=2}\n``` {.julia .cell-code}\n# Data:\ndatasets = Dict(\n    :linearly_separable => load_linearly_separable(),\n    :overlapping => load_overlapping(),\n    :moons => load_moons(),\n    :circles => load_circles(),\n    :multi_class => load_multi_class(),\n)\n\n# Hyperparameters:\ncvgs = [0.5, 0.75, 0.95]\ntemps = [0.01, 0.1, 1.0]\nΛ = [0.0, 0.1, 1.0, 10.0]\nl2_λ = 0.1\n\n# Classifiers:\nepochs = 250\nlink_fun = relu\nlogreg = NeuralNetworkClassifier(builder=MLJFlux.Linear(σ=link_fun), epochs=epochs)\nmlp = NeuralNetworkClassifier(builder=MLJFlux.MLP(hidden=(32,), σ=link_fun), epochs=epochs)\nensmbl = EnsembleModel(model=mlp, n=5)\nclassifiers = Dict(\n    # :logreg => logreg,\n    :mlp => mlp,\n    # :ensmbl => ensmbl,\n)\n\n# Search parameters:\ntarget = 2\nfactual = 1\nmax_iter = 50\ngradient_tol = 1e-2\nopt = Descent(0.01)\n```\n:::\n\n\n\n\n\n\n::: {.cell execution_count=5}\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-1.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-2.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-3.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-4.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-5.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-6.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-7.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-8.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-9.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-10.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-11.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-12.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-13.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-14.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-15.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-16.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-17.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-18.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-19.svg){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-6-output-20.svg){}\n:::\n:::\n\n\n## Benchmark\n\n::: {.cell execution_count=6}\n``` {.julia .cell-code}\n# Benchmark generators:\ngenerators = Dict(\n    :wachter => GenericGenerator(opt=opt, λ=l2_λ),\n    :revise => REVISEGenerator(opt=opt, λ=l2_λ),\n    :greedy => GreedyGenerator(),\n)\n\n# Untrained Models:\nmodels = Dict(Symbol(\"cov$(Int(100*cov))\") => ECCCo.ConformalModel(conformal_model(mlp; method=:simple_inductive, coverage=cov)) for cov in cvgs)\n\n# Measures:\nmeasures = [\n    CounterfactualExplanations.distance,\n    ECCCo.distance_from_energy,\n    ECCCo.distance_from_targets,\n    CounterfactualExplanations.validity,\n]\n```\n:::\n\n\n### Single CE\n\n\n\n\n\n::: {.cell execution_count=9}\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-1.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-2.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-3.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-4.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-5.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-6.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-7.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-8.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-9.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-10.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-11.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-12.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-13.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-14.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-10-output-15.png){}\n:::\n:::\n\n\n### Full Benchmark\n\n::: {.cell execution_count=10}\n``` {.julia .cell-code}\nbmks = []\nfor (dataname, dataset) in datasets\n    for λ in Λ, temp in temps\n        _generators = deepcopy(generators)\n        _generators[:cce] = ECCCoGenerator(temp=temp, λ=[l2_λ,λ], opt=opt)\n        _generators[:energy] = ECCCo.EnergyDrivenGenerator(λ=[l2_λ,λ], opt=opt)\n        _generators[:target] = ECCCo.TargetDrivenGenerator(λ=[l2_λ,λ], opt=opt)\n        bmk = benchmark(\n            dataset; \n            models=deepcopy(models), \n            generators=_generators, \n            measure=measures,\n            suppress_training=false, dataname=dataname,\n            n_individuals=5,\n            initialization=:identity,\n        )\n        bmk.evaluation.λ .= λ\n        bmk.evaluation.temperature .= temp\n        push!(bmks, bmk)\n    end\nend\nbmk = reduce(vcat, bmks)\n```\n:::\n\n\n::: {.cell execution_count=11}\n``` {.julia .cell-code}\nCSV.write(joinpath(output_path, \"synthetic_benchmark.csv\"), bmk())\n```\n:::\n\n\n::: {.cell execution_count=12}\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-1.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-2.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-3.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-4.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-5.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-6.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-7.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-8.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-9.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-10.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-11.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-12.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-13.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-14.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-15.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-16.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-17.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-18.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-19.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-20.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-21.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-22.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-23.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-24.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-25.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-26.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-27.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-28.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-29.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-30.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-31.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-32.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-33.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-34.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-35.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-36.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-37.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-38.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-39.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-40.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-41.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-42.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-43.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-44.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-45.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-46.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-47.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-48.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-49.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-50.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-51.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-52.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-53.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-54.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-55.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-56.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-57.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-58.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-59.png){}\n:::\n\n::: {.cell-output .cell-output-display}\n![](synthetic_files/figure-html/cell-13-output-60.png){}\n:::\n:::\n\n\n",
     "supporting": [
       "synthetic_files"
     ],
diff --git a/docs/notebooks/intro.html b/docs/notebooks/intro.html
index 6a00699b..99c0a5a3 100644
--- a/docs/notebooks/intro.html
+++ b/docs/notebooks/intro.html
@@ -351,14 +351,14 @@ C(X_{\text{test}})=\{y:s(X_{\text{test}},y) \le \hat{q}\}
 </div>
 <p>We can generate samples from <span class="math inline">\(p_{\theta}(X|y)\)</span> following <span class="citation" data-cites="grathwohl2020your">Grathwohl et al. (<a href="references.html#ref-grathwohl2020your" role="doc-biblioref">2020</a>)</span>. In <a href="#fig-energy">Figure&nbsp;<span>2.2</span></a>, I have applied the methodology to our synthetic data.</p>
 <div class="cell" data-execution_count="6">
-<div class="sourceCode cell-code" id="cb5"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a>M <span class="op">=</span> ECCCE.<span class="fu">ConformalModel</span>(conf_model, mach.fitresult)</span>
+<div class="sourceCode cell-code" id="cb5"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a>M <span class="op">=</span> ECCCo.<span class="fu">ConformalModel</span>(conf_model, mach.fitresult)</span>
 <span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a></span>
 <span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a>niter <span class="op">=</span> <span class="fl">100</span></span>
 <span id="cb5-4"><a href="#cb5-4" aria-hidden="true" tabindex="-1"></a>nsamples <span class="op">=</span> <span class="fl">100</span></span>
 <span id="cb5-5"><a href="#cb5-5" aria-hidden="true" tabindex="-1"></a></span>
 <span id="cb5-6"><a href="#cb5-6" aria-hidden="true" tabindex="-1"></a>plts <span class="op">=</span> []</span>
 <span id="cb5-7"><a href="#cb5-7" aria-hidden="true" tabindex="-1"></a><span class="cf">for</span> (i,target) <span class="op">∈</span> <span class="fu">enumerate</span>(counterfactual_data.y_levels)</span>
-<span id="cb5-8"><a href="#cb5-8" aria-hidden="true" tabindex="-1"></a>    sampler <span class="op">=</span> ECCCE.<span class="fu">EnergySampler</span>(M, counterfactual_data, target; niter<span class="op">=</span>niter, nsamples<span class="op">=</span><span class="fl">100</span>)</span>
+<span id="cb5-8"><a href="#cb5-8" aria-hidden="true" tabindex="-1"></a>    sampler <span class="op">=</span> ECCCo.<span class="fu">EnergySampler</span>(M, counterfactual_data, target; niter<span class="op">=</span>niter, nsamples<span class="op">=</span><span class="fl">100</span>)</span>
 <span id="cb5-9"><a href="#cb5-9" aria-hidden="true" tabindex="-1"></a>    Xgen <span class="op">=</span> <span class="fu">rand</span>(sampler, nsamples)</span>
 <span id="cb5-10"><a href="#cb5-10" aria-hidden="true" tabindex="-1"></a>    plt <span class="op">=</span> Plots.<span class="fu">plot</span>(M, counterfactual_data; target<span class="op">=</span>target, zoom<span class="op">=-</span><span class="fl">3</span>,cbar<span class="op">=</span><span class="cn">false</span>)</span>
 <span id="cb5-11"><a href="#cb5-11" aria-hidden="true" tabindex="-1"></a>    Plots.<span class="fu">scatter!</span>(Xgen[<span class="fl">1</span>,<span class="op">:</span>],Xgen[<span class="fl">2</span>,<span class="op">:</span>],alpha<span class="op">=</span><span class="fl">0.5</span>,color<span class="op">=</span>i,shape<span class="op">=:</span>star,label<span class="op">=</span><span class="st">"X|y=</span><span class="sc">$</span>target<span class="st">"</span>)</span>
@@ -477,10 +477,10 @@ x^\prime = \arg \min_{x^\prime}  \ell(M(x^\prime),t) + \lambda \mathbb{I}_{y^\pr
 <span id="cb10-9"><a href="#cb10-9" aria-hidden="true" tabindex="-1"></a></span>
 <span id="cb10-10"><a href="#cb10-10" aria-hidden="true" tabindex="-1"></a><span class="co"># Untrained Models:</span></span>
 <span id="cb10-11"><a href="#cb10-11" aria-hidden="true" tabindex="-1"></a>models <span class="op">=</span> <span class="fu">Dict</span>(</span>
-<span id="cb10-12"><a href="#cb10-12" aria-hidden="true" tabindex="-1"></a>    <span class="op">:</span>cov75 <span class="op">=&gt;</span> ECCCE.<span class="fu">ConformalModel</span>(<span class="fu">conformal_model</span>(clf; method<span class="op">=:</span>simple_inductive, coverage<span class="op">=</span><span class="fl">0.75</span>)),</span>
-<span id="cb10-13"><a href="#cb10-13" aria-hidden="true" tabindex="-1"></a>    <span class="op">:</span>cov80 <span class="op">=&gt;</span> ECCCE.<span class="fu">ConformalModel</span>(<span class="fu">conformal_model</span>(clf; method<span class="op">=:</span>simple_inductive, coverage<span class="op">=</span><span class="fl">0.80</span>)),</span>
-<span id="cb10-14"><a href="#cb10-14" aria-hidden="true" tabindex="-1"></a>    <span class="op">:</span>cov90 <span class="op">=&gt;</span> ECCCE.<span class="fu">ConformalModel</span>(<span class="fu">conformal_model</span>(clf; method<span class="op">=:</span>simple_inductive, coverage<span class="op">=</span><span class="fl">0.90</span>)),</span>
-<span id="cb10-15"><a href="#cb10-15" aria-hidden="true" tabindex="-1"></a>    <span class="op">:</span>cov99 <span class="op">=&gt;</span> ECCCE.<span class="fu">ConformalModel</span>(<span class="fu">conformal_model</span>(clf; method<span class="op">=:</span>simple_inductive, coverage<span class="op">=</span><span class="fl">0.99</span>)),</span>
+<span id="cb10-12"><a href="#cb10-12" aria-hidden="true" tabindex="-1"></a>    <span class="op">:</span>cov75 <span class="op">=&gt;</span> ECCCo.<span class="fu">ConformalModel</span>(<span class="fu">conformal_model</span>(clf; method<span class="op">=:</span>simple_inductive, coverage<span class="op">=</span><span class="fl">0.75</span>)),</span>
+<span id="cb10-13"><a href="#cb10-13" aria-hidden="true" tabindex="-1"></a>    <span class="op">:</span>cov80 <span class="op">=&gt;</span> ECCCo.<span class="fu">ConformalModel</span>(<span class="fu">conformal_model</span>(clf; method<span class="op">=:</span>simple_inductive, coverage<span class="op">=</span><span class="fl">0.80</span>)),</span>
+<span id="cb10-14"><a href="#cb10-14" aria-hidden="true" tabindex="-1"></a>    <span class="op">:</span>cov90 <span class="op">=&gt;</span> ECCCo.<span class="fu">ConformalModel</span>(<span class="fu">conformal_model</span>(clf; method<span class="op">=:</span>simple_inductive, coverage<span class="op">=</span><span class="fl">0.90</span>)),</span>
+<span id="cb10-15"><a href="#cb10-15" aria-hidden="true" tabindex="-1"></a>    <span class="op">:</span>cov99 <span class="op">=&gt;</span> ECCCo.<span class="fu">ConformalModel</span>(<span class="fu">conformal_model</span>(clf; method<span class="op">=:</span>simple_inductive, coverage<span class="op">=</span><span class="fl">0.99</span>)),</span>
 <span id="cb10-16"><a href="#cb10-16" aria-hidden="true" tabindex="-1"></a>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
 </div>
 <p>Then we can simply loop over the datasets and eventually concatenate the results like so:</p>
@@ -489,8 +489,8 @@ x^\prime = \arg \min_{x^\prime}  \ell(M(x^\prime),t) + \lambda \mathbb{I}_{y^\pr
 <span id="cb11-2"><a href="#cb11-2" aria-hidden="true" tabindex="-1"></a>bmks <span class="op">=</span> []</span>
 <span id="cb11-3"><a href="#cb11-3" aria-hidden="true" tabindex="-1"></a>measures <span class="op">=</span> [</span>
 <span id="cb11-4"><a href="#cb11-4" aria-hidden="true" tabindex="-1"></a>    CounterfactualExplanations.distance,</span>
-<span id="cb11-5"><a href="#cb11-5" aria-hidden="true" tabindex="-1"></a>    ECCCE.distance_from_energy,</span>
-<span id="cb11-6"><a href="#cb11-6" aria-hidden="true" tabindex="-1"></a>    ECCCE.distance_from_targets</span>
+<span id="cb11-5"><a href="#cb11-5" aria-hidden="true" tabindex="-1"></a>    ECCCo.distance_from_energy,</span>
+<span id="cb11-6"><a href="#cb11-6" aria-hidden="true" tabindex="-1"></a>    ECCCo.distance_from_targets</span>
 <span id="cb11-7"><a href="#cb11-7" aria-hidden="true" tabindex="-1"></a>]</span>
 <span id="cb11-8"><a href="#cb11-8" aria-hidden="true" tabindex="-1"></a><span class="cf">for</span> (dataname, dataset) <span class="kw">in</span> datasets</span>
 <span id="cb11-9"><a href="#cb11-9" aria-hidden="true" tabindex="-1"></a>    bmk <span class="op">=</span> <span class="fu">benchmark</span>(</span>
diff --git a/docs/notebooks/proposal.html b/docs/notebooks/proposal.html
index 4d65db90..d527e1a4 100644
--- a/docs/notebooks/proposal.html
+++ b/docs/notebooks/proposal.html
@@ -253,7 +253,7 @@ div.csl-indent {
 </section>
 <section id="conformal-counterfactual-explanations" class="level2" data-number="1.2">
 <h2 data-number="1.2" class="anchored" data-anchor-id="conformal-counterfactual-explanations"><span class="header-section-number">1.2</span> Conformal Counterfactual Explanations</h2>
-<p>In <a href="#sec-fidelity"><span>Section&nbsp;1.1.2</span></a>, we have advocated for avoiding surrogate models in the context of Counterfactual Explanations. In this section, we introduce an alternative way to generate high-fidelity Counterfactual Explanations. In particular, we propose Conformal Counterfactual Explanations (ECCCE), that is Counterfactual Explanations that minimize the predictive uncertainty of conformal models.</p>
+<p>In <a href="#sec-fidelity"><span>Section&nbsp;1.1.2</span></a>, we have advocated for avoiding surrogate models in the context of Counterfactual Explanations. In this section, we introduce an alternative way to generate high-fidelity Counterfactual Explanations. In particular, we propose Conformal Counterfactual Explanations (ECCCo), that is Counterfactual Explanations that minimize the predictive uncertainty of conformal models.</p>
 <section id="minimizing-predictive-uncertainty" class="level3" data-number="1.2.1">
 <h3 data-number="1.2.1" class="anchored" data-anchor-id="minimizing-predictive-uncertainty"><span class="header-section-number">1.2.1</span> Minimizing Predictive Uncertainty</h3>
 <p><span class="citation" data-cites="schut2021generating">Schut et al. (<a href="references.html#ref-schut2021generating" role="doc-biblioref">2021</a>)</span> demonstrated that the goal of generating realistic (plausible) counterfactuals can also be achieved by seeking counterfactuals that minimize the predictive uncertainty of the underlying black-box model. Similarly, <span class="citation" data-cites="antoran2020getting">Antorán et al. (<a href="references.html#ref-antoran2020getting" role="doc-biblioref">2020</a>)</span> …</p>
diff --git a/docs/notebooks/synthetic.html b/docs/notebooks/synthetic.html
index ec5ffcc2..c058f1e5 100644
--- a/docs/notebooks/synthetic.html
+++ b/docs/notebooks/synthetic.html
@@ -330,13 +330,13 @@ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warni
 <span id="cb3-6"><a href="#cb3-6" aria-hidden="true" tabindex="-1"></a>)</span>
 <span id="cb3-7"><a href="#cb3-7" aria-hidden="true" tabindex="-1"></a></span>
 <span id="cb3-8"><a href="#cb3-8" aria-hidden="true" tabindex="-1"></a><span class="co"># Untrained Models:</span></span>
-<span id="cb3-9"><a href="#cb3-9" aria-hidden="true" tabindex="-1"></a>models <span class="op">=</span> <span class="fu">Dict</span>(<span class="fu">Symbol</span>(<span class="st">"cov</span><span class="sc">$</span>(<span class="fu">Int</span>(<span class="fl">100</span><span class="op">*</span>cov))<span class="st">"</span>) <span class="op">=&gt;</span> ECCCE.<span class="fu">ConformalModel</span>(<span class="fu">conformal_model</span>(mlp; method<span class="op">=:</span>simple_inductive, coverage<span class="op">=</span>cov)) <span class="cf">for</span> cov <span class="kw">in</span> cvgs)</span>
+<span id="cb3-9"><a href="#cb3-9" aria-hidden="true" tabindex="-1"></a>models <span class="op">=</span> <span class="fu">Dict</span>(<span class="fu">Symbol</span>(<span class="st">"cov</span><span class="sc">$</span>(<span class="fu">Int</span>(<span class="fl">100</span><span class="op">*</span>cov))<span class="st">"</span>) <span class="op">=&gt;</span> ECCCo.<span class="fu">ConformalModel</span>(<span class="fu">conformal_model</span>(mlp; method<span class="op">=:</span>simple_inductive, coverage<span class="op">=</span>cov)) <span class="cf">for</span> cov <span class="kw">in</span> cvgs)</span>
 <span id="cb3-10"><a href="#cb3-10" aria-hidden="true" tabindex="-1"></a></span>
 <span id="cb3-11"><a href="#cb3-11" aria-hidden="true" tabindex="-1"></a><span class="co"># Measures:</span></span>
 <span id="cb3-12"><a href="#cb3-12" aria-hidden="true" tabindex="-1"></a>measures <span class="op">=</span> [</span>
 <span id="cb3-13"><a href="#cb3-13" aria-hidden="true" tabindex="-1"></a>    CounterfactualExplanations.distance,</span>
-<span id="cb3-14"><a href="#cb3-14" aria-hidden="true" tabindex="-1"></a>    ECCCE.distance_from_energy,</span>
-<span id="cb3-15"><a href="#cb3-15" aria-hidden="true" tabindex="-1"></a>    ECCCE.distance_from_targets,</span>
+<span id="cb3-14"><a href="#cb3-14" aria-hidden="true" tabindex="-1"></a>    ECCCo.distance_from_energy,</span>
+<span id="cb3-15"><a href="#cb3-15" aria-hidden="true" tabindex="-1"></a>    ECCCo.distance_from_targets,</span>
 <span id="cb3-16"><a href="#cb3-16" aria-hidden="true" tabindex="-1"></a>    CounterfactualExplanations.validity,</span>
 <span id="cb3-17"><a href="#cb3-17" aria-hidden="true" tabindex="-1"></a>]</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
 </div>
@@ -397,9 +397,9 @@ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warni
 <span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a><span class="cf">for</span> (dataname, dataset) <span class="kw">in</span> datasets</span>
 <span id="cb4-3"><a href="#cb4-3" aria-hidden="true" tabindex="-1"></a>    <span class="cf">for</span> λ <span class="kw">in</span> Λ, temp <span class="kw">in</span> temps</span>
 <span id="cb4-4"><a href="#cb4-4" aria-hidden="true" tabindex="-1"></a>        _generators <span class="op">=</span> <span class="fu">deepcopy</span>(generators)</span>
-<span id="cb4-5"><a href="#cb4-5" aria-hidden="true" tabindex="-1"></a>        _generators[<span class="op">:</span>cce] <span class="op">=</span> <span class="fu">ECCCEGenerator</span>(temp<span class="op">=</span>temp, λ<span class="op">=</span>[l2_λ,λ], opt<span class="op">=</span>opt)</span>
-<span id="cb4-6"><a href="#cb4-6" aria-hidden="true" tabindex="-1"></a>        _generators[<span class="op">:</span>energy] <span class="op">=</span> ECCCE.<span class="fu">EnergyDrivenGenerator</span>(λ<span class="op">=</span>[l2_λ,λ], opt<span class="op">=</span>opt)</span>
-<span id="cb4-7"><a href="#cb4-7" aria-hidden="true" tabindex="-1"></a>        _generators[<span class="op">:</span>target] <span class="op">=</span> ECCCE.<span class="fu">TargetDrivenGenerator</span>(λ<span class="op">=</span>[l2_λ,λ], opt<span class="op">=</span>opt)</span>
+<span id="cb4-5"><a href="#cb4-5" aria-hidden="true" tabindex="-1"></a>        _generators[<span class="op">:</span>cce] <span class="op">=</span> <span class="fu">ECCCoGenerator</span>(temp<span class="op">=</span>temp, λ<span class="op">=</span>[l2_λ,λ], opt<span class="op">=</span>opt)</span>
+<span id="cb4-6"><a href="#cb4-6" aria-hidden="true" tabindex="-1"></a>        _generators[<span class="op">:</span>energy] <span class="op">=</span> ECCCo.<span class="fu">EnergyDrivenGenerator</span>(λ<span class="op">=</span>[l2_λ,λ], opt<span class="op">=</span>opt)</span>
+<span id="cb4-7"><a href="#cb4-7" aria-hidden="true" tabindex="-1"></a>        _generators[<span class="op">:</span>target] <span class="op">=</span> ECCCo.<span class="fu">TargetDrivenGenerator</span>(λ<span class="op">=</span>[l2_λ,λ], opt<span class="op">=</span>opt)</span>
 <span id="cb4-8"><a href="#cb4-8" aria-hidden="true" tabindex="-1"></a>        bmk <span class="op">=</span> <span class="fu">benchmark</span>(</span>
 <span id="cb4-9"><a href="#cb4-9" aria-hidden="true" tabindex="-1"></a>            dataset; </span>
 <span id="cb4-10"><a href="#cb4-10" aria-hidden="true" tabindex="-1"></a>            models<span class="op">=</span><span class="fu">deepcopy</span>(models), </span>
diff --git a/docs/search.json b/docs/search.json
index c097c74a..bf32aeaf 100644
--- a/docs/search.json
+++ b/docs/search.json
@@ -18,7 +18,7 @@
     "href": "notebooks/proposal.html#conformal-counterfactual-explanations",
     "title": "1  High-Fidelity Counterfactual Explanations through Conformal Prediction",
     "section": "1.2 Conformal Counterfactual Explanations",
-    "text": "1.2 Conformal Counterfactual Explanations\nIn Section 1.1.2, we have advocated for avoiding surrogate models in the context of Counterfactual Explanations. In this section, we introduce an alternative way to generate high-fidelity Counterfactual Explanations. In particular, we propose Conformal Counterfactual Explanations (ECCCE), that is Counterfactual Explanations that minimize the predictive uncertainty of conformal models.\n\n1.2.1 Minimizing Predictive Uncertainty\nSchut et al. (2021) demonstrated that the goal of generating realistic (plausible) counterfactuals can also be achieved by seeking counterfactuals that minimize the predictive uncertainty of the underlying black-box model. Similarly, Antorán et al. (2020) …\n\nProblem: restricted to Bayesian models.\nSolution: post-hoc predictive uncertainty quantification. In particular, Conformal Prediction.\n\n\n\n1.2.2 Background on Conformal Prediction\n\nDistribution-free, model-agnostic and scalable approach to predictive uncertainty quantification.\nConformal prediction is instance-based. So is CE.\nTake any fitted model and turn it into a conformal model using calibration data.\nOur approach, therefore, relaxes the restriction on the family of black-box models, at the cost of relying on a subset of the data. Arguably, data is often abundant and in most applications practitioners tend to hold out a test data set anyway.\n\n\nDoes the coverage guarantee carry over to counterfactuals?\n\n\n\n1.2.3 Generating Conformal Counterfactuals\nWhile Conformal Prediction has recently grown in popularity, it does introduce a challenge in the context of classification: the predictions of Conformal Classifiers are set-valued and therefore difficult to work with, since they are, for example, non-differentiable. Fortunately, Stutz et al. (2022) introduced carefully designed differentiable loss functions that make it possible to evaluate the performance of conformal predictions in training. We can leverage these recent advances in the context of gradient-based counterfactual search …\n\nChallenge: still need to implement these loss functions."
+    "text": "1.2 Conformal Counterfactual Explanations\nIn Section 1.1.2, we have advocated for avoiding surrogate models in the context of Counterfactual Explanations. In this section, we introduce an alternative way to generate high-fidelity Counterfactual Explanations. In particular, we propose Conformal Counterfactual Explanations (ECCCo), that is Counterfactual Explanations that minimize the predictive uncertainty of conformal models.\n\n1.2.1 Minimizing Predictive Uncertainty\nSchut et al. (2021) demonstrated that the goal of generating realistic (plausible) counterfactuals can also be achieved by seeking counterfactuals that minimize the predictive uncertainty of the underlying black-box model. Similarly, Antorán et al. (2020) …\n\nProblem: restricted to Bayesian models.\nSolution: post-hoc predictive uncertainty quantification. In particular, Conformal Prediction.\n\n\n\n1.2.2 Background on Conformal Prediction\n\nDistribution-free, model-agnostic and scalable approach to predictive uncertainty quantification.\nConformal prediction is instance-based. So is CE.\nTake any fitted model and turn it into a conformal model using calibration data.\nOur approach, therefore, relaxes the restriction on the family of black-box models, at the cost of relying on a subset of the data. Arguably, data is often abundant and in most applications practitioners tend to hold out a test data set anyway.\n\n\nDoes the coverage guarantee carry over to counterfactuals?\n\n\n\n1.2.3 Generating Conformal Counterfactuals\nWhile Conformal Prediction has recently grown in popularity, it does introduce a challenge in the context of classification: the predictions of Conformal Classifiers are set-valued and therefore difficult to work with, since they are, for example, non-differentiable. Fortunately, Stutz et al. (2022) introduced carefully designed differentiable loss functions that make it possible to evaluate the performance of conformal predictions in training. We can leverage these recent advances in the context of gradient-based counterfactual search …\n\nChallenge: still need to implement these loss functions."
   },
   {
     "objectID": "notebooks/proposal.html#experiments",
@@ -60,7 +60,7 @@
     "href": "notebooks/intro.html#fidelity-and-plausibility",
     "title": "2  ConformalGenerator",
     "section": "2.4 Fidelity and Plausibility",
-    "text": "2.4 Fidelity and Plausibility\nThe main evaluation criteria we are interested in are fidelity and plausibility. Interestingly, we could also consider using these measures as penalties in the counterfactual search.\n\n2.4.1 Fidelity\nWe propose to define fidelity as follows:\n\nDefinition 2.1 (High-Fidelity Counterfactuals) Let \\(\\mathcal{X}_{\\theta}|y = p_{\\theta}(X|y)\\) denote the class-conditional distribution of \\(X\\) defined by \\(\\theta\\). Then for \\(x^{\\prime}\\) to be considered a high-fidelity counterfactual, we need: \\(\\mathcal{X}_{\\theta}|t \\approxeq \\mathcal{X}^{\\prime}\\) where \\(t\\) denotes the target outcome.\n\nWe can generate samples from \\(p_{\\theta}(X|y)\\) following Grathwohl et al. (2020). In Figure 2.2, I have applied the methodology to our synthetic data.\n\nM = ECCCE.ConformalModel(conf_model, mach.fitresult)\n\nniter = 100\nnsamples = 100\n\nplts = []\nfor (i,target) ∈ enumerate(counterfactual_data.y_levels)\n    sampler = ECCCE.EnergySampler(M, counterfactual_data, target; niter=niter, nsamples=100)\n    Xgen = rand(sampler, nsamples)\n    plt = Plots.plot(M, counterfactual_data; target=target, zoom=-3,cbar=false)\n    Plots.scatter!(Xgen[1,:],Xgen[2,:],alpha=0.5,color=i,shape=:star,label=\"X|y=$target\")\n    push!(plts, plt)\nend\nPlots.plot(plts..., layout=(1,length(plts)), size=(img_height*length(plts),img_height))\n\n\n\n\nFigure 2.2: Energy-based conditional samples.\n\n\n\n\nAs an evaluation metric and penalty, we could use the average distance of the counterfactual \\(x^{\\prime}\\) from these generated samples, for example.\n\n\n2.4.2 Plausibility\nWe propose to define plausibility as follows:\n\nDefinition 2.2 (Plausible Counterfactuals) Formally, let \\(\\mathcal{X}|t\\) denote the conditional distribution of samples in the target class. As before, we have \\(x^{\\prime}\\sim\\mathcal{X}^{\\prime}\\), then for \\(x^{\\prime}\\) to be considered a plausible counterfactual, we need: \\(\\mathcal{X}|t \\approxeq \\mathcal{X}^{\\prime}\\).\n\nAs an evaluation metric and penalty, we could use the average distance of the counterfactual \\(x^{\\prime}\\) from (potentially bootstrapped) training samples in the target class, for example."
+    "text": "2.4 Fidelity and Plausibility\nThe main evaluation criteria we are interested in are fidelity and plausibility. Interestingly, we could also consider using these measures as penalties in the counterfactual search.\n\n2.4.1 Fidelity\nWe propose to define fidelity as follows:\n\nDefinition 2.1 (High-Fidelity Counterfactuals) Let \\(\\mathcal{X}_{\\theta}|y = p_{\\theta}(X|y)\\) denote the class-conditional distribution of \\(X\\) defined by \\(\\theta\\). Then for \\(x^{\\prime}\\) to be considered a high-fidelity counterfactual, we need: \\(\\mathcal{X}_{\\theta}|t \\approxeq \\mathcal{X}^{\\prime}\\) where \\(t\\) denotes the target outcome.\n\nWe can generate samples from \\(p_{\\theta}(X|y)\\) following Grathwohl et al. (2020). In Figure 2.2, I have applied the methodology to our synthetic data.\n\nM = ECCCo.ConformalModel(conf_model, mach.fitresult)\n\nniter = 100\nnsamples = 100\n\nplts = []\nfor (i,target) ∈ enumerate(counterfactual_data.y_levels)\n    sampler = ECCCo.EnergySampler(M, counterfactual_data, target; niter=niter, nsamples=100)\n    Xgen = rand(sampler, nsamples)\n    plt = Plots.plot(M, counterfactual_data; target=target, zoom=-3,cbar=false)\n    Plots.scatter!(Xgen[1,:],Xgen[2,:],alpha=0.5,color=i,shape=:star,label=\"X|y=$target\")\n    push!(plts, plt)\nend\nPlots.plot(plts..., layout=(1,length(plts)), size=(img_height*length(plts),img_height))\n\n\n\n\nFigure 2.2: Energy-based conditional samples.\n\n\n\n\nAs an evaluation metric and penalty, we could use the average distance of the counterfactual \\(x^{\\prime}\\) from these generated samples, for example.\n\n\n2.4.2 Plausibility\nWe propose to define plausibility as follows:\n\nDefinition 2.2 (Plausible Counterfactuals) Formally, let \\(\\mathcal{X}|t\\) denote the conditional distribution of samples in the target class. As before, we have \\(x^{\\prime}\\sim\\mathcal{X}^{\\prime}\\), then for \\(x^{\\prime}\\) to be considered a plausible counterfactual, we need: \\(\\mathcal{X}|t \\approxeq \\mathcal{X}^{\\prime}\\).\n\nAs an evaluation metric and penalty, we could use the average distance of the counterfactual \\(x^{\\prime}\\) from (potentially bootstrapped) training samples in the target class, for example."
   },
   {
     "objectID": "notebooks/intro.html#counterfactual-explanations",
@@ -81,14 +81,14 @@
     "href": "notebooks/intro.html#benchmarks",
     "title": "2  ConformalGenerator",
     "section": "2.7 Benchmarks",
-    "text": "2.7 Benchmarks\n\n# Data:\ndatasets = Dict(\n    :linearly_separable => load_linearly_separable(),\n    :overlapping => load_overlapping(),\n    :moons => load_moons(),\n    :circles => load_circles(),\n    :multi_class => load_multi_class(),\n)\n\n# Untrained Models:\nmodels = Dict(\n    :cov75 => ECCCE.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.75)),\n    :cov80 => ECCCE.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.80)),\n    :cov90 => ECCCE.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.90)),\n    :cov99 => ECCCE.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.99)),\n)\n\nThen we can simply loop over the datasets and eventually concatenate the results like so:\n\nusing CounterfactualExplanations.Evaluation: benchmark\nbmks = []\nmeasures = [\n    CounterfactualExplanations.distance,\n    ECCCE.distance_from_energy,\n    ECCCE.distance_from_targets\n]\nfor (dataname, dataset) in datasets\n    bmk = benchmark(\n        dataset; \n        models=deepcopy(models), \n        generators=generators, \n        measure=measures,\n        suppress_training=false, dataname=dataname,\n        n_individuals=10\n    )\n    push!(bmks, bmk)\nend\nbmk = reduce(vcat, bmks)\n\n\nf(ce) = CounterfactualExplanations.model_evaluation(ce.M, ce.data)\n@chain bmk() begin\n    @group_by(model, generator, dataname, variable)\n    @select(model, generator, dataname, ce, value)\n    @mutate(performance = f(ce))\n    @summarize(model=unique(model), generator=unique(generator), dataname=unique(dataname), performace=unique(performance), value=mean(value))\n    @ungroup\n    @filter(dataname == :multi_class)\n    @filter(model == :cov99)\n    @filter(variable == \"distance\")\nend\n\n\n\n\n\n\n\n(a) Circles.\n\n\n\n\n\n\n\n(b) Linearly Separable.\n\n\n\n\n\n\n\n(c) Moons.\n\n\n\n\n\n\n\n(d) Multi-class.\n\n\n\n\n\n\n\n(e) Overlapping.\n\n\n\nFigure 2.8: Benchmark results for the different generators.\n\n\n\n\n\n\nGrathwohl, Will, Kuan-Chieh Wang, Joern-Henrik Jacobsen, David Duvenaud, Mohammad Norouzi, and Kevin Swersky. 2020. “Your Classifier Is Secretly an Energy Based Model and You Should Treat It Like One.” In. https://openreview.net/forum?id=Hkxzx0NtDB.\n\n\nSchut, Lisa, Oscar Key, Rory Mc Grath, Luca Costabello, Bogdan Sacaleanu, Yarin Gal, et al. 2021. “Generating Interpretable Counterfactual Explanations By Implicit Minimisation of Epistemic and Aleatoric Uncertainties.” In International Conference on Artificial Intelligence and Statistics, 1756–64. PMLR.\n\n\nStutz, David, Krishnamurthy Dj Dvijotham, Ali Taylan Cemgil, and Arnaud Doucet. 2022. “Learning Optimal Conformal Classifiers.” In. https://openreview.net/forum?id=t8O-4LKFVx."
+    "text": "2.7 Benchmarks\n\n# Data:\ndatasets = Dict(\n    :linearly_separable => load_linearly_separable(),\n    :overlapping => load_overlapping(),\n    :moons => load_moons(),\n    :circles => load_circles(),\n    :multi_class => load_multi_class(),\n)\n\n# Untrained Models:\nmodels = Dict(\n    :cov75 => ECCCo.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.75)),\n    :cov80 => ECCCo.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.80)),\n    :cov90 => ECCCo.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.90)),\n    :cov99 => ECCCo.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.99)),\n)\n\nThen we can simply loop over the datasets and eventually concatenate the results like so:\n\nusing CounterfactualExplanations.Evaluation: benchmark\nbmks = []\nmeasures = [\n    CounterfactualExplanations.distance,\n    ECCCo.distance_from_energy,\n    ECCCo.distance_from_targets\n]\nfor (dataname, dataset) in datasets\n    bmk = benchmark(\n        dataset; \n        models=deepcopy(models), \n        generators=generators, \n        measure=measures,\n        suppress_training=false, dataname=dataname,\n        n_individuals=10\n    )\n    push!(bmks, bmk)\nend\nbmk = reduce(vcat, bmks)\n\n\nf(ce) = CounterfactualExplanations.model_evaluation(ce.M, ce.data)\n@chain bmk() begin\n    @group_by(model, generator, dataname, variable)\n    @select(model, generator, dataname, ce, value)\n    @mutate(performance = f(ce))\n    @summarize(model=unique(model), generator=unique(generator), dataname=unique(dataname), performace=unique(performance), value=mean(value))\n    @ungroup\n    @filter(dataname == :multi_class)\n    @filter(model == :cov99)\n    @filter(variable == \"distance\")\nend\n\n\n\n\n\n\n\n(a) Circles.\n\n\n\n\n\n\n\n(b) Linearly Separable.\n\n\n\n\n\n\n\n(c) Moons.\n\n\n\n\n\n\n\n(d) Multi-class.\n\n\n\n\n\n\n\n(e) Overlapping.\n\n\n\nFigure 2.8: Benchmark results for the different generators.\n\n\n\n\n\n\nGrathwohl, Will, Kuan-Chieh Wang, Joern-Henrik Jacobsen, David Duvenaud, Mohammad Norouzi, and Kevin Swersky. 2020. “Your Classifier Is Secretly an Energy Based Model and You Should Treat It Like One.” In. https://openreview.net/forum?id=Hkxzx0NtDB.\n\n\nSchut, Lisa, Oscar Key, Rory Mc Grath, Luca Costabello, Bogdan Sacaleanu, Yarin Gal, et al. 2021. “Generating Interpretable Counterfactual Explanations By Implicit Minimisation of Epistemic and Aleatoric Uncertainties.” In International Conference on Artificial Intelligence and Statistics, 1756–64. PMLR.\n\n\nStutz, David, Krishnamurthy Dj Dvijotham, Ali Taylan Cemgil, and Arnaud Doucet. 2022. “Learning Optimal Conformal Classifiers.” In. https://openreview.net/forum?id=t8O-4LKFVx."
   },
   {
     "objectID": "notebooks/synthetic.html#benchmark",
     "href": "notebooks/synthetic.html#benchmark",
     "title": "3  Synthetic data",
     "section": "3.1 Benchmark",
-    "text": "3.1 Benchmark\n\n# Benchmark generators:\ngenerators = Dict(\n    :wachter => GenericGenerator(opt=opt, λ=l2_λ),\n    :revise => REVISEGenerator(opt=opt, λ=l2_λ),\n    :greedy => GreedyGenerator(),\n)\n\n# Untrained Models:\nmodels = Dict(Symbol(\"cov$(Int(100*cov))\") => ECCCE.ConformalModel(conformal_model(mlp; method=:simple_inductive, coverage=cov)) for cov in cvgs)\n\n# Measures:\nmeasures = [\n    CounterfactualExplanations.distance,\n    ECCCE.distance_from_energy,\n    ECCCE.distance_from_targets,\n    CounterfactualExplanations.validity,\n]\n\n\n3.1.1 Single CE\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n3.1.2 Full Benchmark\n\nbmks = []\nfor (dataname, dataset) in datasets\n    for λ in Λ, temp in temps\n        _generators = deepcopy(generators)\n        _generators[:cce] = ECCCEGenerator(temp=temp, λ=[l2_λ,λ], opt=opt)\n        _generators[:energy] = ECCCE.EnergyDrivenGenerator(λ=[l2_λ,λ], opt=opt)\n        _generators[:target] = ECCCE.TargetDrivenGenerator(λ=[l2_λ,λ], opt=opt)\n        bmk = benchmark(\n            dataset; \n            models=deepcopy(models), \n            generators=_generators, \n            measure=measures,\n            suppress_training=false, dataname=dataname,\n            n_individuals=5,\n            initialization=:identity,\n        )\n        bmk.evaluation.λ .= λ\n        bmk.evaluation.temperature .= temp\n        push!(bmks, bmk)\n    end\nend\nbmk = reduce(vcat, bmks)\n\n\nCSV.write(joinpath(output_path, \"synthetic_benchmark.csv\"), bmk())"
+    "text": "3.1 Benchmark\n\n# Benchmark generators:\ngenerators = Dict(\n    :wachter => GenericGenerator(opt=opt, λ=l2_λ),\n    :revise => REVISEGenerator(opt=opt, λ=l2_λ),\n    :greedy => GreedyGenerator(),\n)\n\n# Untrained Models:\nmodels = Dict(Symbol(\"cov$(Int(100*cov))\") => ECCCo.ConformalModel(conformal_model(mlp; method=:simple_inductive, coverage=cov)) for cov in cvgs)\n\n# Measures:\nmeasures = [\n    CounterfactualExplanations.distance,\n    ECCCo.distance_from_energy,\n    ECCCo.distance_from_targets,\n    CounterfactualExplanations.validity,\n]\n\n\n3.1.1 Single CE\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n3.1.2 Full Benchmark\n\nbmks = []\nfor (dataname, dataset) in datasets\n    for λ in Λ, temp in temps\n        _generators = deepcopy(generators)\n        _generators[:cce] = ECCCoGenerator(temp=temp, λ=[l2_λ,λ], opt=opt)\n        _generators[:energy] = ECCCo.EnergyDrivenGenerator(λ=[l2_λ,λ], opt=opt)\n        _generators[:target] = ECCCo.TargetDrivenGenerator(λ=[l2_λ,λ], opt=opt)\n        bmk = benchmark(\n            dataset; \n            models=deepcopy(models), \n            generators=_generators, \n            measure=measures,\n            suppress_training=false, dataname=dataname,\n            n_individuals=5,\n            initialization=:identity,\n        )\n        bmk.evaluation.λ .= λ\n        bmk.evaluation.temperature .= temp\n        push!(bmks, bmk)\n    end\nend\nbmk = reduce(vcat, bmks)\n\n\nCSV.write(joinpath(output_path, \"synthetic_benchmark.csv\"), bmk())"
   },
   {
     "objectID": "notebooks/references.html",
diff --git a/notebooks/Manifest.toml b/notebooks/Manifest.toml
index d5d8d17a..6dbe102c 100644
--- a/notebooks/Manifest.toml
+++ b/notebooks/Manifest.toml
@@ -496,7 +496,7 @@ git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566"
 uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74"
 version = "0.6.8"
 
-[[deps.ECCCE]]
+[[deps.ECCCo]]
 deps = ["CategoricalArrays", "ChainRules", "ConformalPrediction", "CounterfactualExplanations", "Distances", "Distributions", "Flux", "JointEnergyModels", "LinearAlgebra", "MLJBase", "MLJEnsembles", "MLJFlux", "MLJModelInterface", "MLUtils", "Parameters", "PkgTemplates", "Plots", "Random", "SliceMap", "Statistics", "StatsBase", "StatsPlots", "Term"]
 path = ".."
 uuid = "0232c203-4013-4b0d-ad96-43e3e11ac3bf"
diff --git a/notebooks/Project.toml b/notebooks/Project.toml
index 5e61dae4..9d63873a 100644
--- a/notebooks/Project.toml
+++ b/notebooks/Project.toml
@@ -1,6 +1,6 @@
 [deps]
 AlgebraOfGraphics = "cbdf2221-f076-402e-a563-3d30da359d67"
-ECCCE = "0232c203-4013-4b0d-ad96-43e3e11ac3bf"
+ECCCo = "0232c203-4013-4b0d-ad96-43e3e11ac3bf"
 CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b"
 CairoMakie = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0"
 CategoricalDistributions = "af321ab8-2d2e-40a6-b165-3d674595d28e"
diff --git a/notebooks/intro.qmd b/notebooks/intro.qmd
index 1c2ad272..b146559f 100644
--- a/notebooks/intro.qmd
+++ b/notebooks/intro.qmd
@@ -122,14 +122,14 @@ We can generate samples from $p_{\theta}(X|y)$ following @grathwohl2020your. In
 #| label: fig-energy
 #| output: true
 
-M = ECCCE.ConformalModel(conf_model, mach.fitresult)
+M = ECCCo.ConformalModel(conf_model, mach.fitresult)
 
 niter = 100
 nsamples = 100
 
 plts = []
 for (i,target) ∈ enumerate(counterfactual_data.y_levels)
-    sampler = ECCCE.EnergySampler(M, counterfactual_data, target; niter=niter, nsamples=100)
+    sampler = ECCCo.EnergySampler(M, counterfactual_data, target; niter=niter, nsamples=100)
     Xgen = rand(sampler, nsamples)
     plt = Plots.plot(M, counterfactual_data; target=target, zoom=-3,cbar=false)
     Plots.scatter!(Xgen[1,:],Xgen[2,:],alpha=0.5,color=i,shape=:star,label="X|y=$target")
@@ -294,11 +294,11 @@ Plots.plot(plts..., layout=(length(cvgs),length(cvgs)), size=(2img_height*length
 
 niter = 100
 nsamples = 100
-M = ECCCE.ConformalModel(conf_model, mach.fitresult; likelihood=:classification_multi)
+M = ECCCo.ConformalModel(conf_model, mach.fitresult; likelihood=:classification_multi)
 
 plts = []
 for target ∈ counterfactual_data.y_levels
-    sampler = ECCCE.EnergySampler(M, counterfactual_data, target; niter=niter, nsamples=100)
+    sampler = ECCCo.EnergySampler(M, counterfactual_data, target; niter=niter, nsamples=100)
     Xgen = rand(sampler, nsamples)
     plt = Plots.plot(M, counterfactual_data; target=target, zoom=-0.5,cbar=false)
     Plots.scatter!(Xgen[1,:],Xgen[2,:],alpha=0.5,color=target,shape=:star,label="X|y=$target")
@@ -354,10 +354,10 @@ datasets = Dict(
 
 # Untrained Models:
 models = Dict(
-    :cov75 => ECCCE.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.75)),
-    :cov80 => ECCCE.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.80)),
-    :cov90 => ECCCE.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.90)),
-    :cov99 => ECCCE.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.99)),
+    :cov75 => ECCCo.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.75)),
+    :cov80 => ECCCo.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.80)),
+    :cov90 => ECCCo.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.90)),
+    :cov99 => ECCCo.ConformalModel(conformal_model(clf; method=:simple_inductive, coverage=0.99)),
 )
 ```
 
@@ -369,8 +369,8 @@ using CounterfactualExplanations.Evaluation: benchmark
 bmks = []
 measures = [
     CounterfactualExplanations.distance,
-    ECCCE.distance_from_energy,
-    ECCCE.distance_from_targets
+    ECCCo.distance_from_energy,
+    ECCCo.distance_from_targets
 ]
 for (dataname, dataset) in datasets
     bmk = benchmark(
diff --git a/notebooks/mnist.qmd b/notebooks/mnist.qmd
index d26f3ca6..5e7f7aa6 100644
--- a/notebooks/mnist.qmd
+++ b/notebooks/mnist.qmd
@@ -33,7 +33,7 @@ First, let's create a couple of image classifier architectures:
 epochs = 100
 batch_size = minimum([Int(round(n_obs/10)), 128])
 n_hidden = 32
-activation = Flux.relu
+activation = Flux.swish
 # builder = MLJFlux.@builder Flux.Chain(
 #     Dense(n_in, n_hidden, activation),
 #     Dense(n_hidden, n_hidden, activation),
@@ -43,7 +43,7 @@ activation = Flux.relu
 #     # BatchNorm(n_hidden, activation),
 #     Dense(n_hidden, n_out),
 # )
-builder = MLJFlux.Short(n_hidden=n_hidden, dropout=0.2, σ=activation)
+builder = MLJFlux.Short(n_hidden=n_hidden, dropout=0.1, σ=activation)
 # builder = MLJFlux.MLP(
 #     hidden=(
 #         n_hidden,
@@ -52,7 +52,7 @@ builder = MLJFlux.Short(n_hidden=n_hidden, dropout=0.2, σ=activation)
 #     ), 
 #     σ=activation
 # )
-α = [1.0,1.0,1e-2]
+α = [1.0,1.0,1e-1]
 
 # Simple MLP:
 mlp = NeuralNetworkClassifier(
@@ -93,13 +93,13 @@ cov = .95
 conf_model = conformal_model(jem; method=:adaptive_inductive, coverage=cov)
 mach = machine(conf_model, X, labels)
 fit!(mach)
-M = ECCCE.ConformalModel(mach.model, mach.fitresult)
+M = ECCCo.ConformalModel(mach.model, mach.fitresult)
 ```
 
 ```{julia}
 if mach.model.model isa JointEnergyModels.JointEnergyClassifier
     jem = mach.model.model.jem
-    n_iter = 100
+    n_iter = 500
     _w = 1500
     plts = []
     neach = 10
@@ -151,12 +151,12 @@ ce_jsma = generate_counterfactual(
     initialization=:identity,
 )
 
-# ECCCE:
+# ECCCo:
 λ=[0.0,1.0]
 temp=0.01
 
-# Generate counterfactual using ECCCE generator:
-generator = ECCCEGenerator(
+# Generate counterfactual using ECCCo generator:
+generator = CCEGenerator(
     λ=λ, 
     temp=temp, 
     opt=Flux.Optimise.Adam(),
@@ -168,8 +168,8 @@ ce_conformal = generate_counterfactual(
     converge_when=:generator_conditions,
 )
 
-# Generate counterfactual using ECCCE generator:
-generator = ECCCEGenerator(
+# Generate counterfactual using ECCCo generator:
+generator = CCEGenerator(
     λ=λ, 
     temp=temp, 
     opt=CounterfactualExplanations.Generators.JSMADescent(η=1.0),
@@ -191,7 +191,92 @@ p1 = Plots.plot(
 plts = [p1]
 
 ces = [ce_wachter, ce_conformal, ce_jsma, ce_conformal_jsma]
-_names = ["Wachter", "ECCCE", "JSMA", "ECCCE-JSMA"]
+_names = ["Wachter", "ECCCo", "JSMA", "ECCCo-JSMA"]
+for x in zip(ces, _names)
+    ce, _name = (x[1],x[2])
+    x = CounterfactualExplanations.counterfactual(ce)
+    _phat = target_probs(ce)
+    _title = "$_name (p̂=$(round(_phat[1]; digits=3)))"
+    plt = Plots.plot(
+        convert2image(MNIST, reshape(x,28,28)),
+        axis=nothing, 
+        size=(img_height, img_height),
+        title=_title
+    )
+    plts = [plts..., plt]
+end
+plt = Plots.plot(plts...; size=(img_height*length(plts),img_height), layout=(1,length(plts)))
+display(plt)
+savefig(plt, joinpath(www_path, "cce_mnist.png"))
+```
+
+```{julia}
+# Random.seed!(1234)
+
+# Set up search:
+factual_label = 8
+x = reshape(counterfactual_data.X[:,rand(findall(predict_label(M, counterfactual_data).==factual_label))],input_dim,1)
+target = 3
+factual = predict_label(M, counterfactual_data, x)[1]
+γ = 0.5
+T = 100
+
+# Generate counterfactual using generic generator:
+generator = GenericGenerator(opt=Flux.Optimise.Adam(),)
+ce_wachter = generate_counterfactual(
+    x, target, counterfactual_data, M, generator; 
+    decision_threshold=γ, max_iter=T,
+    initialization=:identity,
+)
+
+generator = GreedyGenerator(η=1.0)
+ce_jsma = generate_counterfactual(
+    x, target, counterfactual_data, M, generator; 
+    decision_threshold=γ, max_iter=T,
+    initialization=:identity,
+)
+
+# ECCCo:
+λ=[0.0,1.0,1.0]
+temp=0.01
+
+# Generate counterfactual using ECCCo generator:
+generator = ECCCoGenerator(
+    λ=λ, 
+    temp=temp, 
+    opt=Flux.Optimise.Adam(),
+)
+ce_conformal = generate_counterfactual(
+    x, target, counterfactual_data, M, generator; 
+    decision_threshold=γ, max_iter=T,
+    initialization=:identity,
+    converge_when=:generator_conditions,
+)
+
+# Generate counterfactual using ECCCo generator:
+generator = ECCCoGenerator(
+    λ=λ, 
+    temp=temp, 
+    opt=CounterfactualExplanations.Generators.JSMADescent(η=1.0),
+)
+ce_conformal_jsma = generate_counterfactual(
+    x, target, counterfactual_data, M, generator; 
+    decision_threshold=γ, max_iter=T,
+    initialization=:identity,
+    converge_when=:generator_conditions,
+)
+
+# Plot:
+p1 = Plots.plot(
+    convert2image(MNIST, reshape(x,28,28)),
+    axis=nothing, 
+    size=(img_height, img_height),
+    title="Factual"
+)
+plts = [p1]
+
+ces = [ce_wachter, ce_conformal, ce_jsma, ce_conformal_jsma]
+_names = ["Wachter", "ECCCo", "JSMA", "ECCCo-JSMA"]
 for x in zip(ces, _names)
     ce, _name = (x[1],x[2])
     x = CounterfactualExplanations.counterfactual(ce)
@@ -226,8 +311,8 @@ generators = Dict(
 # Measures:
 measures = [
     CounterfactualExplanations.distance,
-    ECCCE.distance_from_energy,
-    ECCCE.distance_from_targets,
+    ECCCo.distance_from_energy,
+    ECCCo.distance_from_targets,
     CounterfactualExplanations.validity,
 ]
 ```
\ No newline at end of file
diff --git a/notebooks/proposal.qmd b/notebooks/proposal.qmd
index bdbd45b3..25110879 100644
--- a/notebooks/proposal.qmd
+++ b/notebooks/proposal.qmd
@@ -188,7 +188,7 @@ If the computed value is different from zero, we can reject the null-hypothesis
 
 ## Conformal Counterfactual Explanations
 
-In @sec-fidelity, we have advocated for avoiding surrogate models in the context of Counterfactual Explanations. In this section, we introduce an alternative way to generate high-fidelity Counterfactual Explanations. In particular, we propose Conformal Counterfactual Explanations (ECCCE), that is Counterfactual Explanations that minimize the predictive uncertainty of conformal models. 
+In @sec-fidelity, we have advocated for avoiding surrogate models in the context of Counterfactual Explanations. In this section, we introduce an alternative way to generate high-fidelity Counterfactual Explanations. In particular, we propose Conformal Counterfactual Explanations (ECCCo), that is Counterfactual Explanations that minimize the predictive uncertainty of conformal models. 
 
 ### Minimizing Predictive Uncertainty
 
diff --git a/notebooks/setup.jl b/notebooks/setup.jl
index 5997cae6..a377a588 100644
--- a/notebooks/setup.jl
+++ b/notebooks/setup.jl
@@ -6,8 +6,8 @@ setup_notebooks = quote
     using AlgebraOfGraphics
     using AlgebraOfGraphics: Violin, BoxPlot, BarPlot
     using CairoMakie
-    using ECCCE
-    using ECCCE: set_size_penalty, distance_from_energy, distance_from_targets
+    using ECCCo
+    using ECCCo: set_size_penalty, distance_from_energy, distance_from_targets
     using Chain: @chain
     using ConformalPrediction
     using CounterfactualExplanations
diff --git a/notebooks/synthetic.qmd b/notebooks/synthetic.qmd
index 0ac30edb..620d9cc9 100644
--- a/notebooks/synthetic.qmd
+++ b/notebooks/synthetic.qmd
@@ -60,16 +60,16 @@ for (dataname, data) in datasets
         conf_model = conformal_model(clf; method=:simple_inductive, coverage=cov)
         mach = machine(conf_model, X, y)
         fit!(mach)
-        M = ECCCE.ConformalModel(mach.model, mach.fitresult)
+        M = ECCCo.ConformalModel(mach.model, mach.fitresult)
 
-        # Set up ECCCE:
+        # Set up ECCCo:
         factual_label = predict_label(M, data, x)[1]
         target_label = data.y_levels[data.y_levels .!= factual_label][1]
 
         for λ in Λ, temp in temps
 
-            # ECCCE for given classifier, coverage, temperature and λ:
-            generator = ECCCEGenerator(temp=temp, λ=[l2_λ,λ], opt=opt)
+            # ECCCo for given classifier, coverage, temperature and λ:
+            generator = ECCCoGenerator(temp=temp, λ=[l2_λ,λ], opt=opt)
             @assert predict_label(M, data, x) != target_label
             ce = try
                 generate_counterfactual(
@@ -158,13 +158,13 @@ generators = Dict(
 )
 
 # Untrained Models:
-models = Dict(Symbol("cov$(Int(100*cov))") => ECCCE.ConformalModel(conformal_model(mlp; method=:simple_inductive, coverage=cov)) for cov in cvgs)
+models = Dict(Symbol("cov$(Int(100*cov))") => ECCCo.ConformalModel(conformal_model(mlp; method=:simple_inductive, coverage=cov)) for cov in cvgs)
 
 # Measures:
 measures = [
     CounterfactualExplanations.distance,
-    ECCCE.distance_from_energy,
-    ECCCE.distance_from_targets,
+    ECCCo.distance_from_energy,
+    ECCCo.distance_from_targets,
     CounterfactualExplanations.validity,
 ]
 ```
@@ -187,7 +187,7 @@ for (dataname, data) in datasets
 
         # Model training:
         M = train(M, data)
-        # Set up ECCCE:
+        # Set up ECCCo:
         factual_label = predict_label(M, data, x)[1]
         target_label = data.y_levels[data.y_levels .!= factual_label][1]
     
@@ -195,13 +195,13 @@ for (dataname, data) in datasets
 
             # Generators:
             _generators = deepcopy(generators)
-            _generators[:cce] = ECCCEGenerator(temp=_temp, λ=[l2_λ,λ], opt=opt)
-            _generators[:energy] = ECCCE.EnergyDrivenGenerator(λ=[l2_λ,λ], opt=opt)
-            _generators[:target] = ECCCE.TargetDrivenGenerator(λ=[l2_λ,λ], opt=opt)
+            _generators[:cce] = ECCCoGenerator(temp=_temp, λ=[l2_λ,λ], opt=opt)
+            _generators[:energy] = ECCCo.EnergyDrivenGenerator(λ=[l2_λ,λ], opt=opt)
+            _generators[:target] = ECCCo.TargetDrivenGenerator(λ=[l2_λ,λ], opt=opt)
 
             for (gen_name, gen) in _generators
 
-                # ECCCE for given models, λ and generator:
+                # ECCCo for given models, λ and generator:
                 @assert predict_label(M, data, x) != target_label
                 ce = try
                     generate_counterfactual(
@@ -300,9 +300,9 @@ bmks = []
 for (dataname, dataset) in datasets
     for λ in Λ, temp in temps
         _generators = deepcopy(generators)
-        _generators[:cce] = ECCCEGenerator(temp=temp, λ=[l2_λ,λ], opt=opt)
-        _generators[:energy] = ECCCE.EnergyDrivenGenerator(λ=[l2_λ,λ], opt=opt)
-        _generators[:target] = ECCCE.TargetDrivenGenerator(λ=[l2_λ,λ], opt=opt)
+        _generators[:cce] = ECCCoGenerator(temp=temp, λ=[l2_λ,λ], opt=opt)
+        _generators[:energy] = ECCCo.EnergyDrivenGenerator(λ=[l2_λ,λ], opt=opt)
+        _generators[:target] = ECCCo.TargetDrivenGenerator(λ=[l2_λ,λ], opt=opt)
         bmk = benchmark(
             dataset; 
             models=deepcopy(models), 
diff --git a/paper/paper.pdf b/paper/paper.pdf
index 6a82e2a3a87f7b983aca74527c0f3c31e0276166..2ba71c2968b35cca31816ccb45be28b071acf7fa 100644
GIT binary patch
delta 80571
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
O(5$fJ<l>4Fu>T8K-(S4|

delta 80631
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

diff --git a/paper/paper.tex b/paper/paper.tex
index 13799de7..bd18cf2a 100644
--- a/paper/paper.tex
+++ b/paper/paper.tex
@@ -45,7 +45,7 @@
 \newtheorem{definition}{Definition}[section]
 
 
-\title{Plausibility isn't all you need: Conformal Counterfactual Explanations}
+\title{ECCCos from the Black Box: Letting Models speak for Themselves}
 
 
 % The \author macro works with any number of authors. There are two commands
@@ -266,7 +266,7 @@ The fact that conformal classifiers produce set-valued predictions introduces a
 
 where $\kappa \in \{0,1\}$ is a hyper-parameter and $C_{\theta,\mathbf{y}}(\mathbf{x}_i;\alpha)$ can be interpreted as the probability of label $\mathbf{y}$ being included in the prediction set. Formally, it is defined as $C_{\theta,\mathbf{y}}(\mathbf{x}_i;\alpha):=\sigma\left((s(\mathbf{x}_i,\mathbf{y})-\alpha) T^{-1}\right)$ for $\mathbf{y}\in\mathcal{Y}$ where $\sigma$ is the sigmoid function and $T$ is a hyper-parameter used for temperature scaling \citep{stutz2022learning}.
 
-Penalizing the set size in this way is in principal enough to train efficient conformal classifiers \citep{stutz2022learning}. As we explained above, the set size is also closely linked to predictive uncertainty at the local level. This makes the smooth penalty defined in Equation~\ref{eq:setsize} useful in the context of meeting our objective of generating plausible counterfactuals. In particular, we adapt Equation~\ref{eq:general} to define the baseline objective for Conformal Counterfactual Explanations (ECCCE):
+Penalizing the set size in this way is in principal enough to train efficient conformal classifiers \citep{stutz2022learning}. As we explained above, the set size is also closely linked to predictive uncertainty at the local level. This makes the smooth penalty defined in Equation~\ref{eq:setsize} useful in the context of meeting our objective of generating plausible counterfactuals. In particular, we adapt Equation~\ref{eq:general} to define the baseline objective for Conformal Counterfactual Explanations (ECCCo):
 
 \begin{equation}\label{eq:cce}
   \begin{aligned}
@@ -276,7 +276,7 @@ Penalizing the set size in this way is in principal enough to train efficient co
 
 Since we can still retrieve unperturbed softmax outputs from our conformal classifier $M_{\theta}$, we are free to work with any loss function of our choice. For example, we could use standard cross-entropy for $\text{yloss}$.
 
-In order to generate prediction sets $C_{\theta}(f(\mathbf{Z}^\prime);\alpha)$ for any Black Box Model we merely need to perform a single calibration pass through a holdout set $\mathcal{D}_{\text{cal}}$. Arguably, data is typically abundant and in most applications practitioners tend to hold out a test data set anyway. Our proposed approach for ECCCE therefore removes the restriction on the family of predictive models, at the small cost of reserving a subset of the available data for calibration. 
+In order to generate prediction sets $C_{\theta}(f(\mathbf{Z}^\prime);\alpha)$ for any Black Box Model we merely need to perform a single calibration pass through a holdout set $\mathcal{D}_{\text{cal}}$. Arguably, data is typically abundant and in most applications practitioners tend to hold out a test data set anyway. Our proposed approach for ECCCo therefore removes the restriction on the family of predictive models, at the small cost of reserving a subset of the available data for calibration. 
 
 \section{Experiments}
 
diff --git a/src/ECCCE.jl b/src/ECCCo.jl
similarity index 71%
rename from src/ECCCE.jl
rename to src/ECCCo.jl
index 8a031fff..82c901d7 100644
--- a/src/ECCCE.jl
+++ b/src/ECCCo.jl
@@ -1,4 +1,4 @@
-module ECCCE
+module ECCCo
 
 using CounterfactualExplanations
 import MLJModelInterface as MMI
@@ -9,6 +9,6 @@ include("losses.jl")
 include("generator.jl")
 include("sampling.jl")
 
-export ECCCEGenerator, EnergySampler, set_size_penalty, distance_from_energy
+export ECCCoGenerator, EnergySampler, set_size_penalty, distance_from_energy
 
 end
\ No newline at end of file
diff --git a/src/generator.jl b/src/generator.jl
index ac598d48..2dc3e460 100644
--- a/src/generator.jl
+++ b/src/generator.jl
@@ -1,17 +1,17 @@
 using CounterfactualExplanations.Objectives
 
-"Constructor for `ECCCEGenerator`."
-function ECCCEGenerator(; λ::Union{AbstractFloat,Vector{<:AbstractFloat}}=[0.1, 1.0], κ::Real=1.0, temp::Real=0.05, kwargs...)
+"Constructor for `ECCCoGenerator`."
+function ECCCoGenerator(; λ::Union{AbstractFloat,Vector{<:AbstractFloat}}=[0.1, 1.0], κ::Real=1.0, temp::Real=0.05, kwargs...)
     function _set_size_penalty(ce::AbstractCounterfactualExplanation)
-        return ECCCE.set_size_penalty(ce; κ=κ, temp=temp)
+        return ECCCo.set_size_penalty(ce; κ=κ, temp=temp)
     end
     _penalties = [Objectives.distance_l2, _set_size_penalty]
     λ = λ isa AbstractFloat ? [0.0, λ] : λ
     return Generator(; penalty=_penalties, λ=λ, kwargs...)
 end
 
-"Constructor for `ECECCCEGenerator`: Energy Constrained Conformal Counterfactual Explanation Generator."
-function ECECCCEGenerator(; 
+"Constructor for `ECECCCoGenerator`: Energy Constrained Conformal Counterfactual Explanation Generator."
+function ECECCCoGenerator(; 
     λ::Union{AbstractFloat,Vector{<:AbstractFloat}}=[0.1, 1.0, 1.0], 
     κ::Real=1.0, 
     temp::Real=0.5, 
@@ -21,23 +21,23 @@ function ECECCCEGenerator(;
     kwargs...
 )
     function _set_size_penalty(ce::AbstractCounterfactualExplanation)
-        return ECCCE.set_size_penalty(ce; κ=κ, temp=temp)
+        return ECCCo.set_size_penalty(ce; κ=κ, temp=temp)
     end
-    _penalties = [Objectives.distance_l2, _set_size_penalty, ECCCE.distance_from_energy]
+    _penalties = [Objectives.distance_l2, _set_size_penalty, ECCCo.distance_from_energy]
     λ = λ isa AbstractFloat ? [0.0, λ, λ] : λ
     return Generator(; penalty=_penalties, λ=λ, opt=opt, kwargs...)
 end
 
 "Constructor for `EnergyDrivenGenerator`."
 function EnergyDrivenGenerator(; λ::Union{AbstractFloat,Vector{<:AbstractFloat}}=[0.1, 1.0], kwargs...)
-    _penalties = [Objectives.distance_l2, ECCCE.distance_from_energy]
+    _penalties = [Objectives.distance_l2, ECCCo.distance_from_energy]
     λ = λ isa AbstractFloat ? [0.0, λ] : λ
     return Generator(; penalty=_penalties, λ=λ, kwargs...)
 end
 
 "Constructor for `TargetDrivenGenerator`."
 function TargetDrivenGenerator(; λ::Union{AbstractFloat,Vector{<:AbstractFloat}}=[0.1, 1.0], kwargs...)
-    _penalties = [Objectives.distance_l2, ECCCE.distance_from_targets]
+    _penalties = [Objectives.distance_l2, ECCCo.distance_from_targets]
     λ = λ isa AbstractFloat ? [0.0, λ] : λ
     return Generator(; penalty=_penalties, λ=λ, kwargs...)
 end
\ No newline at end of file
diff --git a/src/penalties.jl b/src/penalties.jl
index 37474c9e..81b953fe 100644
--- a/src/penalties.jl
+++ b/src/penalties.jl
@@ -42,7 +42,7 @@ function distance_from_energy(
     ignore_derivatives() do
         _dict = ce.params
         if !(:energy_sampler ∈ collect(keys(_dict)))
-            _dict[:energy_sampler] = ECCCE.EnergySampler(ce; kwargs...)
+            _dict[:energy_sampler] = ECCCo.EnergySampler(ce; kwargs...)
         end
         sampler = _dict[:energy_sampler]
         push!(conditional_samples, rand(sampler, n; from_buffer=from_buffer))
diff --git a/test/runtests.jl b/test/runtests.jl
index 569772e4..2967ba33 100644
--- a/test/runtests.jl
+++ b/test/runtests.jl
@@ -1,6 +1,6 @@
-using ECCCE
+using ECCCo
 using Test
 
-@testset "ECCCE.jl" begin
+@testset "ECCCo.jl" begin
     # Write your tests here.
 end
diff --git a/www/cce_mnist.png b/www/cce_mnist.png
index 3db6423c613ebc10174d84b0ae8f6f3cf8601ff0..55ff8d5650856abe43798dcd34a10da9de1c34f0 100644
GIT binary patch
literal 23455
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
aP(-r|&8-45)e%6I%>w;{KWX-(Xa5VfWe~6c

literal 22069
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
NmXH(A6ua~Ae*p}e%R~SG

-- 
GitLab