Рекуррентные нейронные сети (RNN) — это семейство моделей, используемых для последовательных задач, таких как прогнозирование финансового мошенничества на основе поведения клиентов. Эти модели очень мощные, но их процессы принятия решений непрозрачны и непонятны людям, что делает их черными ящиками для людей. Понимание того, как работают RNN, необходимо для оценки того, полагается ли модель на какие-либо ложные корреляции или дискриминирует определенные группы.

В этой записи блога мы представляем обзор TimeSHAP, нового рекуррентного объяснения, не зависящего от модели, разработанного в Feedzai. TimeSHAP расширяет возможности объяснения KernelSHAP для рекуррентных моделей. Вы можете попробовать TimeSHAP на Github Feedzai.

Этот пост в блоге основан на статье KDD 2021 Жоао Бенту, Андре Круза, Педро Салейро, Марио А.Т. Фигейреду и Педро Бизарро, которые можно найти здесь, а также видео-презентацию здесь.

Оглавление:

  1. ТаймШАП
  2. Предыстория
    2.1. Потребность в объяснимости
    2.2. Рекуррентные нейронные сети
    2.3. Проблемы объяснимости RNN
    2.4. Основные методы объяснимости
  3. Как работает TimeSHAP
    3.1. Описание функций
    3.2. Пояснения к событиям
    3.3. Обрезка
    3.4. Пояснения к ячейке
  4. Кейс
    4.1. Обрезка статистики
    4.2. Глобальные пояснения
    4.3. Местные пояснения
  5. Попробуйте сами
    5.1. Требования к пакету
    5.2. Учебные тетради
    5.3. Методы объяснения
  6. Выводы

1. ВремяSHAP

TimeSHAP — это новый рекуррентный объяснитель, не зависящий от модели, который расширяет структуру KernelSHAP до рекуррентной области. Используя TimeSHAP, вы можете объяснить любую табличную рекуррентную/последовательную модель, поскольку наш метод использует входные возмущения для получения различных типов объяснений.

TimeSHAP создает три типа локальных объяснений: на уровне событий, объектов и ячеек (какая функция какого из прошлых событий была наиболее важной для текущего прогноза). Эти различные типы объяснений позволяют пользователям понять, какие прошлые события и соответствующие функции были более релевантными для объяснения текущего прогноза. Например, если вы часто совершаете покупки в Интернете, то эти события в прошлом помогают объяснить, почему ваши текущие покупки не являются сигналом мошеннических транзакций.

Для нетерпеливых перейдите к разделу 5, если вы просто хотите узнать, как легко использовать наш пакет в вашем случае.

Объяснения TimeSHAP

Локальные
TimeSHAP создает три типа локальных объяснений, чтобы вы могли понять, как модель оценила конкретную последовательность вашего набора данных.

На рис. 1 показаны эти три типа объяснений: объяснения на уровне событий, функций и ячеек (слева). На всех трех графиках мы показываем вклад каждого элемента (события, функции или ячейки) в оценку объясняемого экземпляра. Чем выше важность, тем больший вклад в оценку экземпляра вносит элемент. Обратите внимание, что элементы могут иметь отрицательный вклад в оценку, что означает, что они способствуют снижению оценки экземпляра.

Объяснения на уровне событий, рис. 1 (слева), показывают вклад каждого события в оценку объясненного экземпляра, причем первое событие на графике является самым последним, а последнее событие — самым старым. Объяснения на уровне функций, рис. 1 (в центре), показывают, какие функции во всей последовательности являются наиболее релевантными . Наконец, объяснения на уровне ячеек на рис. 1 (справа) указывают на наиболее релевантные функции для наиболее релевантных событий, что позволяет дать более детальное объяснение.

Глобальные
В дополнение к локальным объяснениям TimeSHAP также создает два типа глобальных объяснений. Эти пояснения дают представление о процессе принятия решений моделью.

На рис. 2 показаны два глобальных типа объяснений: объяснения на уровне событий и функций. Эти графики создаются путем вычисления локальных объяснений для объясненного набора данных и нанесения всех отдельных объяснений на один и тот же график. Этот процесс позволяет пользователям наблюдать за тенденциями, которые помогают понять ландшафт процесса принятия решений модели. Чтобы помочь пользователям понять эти тенденции, мы выделяем среднее значение Шепли для каждого элемента (события/функции) оранжевым цветом.

2. Фон

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

2.1. Потребность в объяснимости

От проверки орфографии в вашем телефоне или рекомендаций фильмов до внесения залога или предсказания сердечной недостаточности — модели машинного обучения становятся все более и более распространенными в жизни людей, поскольку они принимают решения, которые ежедневно влияют на нас. По мере того, как возрастает влияние этих решений, растет и потребность в объяснениях для их понимания. Например, если модель машинного обучения выявляет у пациента рак, необходимо понять обоснование решения. Учитывая это требование объяснения, модели ML необходимо понимать и объяснять, чтобы им можно было доверять и развертывать.

В любой технической области несколько заинтересованных сторон выиграют от улучшенного объяснения алгоритмов ML:

  • Разработчики: объяснимость позволяет разработчикам отлаживать, улучшать и понимать модели, над которыми они работают, по мере необходимости. а также проверка его на предмет дискриминационных рассуждений;
  • Люди в курсе.Люди, принимающие решения с помощью алгоритмов машинного обучения, получают выгоду от объяснимости, чтобы понять обоснование решения машинного обучения. Это позволяет им быть информированными и знать, следует ли им доверять предсказанию;
  • Субъекты решений.Люди должны понимать, какие решения об их жизни принимают алгоритмы машинного обучения. Этот момент также подтверждается недавним законодательством, таким как право на разъяснение, предложенное ЕС.

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

2.2. Рекуррентные нейронные сети

При рассмотрении последовательных областей, таких как здравоохранение или предотвращение финансового мошенничества, существует неотъемлемая связь между входными данными. Применение стандартных моделей ML, таких как Gradient Boosted Trees или Random Forests (например, модели, которые обрабатывают входные данные по отдельности), их приложение к повторяющимся доменам требует ручного проектирования функций, чтобы зафиксировать взаимосвязи между входными данными во времени. Рекуррентные нейронные сети устраняют это требование, поскольку они обрабатывают последовательности событий, а не отдельные, собирая временную/последовательную информацию по замыслу.

Современная производительность RNN обусловлена ​​тем фактом, что каждое предсказание зависит от двух факторов: имеющихся входных данных и «аббревиатуры» или «интерпретации» всех предыдущих входных последовательностей, представленных скрытым состоянием. Это скрытое состояние передается во времени и представляет собой информацию, которую сеть считает важной для сохранения и передачи в будущие вычисления. В дополнение к тому факту, что нейронные сети уже являются черными ящиками, расширенные возможности, которые скрытое состояние дает сети, достигаются ценой интерпретируемости/объяснимости, поскольку процесс принятия решений становится еще более сложным и непонятным для людей, что делает RNN Черные ящики.

Для получения дополнительной информации о RNN вы можете посетить эти два сообщения в блоге: one Кристофера Ола, где подробно описаны механизмы и архитектура RNN, и one от Karpathy, где представлен общий обзор RNN. предоставлен.

Если вы хотите лучше понять, как RNN используются в Feedzai, и преимущества, которые они приносят нашему домену, вы можете прочитать наш блог на эту тему.

2.3. Проблемы объяснимости RNN

Как упоминалось ранее, RNN являются особенно непрозрачными моделями из-за их сложного процесса принятия решений. Как показано на рисунке 5, когда RNN предсказывает, является ли транзакция 4 мошеннической, все предыдущие транзакции рассматриваются в скрытом состоянии. Таким образом, крайне важно, чтобы любой объяснитель, который стремится объяснить RNN, учитывал все предыдущие транзакции, чтобы быть верным объясненной модели.

В дополнение к вышеупомянутому требованию к эксплейнеру, Feedzai предложили еще три требования к эксплейнеру для конкретных случаев использования. Наши объяснители RNN должны быть:

  • Постфактум: нам нужен объяснитель, способный объяснить уже обученную модель, которая может даже находиться в производстве;
  • Независимость от модели. Модель, которую объясняет наш объяснитель, может быть доступна только через API на основе прогнозов, где не раскрываются внутренние компоненты модели;
  • Важность атрибутов как для входных данных, так и для событий/транзакций: мы требуем, чтобы объяснитель указывал, какие характеристики входных данных были более релевантными (например, сумма, дата транзакции), а также какие входные транзакции были наиболее релевантными для предсказания.

2.4. Основные методы объяснимости

При рассмотрении современных подходов к объяснению RNN возникают два основных семейства: методы, основанные на градиенте, которые используют градиент объясняемой модели для создания объяснений, и независимые от модели методы. методы, которые рассматривают объясненный метод как черный ящик. Оба подхода обладают как положительными, так и отрицательными свойствами: методы на основе градиента являются быстрыми, апостериорными, объясняют модели типа RNN, но не зависят от модели; Независимые от модели методы также являются апостериорными, но они медленны и не могут объяснить модели типа RNN.

Мы решили выбрать независимый от модели подход, поскольку он соответствует большинству наших требований. В этом семействе выделяется один метод: KernelSHAP из семейства SHAP, предложенного Лундбергом и Ли (2017) в их статье. KernelSHAP – это независимый от модели метод, в котором для понимания объясняемой модели используются возмущения. Эти возмущения генерируются путем включения и выключения функций в соответствии с бинарной маской z. Включение функции в этом контексте означает сохранение функции без изменений, тогда как отключение функции означает замену исходного значения неинформативным фоновым значением — обычно 0 или средним значением в наборе обучающих данных. На рисунке 8 мы показываем иллюстрацию возмущения, где бинарная маска z указывает на то, что функции 2 и 4 отключены (выделены красным), что приводит к замене этих функций с соответствующими фоновыми значениями, создавая новую возмущенную выборку:

Обратите внимание, что вычисление всех возможных коалиций (комбинаций включенных и выключенных функций) имеет сложность (2^#features), что при работе с большими наборами данных становится неразрешимым. Чтобы решить эту проблему, KernelSHAP выполняет стратегию выборки, используя только заданное пользователем количество возмущений (n_samples). Этот процесс гарантирует, что объяснения можно рассчитать за счет того, что они являются приближениями к точным значениям Шепли, а не к точным.

KernelSHAP основан на концепции теории игр Значения Шепли. Эта теоретическая основа обеспечивает интересные и желательные свойства вычисляемых объяснений:

  • Локальная точность: сумма значений атрибуции всех объяснений равна оценке модели;
  • Отсутствие: отсутствующие функции не должны влиять на модель; их атрибуция должна быть нулевой;
  • Непротиворечивость: если важность функции для модели возрастает, приписываемая ей ценность объяснения не должна уменьшаться.

Из-за характеристик KernelSHAP и вышеупомянутых свойств полученных объяснений мы решили расширить KernelSHAP на рекуррентные домены, чтобы объяснить модели типа RNN.

Вы можете найти документ SHAP здесь, соответствующий код здесь и очень полезное объяснение этого метода здесь.

3. Как работает TimeSHAP

TimeSHAP — это адаптация KernelSHAP к последовательному домену. В этой области мы работаем с входными последовательностями, которые могут быть представлены в виде матриц, где строки представляют функции во времени, а столбцы представляют собой непрерывные входные данные/события. Цель TimeSHAP — придать важность как строкам, так и столбцам нашей входной матрицы. При такой матричной формализации также можно получить атрибуты на уровне ячеек, где TimeSHAP будет приписывать важность отдельным ячейкам, которые представляют определенную функцию в определенном событии/отметке времени.

TimeSHAP вычисляет эти различные типы объяснений, используя различные типы функций возмущения, как показано.

3.1. Пояснения к функциям

Чтобы получить объяснения функций, TimeSHAP возмущает функции во времени, представленные строками в нашей входной матрице.

3.2. Пояснения к событию

Чтобы получить объяснения на уровне событий, TimeSHAP вносит возмущения в события, включая и выключая целые столбцы в нашей входной матрице.

Одной из проблем при рассмотрении вышеописанных объяснений на уровне событий является то, что последовательности могут быть произвольно длинными, что делает количество возможных коалиций (2^#events) слишком большим, даже с учетом стратегии выборки KernelSHAP.

3.3. Обрезка

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

Наш алгоритм сокращения, показанный на рис. 15, начинается с разделения объясненной последовательности на две группы: рассматриваемые события, представленные зеленым цветом, первоначально состоящие исключительно из первой транзакции, и сгруппированные события, представленный красным цветом, состоит из всех оставшихся событий. Поскольку у нас есть только две группы, мы можем получить точные значения Шепли для каждой из них (всего четыре коалиции), что позволит нам понять важность каждой группы для исходной оценки экземпляра. Учитывая значения Шепли, мы можем сделать две вещи:

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

Обратите внимание, что этот алгоритм работает до тех пор, пока мы не найдем набор сгруппированных событий, которые имеют предельный вклад, определенный пороговым значением, установленным пользователем.

3.4. Пояснения к ячейкам

Для получения объяснений на уровне клеток используется то же самое обоснование: чтобы получить объяснения на уровне клеток, нам нужно включать и выключать отдельные клетки (специфические особенности при определенных событиях). Проблема с этим подходом заключается в том, что количество ячеек задается как #features * #events, что очень быстро масштабируется. Например, входная последовательность с 40 объектами и 20 событиями содержит 800 ячеек, что означает, что возможно 2⁸⁰⁰ коалиции. Для получения соответствующих объяснений необходимо уменьшить общее количество рассматриваемых ячеек.

Чтобы получить релевантные/надежные объяснения ячеек, мы разработали стратегию группировки для объединения ячеек, которые семантически близки. В этой стратегии мы объединяем ячейки в разные группы в зависимости от их предполагаемой семантической важности:

  1. Группа удаленных ячеек:применяется временной алгоритм сокращения, группирующий все ячейки, принадлежащие удаленным событиям (обозначены серым цветом);
  2. Релевантные отдельные группы ячеек. Мы применяем наши объяснения на уровне функций и событий, чтобы получить наиболее релевантные строки и столбцы соответственно. Затем мы выбираем ячейки, присутствующие на пересечении, и рассматриваем их по отдельности (обозначены красным);
  3. Группы непересекающихся ячеек релевантных событий. Ячейки, принадлежащие релевантным событиям, сгруппированы вместе, за исключением ячеек пересечения (обозначены оттенками зеленого);
  4. Группы ячеек непересекающихся релевантных объектов. Ячейки, принадлежащие релевантным объектам, сгруппированы вместе, за исключением ячеек пересечения (обозначены оттенками синего);
  5. Все остальные неучтенные ячейки:Все оставшиесяячейки, не принадлежащие ни к одной группе, группируются вместе (обозначены желтым цветом).

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

4. Тематическое исследование

Мы применили TimeSHAP к модели на основе RNN, обученной на реальном наборе данных для обнаружения мошенничества, состоящем примерно из 20 миллионов событий. В этом наборе данных есть три типа событий:

  • Транзакции: перевод денег;
  • Логин: представляет собой логин в приложении мобильного банка;
  • Регистрации: любое поведение настроек учетной записи (например, изменение пароля, вход в систему на новом устройстве и т. д.).

Для гиперпараметров TimeSHAP мы выбрали 32 000 коалиций (n_samples=32000) и использовали допуск сокращения 0,025.

4.1. Статистика обрезки

В экспериментах, показанных в нашей статье, мы показываем, как корректировка допуска обрезки приводит к различным пороговым значениям обрезки. На рис. 18 мы видим, что, позволив сокращенным событиям иметь важность всего 0,025, мы можем уменьшить медианную длину последовательности с 138,5 событий всего до 14. события. Это резкое сокращение общего числа коалиций с 2^138,5 до 2^14 показывает влияние нашего алгоритма сокращения и то, как он значительно улучшает дисперсию объяснений.

4.2. Глобальные пояснения

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

Объяснения глобальных событий.С помощью объяснений глобальных событий, показанных на рис. 19, мы можем оценить, есть ли какие-либо события, которые в среднем более актуальны для модели.

В представленном примере объясняемая модель больше всего полагается на последнее событие, при этом средняя важность предыдущих событий постоянно снижается с течением времени. Обратите внимание, что событие -1 имеет меньшую важность, чем событие -2, а события в далеком прошлом имеют некоторые важные выбросы, что подчеркивает возможности TimeSHAP по улавливанию отдаленных временных вкладов.

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

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

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

4.3. Местные пояснения

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

График сокращения. На этом рисунке (рис. 21) показана важность сгруппированных событий по сравнению с выполнением алгоритма сокращения. Мы можем наблюдать, что важность этих событий начинается с высокой, но начинает резко снижаться по мере того, как больше событий рассматривается/не сокращается. Сокращение происходит в событии -8, когда сгруппированные события достигают важности (0,025). Мы также можем наблюдать, что примерно после события -10 сгруппированные события имеют незначительное значение, что еще раз подтверждает интуицию, что в этом сценарии события в далеком прошлом неинформативны для настоящего прогноза.

Объяснения локальных событий.Эти объяснения событий (рис. 22) показывают, что наиболее релевантным является событие -4, за которым следует событие -2. Обратите внимание, как TimeSHAP может фиксировать важность событий в прошлом. Эти объяснения также показывают, что объясняемое событие (событие 0) не имеет никакого значения для его собственной оценки, показывая, что RNN полагалась исключительно на скрытое состояние, чтобы сделать этот прогноз.

Объяснение локальных функций. Из представленных пояснений функций (рис. 23) мы можем сделать вывод, что наиболее релевантными функциями являются «Тип транзакции», «Тип события» и «Возраст клиента». Первые две функции соответствуют объяснениям событий, поскольку они подчеркивают тот факт, что наиболее релевантным событием была регистрация. Возраст клиента также интересен, учитывая, что клиент был пожилым: это еще один фактор, который подчеркивает, как возраст клиента коррелирует с некоторой подверженностью мошенничеству.

Объяснения на уровне ячеек. Объяснения на уровне ячеек, показанные на рисунке 24, подтверждают наши ранее полученные выводы, где наиболее релевантная ячейка – это ячейка пересечения между наиболее релевантным событием и функцией. Обратите внимание, что наиболее важные функции не имеют большого значения при рассмотрении на Событии -1, что указывает на то, что событие -4 действительно является регистрацией.

5. Попробуйте сами

В этом разделе мы предоставляем обзор основных методов пакета TimeSHAP и его требований.

Для более подробного обзора пакета/методов/конфигураций вы можете посетить нашу страницу github, где весь код находится в открытом доступе https://github.com/feedzai/timeshap.

Если у вас есть какие-либо вопросы или предложения по пакету, не стесняйтесь открывать вопрос в нашем репозитории github.

5.1. Требования к пакету

Чтобы использовать TimeSHAP, вам нужна только модель, которая получает последовательности в качестве входных данных, набор данных, на котором была обучена модель, и экземпляр, который вы хотите объяснить.

Поскольку TimeSHAP не зависит от модели, TimeSHAP может объяснить любой черный ящик, который получает входную последовательность и выводит оценку. Обратите внимание, что у этой модели нет ограничений по реализации DL Framework (PyTorch, Tensorflow, sklearn и т. д.)

5.2. Учебные тетради

Чтобы вам было легко понять и использовать TimeSHAP, мы предоставляем примеры блокнотов, которым вы можете следовать и адаптировать. Эти записные книжки обеспечивают сквозной конвейер, от необработанных общедоступных данных и обучения новой модели до объяснений TimeSHAP.

Пример блокнота: https://github.com/feedzai/timeshap/blob/main/notebooks/AReM/AReM.ipynb

5.3. Методы объяснения

Как упоминалось ранее, TimeSHAP предоставляет три типа локальных объяснений вместе с двумя типами глобальных. В этом разделе мы покажем обзор этих методов вместе с некоторыми примерами выходных данных, взятых из нашего учебного блокнота.

Локальные объяснения
Чтобы использовать методы локального объяснения TimeSHAP, вам потребуется объясняемая модель, экземпляр для объяснения, фоновый экземпляр и соответствующие гиперпараметры для метода.

Сюжет обрезки:

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

coal_plot_data, coal_prun_idx = local_pruning(model, instance, pruning_params, baseline)
plot_temp_coalition_pruning(coal_plot_data, coal_prun_idx, plot_limit=40)

Объяснения событий:

Этот график показывает важность каждого события для оценки объясненного экземпляра.

event_data = local_event(model, instance, event_params, baseline, pruning_idx)
plot_event_heatmap(event_data)

Объяснения функций:

Этот график показывает важность каждой функции для оценки экземпляра.

feature_data = local_feat(model, instance, feature_params, baseline, pruning_idx)
plot_feat_barplot(feature_data)

Пояснения к ячейке:

Учитывая наиболее релевантные события и функции, TimeSHAP вычисляет наиболее релевантные «ячейки» для последовательности. Эти ячейки рассчитываются в соответствии со стратегией группировки ячеек, определенной в Разделе 3.4.

cell_data = local_cell_level(model, instance, cell_params, event_data, feature_data, baseline, pruning_idx)
plot_cell_level(cell_data)

Локальный отчет:

Мы также предоставляем вам возможность получить все вышеперечисленные локальные пояснения одним методом, используя local_report(). Этот метод объединяет все предыдущие объяснения в одно изображение.

local_report(model, instance, pruning_params, event_params, feature_params, cell_params, baseline)

Глобальные объяснения
Чтобы использовать методы глобального объяснения TimeSHAP, вам потребуется объясняемая модель, набор данных, который вы хотите объяснить, фоновый экземпляр и соответствующие гиперпараметры для метода.

Статистика обрезки:

Чтобы вы могли понять влияние допусков отсечения, вы можете использовать метод prune_all вместе с pruning_statistics для оценки нашего алгоритма отсечения на вашем объясненном наборе данных при различных допусках отсечения.

prun_indexes = prune_all(model, exp_dataset, pruning_params, baseline)
pruning_statistics(prun_indexes, pruning_dict.get('tol'))

Объяснения глобальных событий:

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

event_data = event_explain_all(model, exp_dataset, pruning_params, prun_indexes, baseline)
plot_global_event(event_data)

Объяснение глобальных функций:

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

feat_data = feat_explain_all(model, exp_dataset, pruning_params, prun_indexes, baseline)
plot_global_feat(feat_data)

Глобальный отчет:

Мы также предоставляем вам возможность получить все вышеперечисленные локальные пояснения одним методом, используя global_report().

prun_stats, global_plot = global_report(model, exp_dataset, pruning_params, event_params, feature_params, baseline)

6. Выводы

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

Особая благодарность Mário Cardoso, Ricardo Ribeiro, Diogo Leitão, José Pombal и Iva Machado за отзывы об этом посте.