gpt4 book ai didi

python - xgboost 预测对概率的贡献

转载 作者:行者123 更新时间:2023-12-05 07:25:04 36 4
gpt4 key购买 nike

我正在使用 xgboost 的功能 pred_contribs 以便为我的模型的每个样本获得某种可解释性(shapley 值)。

booster.predict(test, pred_contribs=True)

它返回形状(样本数)x(特征数)的贡献向量。贡献总和等于 margin 分数。

但是,我想使用概率而不是 margin 分数,并且为了简单起见,我想将贡献(通过近似值)转换为概率。

有办法吗?

代码示例:

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
import xgboost as xgb

X, y = make_classification()
X_train, X_test, y_train, y_test = train_test_split(X, y)

dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)

param = {
'max_depth': 2,
'eta': 1,
'silent': 1,
'objective': 'binary:logistic',
'eval_metric': 'auc'
}

booster = xgb.train(param, dtrain, 50)

probabilites = booster.predict(dtest)

margin_score = booster.predict(dtest, output_margin=True)

contributions = booster.predict(dtest, pred_contribs=True)

最佳答案

我不确定这是同一个问题和答案,你可能想看看我在类似问题上的回答here .

基本上,您将贡献向量除以其总和,然后将其乘以预测概率:

contributions = contributions/sum(contributions) * predicted_probability 其中 predicted_probability 是感兴趣类别的概率。

同样,我不能 100% 确定这是做事的正确方法,但在我的用例中它工作正常。

关于python - xgboost 预测对概率的贡献,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55067176/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com