Alibi é uma biblioteca Python voltada para inspeção e interpretação de modelos de aprendizado de máquina. O foco da biblioteca é fornecer implementações de alta qualidade de métodos de explicação de caixa preta, caixa branca, locais e globais para modelos de classificação e regressão.
Se você estiver interessado em detecção de valores discrepantes, desvio de conceito ou detecção de instâncias adversárias, confira nosso projeto irmão Alibi-detect.
Explicações âncora para imagens | Gradientes integrados para texto |
Exemplos contrafactuais | Efeitos locais acumulados |
O Alibi pode ser instalado em:
pip
)conda
/ mamba
)O Alibi pode ser instalado a partir do PyPI:
pip install alibi
Alternativamente, a versão de desenvolvimento pode ser instalada:
pip install git+https://github.com/SeldonIO/alibi.git
Para aproveitar as vantagens do cálculo distribuído de explicações, instale alibi
com ray
:
pip install alibi[ray]
Para suporte SHAP, instale alibi
da seguinte forma:
pip install alibi[shap]
Para instalar a partir do conda-forge é recomendado usar o mamba, que pode ser instalado no ambiente conda base com:
conda install mamba -n base -c conda-forge
Para a instalação padrão do Alibi:
mamba install -c conda-forge alibi
Para suporte de computação distribuída:
mamba install -c conda-forge alibi ray
Para suporte SHAP:
mamba install -c conda-forge alibi shap
A API de explicação do álibi se inspira no scikit-learn
, consistindo em etapas distintas de inicialização, ajuste e explicação. Usaremos o explicador AnchorTabular para ilustrar a API:
from alibi . explainers import AnchorTabular
# initialize and fit explainer by passing a prediction function and any other required arguments
explainer = AnchorTabular ( predict_fn , feature_names = feature_names , category_map = category_map )
explainer . fit ( X_train )
# explain an instance
explanation = explainer . explain ( x )
A explicação retornada é um objeto Explanation
com atributos meta
e data
. meta
é um dicionário que contém os metadados do explicador e quaisquer hiperparâmetros e data
é um dicionário que contém tudo relacionado à explicação computada. Por exemplo, para o algoritmo Anchor, a explicação pode ser acessada via explanation.data['anchor']
(ou explanation.anchor
). Os detalhes exatos dos campos disponíveis variam de método para método, por isso encorajamos o leitor a se familiarizar com os tipos de métodos suportados.
As tabelas a seguir resumem os possíveis casos de uso para cada método.
Método | Modelos | Explicações | Classificação | Regressão | Tabular | Texto | Imagens | Recursos categóricos | Conjunto de trem necessário | Distribuído |
---|---|---|---|---|---|---|---|---|---|---|
ALE | BB | global | ✔ | ✔ | ✔ | |||||
Dependência Parcial | BB WB | global | ✔ | ✔ | ✔ | ✔ | ||||
Variação PD | BB WB | global | ✔ | ✔ | ✔ | ✔ | ||||
Importância da Permutação | BB | global | ✔ | ✔ | ✔ | ✔ | ||||
Âncoras | BB | local | ✔ | ✔ | ✔ | ✔ | ✔ | Para tabular | ||
CEM | BB*TF/Keras | local | ✔ | ✔ | ✔ | Opcional | ||||
Contrafactuais | BB*TF/Keras | local | ✔ | ✔ | ✔ | Não | ||||
Protótipos contrafactuais | BB*TF/Keras | local | ✔ | ✔ | ✔ | ✔ | Opcional | |||
Contrafactuais com RL | BB | local | ✔ | ✔ | ✔ | ✔ | ✔ | |||
Gradientes Integrados | TF/Keras | local | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | Opcional | |
Kernel SHAP | BB | local global | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
Árvore SHAP | Banco Mundial | local global | ✔ | ✔ | ✔ | ✔ | Opcional | |||
Explicações de similaridade | Banco Mundial | local | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Esses algoritmos fornecem pontuações específicas de instância que medem a confiança do modelo para fazer uma previsão específica.
Método | Modelos | Classificação | Regressão | Tabular | Texto | Imagens | Recursos categóricos | Conjunto de trem necessário |
---|---|---|---|---|---|---|---|---|
Pontuações de confiança | BB | ✔ | ✔ | ✔(1) | ✔(2) | Sim | ||
Medida de Linearidade | BB | ✔ | ✔ | ✔ | ✔ | Opcional |
Chave:
Esses algoritmos fornecem uma visão resumida do conjunto de dados e ajudam a construir um classificador interpretável 1-KNN.
Método | Classificação | Regressão | Tabular | Texto | Imagens | Recursos categóricos | Etiquetas de conjuntos de trens |
---|---|---|---|---|---|---|---|
ProtoSelect | ✔ | ✔ | ✔ | ✔ | ✔ | Opcional |
Efeitos Locais Acumulados (ALE, Apley e Zhu, 2016)
Dependência Parcial (JH Friedman, 2001)
Variância de dependência parcial (Greenwell et al., 2018)
Importância da Permutação (Breiman, 2001; Fisher et al., 2018)
Explicações âncora (Ribeiro et al., 2018)
Método de Explicação Contrastiva (CEM, Dhurandhar et al., 2018)
Explicações contrafactuais (extensão de Wachter et al., 2017)
Explicações contrafactuais guiadas por protótipos (Van Looveren e Klaise, 2019)
Explicações contrafactuais independentes de modelo via RL (Samoilescu et al., 2021)
Gradientes Integrados (Sundararajan et al., 2017)
Explicações do aditivo Shapley do kernel (Lundberg et al., 2017)
Explicações do aditivo Tree Shapley (Lundberg et al., 2020)
Pontuações de confiança (Jiang et al., 2018)
Medida de Linearidade
ProtoSelect
Explicações de similaridade
Se você usar álibi em sua pesquisa, considere citá-lo.
Entrada BibTeX:
@article{JMLR:v22:21-0017,
author = {Janis Klaise and Arnaud Van Looveren and Giovanni Vacanti and Alexandru Coca},
title = {Alibi Explain: Algorithms for Explaining Machine Learning Models},
journal = {Journal of Machine Learning Research},
year = {2021},
volume = {22},
number = {181},
pages = {1-7},
url = {http://jmlr.org/papers/v22/21-0017.html}
}