All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Note: We try to adhere to these practices as of version [v1.1.1].
- Added support for an energy constraint as in Altmeyer et al. (2024). This is the first step towards adding functionality for ECCCo. [387]
- Removed the call to the
Iris
function in the test suite because of HTTPs issues. [#452] - Removed the
mlj_models_catalogue
because it served no obvious purpose. In the future, we may instead add meta information to theall_models_catalogue
. [#444]
- New general
Model
struct that wraps empty concrete types. This adds a more general interface that is still flexible enough by simply using multiple dispatch on the empty concrete types. [#444] - A new
incompatible(::AbstractGenerator, ::AbstractCounterfactualExplanation)
function has been added to avoid running a counterfactual search if the generator is incompatible with any other specification (e.g. the model). [#444]
- No longer exporting many of the deprecated functions. [#452]
- Updated pre-trained model artifacts. [#444]
- Some function signatures have been deprecated, e.g.
NeuroTreeModel
toNeuroTree
,LaplaceReduxModel
toLaplaceNN
. [#444] - Support for
DecisionTree.jl
models and theFeatureTweakGenerator
have been moved to an extension (DecisionTreeExt
). [#444] - Updates to NeuroTreeModels extensions to incorporate breaking changes to package. [#444]
- No longer running alloc test on Windows. [#441]
- Slight change to doctests. [#447]
- Unit tests: adds a simple performance benchmark to test that for a small problem, generating a counterfactual using the generic generator takes at most 4700 allocations. Only run on julia
v1.10
and higher. [#436]
- The
find_potential_neighbours
is now only triggered if one of the penalties of the generator requires access to samples from the target domain. This improves scalability because calling the function can be computationally costly (forward-pass). [#436] - The target variable encodings are now handled more efficiently. Previously certain tasks were repeated, which was not necessary. [#436]
- Removed the assertion checking that the model ever predicts the target value. While this assertion is useful, it is not essential. For large enough models and datasets, this forward pass can be very costly. [#436]
- Removed redundant
distance_from_targets
function. [#436]
- Refactors the encodings and decodings such that it is now more streamlined. Instead of conditional statements, encodings are now dispatched on the type of a new unifying
data.input_encoder
field. [#432] - Refactors the check for redundancy. This is now based on the convergence type and done right before the counterfactual search begins, if not redundant. [#432]
- Added additional unit tests. [#437]
- Adds a section on
Convergence
to the documentation,Changelog.jl
functionality and a few doc tests. #429
- Changes style of taking gradients for the counterfactual search from implicit to explicit. [#430]
- Removed all implicit imports. [#430]
- Removed CUDA.jl dependency, because redundant. [#430]
- Removed Parameters.jl dependency, because redundant. [#430]
- Replaces the GIF in the README and introduction of docs for a static image.
- Added tests for LaplaceRedux extension. Bumped upper compat bound for LaplaceRedux.jl. #428