获取使用 kNN 进行的预测的 SHAP 值

Obtaining the SHAP values for a prediction made with kNN

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

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

是的,根据题为 'A Unified Approach to Interpreting Model 的论文,我相信是这样 预测'.

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

对于那些使用 python 的人,请找到以下脚本以从 knn 模型中获取 shap 值。对于逐步建模,请遵循此 link:

# 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,:])