Обзор того, как рассчитываются вклады функций SHAP

Предположим, вы (Игрок 1) и ваш друг (Игрок 2) участвуете в конкурсе Kaggle. В итоге вы выиграете первый приз в размере 10 000 долларов США. Теперь вы хотите разделить деньги справедливо. Ваш друг предлагает вам просто разделить его поровну. Однако ваши навыки настройки гиперпараметров превосходны. Вы считаете, что заслуживаете большей доли, поскольку внесли больший вклад в команду. Имея это в виду, как вы можете справедливо разделить деньги?

К счастью, у вашего друга есть машина времени. Каждый из вас возвращается в прошлое и повторяет конкурс Kaggle в одиночку. В итоге вы заняли второе место и заработали 7500 долларов США. Ваш друг занимает третье место и зарабатывает 5000 долл. США. Если бы никто из вас не играл, вы не получили бы призовых денег ($0). Мы записываем значение этих 4 коалиций игроков ниже. Ясно, что вы заслуживаете большего призового фонда, но до сих пор неясно, как именно его разделить.

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

Например, Игрок 1 (P1) может присоединиться к коалиции, состоящей только из Игрока 2 (P2). P2 переходит с третьего места на первое, а призовой фонд увеличивается на $5000. P1 также может присоединиться к коалиции без игроков и увеличить призовой фонд на 7500 долларов США. Это предельные вклады P1. Среднее из них дает нам ожидаемый предельный вклад в размере 6250 долларов США.

Мы можем следовать аналогичному процессу, чтобы вычислить ожидаемый предельный вклад для P2. На этот раз стоимость составляет 3750 долларов США. В итоге P1 получит 6250 долларов, а P2 — 3750 долларов. Эти два значения также известны как значения Шепли. Обратите внимание, что суммы сумм составляют общий призовой фонд в размере 10 000 долларов США.

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

Значение Шепли = ожидаемый предельный вклад

Это средневзвешенное значение вкладов игроков во все коалиции, к которым игрок может присоединиться.

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

Значения Шепли для игры с 3 игроками

Прежде чем двигаться дальше, давайте рассмотрим еще один пример. Это облегчит понимание общего уравнения. На этот раз у нас есть команда из 3 игроков. Вычисления сложны, и нам придется вернуться назад во времени еще несколько раз.

Теперь будет 8 возможных коалиций, показанных ниже. Вместе вы выиграете главный приз (10 000 долларов США). Теперь есть 3 коалиции по 2 игрока. Например, коалиция P1 и P3 будет на втором месте (7500 долл. США). Также будут коалиции из 1 игрока. Например, если бы P3 играл в одиночку, он не получил бы призового фонда ($0). Возможно, им стоило инвестировать в лучший графический процессор.

Мы можем использовать эти значения коалиции для вычисления значения Шепли для P1. Теперь есть 4 коалиции, к которым может присоединиться P1. P1 может присоединиться к коалиции как P2, так и P3, коалиции только P2 или P3 или коалиции без игроков. Как и раньше, мы вычисляем предельные вклады P1 в каждую из этих коалиций. Наконец, мы берем средневзвешенное значение. Это дает нам значение Shapley 5000 долл. США.

Вы можете задать вопрос: откуда мы берем эти веса? Вот почему мы взвешиваем первый предельный вклад на 1/3, второй на 1/6 и так далее… Это вероятности того, что P1 вносит эти конкретные вклады. Взвешивание по вероятностям дает нам ожидаемый предельный вклад.

Непонятно, откуда берутся эти вероятности. Для начала нам нужно вычислить количество способов, которыми можно сформировать коалицию из 3 человек. Это связано с тем, что полный призовой фонд (10 000 долларов США) можно выиграть только в том случае, если все 3 участника будут работать вместе.

Для этого мы предполагаем, что каждый участник присоединяется к команде последовательно с равными шансами. Например, присоединяется P1, затем P3, затем P2. Это дает нам в общей сложности 3! = 6 способов формирования коалиции. Все это вы можете увидеть ниже. В общем, есть n! способы формирования команды из n игроков.

Выше мы видели, что если P1 присоединится к коалиции P2 и P3, они внесут предельный вклад в размере $5000. Это может произойти двумя способами. Присоединяется либо P2, затем P3, затем P1, либо P3 присоединяется, затем P2, затем P1. Другими словами, P1 внесет этот предельный вклад в 2 из 6 способов формирования команды. Это дает нам вероятность 2/6 = 1/3 того, что P1 вносит этот вклад.

Есть только один способ, которым P1 может внести второй взнос (2500 долларов США). То есть, если P2 присоединяется, то P1, а затем P3. Это дает нам вероятность 1/6. Точно так же вероятность третьего взноса (7500 долларов США) равна 1/6. Четвертый взнос ($5000) имеет вероятность 1/3. Как и в случае с первым вкладом, P1 может сделать это двумя способами. Сначала присоединяется P1, затем P2, затем P3 или P3, затем P2.

Мы можем следовать тому же процессу для P2 и P3. Для этих игроков значения Шепли составляют 3750 долларов США и 1 250 долларов США соответственно. Опять же, все значения Шепли складываются в общий призовой фонд. Значения Шепли всегда будут справедливо делить все призовые деньги. Теперь давайте посмотрим, как мы можем обобщить значение Шепли.

Обобщенные значения Шепли

Уравнение 1 дает формулу для значения Шепли игрока i в игре p игроков. Начиная со знака суммирования, мы суммируем по всем коалициям S. Где S — подмножество коалиций, не включающих Игрока i. Другими словами, S содержит все коалиции, в которые Игрок i может внести предельный вклад. Возвращаясь к примеру с 3 игроками, было 4 коалиции, не включающие P1.

В квадратных скобках мы имеем предельный вклад игрока i в коалицию S. В частности, у нас есть значение (val) коалиции S, включая игрока i, за вычетом значения коалиции S. Функция ценности зависит от конкретной игры, которая проводится. играл. В нашем примере с тремя игроками мы использовали другое обозначение. Мы говорили о ценностях коалиции и использовали букву C с нижними индексами игроков. Эти значения коалиции дают функцию ценности для игры Kaggle.

Наконец, мы взвешиваем предельные вклады. Ниже вы можете увидеть, что представляет собой каждый из компонентов веса. Здесь |S| — количество игроков в коалиции S. Это означает, что p-|S|-1 — это количество игроков, которым необходимо присоединиться к коалиции после игрока i.

В числителе весов у нас есть количество способов, которыми может образоваться коалиция S. Знаменатель — это количество способов, которыми может сформироваться полная команда. Таким образом, вес дает вероятность того, что игрок i внесет вклад в коалицию размера |S| когда в игре p игроков. Если вы подставите значения для нашей игры с 3 игроками, вы получите те же веса, что и раньше.

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

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

Аксиомы формы

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

Симметрия Два игрока считаются взаимозаменяемыми, если они вносят одинаковый вклад во все коалиции. Если два игрока взаимозаменяемы, то им должна быть предоставлена ​​равная доля от общей стоимости игры.

Нулевое свойство игрока. Если игрок вносит нулевой предельный вклад во все коалиции, то он не получает ничего из общего значения.

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

Мы можем математически доказать, что значение Шепли — единственное эффективное значение, удовлетворяющее этим трем аксиомам. Под эффективностью мы подразумеваем, что ценность игры не остается лишней. В конечном счете, согласно этому определению, стоимость Шепли является единственным справедливым способом разделения стоимости. Удивительно, что такую ​​интуитивную формулу можно вывести из 3 простых аксиом.

Значения Шепли для машинного обучения

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

Например, в предыдущей статье мы обучаем модель прогнозировать возраст морского ушка. Вы можете увидеть значения Шепли для конкретного наблюдения на Рис. 1. Они дают разницу между средним прогнозируемым возрастом E[f(x)] и прогнозом наблюдения f(x). Например, значение сброшенного веса увеличило предсказанный возраст на 1,81. Мы называем это вкладом функции.

Для их расчета мы можем использовать ту же формулу значений Шепли, что и раньше. Все, что нам нужно сделать, это изменить функцию значения. Уравнение 2 дает функцию, которую мы используем для конкретного наблюдения x. Здесь S — это совокупность значений признаков, f дает прогнозы модели, а модель имеет p признаков. Значение S — это прогноз модели, маргинализированный по всем функциям, не входящим в S. Мы используем фактические значения для тех, которые находятся в S.

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

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

Пример машинного обучения

Предположим, мы хотим предсказать чей-то доход. У нас есть два признака — возраст (признак 1) и степень (признак 2). В итоге мы получаем модель f ниже. Что касается возраста, мы предполагаем, что характеристика равномерно распределена между 18 и 60 годами. Точно так же и для степени мы предполагаем, что существует равная вероятность того, что кто-то будет иметь степень (1) или нет (0). Для нашего наблюдения у нас есть человек в возрасте 20 лет со степенью. Модель предсказывает, что этот человек имеет доход в размере 5000 долларов.

Мы можем рассчитать предельный вклад признака 2 {2} в коалицию признака 1, S = {1}. Это можно использовать для расчета значения Шепли для признака 2. Другими словами, для расчета вклада признака 2 (степень = 1) в прогноз.

Мы начинаем с вычисления значения коалиции обоих признаков, S = {1,2}. Это относительно просто. S содержит обе функции, поэтому нам не нужно маргинализировать какие-либо функции. Мы можем использовать фактические значения функции. Как видно ниже, это то же самое, что и предсказание для этого наблюдения.

Затем нам нужно вычислить значение коалиции, S = {1}. В этом случае S не содержит {2}. Мы маргинализируем признак 2 и используем фактическое значение признака 1. Помните, что признак 2 не является непрерывным. Чтобы маргинализировать значения функции, нам не нужно использовать интеграцию. Мы просто суммируем прогноз для каждого значения, умноженного на вероятность этого значения (т.е. 50%).

Теперь мы можем рассчитать предельный вклад признака 2 в S={1}. Вес этого вклада рассчитывается так же, как стандартные значения Шепли. Для ясности мы используем количество функций в коалиции и общее количество значений функций. У нас есть |S| = |{1}| = 1 и p = 2. Это дает нам вес (1!)(0!)/2! = 1/2.

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

Приближение значений Shapely

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

Один из способов сделать это — использовать выборку Монте-Карло. Для функции i мы сначала рассчитаем прогноз со значением функции (+i). Делаем то же самое без значения (-i). То есть мы берем случайное значение для признака i. Остальные значения функций также будут выбраны случайным образом. Мы берем разницу между этими двумя предсказаниями. Как показано ниже, мы делаем это M раз и находим среднее значение всех этих различий. Путем случайной выборки и усреднения мы неявно взвешиваем распределение признаков.

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

Свойства значений Шепли

Шепли — один из методов объяснения предсказаний. Он популярен из-за своих желаемых свойств. Большинство из них следуют из аксиом значений Шепли.

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

Другой популярный местный метод толкования – ИЗВЕСТЬ. Для сравнения, LIME не обязательно эффективен. Рассчитанные веса не будут соответствовать исходному прогнозу. Для Шепли мы знаем, какой вклад в прогноз внесла каждая функция. Для LIME мы знаем только, какая функция была наиболее важной для этого прогноза.

СимметрияДве функции будут иметь одинаковое значение Шепли, если они вносят одинаковый вклад во все коалиции.

Dummy Функция будет иметь значение Шепли, равное 0, если она никогда не изменяет прогноз. Другими словами, функции, которые не используются в модели, не будут иметь значения Шепли.

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

Последовательность. Это свойство вытекает из предыдущих трех свойств. Предположим, мы меняем модель с M1 на M2. Если функция теперь увеличивает прогноз больше, чем раньше, то ее значение Шепли увеличится. Это означает, что мы можем надежно сравнивать вклад функций различных моделей.

SHAP-значения

Пакет SHAP python стал синонимом работы со значениями Шепли. Ключом к широкому внедрению этого пакета является скорость, с которой он может делать приближения. Ниже мы обсудим несколько методов. Повышенная скорость означает, что мы также можем вычислять многие значения Шепли. Это позволило по-разному агрегировать значения, которые дают нам глобальное представление о модели.

ЯдроSHAP

Kernel SHAP преобразует значение Шепли в параметры линейной модели. Проще говоря, метод аппроксимации работает, сначала переставляя значения признаков. После достаточного количества перестановок значения Шепли оцениваются совместно с использованием линейной регрессии. Совместная оценка значений требует меньше вычислений, чем другие подходы к выборке. Например, выборка Монте-Карло, где значения Шепли для каждого признака рассчитываются индивидуально.

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

ДеревоSHAP

Метод аппроксимации, не зависящий от модели, называется TreeSHAP. Он использует структуру отдельных деревьев в моделях ансамбля. В результате его можно использовать только с древовидными алгоритмами, такими как случайные леса и XGBoost. Преимущество TreeSHAP в том, что он значительно быстрее, чем KernelSHAP.

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



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

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

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



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



Вы можете найти меня на | Твиттер | Ютуб | Информационный бюллетень — подпишитесь на БЕСПЛАТНЫЙ доступ к Курсу Python SHAP

Источники изображений

Все изображения мои собственные или взяты с www.flaticon.com. В случае последнего у меня есть Полная лицензия, как определено в их Премиум-плане.

Рекомендации

С. Лундберг, Пакет SHAP Python (2021), https://github.com/slundberg/shap

С. Лундберг и С. Ли, Единый подход к интерпретации модельных прогнозов (2017 г.), https://arxiv.org/pdf/1705.07874.pdf

К. Молнар, Интерпретируемое машинное обучение (2021) https://christophm.github.io/interpretable-ml-book/shap.html

С. Масис, Интерпретируемое машинное обучение с помощью Python (2021 г.)

Л.С. Шепли, Вклад в теорию игр, глава А «Ценность игр с участием n человек». (1953)

Понимание ценности Шепли

Текст S1: аксиоматическая основа ценности Шепли