局部可解释模型无关解释#
链接到API参考:LimeTabular
查看LIME的支持库这里。
摘要
局部可解释模型无关解释(LIME)[1]是一种在任何黑箱模型预测的决策空间周围拟合替代玻璃箱模型的方法。LIME明确尝试模拟任何预测的局部邻域——通过关注足够狭窄的决策表面,即使是简单的线性模型也能提供黑箱模型行为的良好近似。用户随后可以检查玻璃箱模型,以了解黑箱模型在该区域的行为。
LIME通过扰动任何单个数据点并生成合成数据来工作,这些数据由黑箱系统评估,并最终用作玻璃箱模型的训练集。LIME的优点是你可以像推理线性模型一样解释解释,并且它几乎可以用于任何模型。另一方面,解释有时不稳定,并且高度依赖于扰动过程。
工作原理
Christoph Molnar的“可解释机器学习”电子书[2]对LIME有一个极好的概述,可以在这里找到here。
概念论文“为什么我应该信任你?”解释任何分类器的预测。” [1] 可以在 arXiv 上找到 这里。
如果您发现视频是学习算法的更好媒介,您可以在下面找到作者Marco Tulio Ribeiro提供的算法概念概述:

代码示例
以下代码将为乳腺癌数据集训练一个黑箱管道。之后,它将使用LIME解释该管道及其决策。提供的可视化将用于局部解释。
from interpret import set_visualize_provider
from interpret.provider import InlineProvider
set_visualize_provider(InlineProvider())
import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.decomposition import PCA
from sklearn.pipeline import Pipeline
from interpret import show
from interpret.blackbox import LimeTabular
seed = 42
np.random.seed(seed)
X, y = load_breast_cancer(return_X_y=True, as_frame=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=seed)
pca = PCA()
rf = RandomForestClassifier(random_state=seed)
blackbox_model = Pipeline([('pca', pca), ('rf', rf)])
blackbox_model.fit(X_train, y_train)
lime = LimeTabular(blackbox_model, X_train)
show(lime.explain_local(X_test[:5], y_test[:5]), 0)