Использование DeepExplainer для получения значений формы для модели MLP в Keras с бэкэндом тензорного потока

Я играю с DeepExplainer, чтобы получить значения shap для моделей глубокого обучения. Следуя некоторым учебникам, я могу получить некоторые результаты, то есть, какие переменные толкают прогноз модели из базового значения, которое является средним выходом модели в обучающем наборе.

У меня около 5000 наблюдений и 70 особенностей. Производительность DeepExplainer вполне удовлетворительная. И мой код:

model0 = load_model(model_p+'health0.h5')

background = healthScaler.transform(train[healthFeatures])
e = shap.DeepExplainer(model0, background)
shap_values = e.shap_values(healthScaler.transform(test[healthFeatures]))

test2 = test[healthFeatures].copy()
test2[healthFeatures] = healthScaler.transform(test[healthFeatures])

shap.force_plot(e.expected_value[0], shap_values[0][947,:], test2.iloc[947,:])

И сюжет таков:

Здесь базовое значение составляет 0,012 (также можно увидеть через e.expected_value [0]) и очень близко к выходному значению, которое составляет 0,01.

На данный момент у меня есть несколько вопросов:

1) Выходное значение не совпадает с прогнозом, полученным с помощью model0.predict(test[healthFeatures])[947] = -0,103 Как мне оценить выходное значение?

2) Как видно, я использую весь тренировочный набор в качестве фона для приблизительных условных ожиданий значений SHAP. В чем разница между использованием случайных выборок из тренировочного набора и всего набора? Это связано только с проблемой производительности?

Спасибо заранее!

0 ответов

Возможно, слишком поздно, но это все еще самый частый вопрос, который принесет пользу другим начинающим. Для ответа (1) ожидаемые и исходящие значения будут разными. Ожидаемое значение, как следует из названия, представляет собой среднее значение оценок, предсказанных вашей моделью, например, если это была вероятность, то это среднее значение вероятностей, которые выдает ваша модель. Для (2), пока значения backroung меньше 5k, это не сильно изменится, но если> 5k, ваши вычисления займут дни.

См. Это (строки 21-25) для получения более исчерпывающих ответов.

Другие вопросы по тегам