Как понять значение Шепли для задачи двоичной классификации?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как понять значение Шепли для задачи двоичной классификации?

Сообщение Anonymous »

Я новичок в пакете python shap. И мне интересно, как мне интерпретировать значение Шепли для задачи двоичной классификации? Вот что я сделал на данный момент.
Во-первых, я использовал модель LightGBM, соответствующую моим данным. Что-то вроде
import shap
import lightgbm as lgb

params = {'object':'binary,
...}
gbm = lgb.train(params, lgb_train, num_boost_round=300)
e = shap.TreeExplainer(gbm)
shap_values = e.shap_values(X)
shap.summary_plot(shap_values[0][:, interested_feature], X[interested_feature])

Поскольку это проблема двоичной классификации. Shap_values ​​состоит из двух частей. Я предполагаю, что один из них относится к классу 0, а другой — к классу 1. Если я хочу узнать вклад одной функции. Мне нужно построить две фигуры, подобные приведенным ниже.
Для класса 0
[img]https: //i.sstatic.net/F08oO.png[/img]

Для класса 1
[img]https://i .sstatic.net/4O9zV.png[/img]

Но как мне улучшить визуализацию? Результаты не могут помочь мне понять, «увеличивает ли cold_days вероятность того, что выходные данные станут классом 1 или классом 0?»
С тем же набором данных, если я использую ИНС, вывод примерно такой. Я думаю, что результат Шепли ясно говорит мне, что «холодные_дни» положительно увеличивают вероятность того, что результат станет классом 1.
Изображение

Я чувствую, что с выводом LightGBM что-то не так, но я не знаю, как это исправить. Как я могу получить более четкую визуализацию, аналогичную модели ИНС?
#Edit
Я подозреваю, что каким-то образом ошибочно использовал LightGBM, чтобы получить странный результат. Вот исходный код
import lightgbm as lgb
import shap

lgb_train = lgb.Dataset(x_train, y_train, free_raw_data=False)
lgb_eval = lgb.Dataset(x_val, y_val, free_raw_data=False)
params = {
'boosting_type': 'gbdt',
'objective': 'binary',
'metric': 'binary_logloss',
'num_leaves': 70,
'learning_rate': 0.005,
'feature_fraction': 0.7,
'bagging_fraction': 0.7,
'bagging_freq': 10,
'verbose': 0,
'min_data_in_leaf': 30,
'max_bin': 128,
'max_depth': 12,
'early_stopping_round': 20,
'min_split_gain': 0.096,
'min_child_weight': 6,
}

gbm = lgb.train(params,
lgb_train,
num_boost_round=300,
valid_sets=lgb_eval,
)
e = shap.TreeExplainer(gbm)
shap_values = e.shap_values(X)
shap.summary_plot(shap_values[0][:, interested_feature], X[interested_feature])


Подробнее здесь: https://stackoverflow.com/questions/660 ... on-problem
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»