Адаптивность моделей ИИ и машинного обучения экспоненциально выросла за последнее десятилетие или около того, что привело к принятию некоторых важных решений в различных областях отрасли. Несмотря на то, что модели машинного обучения решают широкий круг проблем, бизнес по-прежнему испытывает определенные трудности, когда дело доходит до доверия результатам моделей машинного обучения/глубокого обучения при принятии различных решений. Это привело к тому, что специалисты по данным применяют различные подходы для объяснения результатов моделей. Некоторые из таких подходов включают использование «коэффициентов» линейной модели или использование «важности признаков» древовидных моделей. Несмотря на то, что они дают целостное представление о важности функции в модели, они не углубляются в детализацию, когда речь идет о прогнозе для конкретной точки данных. В этой статье мы рассмотрим метод расчета значений SHAP с использованием моделей атрибуции аддитивных функций для объяснения моделей машинного обучения.

Эта статья основана на бумаге

Мотивация. Почему важна объяснимость?

Но зачем вообще объяснять модель, если она дает результаты. Ну, мотивация может быть тройной.

  1. Коммерческие. Многие компании полагаются на машинное обучение для принятия важных бизнес-решений, таких как принятие заявки на получение кредита (финансы), инвестирование в другую компанию (инвестиции), обнаружение рака с помощью диагностических изображений (здравоохранение) и т. д. , Эти решения иногда имеют правила, такие как Закон о равных кредитных возможностях. Таким образом, объяснение причины вывода модели ML/DL важно для установления доверительных отношений с предприятиями и клиентами.
  2. Технические.Знание того, почему модель ML/DL получила результат, важно для понимания проблемы и данных. Например, есть очень известная проблема классификации изображений, которая отделяет хаски от волка. Поняв проблему, мы обнаруживаем, что модель глубокого обучения классифицирует на основе фона — снег (волк), а не снег (хаски). Более того, нам также необходимо понять причину решения понять крайние случаи в критических условиях, таких как беспилотные автомобили.
  3. Социальные и этические аспекты.К сожалению, из-за присущей данным, которые накапливались за многие годы, модели ML/DL, обученные на этих данных, также демонстрируют аналогичную погрешность в прогнозах. Очень важно понимать роль признака, чтобы устранить эту погрешность в данных.

Я опишу модели атрибуции аддитивных функций, которые можно использовать для объяснения различных моделей ML/DL, но перед этим я кратко расскажу о ценностях Шепли и SHAP.

Ценности Шепли

Значения Шепли можно использовать для объяснения выходных данных модели ML/DL. Это концепция теории игр, которая используется для определения вклада каждого игрока в коалиционную игру. Предположим, 4 игрока принимают участие в соревновании и выигрывают призовой фонд в размере 10 000 долларов США. Мы можем использовать значения Шепли, чтобы рассчитать, как призовые деньги могут быть распределены между игроками в зависимости от их вклада в команду. Концепция значений Шепли в последнее время набирает популярность в области машинного обучения из-за ее использования при расчете важности функций. В ML/DL игра может быть заменена моделью, а выплата может быть заменена предсказанием модели.

Значения Шепли можно рассчитать, решив следующее уравнение:

где

|С| размер подмножества, прежде чем мы добавим i-й признак

|Ф| количество функций

предельный вклад

(|S|!(|F|-|S|-1))/|F|! вес для комбинаций для этого случая

S⊆F\{i} — это все возможные подмножества с i-м признаком, поэтому мы можем добавить i

S∪{i} — подмножество S с добавленным i, а S — подмножество без i

SHAP (объяснение добавления Shapley)

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

Методы атрибуции дополнительных функций

Теперь поговорим об аддитивных методах атрибуции признаков. Для сложных моделей, таких как ансамблевые методы или глубокие сети, мы не можем использовать исходную модель в качестве лучшего объяснения, потому что ее нелегко понять, поэтому мы используем более простую модель объяснения. С этого момента мы будем использовать f(x)какобъясняемую исходную модель прогнозирования, аg(x)какмодель объяснения.

Как работают модели аддитивной атрибуции признаков:

  1. Модели сосредоточены на локальных методах, разработанных для объяснения предсказания f(x) на основе одного входного значения x.
  2. модель объяснения использует упрощенные входные данные, которые сопоставляются с исходными входными данными через функцию отображения x = h(x')
  3. Локальные методы пытаются обеспечить g(x') = f(h(x'))

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

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

  1. Свойство 1 — локальная точность: модель объяснения g(x) должна совпадать с выходными данными исходной модели f(x) при аппроксимации для определенного ввод х.
  2. Свойство 2 — Отсутствие. Функция ограничения отсутствия со значением 0 не оказывает атрибутивного влияния.
  3. Свойство 3 — согласованность. Оно гласит, что если модель изменяется таким образом, что некоторые упрощенные входные данные увеличиваются или остаются неизменными, то ее атрибуция не должна уменьшаться.

Если эти свойства удовлетворены, то решение для Методов атрибуции будет равно значениям Шепли.

Теперь я расскажу о двух таких методах атрибуции:

  1. Kernel SHAP (линейная известь + значения Шепли)
  2. Deep SHAP (DeepLIFT + значения Шепли)

Kernel SHAP (Linear LIME + значения Shapley)

Чтобы сначала объяснить этот метод, мы сначала рассмотрим технику локальных интерпретируемых агностических объяснений модели (LIME) —

LIME – это метод объяснения модели машинного обучения "черный ящик" путем создания ряда интерпретируемых локальных суррогатных моделей. Для данного прогноза LIME локально аппроксимирует модель, чтобы объяснить прогноз. Чтобы найти значения Шепли, LIME минимизирует следующую целевую функцию:

Модель объяснения аппроксимируется как исходная модель путем минимизации потерь L по набору выборок в упрощенном входном пространстве, взвешенных локальным ядром π. Ω снижает сложность g.

Подробнее о LIME читайте по этой ссылке

Линейный LIME использует модель линейного объяснения для локальной аппроксимации f, однако то, аппроксимирует ли LIME значения Шепли, зависит от выбора функции потерь L, взвешивающего ядра π и члена регуляризации Ω. Выбор LIME для этих параметров осуществляется эвристическим путем, что означает, что уравнение для LIME не вычисляет значения Шепли.

Здесь в игру вступает Kernel SHAP.

В документе описываются конкретные формы π, L и Ω, которые делают решение LIME совместимым со свойствами методов атрибуции и помогают нам определить значения SHAP.

Deep SHAP (Deep LIFT + значения Shapley)

В основе Deep SHAP лежит метод Deep LIFT. Deep LIFT определяется как «метод объяснения рекурсивного прогнозирования для глубокого обучения». Это объясняет отличие от эталонного значения выхода Δt с точки зрения отличия от эталонного значения входа Δx_n.

Глубокий ЛИФТ приписывает каждому входу x_i значение C_(Δx_i Δ_y), которое представляет его вклад в изменение опорного значения вместо того, чтобы устанавливать его на опорное значение. Deep LIFT использует свойство «суммирование в дельту», которое гласит:

где C_(Δx_i Δ_o) представляет вклад функции i φ_i

DeepLIFT использует правило линейной композиции, что означает, что он линеаризует нелинейные компоненты нейронной сети.

Deep SHAP объединяет значения SHAP, вычисленные для более мелких компонентов сети, в значения SHAP для всей сети путем рекурсивной передачи множителей DeepLIFT (которые в основном представляют собой значения SHAP, рассчитанные для узла) в обратном направлении по сети.

Вычисление значений SHAP в Python: библиотека SHAP

Далее мы рассмотрим практический пример для Kernel SHAP и Deep SHAP и посмотрим, как они работают для объяснения модели.

Полный код реализации можно найти на моем Github или в моих общедоступных блокнотах Kaggle.

Ядро SHAP

Ссылки:

  1. Гитхаб
  2. Каггловская записная книжка

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

Здесь мы используем различные функции, чтобы предсказать, будет ли пациент страдать сердечным заболеванием (1) или нет (0). Следовательно, это проблема классификации.

Перед вычислением значений SHAP я выполнил следующие шаги:

  1. Выполнен базовый EDA для понимания данных, их распределения и аномалий.
  2. Затем я выполнил горячее кодирование для категориальных переменных и стандартизацию для числовых переменных.
  3. Выполнено разделение поезда-теста для измерения точности модели.
  4. Обучил модель логистической регрессии и получил оценку AUC 0,86.

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

Далее мы вычисляем значения SHAP, и для этого я буду использовать библиотеку shap на Python. Для этой цели я использовал KernelExplainer(). Библиотека объяснения ядра принимает следующие входные данные:

  1. модель: модель ML, которую необходимо объяснить
  2. данные: это фоновые данные, используемые для создания искаженного набора данных, необходимого для создания модели объяснения. Чтобы определить влияние функции, для этой функции устанавливается значение «отсутствует» и наблюдается изменение выходных данных модели.

После вычисления значений SHAP (что может занять много времени) мы сначала рассмотрим объяснение первой точки данных. Прогноз для точки данных: болезнь сердца = 0.

Принудительный график

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

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

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

Краткий график

Наконец, мы наблюдаем итоговый сюжет. Это дает глобальную важность функций для конкретного вывода. На приведенном ниже графике мы видим, что то, как значение признаков способствует предсказанию, равно 0. Например, если мы посмотрим на холестерин, мы увидим, что по мере увеличения значения признака его вклад уменьшается до значения предсказания 0 (которое очевидно!). Функции расположены в порядке убывания их средних значений SHAP.

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

Далее мы рассмотрим интерпретацию значений SHAP из модели глубокого обучения с использованием Deep SHAP.

Глубокий ШАП

Ссылки:

  1. Гитхаб
  2. Каггловская записная книжка

Для этого метода мы будем использовать набор данных Fashion MNIST. Он классифицирует изображения по одному из 10 предметов моды.

Мы обучаем модель сверточной нейронной сети с использованием Keras и получаем тестовую категориальную точность 0,9 после обучения в течение 5 эпох. Затем мы используем оболочку DeepExplainer для вычисления значений SHAP для модели глубокого обучения. Модель DeepExplainer принимает следующие аргументы в качестве входных данных:

  1. модель: модель глубокого обучения, которая обучается на данных Fashion MNIST.
  2. data: фоновый набор данных, используемый для интеграции наших функций. Глубокое интегрирование по этим образцам.

На рисунке ниже показаны значения SHAP для каждой категории одежды.

Мы можем сделать следующие выводы из значений SHAP, показанных на рисунке выше:

  1. Футболки и пуловеры различаются по пикселям в конце рукавов пуловера.
  2. Пуловер и пальто различаются по пикселям рядом с застежкой-молнией пальто, так как у пуловера нет молнии.
  3. Обувь и сандалии различаются по пикселям рядом с пяткой.

В заключение я бы сказал, что модели атрибуции аддитивных функций и значения SHAP являются полезным методом для понимания прогноза модели машинного обучения. Используя библиотеку shap в python, мы можем вычислять значения SHAP, используя различные методы, такие как kernelexplainer, treeexplainer, deepexplainer и т. д.

Буду признателен за любые отзывы в комментариях ниже.

Ссылки:

  1. https://arxiv.org/abs/1705.07874
  2. https://medium.com/analytics-vidhya/shap-part-1-an-introduction-to-shap-58aa087a460c
  3. https://c3.ai/glossary/data-science/shapley-values/
  4. https://shap-lrjball.readthedocs.io/en/latest/index.html
  5. https://christophm.github.io/interpretable-ml-book/shap.html