Skip to content
forked from mmschlk/iXAI

Fast and incremental explanations for online machine learning models. Works best with the river framework.

License

Notifications You must be signed in to change notification settings

HammerLabML/iXAI

 
 

Repository files navigation

ixai_logo

Documentation Status PyPi PyPi_status
  </a>
  <!-- License -->
  <a href= mit_license

iXAI: Incremental Explainable Artificial Intelligence

Demystifying the black-box, piece by piece.

This is the first iteration of our incremental explanation package. Currently, it includes two explanation methods: PFI and SAGE. Please look at the examples in the examples directory. Please help us in improving our work by contributing or pointing to issues. We will update this iteration soon with further information.

🛠 Installation

ixai is intended to work with Python 3.8 and above. Installation can be done via pip:

pip install ixai

📊 Quickstart

Basic Classification

>>> from river.metrics import Accuracy
>>> from river.ensemble import AdaptiveRandomForestClassifier
>>> from river.datasets.synth import Agrawal

>>> from ixai.explainer import IncrementalPFI

>>> stream = Agrawal(classification_function=2)
>>> feature_names = list([x_0 for x_0, _ in stream.take(1)][0].keys())

>>> model = AdaptiveRandomForestClassifier(n_models=10, max_depth=10, leaf_prediction='mc')

>>> incremental_pfi = IncrementalPFI(
...     model_function=model.predict_one,
...     loss_function=Accuracy(),
...     feature_names=feature_names,
...     smoothing_alpha=0.001,
...     n_inner_samples=5
... )

>>> training_metric = Accuracy()
>>> for (n, (x, y)) in enumerate(stream, start=1)
...     training_metric.update(y, model.predict_one(x))   # inference
...     incremental_pfi.explain_one(x, y)                 # explaining
...     model.learn_one(x, y)                             # learning
...     if n % 1000 == 0:
...         print(f"{n}: Accuracy: {training_metric.get():.3f}, PFI: {incremental_pfi.importance_values}")

1000: Accuracy: 0.785, PFI: {'age': 0.22, 'elevel': 0.18, 'zipcode': -0.07, 'salary': 0.04, 'commission': 0.05, 'loan': -0.06, 'car': 0.02, 'hyears': 0.03, 'hvalue': 0.03}
2000: Accuracy: 0.841, PFI: {'age': 0.26, 'elevel': 0.21, 'zipcode': -0.01, 'salary': 0.02, 'commission': 0.03, 'loan': -0.02, 'car': 0.02, 'hyears': 0.04, 'hvalue': 0.02}
3000: Accuracy: 0.921, PFI: {'age': 0.28, 'elevel': 0.24, 'zipcode': -0.00, 'salary': 0.00, 'commission': 0.01, 'loan': -0.01, 'car': 0.01, 'hyears': 0.01, 'hvalue': 0.00}

📖 Documentation

The documentation for ixai can be found here.

About

Fast and incremental explanations for online machine learning models. Works best with the river framework.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%