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

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

Среди них один из объяснителей, который мы обсудим, — это SHAP. Значения SHAP (аббревиатура от Shapley Additive Explanations) разбивают прогноз, чтобы показать влияние каждой функции. SHAP может объяснить отдельные прогнозы, а также их можно объединить в мощные аналитические данные на уровне модели.

ПОЧЕМУ ШАП?

  1. Значения SHAP (аббревиатура от Shapley Additive Explanations) анализируют прогноз, чтобы продемонстрировать, как на него влияет каждый атрибут.
  2. SHAP дает глобальные объяснения и особенности важности.
  3. SHAP раскрывает разнообразие и взаимодействие.
  4. Значения Шепли учитывают все возможные прогнозы для экземпляра на основе всех доступных входных комбинаций. Благодаря тщательной методологии SHAP может обеспечить такие функции, как согласованность и локальная точность.

КАК РАБОТАЕТ ШАП

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

Если есть две функции X1 и X2 для прогноза Y, в основном SHAP рассчитает вклад обеих функций для прогноза. Другими словами, это отвечает на то, как можно изменить прогноз с Y1 на Y2, изменив X1 и X2.

УСТАНОВИТЬ ФОРМУ

pip install shap #install shap
import shap # import shap module
shap.initjs() # инициализировать javascript для включения графиков

ОБЪЯСНИТЕЛИ В ШАПЕ

В SHAP есть разные объяснители для объяснения разных моделей машинного обучения.

  1. shap.Explainer: это базовый объяснитель, реализующий алгоритмы оценки для объяснения любых моделей машинного обучения или функций Python.
  2. shap.TreeExplainer: поддерживает объяснение древовидной модели, такой как XGboost, CatBoost, Pyspark, древовидные модели scikit-learn, LightGBM.
  3. shap.DeepExplainer:этот объяснитель интерпретирует модели глубокого обучения, такие как LSTM, путем агрегирования множества фоновых выборочных данных.
  4. shap.KernelExplainer: он подходит для всех типов моделей, однако работает медленнее, чем некоторые другие объяснения, и предоставляет оценку чисел SHAP вместо фактических значений.
  5. shap.SamplingExplainer: этот объяснитель предполагает независимость признаков и оценивает значения Шепли для набора выборок, которые могут быть матричными или векторными.
  6. shap.GradientExplainer: объясняет модель на основе интегрированных значений градиента.
  7. shap.PartitionExplainer: объясняет вывод любой функции и не зависит от модели.
  8. shap.LinearExplainer: подбирает и вычисляет значения для линейных моделей, а также может учитывать корреляцию между функциями.
  9. shap.PermuationExplainer:независимый от модели объяснитель, который повторяет прямую и обратную перестановку входных данных.
  10. shapAdditiveExplainer: объясняет модели, которые имеют только эффекты первого порядка.

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

# Создать объект, который может вычислять значения формы
объяснитель = shap.DeepExplainer(LSTM, train_data)
# Вычислить значения формы
shap_values ​​= объяснения.шап_значения(данные_для_предсказания)

УЧАСТКИ

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

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

shap.initjs()
shap.force_plot(explainer.expected_value[1],shap_values[1],data_for_prediction)

Рисунок: график силы SHAP

График силы SHAP показывает функцию, в наибольшей степени влияющую на конкретный прогноз. Force plot генерирует графики в JS. Следовательно, для этого необходимо поддерживать js в среде, которую вы пытаетесь визуализировать.

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

  • Для 09.01.2022 ожидаемое_значение (прогноз) = 0,34. Функции красного цвета — это сегодняшние функции, ответственные за увеличение ожидаемого_значения (прогноз), а функции синего цвета — сегодняшние функции, ответственные за уменьшение ожидаемого_значения (прогноз).
  • Как видно на приведенном выше графике силы, средние продажи на прошлой неделе составляют 0,76, что в значительной степени ответственно за снижение ожидаемой стоимости. Точно так же температура 0,88 также нанесла ущерб продажам.
  • При наблюдении за красными значениями количество товара на складе составляет 0,86, а скидка 0,866 оказывает положительное влияние и увеличивает продажи по сравнению с ожидаемым значением.
  • Если вычесть длину синих полос из длины розовых полос, получится расстояние от ожидаемого значения до базового значения.
  • Аналогичный график силы может быть получен для всех прогнозов, полученных на тестовых данных.
  • Краткий график

shap.summary_plot(shap_values[1],data_for_prediction)

Рисунок: Сводный график SHAP

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

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

shap.bar_plot(shap_values) #Глобальный столбчатый график

shap.bar_plot(shap_values[0]) #Локальный столбчатый график

Рис.: Гистограмма SHAP

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

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

  • График вклада зависимости

shap.dependence_plot('Скидка%', shap_values[1],train_batch,interaction_index="Продажи")

Рисунок: График вклада зависимости SHAP

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

Другие переменные должны взаимодействовать со скидкой в ​​соответствии со спредом. Указанные две точки с одинаковыми скидками. Один прогноз увеличился в результате этого значения, тогда как другой прогноз уменьшился.

ОГРАНИЧЕНИЯ

  1. SHAP нужны все функции тестовых данных, которые использовались данными поездов.
  2. Модель следует обучать на том же ноутбуке, на котором планируется реализовать SHAP.

ИСПОЛЬЗОВАННАЯ ЛИТЕРАТУРА

  1. Документация SHAP https://shap-lrjball.readthedocs.io/en/docs_update/api.html
  2. Мохтари, Карим Эль, Бен Пичи Хигдон и Айше Башар. «Интерпретация финансовых временных рядов со значениями SHAP». Материалы 29-й ежегодной международной конференции по компьютерным наукам и программной инженерии. 2019.
  3. Мишра, Прадипта. «Объяснимость моделей глубокого обучения». Практический объяснимый ИИ с использованием Python. Апресс, Беркли, Калифорния, 2022 г., стр. 243–263.