跳至内容

可解释 AI:理解并信任机器学习模型

深入了解可解释人工智能(XAI),学习如何借助 LIME 与 SHAP 提升模型可解释性,从而建立对 AI 系统的信任。理解在 AI 驱动决策中透明性与公平性的重要性。
已更新 2026年10月6日  · 12分钟 阅读

使用 AI 探索

ChatGPTClaudePerplexity

许多行业和组织正在使用人工智能与机器学习模型来做出明智决策。然而,随着这些技术不断发展并变得更加复杂,人类越来越难以理解并追溯这些 AI 解决方案的决策过程。运用可解释人工智能(简称 XAI)可以应对这一挑战。

本文将先介绍什么是可解释人工智能,随后强调其重要性,并阐明其目标与优势。第二部分将概述两种常用的替代模型 LIME 与 SHAP,并给出其 Python 实现,帮助解释机器学习模型。

什么是可解释人工智能(XAI)?

可解释人工智能指一组流程与方法,旨在为 AI 与机器学习模型生成的决策提供清晰、易于人类理解的解释。

通过在这些模型中集成可解释层,数据科学家与机器学习从业者可以构建更值得信赖且更透明的系统,为开发者、监管者与终端用户等各类利益相关方提供支持。

通过可解释 AI 构建信任

以下是有助于建立信任的一些可解释 AI 原则:

  • 透明性。确保利益相关方理解模型的决策过程。
  • 公平性。确保模型的决策对所有人都是公平的,包括受保护群体(种族、宗教、性别、残障、族裔)。
  • 信任。评估人类用户在使用 AI 系统时的信心程度。
  • 稳健性。对输入数据或模型参数变化具有抗扰性,即使面对不确定性或意外情况,仍能保持一致、可靠的表现。
  • 隐私。保证对用户敏感信息的保护。
  • 可解释性。为其预测与结果提供人类可理解的解释。

可解释 AI 的要素

实施可解释 AI 带来多重益处。对于决策者和其他利益相关方,它能清晰呈现 AI 驱动决策背后的理由,帮助他们做出更明智的选择。它还可帮助识别模型中的潜在偏差或错误,从而获得更准确与更公平的结果。

可解释 AI 的示例

模型可解释性大致分为两类:特定模型方法与与模型无关的方法。本节将理解二者的差异,并重点关注与模型无关的方法。

两种技术都能在确保模型有效与可问责的同时,为机器学习模型的内部工作机制提供有价值的洞察。

为更好地展示这些工具,我们将使用 Kaggle 的糖尿病数据集。我们会先构建一个简单的分类器,然后实现可解释性。

构建分类器

我们基于糖尿病数据集构建一个随机森林分类器,以预测糖尿病结局。代码分为几个步骤:(1)导入相关库,(2)创建训练集与测试集,(3)构建模型,(4)通过分类报告输出性能指标。

# Load useful libraries
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
from sklearn.metrics import classification_report

# Separate Features and Target Variables
X = diabetes_data.drop(columns='Outcome')
y = diabetes_data['Outcome']

# Create Train & Test Data
X_train, X_test, y_train, y_test = train_test_split(X, y,test_size=0.3,
                                                	stratify =y,
                                                	random_state = 13)

# Build the model
rf_clf = RandomForestClassifier(max_features=2, n_estimators =100 ,bootstrap = True)

rf_clf.fit(X_train, y_train)

# Make prediction on the testing data
y_pred = rf_clf.predict(X_test)

# Classification Report
print(classification_report(y_pred, y_test))

最后一条打印语句会生成如下报告:

模型的分类报告

该随机森林分类器在预测糖尿病结局方面表现尚可,显然可以通过不同模型进一步改进。

现在,我们可以为该模型加入可解释层,为其预测提供更多洞见。下一节将聚焦两大类可解释性方法:特定模型方法与与模型无关的方法。

我们的文章《机器学习中的分类:入门》可帮助您了解机器学习中的分类,涵盖其概念、用途以及一些分类算法示例。

与模型无关的方法

这类方法可应用于任何机器学习模型,而不受其结构或类型限制。它们侧重分析特征的输入—输出配对。本节将介绍并讨论两种广泛使用的替代模型:LIME 和 SHAP。

SHAP

SHAP 是 SHapley Additive exPlanations 的缩写。该方法旨在通过计算每个特征对预测的贡献来解释某个样本/观测的预测结果,可通过以下 pip 命令安装。

!pip install shap

安装完成后:

  • 导入主 shap 库。
  • 使用 TreeExplainer 类来解释基于树的模型,并配合 initjs 使用。
  • shap.initjs() 函数用于在 Jupyter Notebook 环境中初始化显示 SHAP 可视化所需的 JavaScript 代码。
  • 最后,将随机森林分类器传入 TreeExplainer 实例后,计算测试数据集中每个样本各特征的 SHAP 值。
import shap
import matplotlib.pyplot as plt

# load JS visualization code to notebook
shap.initjs()

# Create the explainer
explainer = shap.TreeExplainer(rf_clf)

shap_values = explainer.shap_values(X_test)

SHAP 提供了多种可视化工具以增强模型可解释性,下一节将讨论其中两类:(1)通过总结图展示变量重要性,(2)针对特定目标的总结图,以及(3)依赖图。

用总结图展示变量重要性

在该图中,特征按其平均 SHAP 值排序,最重要的特征位于顶部,最不重要的位于底部,使用 summary_plot() 函数生成。这有助于理解每个特征对模型预测的影响。

print("Variable Importance Plot - Global Interpretation")
figure = plt.figure()
shap.summary_plot(shap_values, X_test)

显示重要变量的总结图

上述图形可以得到以下解读:

  • 我们可以观察到,每一类的水平矩形中红色与蓝色大致各占一半。这意味着每个特征对糖尿病(label=1)与非糖尿病(label=0)两类的分类影响相对均衡。
  • 然而,Glucose、Age 与 BMI 是预测力最强的前三个特征。
  • 相较之下,Pregnancies、SkinThicknes、Insulin 与 BloodPressure 的贡献不及前三者。

针对特定标签的总结图

这种方式可以更细粒度地概览每个特征对某一特定结果(标签)的影响。

在下面的示例中,shap_values[1] 表示对被分类为标签 1(患有糖尿病)的样本对应的 SHAP 值。

shap.summary_plot(shap_values[1], X_test)

针对标签 = 1 的深入总结图

从上图可以看到:

  • Y 轴表示按平均绝对 SHAP 值排序的特征,类似于图 2。
  • X 轴表示 SHAP 值。对于某一特征,正值会将模型预测推向所考察的标签(label=1),而负值则将预测推向相反类别(label=0)。
  • 个体若血糖值较高(红点),更可能被诊断为糖尿病(阳性结果);而血糖值较低则更可能不被诊断为糖尿病。
  • 同样地,年龄较大的患者更可能被诊断为糖尿病。然而,对于年轻患者,模型似乎存在不确定性。

针对 Age 特征的这种不确定性,可以使用依赖图来获取更多洞见。

依赖图

与总结图不同,依赖图展示了在数据中每个样本上,某个特定特征与预测结果之间的关系。进行这种分析的原因有多种,不仅限于获取更细粒度的信息,还包括通过验证或挑战总结图或其他全局特征重要性度量的发现,来确认所分析特征的重要性。

Age 特征的依赖图

依赖图显示,30 岁以下患者被诊断为糖尿病的风险较低;相反,30 岁以上个体更有可能被诊断为糖尿病。

LIME

LIME 全称为 Local Interpretable Model-agnostic Explanations(本地可解释、与模型无关的解释)。与针对整个数据集提供模型的全局理解不同,LIME 专注于解释模型对单个样本的预测。

LIME 解释器的设置主要分两步:(1)导入 lime 模块;(2)使用训练数据与目标拟合解释器。在此阶段,mode 设为 classification,与当前任务相对应。

# Import the LimeTabularExplainer module
from lime.lime_tabular import LimeTabularExplainer

# Get the class names
class_names = ['Has diabetes', 'No diabetes']

# Get the feature names
feature_names = list(X_train.columns)

# Fit the Explainer on the training data set using the LimeTabularExplainer
explainer = LimeTabularExplainer(X_train.values, feature_names =     
                                 feature_names,
                                 class_names = class_names, 
                                 mode = 'classification')

下面的代码片段会基于随机森林分类器,为测试数据中的第 8 个样本生成并显示 LIME 解释,并以表格形式呈现最终的特征贡献。

测试数据集中第 8 个样本的 LIME 解释

结果从左至右包含三部分关键信息:(1)模型预测,(2)特征贡献,(3)每个特征的实际取值。

可以看到,第 8 位患者被预测为患有糖尿病,置信度为 72%。模型做出该决定的原因包括:

  • 患者的血糖值大于 99。
  • 血压大于 70。

这些取值可在右侧表格中核对。

特定模型方法

与与模型无关的方法相反,这些方法只能应用于有限类别的模型。其中包括线性回归、决策树以及神经网络的可解释性。对于深度学习模型,可以利用诸如 DeepLIFT、Grad-CAM 或 Integrated Gradients 等技术进行解释。

当使用决策树模型时,可通过 scikit-learn 的 plot_tree 函数生成树形图,从上到下解释模型的决策过程,示例如下所示。

文章《深度学习——数据科学家的教程》将回答关于深度学习的常见问题,并通过真实案例探讨深度学习的各个方面。

在生成树形图之前,我们先用特定的超参数(如 max_depth 与 min_samples_leaf)训练一个决策树分类器。

from sklearn.tree import DecisionTreeClassifier, plot_tree
dt_clf = DecisionTreeClassifier(max_depth = 3, min_samples_leaf = 2)
dt_clf.fit(X_train, y_train)

# Predict on the test data and evaluate the model
y_pred = dt_clf.predict(X_test)

print(classification_report(y_pred, y_test))

上述打印语句会生成如下模型分类报告。

模型的分类报告

模型的决策过程可通过以下代码进行可视化:

fig = plt.figure(figsize=(25,20))
_ = plot_tree(dt_clf,
               	feature_names = feature_names,
               	class_names = class_names,
               	filled=True)

糖尿病预测任务的决策树

通过检查树结构,可以追踪每个样本的决策路径,从而洞察模型行为并提升可解释性。

在上图中,每个节点表示基于某个特征取值的决策或分裂。对于内部节点,图中显示用于分裂的特征、分裂阈值、基尼不纯度以及到达该节点的样本数量。

在叶子节点中,会显示多数类别及样本数量。此外,节点颜色代表多数类别,颜色的深浅表示该节点中主导类别所占比例。例如,左分支的橙色节点对应糖尿病标签,而蓝色则对应非糖尿病。

XAI 的挑战与未来展望

随着 AI 技术持续进步并日益复杂,理解与解释算法以辨析其如何产生结果变得愈发具有挑战性,这也促使研究人员不断探索新方法并改进现有方法。

许多可解释 AI 模型需要对底层模型进行简化,可能会导致预测性能下降。此外,当前的可解释方法可能无法覆盖决策过程的所有方面,从而限制了解释的效用,尤其是在处理更复杂的模型时。

新的研究正致力于通过开发更有效的算法来增强可解释 AI 技术,既能应对伦理问题,又能提供更易用的解释。

最后,随着研究不断推进,我们更有可能获得更为成熟的方法,以促进透明性、可信度与公平性。

结论

本文概述了什么是可解释 AI,并介绍了一些有助于建立信任的原则,这些原则可为数据科学家与其他利益相关方提供相关技能,以构建可信模型并辅助制定可执行的决策。

我们还介绍了与模型无关与特定模型的方法,并重点讲解了前者中的 LIME 与 SHAP。此外,本文还强调了可解释 AI 的挑战、局限以及部分研究方向。

如需进一步了解相关技术背后的伦理问题,欢迎查看我们的课程《数据伦理导论》,内容涵盖数据伦理原则、其与 AI 伦理的关系,以及数据生命周期不同阶段的特征。


Zoumana Keita 's photo
Author
Zoumana Keita
LinkedIn
Twitter

一位多才多艺、乐于分享知识并回馈他人的数据科学家。Zoumana 是 YouTube 内容创作者,也是 Medium 上的顶尖科技写作者。他热爱演讲、编程与教学。Zoumana 拥有两个硕士学位:其一是在法国巴黎获得的计算机科学硕士,专注于机器学习;其二是在美国德州理工大学获得的数据科学硕士。他的职业生涯始于法国 Groupe OPEN 的软件开发工程师,随后加入 IBM 担任机器学习顾问,为保险公司构建端到端的 AI 解决方案。之后,Zoumana 加入了 Axionable——一家总部位于巴黎与蒙特利尔的首家“可持续 AI”初创公司。在那里,他担任数据科学家,为来自法国、蒙特利尔、新加坡和瑞士的客户交付 AI 产品,主要聚焦 NLP 场景。此外,他将 5% 的时间投入到研发工作。目前,他在 IFC(世界银行集团)担任高级数据科学家。

主题
人工智能
机器学习

进一步了解 AI!

{count, plural, other {课程}}

AI 伦理

{hours} 小时
155.2K
探讨 AI 伦理议题,重点介绍了基本原则、公平性、偏见治理,以及如何在 AI 设计中建立信任。
查看详情Right Arrow
开始课程
查看更多Right Arrow