xgboost предсказать вклад в вероятности - PullRequest
0 голосов
/ 08 марта 2019

Я использую функцию xgboost pred_contribs, чтобы получить вид интерпретируемости (значения shapley) для каждой выборки моей модели.

booster.predict(test, pred_contribs=True)

Возвращает вектор вклада формы (номер выборки)) х (количество функций).Сумма взносов равна маржинальному баллу.

Но я хотел бы использовать вероятности вместо маржинального балла, а для простоты я хотел бы преобразовать (с приближением) вклады в вероятности.

Есть ли способ сделать это?

Пример кода:

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)
...