1

如果我想获得带有 n 个变量的 kNN 分类器的核 SHAP 值,我是否必须重新计算预测 2^n 次?

(我用的不是python,而是MATLAB,所以需要知道里面的算法)

4

2 回答 2

0

是的,根据题为“解释模型预测的统一方法”的论文,我相信如此。

您将需要遍历所有特征联盟:因此需要 2^n(其中 n 为特征数量)。

于 2020-06-15T23:18:18.470 回答
0

对于那些使用 python 的人,可以找到以下脚本来从 knn 模型中获取 shap 值。对于逐步建模,请点击此链接

# Initialize model
knn = sklearn.neighbors.KNeighborsClassifier()

# Fit the model
knn.fit(X_train, Y_train)

# Get the model explainer object
explainer = shap.KernelExplainer(knn.predict_proba, X_train)

# Get shap values for the test data observation whose index is 0, i.e. first observation in the test set
shap_values = explainer.shap_values(X_test.iloc[0,:])

# Generate a force plot for this first observation using the derived shap values
shap.force_plot(explainer.expected_value[0], shap_values[0], X_test.iloc[0,:])
于 2021-06-29T12:09:33.183 回答