Py之aix360:aix360的简介、安装、使用方法之详细攻略
目录
aix360的简介
AI Explainability 360,可解释AI 360工具包是一个开源库,用于解释数据集和机器学习模型。由 IBM在2019年左右开发的,在他们的平台上广泛使用。
可解释AI 360 Python包一组包含不同解释维度的算法,覆盖不同层次的解释以及替代可解释度量。可解释AI 360工具包支持表格、文本、图像和时间序列数据。
解释性没有最佳方法,有很多种解释方式:数据对比模型、直接可解释对后验解释、局部对全局等。因此,掌握哪些算法最适用于给定用例可能很混乱。为此,我们创建了一些指南资料和分类树,可以参考。
GitHub官网:
GitHub - Trusted-AI/AIX360: Interpretability and explainability of data and machine learning models
文档:AI Explainability 360 — aix360 0.1 documentation
1、支持的可解释算法
局部白盒解释器
局部黑盒解释器
全局白盒解释器
可直接解释的无监督解释器
可直接解释的监督解释器
基于时间序列的本地黑匣子解释器
数据解释 | ProtoDash (Gurumoorthy等人,2019年) Disentangled Inferred Prior VAE (Kumar等人,2018年) 分离推断先前 | |
局部后验解释 | ProtoDash(Gurumoorthy等人,2019年) 对比性解释方法(Dhurandhar等人,2018年) 具有单调属性函数的对比性解释方法(Luss等人,2019年) 示例基本对比解释方法 聚合条件期望(对Goldstein等人的个人条件期望图进行高维度的适应) LIME(Ribeiro等人。2016,Github) SHAP(Lundberg等人。2017,Github) | |
时间序列局部后验解释 | 使用综合梯度的时间序列显着性地图(受Sundararajan等人启发) 时间序列LIME(Ribeiro等人2016年经典论文的时间序列适应) 时间序列个人条件期望(Goldstein等人的个人条件期望图的时间序列适应) | |
局部直接解释 | 教AI解释其决策(Hind等人,2019) 最佳运输中的顺序约束(Lim等人,2022,Github) | |
全局直接解释 | 可解释模型差分(IMD)(Haldar等人,2023) 继续分数网(CoFrNets)(Puri等人,2021) 布尔决策规则通过列生成(Light版)(Dash等人,2018) 通用线性规则模型(WEI等人,2019) 快速高效规则归纳(Ripper)(William W Cohen,1995) | |
全局后验解释 | 全局后验解释 ProfWeight (Dhurandhar等人,2018年) | |
支持的可解释度量 | 信任度(Alvarez-Melis和Jaakkola,2018) 单调性(Luss等人,2019) |
aix360的安装
pip install aix360
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple aix360
aix360的使用方法
1、基础用法
(1)、基于泰坦尼克号数据集利用aix360实现可解释性
import pandas as pd
from sklearn.model_selection import train_test_split
from aix360.algorithms.explainers import ExplainableBoostingClassifier
from aix360.algorithms.explainers import plot_ebm
from interpret import show
# 1. 加载数据
titanic = pd.read_csv('titanic.csv')
# 2. 选择特征和标签
features = ['Pclass', 'Sex', 'Age', 'SibSp', 'Parch']
label = 'Survived'
# 3. 划分数据集
X = titanic[features]
y = titanic[label]
X_train, X_test, y_train, y_test = train_test_split(X, y)
# 4. 训练EBM模型
model = ExplainableBoostingClassifier()
model.fit(X_train, y_train)
# 5. 可视化模型
plot_ebm(model, show_results=True, flatten=True)
# 6. 获得局部解释
prediction = model.predict([3, 'female', 20, 1, 0])
show(prediction, X.columns)