部分依赖图#
链接到API参考:PartialDependence
摘要
部分依赖图可视化响应与一组目标特征(通常是一个或两个)之间的依赖关系,同时对所有其他特征进行边际化。对于基于扰动的可解释性方法来说,它相对较快。PDP假设特征之间是独立的,当这一假设不成立时(例如,当模型有许多高阶交互时),在可解释性方面可能会产生误导。
工作原理
scikit-learn 的 PDP 模块 [1] 提供了一个简洁的算法描述 这里。
Christoph Molnar 的《可解释的机器学习》电子书 [2] 对部分依赖有很好的概述,可以在此处找到 here。
构思论文“贪婪函数逼近:梯度提升机”[3]提供了良好的动机和定义。
代码示例
以下代码将为乳腺癌数据集训练一个黑箱管道。之后,它将使用部分依赖图来解释管道及其决策。提供的可视化将用于全局解释。
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 PartialDependence
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)
pdp = PartialDependence(blackbox_model, X_train)
show(pdp.explain_global(), 0)