SHAP для обнаружения событий временных рядов

Использование модифицированного KernelSHAP для обнаружения событий временных рядов

Важность признаков — это широко распространенный метод, используемый для объяснения того, как модели машинного обучения делают свои прогнозы. Этот метод присваивает оценку или вес каждой функции, указывая, насколько эта функция способствует предсказанию. Оценки можно использовать для определения наиболее важных функций и понимания того, как модель делает свои прогнозы. Одной из часто используемых версий этого являются значения Шепли, независимая от модели метрика, основанная на теории игр, которая справедливо распределяет «выплату» (прогноз) между функциями [1]. Одним из расширений для значений Шепли является KernelSHAP, который использует трюк ядра вместе с локальными суррогатными моделями для аппроксимации значения значений Шепли, что позволяет вычислять значения важности признаков для более сложных моделей, таких как нейронные сети [2].

KernelSHAP часто применяется для объяснения прогнозов временных рядов, но в этой области он имеет некоторые существенные ограничения и недостатки:

  1. Прогнозирование временных рядов часто включает большие окна прошлых данных, и это может вызвать числовые ошибки потери памяти при применении KernelSHAP, особенно при многомерном прогнозировании временных рядов [3].
  2. KernelSHAP предполагает независимость функций. Это часто может работать в случаях табличных данных, но независимость признаков и временных шагов является исключением, а не нормой во временных рядах [3].
  3. KernelSHAP использует коэффициенты линейной модели, адаптированной к возмущениям данных. Однако в случае временных рядов векторная авторегрессионная модель (VAR) часто более подходит для моделирования процесса, чем просто линейная модель [3].

Чтобы решить эти проблемы, исследователи из отдела исследований искусственного интеллекта J.P. Morgan (Виллани и др.) предложили варианты KernelSHAP, которые больше подходят для данных временных рядов, в своей статье за ​​октябрь 2022 года [3]:

  1. Сначала исследователи создали VARSHAP, модификацию KernelSHAP, в которой вместо линейной модели используются модели VAR. Эта модификация делает это Исследователи также рассчитали метод закрытой формы для расчета значений SHAP для моделей AR, MA, ARMA и VARMAX.
  2. Наряду с VARSHAP в качестве основы исследователи предложили согласованный во времени SHAP, который использует временной компонент проблемы для сокращения вычислений значений SHAP.

Используя показатель Time Consistent SHAP, исследователи продемонстрировали многообещающий метод обнаружения событий путем захвата всплесков важности функций.

В этом посте я сначала объясню, как рассчитывается KernelSHAP и как изменить его для VARSHAP. Затем я также объясню, как получить согласованный во времени SHAP (TC-SHAP) и как использовать TC-SHAP для идентификации событий при анализе временных рядов.

КернелШАП и ВАРМАКС

Формула значения SHAP согласно [2]:

Где phi в приведенном выше уравнении — это значение SHAP функции i с учетом функции значения v (функция значения обычно представляет собой прогнозы модели) . C — это набор всех функций, а N — размер C или количество функций. P(C) — это совокупность всех функций без функции i. Дельта(S, i) – это изменение прогнозируемого признака i при добавлении его в коалицию признаков S (которая является набором в наборе мощности C).

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

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

Где h_x — функция маскирования, применяемая к z, бинарному вектору, выбранному из набора Z, который представляет набор всех возможных коалиций функции. Эта функция сопоставляет коалицию, представленную z, с замаскированной точкой данных, которая затем помещается в нашу модель (f_theta). Цель состоит в том, чтобы найти лучшую линейную модель (g), которая оценивает производительность модели по всем маскам. Веса в линейной модели — это значения KernelSHAP. Все это возможно благодаря комбинаторному ядру, определенному:

Чтобы вместо этого рассчитать VARSHAP, просто замените линейное представление g моделью VAR. По мнению авторов, поскольку как коэффициенты линейной модели, так и модели VAR оцениваются с помощью обычных наименьших квадратов, вся математика для KernelSHAP сохраняется и становится более репрезентативной для временного ряда [3].

Согласованный во времени SHAP

Как упоминалось ранее, SHAP — это метод, который интерпретирует особенности модели как игроков в игре и использует значения Шепли для справедливого распределения вознаграждений. Однако для игр, которые развиваются с течением времени, эти распределения могут не обеспечивать достаточного стимула для всех сторон для достижения первоначальной цели. Чтобы избежать этого, теоретики игр используют графики вменения и концепцию согласованности во времени для управления стимулами во времени [3].

Эта идея конкурирующих интересов во времени распространяется и на функции, поскольку традиционные методы SHAP рассматривают одну и ту же функцию на другом временном шаге в качестве другого игрока в игре. По мнению авторов, мы потенциально можем восполнить этот пробел, добавив временную согласованность [3].

Временная согласованность значений SHAP может быть представлена ​​следующим образом:

В этом уравнении бета представляет график условного исчисления платежей, произведенных игроку (функция) i за t временных шагов и phi(0 ,i) — общая стоимость, которую игрок вносит в игру (прогноз). Думайте об этом как о деловом партнерстве.

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

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

  1. Вычислите общий вклад каждого объекта в SHAP (phi на временном шаге 0), замаскировав объект, заменив его нулями или средним значением. Повторите это для всех функций.
  2. Затем нам нужно вычислить «SHAP подигры» для каждого временного шага в нашем окне (t-w). Это делается путем изменения механизма маскирования в уравнении 2 таким образом, чтобы вместо маскирования только шага по времени (t-w) мы маскировали все шаги по времени между t-w и t (снова либо с нулями, либо со средним значением).
  3. Затем мы просто вычисляем график вменения, используя уравнения 4 и 5.

Шаг 1 рассчитывает «первоначальные инвестиции». Затем на шаге 2 реализуется идея о том, что у нас есть N объектов для нескольких временных шагов (W), а не N*W объектов. Шаг 3 объединяет все это, предоставляя график вменения (или периодические доходы каждого «инвестора»).

Преимущество этой процедуры также заключается в сокращении количества вычислений с 2^(N*W) до W*2^N, где W — количество временных шагов, используемых для прогнозов, а N — количество признаков [3].

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

Обнаружение событий с помощью TC SHAP

Хотя получение важности данного временного шага для одного прогноза полезно, анализ временных рядов часто включает анализ нескольких прогнозов и закономерностей, и мы можем захотеть узнать, каковы некоторые влиятельные временные шаги в целом в прогнозе модели [3].

По словам авторов, мы можем найти влиятельный временной шаг, сложив значения TC SHAP для заданного набора прогнозов (или всех прогнозов, если нам нужен глобальный механизм обнаружения событий). Построив это, мы можем легко увидеть, какие временные шаги важны и где могли произойти некоторые важные события [3].

Эффективность такого подхода авторы демонстрируют на примере набора данных Индивидуальное электроснабжение домохозяйств. Авторы обучили сеть LSTM, за которой следует плотный слой, для прогнозирования энергопотребления. Затем они рассчитали значения TC-SHAP и суммировали их, чтобы получить свертки обнаружения событий. Затем они наложили свертки на целевой временной ряд.

Как показано на рисунке 1, большие сдвиги в целевых переменных можно объяснить большими всплесками сверток событий. Например, сразу после 25-го временного шага в свертке событий для sub_metering_2 наблюдается большой всплеск. Вскоре после этого последовало большое падение целевого значения. Точно так же за большим падением свертки событий последовало большое падение целевого значения на временном шаге 75 в sub_metering_3. Большинство больших сдвигов можно объяснить некоторыми субметровыми сдвигами.

Заключение

Модификации KernelSHAP заполняют большую дыру в текущей работе. Помимо этого, не так много работы по разработке апостериорных методов интерпретации, специально учитывающих важность характеристик временных рядов. TC-SHAP помогает решить эту проблему и крайне необходим.

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

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

Ресурсы и ссылки

  1. Пакет SHAP для Python: https://shap.readthedocs.io/en/latest/index.html
  2. Более подробное объяснение Kernel SHAP: https://christophm.github.io/interpretable-ml-book/shap.html#kernelshap

Ссылки

[1] Л. Шепли. Значение для игр на n человек. (1953). Вклад в теорию игр 2.28.

[2] С.М. Лундберг, С-И. Ли. Единый подход к интерпретации модельных прогнозов. (2017). Достижения в области нейронных систем обработки информации, 30.

[3] М. Виллани, Дж. Локхарт, Д. Магазени. Важность функций для данных временных рядов: улучшение KernelSHAP (2022 г.). Семинар ICAIF по объяснимому искусственному интеллекту в финансах