如果我想获得带有 n 个变量的 kNN 分类器的核 SHAP 值,我是否必须重新计算预测 2^n 次?
(我用的不是python,而是MATLAB,所以需要知道里面的算法)
是的,根据题为“解释模型预测的统一方法”的论文,我相信如此。
您将需要遍历所有特征联盟:因此需要 2^n(其中 n 为特征数量)。
对于那些使用 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,:])