Интерпретируемость модели

Интерпретируемость модели - ваша модель признает: ценности Шепли

В предыдущем посте я писал о том, почему проверка справедливости модели является такой важной задачей. Я начинаю здесь серию постов, в которых я поделюсь с вами некоторыми способами, которыми вы можете достичь разных уровней интерпретируемости вашей модели и заставить ее признаться. Сегодня я познакомлю вас с темой и нашим первым методом: ценностями Шепли.

Вступление:

Миллер, Тим. 2017 «Объяснение в искусственном интеллекте: выводы из социальных наук». определяет интерпретируемость как «степень, в которой человек может понять причину решения в модели». Это означает, что это то, чего вы достигли в какой-то «степени». Модель может быть «более интерпретируемой» или «менее интерпретируемой». Держи это в своей голове.

Причина, по которой нам нужна интерпретируемость, заключается в том, что при ее достижении у нас будет способ проверить следующее (Doshi-Velez and Kim 2017):

  • Справедливость: См. мой пост Что значит для модели быть справедливой »
  • Конфиденциальность: обеспечение того, чтобы модель не могла раскрыть конфиденциальную информацию. например возможность угадывать конфиденциальную информацию, но подавать модели конкретные примеры.
  • Надежность: изменения входных данных приводят к «пропорциональным изменениям» (да, я знаю, что это расплывчатое определение. Я обещаю уточнить это в будущем) в результате / предсказания.
  • Причинно-следственная связь. Учитываются только причинно-следственные связи. Это означает, например, что мы не можем предсказать пол ребенка, основываясь, например, на цене акций NYSE.
  • Доверие: Доши-Велес и Ким говорят о доверии, поскольку вещи становятся наиболее надежными, когда вы их понимаете. Это особенно важно, потому что, на мой взгляд, может случиться так, что люди склонны наделять более интеллектом системы, которые ведут себя непонятным для них образом.

Как добиться интерпретируемости?

OOTB: Получите это прямо из коробки

Самый простой способ добраться до интерпретируемого машинного обучения - это, конечно, использовать алгоритм, который создает интерпретируемые модели в самом начале. Задача решена! В конце концов, жизнь не так уж и сложна. Это включает:

  • Линейные модели
  • Логистическая регрессия
  • Деревья решений
  • Наивный байесовский
  • K-ближайшие соседи

Однако более продвинутые алгоритмы не имеют такой роскоши, в том числе случайный лес, деревья решений с усилением, нейронные сети и т. Д. Нам нужен другой подход, а именно:

Наиболее часто используемые методы объяснимости:

Независимость от модели: это методы, которые не полагаются на какие-либо особенности модели, которую мы хотим интерпретировать, поэтому большое преимущество заключается в их гибкости. Разработчики машинного обучения могут свободно использовать любую модель машинного обучения, которая им нравится, когда методы интерпретации могут быть применены к любой модели.

На основе градиента. Существуют методы, основанные на данных обучения обратного распространения ошибки и градиентного спуска. Из-за этого его можно применять только тогда, когда модель обучалась таким методом, как в нейронных сетях.

  • Карты яркости (скоро)
  • TCAV - Векторы активации концепции (скоро)

Метод на основе примеров. Существуют методы, которые объясняют модель, выбирая экземпляры набора данных, а не создавая сводки функций, как раньше. Это хорошо работает для изображений или текста, когда в примерах есть контекст.

  • Контрфактические объяснения (скоро)
  • Якоря (скоро)
  • Состязательный пример (скоро)

1) ценности Шепли

Идея, лежащая в основе значений Шепли (Shapley, Lloyd S 1953), заключается в следующем: учитывая набор характеристик, найдите предельный вклад каждой функции в общий прогноз. Хорошо ... каков общий прогноз? Это ожидаемая стоимость модели (EV). Думайте об этом как о базовой линии модели. Тогда предельный вклад будет означать, насколько каждая функция заставляет отклоняться от этого прогноза.

Значения Шарпли вычисляют предельный вклад путем вычисления прогнозируемого значения с учетом и без учета значения признака, которое в настоящее время рассматривается, и взятия разницы для получения предельного вклада. Наконец, значение Шарпли вычисляется путем усреднения предельного вклада значения признака по всем таким возможным подмножествам признаков (называемым коалициями) внутри набора признаков, в котором участвует признак.

Однако вы можете начать задаваться вопросом, как запустить модель «с функцией и без нее», поскольку большинство моделей не могут обрабатывать отсутствующие данные. Он в основном заменяет значения функций функций, которые не входят в коалицию, случайными значениями из набора данных, чтобы получить прогноз из модели машинного обучения. Другой альтернативой является использование ожидаемого значения для такой функции.

Интерпретация:

Интерпретация значения Шепли X такова: Значение признака A внесло X в прогноз этого конкретного экземпляра по сравнению со средним прогнозом для набора данных. Более ясно, это вклад значения признака в разницу между фактическим прогнозом и средним прогнозом.

Если фактический прогноз - Y, а средний прогноз - Ym, тогда сумма всех значений Шепли для всех функций в модели будет равна Y - Ym, что является отклонением прогноза от его базовой линии.

Обратите внимание, что значение Шепли может быть как положительным, так и отрицательным, как вы можете заключить из определения.

Давайте посмотрим на пример:

Мой друг работал с набором данных, чтобы понять аспекты, благодаря которым глагол с большей вероятностью будет использоваться в прошлом или в настоящем при обращении к событию в прошлом (он исследователь в области лингвистики). Для этого он использует набор данных, в котором у него есть разные особенности использования глагола и, наконец, целевая переменная, которую он хочет предсказать, находится ли предложение в настоящем или в прошлом. Для этого он использовал случайный лес, и, как вы теперь знаете, случайный лес не так-то просто интерпретировать. Так. какой результат или информацию мы можем получить, применив значения Шепли к этой модели?

На следующем изображении показан результат применения метода к этому набору данных с использованием Python и библиотеки SHAP (см. Примечания ниже для некоторых заявлений об отказе от ответственности по этой библиотеке). Вы можете установить эту библиотеку с помощью PIP.

import shap
explainer = shap.TreeExplainer(model) #(***)
shap_values = explainer.shap_values(X_test)
shap.initjs()
shap.summary_plot(shap_values, X_test, plot_type="bar")

(***) Позже в этом посте вы увидите, что библиотека SHAP реализует аппроксимацию значений Шепли. Для этого вам необходимо предоставить библиотеке некоторые сведения об используемой вами модели. Поскольку я использую случайный лес, объяснитель - TreeExplainer. Существуют специальные объяснения для нейронных сетей и методов ядра.

Этот график показывает нам важность каждой из характеристик при классификации чего-либо как настоящего или прошлого (класс 0 или класс 1). Отмечает, что в библиотеке важность функции классифицируется. Это полезно, поскольку некоторые функции могут быть актуальны для одного класса, но не для другого. Конечно, в этой модели есть задача двоичной классификации, поэтому мы не удивимся, обнаружив, что если функция важна для классификации чего-либо как Класс 0, то это будет так и для Класса 1. В мультиклассе настройки могут быть разными.

Если мы хотим объяснить конкретный прогноз, мы можем сделать следующее:

instance_to_explain = 0
shap.force_plot(explainer.expected_value[1], shap_values[1][instance_to_explain], X_test.iloc[instance_to_explain])

Этот график называется графиком сил и отображает результаты значения Шепли для наблюдения. Если мы обратим внимание, то в самом центре вы увидите легенду «Базовое значение 0,5645». Это относится к определению ценностей Шепли. Мы сказали, что они вклад значения функции в разницу между фактическим прогнозом и средним прогнозом. Это число является базовым прогнозом. Вы можете получить базовый прогноз:

# The following is the expected probability of something being 
# classified as Class 1. explainer.expected_value[0] gives the 
# expected probability of something being classfied as Class 0. Any # SHAP value contributes towards or against this base expected 
# probability, which is calcultated for the dataset, not for the 
# model.
explainer.expected_value[1]

Затем стрелки под линией указывают все значения функций, которые изменяют фактическое предсказание от базового значения до 0,73 (вероятность присутствия предложения 0,73). Значения признаков, выделенные красным, перемещают прогноз к большим значениям от базовой линии, а синяя стрелка - к меньшим. В этом случае, например, он говорит, что главный глагол (особенность main_v), являющийся «требованием» (закодированный как 1), заставляет прогноз сдвинуться на 0,06 с большей вероятностью как «присутствует». Эта диаграмма позволяет легко понять, почему что-то классифицируется как есть.

Еще одна интересная вещь, которую вы можете сделать, - это понять, какие значения функции влияют на ваши прогнозы. Вы можете добиться этого следующим образом:

features= X_test.columns.tolist()
for feat in features:
    shap.dependence_plot(feat, shap_values[1], X_test, dot_size=100)

Результатом будет последовательность графиков, подобных следующей (я показываю только одну функцию, чтобы ее было легче читать):

В этом случае мы видим значение Шепли для type_subv в соответствии с различными значениями, которые может принимать функция. Как видно, функция более актуальна, когда она имеет значения 4 (это категориальная характеристика).

Преимущества

Значение Шепли действительно важно, так как это единственный метод атрибуции, который удовлетворяет свойствам Эффективность, Симметрия, Думми, и Аддитивность, которые вместе можно считать синонимом справедливого объяснения:

  • Эффективность, означающая, что вклад функций должен составлять разницу между предсказанием с характеристиками и средним значением (ожидаемым значением). Это очень важно, как если бы вы видели это с другой стороны, это означает, что средний прогноз справедливо распределен по всем функциям.
  • Симметрия: два значения функции A и B должны быть одинаковыми, если они вносят одинаковый вклад в прогноз.
  • Пустышка, функция со значением Шепли, равным 0, не изменяет прогнозируемое значение.
  • Аддитивность гарантирует, что для функции A, используемой в модели M, которая усредняет прогноз двух других моделей M1 и M2, вы можете вычислить значение Шепли для каждой модели отдельно M1 и M2, усреднить их и получить значение Шепли для модели М.

В ситуациях, когда закон требует объяснимости (GDPR), значения Шепли могут быть методом, способным предоставить полное объяснение с ограниченными предположениями по данным. Другие методы, такие как LIME, предполагают линейность на уровне местности, что может не соответствовать действительности.

Недостатки

Это требует много вычислительного времени. Для более чем нескольких функций точное решение этой проблемы становится проблематичным, поскольку количество возможных коалиций экспоненциально увеличивается по мере добавления дополнительных функций. Это причина, по которой большинство пакетов реализуют метод аппроксимации, поскольку он, вероятно, будет единственно возможным вариантом.

Другой недостаток заключается в том, что метод значений Шепли страдает от включения нереалистичных экземпляров данных при корреляции функций. Помните, что для имитации того, что значение признака отсутствует в коалиции, мы маргинализируем признак, выбирая значения из предельного распределения признака. Когда функции являются зависимыми, мы можем выбрать значения функций, которые не имеют смысла для этого экземпляра.

Доступные пакеты:

SHAP, альтернативная формулировка значений Шепли, реализована на Python. SHAP превращает метод значений Шепли в задачу оптимизации и, следовательно, является приближением. Результаты SHAP редки (многие значения Шепли оцениваются как нулевые), что является самым большим отличием от классических значений Шепли.

Ссылка: https://github.com/slundberg/shap

IML, содержит реализацию, доступную для R.

Ссылка: https://cran.r-project.org/web/packages/iml/vignettes/intro.html

Предстоящие

В следующем посте серии мы рассмотрим другой подход, который требует меньших вычислительных ресурсов и, следовательно, не требует приближения для вычисления: Важность перестановочного признака. Будьте на связи!