如何将logit shap值转换为概率

3

我一直在尝试将具有逻辑链接的shap值转换为数据集中所有要素的概率。model_output ='probability' 参数对于我的catboost模型无效。我想转换每个特征的shap值,以便当它们相加时,它们等于力量图上显示的概率。我使用了预先编写的函数将对数几率转换为概率,但总和与力量图中的值不相等。有什么建议吗?

explainer = shap.TreeExplainer(catboost)
shap_values = explainer.shap_values(df_X_test)
shap.force_plot(explainer.expected_value, shap_values[0,:], df_X_test.iloc[0,:],link='logit')

1个回答

1

我一直在使用的一个解决方法是针对实例级别的解释:

shap_values = (shap_values / sum(shap_values)) * probability

其中shap_values是一个列表,len(shap_values) = n_features,每个特征对应一个Shapley值,probability是一个[0,1]之间的双精度数。

这将把你的Shapley值从它们所在的任何域缩放到预测概率。


在这种情况下,概率是多少?我从哪里得到这个数字? - Nicholas Hansen-Feruch
概率将是您的机器学习模型的输出。如果 X 是您的实例,f 是您的模型,那么 probability = f(x) - StefanPopov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接