莫里斯敏感性分析#
链接到API参考:MorrisSensitivity
查看Morris的支持库这里。
摘要
也被称为莫里斯方法[1],这是一种逐步(OAT)全局敏感性分析,每次运行只调整一个输入的级别(离散值)。相对于其他敏感性分析算法,莫里斯方法速度较快(模型执行次数较少),但代价是无法区分具有相互作用的非线性。这通常用于筛选哪些输入足够重要以进行进一步分析。该实现使用SALib[2]来进行莫里斯方法。
工作原理
gsa-module 包对Morris筛选方法有一个很好的概念概述,可以查看这里。
SALib 包描述了什么是敏感性分析,以及进行基本级别敏感性分析所需的步骤 这里。
代码示例
以下代码将为乳腺癌数据集训练一个黑箱管道。之后,它将使用Morris方法解释该管道及其决策。提供的可视化将用于全局解释。
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 MorrisSensitivity
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)
msa = MorrisSensitivity(blackbox_model, X_train)
show(msa.explain_global())