SHAP и объяснимость моделей ИИ: 15 расширений метода и когда какое применять
SHAP (SHapley Additive exPlanations, аддитивные объяснения на основе значений Шепли) остаётся единственным популярным методом объяснимости моделей машинного обучения, чья корректность доказана математически, и в 2025 году вокруг него выросло 15 практических расширений, каждое из которых решает конкретную задачу.

Метод SHAP даёт не просто «красно-синие полоски», а единственное решение, удовлетворяющее четырём аксиомам честного дележа вклада. Альтернативы либо жертвуют одним из свойств, либо не имеют реализации. Знать расширения SHAP значит выбирать правильный инструмент под задачу, а не гадать.
Метод появился из теории игр. В 1953 году математик Ллойд Шепли предложил формулу «честного дележа выручки» между игроками коалиции. Десятилетия спустя исследователи переложили идею на машинное обучение: «игроки» стали признаками модели, а «выручка» стала предсказанием. В 2017 году вышел фреймворк SHAP, и с тех пор разные группы добавляли расширения, потому что базовый алгоритм упирается в экспоненциальную сложность вычислений. Этот материал помогает разобраться, какое расширение когда применять, без погружения в формулы, но с пониманием границ каждого метода.
Что понадобится
- Python 3.8+ и библиотека
shap(ставится черезpip install shap) - Обученная модель машинного обучения: подойдёт любая, от градиентного бустинга до нейросети
- Набор данных, на котором модель делает предсказания (хотя бы 100 объектов для наглядных графиков)
- Jupyter Notebook или Google Colab для визуализации
- Примерно 30 минут на первый запуск и около двух часов, если хотите сравнить несколько расширений
Как устроен базовый SHAP?
Интуиция проста. Представьте команду, которая вместе заработала деньги. Нужно разделить выручку честно, по среднему вкладу каждого участника. Мы смотрим, насколько каждый улучшает результат, когда присоединяется к уже собравшейся группе, и усредняем по всем возможным порядкам.
Теперь замените «игроков» на признаки модели, а «выручку» на предсказание. Метод перебирает все комбинации признаков, включая и выключая каждый, и измеряет, как меняется прогноз.
Результат обладает четырьмя доказанными свойствами:
- Эффективность: сумма вкладов всех признаков плюс базовое значение ровно равна предсказанию модели. Ничего не теряется и не возникает из ниоткуда.
- Симметрия: два признака, которые в любой комбинации дают одинаковый прирост, получают равные вклады.
- Нулевой игрок: признак, который не меняет прогноз ни в одной комбинации, получает ноль.
- Аддитивность: если предсказание собрано из двух моделей (например, ансамбля), вклады считаются по каждой отдельно и складываются.
Эти четыре свойства гарантируют единственность решения. Именно поэтому SHAP стал стандартом объяснимости: либо мы соглашаемся с этими аксиомами, либо теряем одно из свойств.
Вторая постановка: оптимизация вместо перебора
Есть менее известный, но практически важный взгляд. Значения Шепли можно получить не полным перебором всех комбинаций, а как решение задачи взвешенных наименьших квадратов (проще говоря, найти линейную формулу, которая лучше всего приближает поведение модели на всех комбинациях признаков).
Каждая комбинация получает свой вес через «ядро Шепли». Крайние случаи (все признаки включены или все выключены) весят больше всего, средние комбинации весят меньше.
Эта постановка, предложенная в 1988 году Чарнсом, Голани, Кином и Руссо, лежит в основе большинства из 15 расширений SHAP. Понимание её помогает разобраться, почему расширения работают так, а не иначе.
Пошаговая инструкция: от модели до графика объяснимости
- Установите библиотеку и импортируйте нужные модули:
pip install shap
import shap
import xgboost as xgb
- Обучите модель (или загрузите готовую). Для примера возьмём встроенный датасет:
X, y = shap.datasets.adult()
model = xgb.XGBClassifier()
model.fit(X, y)
- Создайте объект Explainer. Библиотека сама подберёт оптимальный алгоритм под тип модели:
explainer = shap.Explainer(model, X)
shap_values = explainer(X[:100])
- Постройте график вкладов для одного объекта (waterfall, те самые красно-синие полоски):
shap.plots.waterfall(shap_values[0])
- Постройте сводный график (beeswarm) для всей выборки, чтобы увидеть, какие признаки влияют сильнее всего:
shap.plots.beeswarm(shap_values)
- Для нейросетей используйте
DeepExplainerилиGradientExplainerвместо базового:
explainer = shap.DeepExplainer(model, X_train[:100])
- Сравните результаты: сумма всех SHAP-значений плюс базовое значение (
explainer.expected_value) должна точно равняться предсказанию модели. Если не сходится, значит, что-то пошло не так с данными или типом Explainer.
15 расширений: когда какое применять?
Каждое расширение SHAP появилось потому, что базовый метод не справлялся с конкретной ситуацией. Вот логика выбора:
- TreeSHAP: для моделей на деревьях (XGBoost, LightGBM, CatBoost). Считает точные значения за полиномиальное время вместо экспоненциального. Если у вас бустинг, начинайте с него.
- KernelSHAP: для любой модели как «чёрного ящика». Использует ту самую МНК-постановку с ядром Шепли. Медленнее TreeSHAP, зато универсален.
- DeepSHAP: для глубоких нейросетей. Комбинирует идеи DeepLIFT и значений Шепли.
- GradientSHAP: тоже для нейросетей, но через градиенты. Быстрее DeepSHAP на больших сетях.
- LinearSHAP: для линейных моделей. Точное решение за линейное время, если признаки независимы.
Остальные расширения решают специфические задачи: объяснение текстовых моделей, работа с изображениями (через суперпиксели), учёт зависимостей между признаками, объяснение временных рядов, групповые значения Шепли (когда признаки объединены в логические блоки).
Ключевой принцип выбора: сначала определите тип модели и тип данных, затем проверьте, есть ли специализированное расширение. Универсальный KernelSHAP работает всегда, но специализированные варианты быстрее и точнее.
Допустим, у вас модель на CatBoost, которая предсказывает отток клиентов. Вы запускаете TreeSHAP и получаете waterfall-график для конкретного клиента. График показывает: базовая вероятность оттока 12%, признак «количество обращений в поддержку» сдвигает прогноз на +18 п.п. (красная полоска вправо), а признак «срок подписки больше двух лет» сдвигает на минус 9 п.п. (синяя полоска влево). Итоговый прогноз 21%. Менеджер видит: этого клиента нужно перезвонить, потому что жалобы перевешивают лояльность. Без SHAP модель сказала бы просто «21% оттока», и непонятно, что делать.
Путать глобальную и локальную объяснимость. Waterfall-график объясняет одно конкретное предсказание. Beeswarm-график показывает картину по всей выборке. Новички строят waterfall на одном объекте и делают выводы обо всей модели.
Игнорировать зависимости между признаками. Базовый KernelSHAP предполагает независимость признаков. Если у вас «возраст» и «стаж работы» сильно коррелируют, значения Шепли могут быть некорректными. Для таких случаев есть расширения, учитывающие корреляции.
Считать SHAP на всём датасете, когда он большой. KernelSHAP на 100 000 объектов с 50 признаками может работать часы. Начинайте с подвыборки в 100 объектов, убедитесь, что всё работает, потом масштабируйте.
Забывать проверить сходимость. Сумма SHAP-значений плюс базовое значение должна равняться предсказанию. Если расхождение больше 0,01, Explainer выбран неверно.
Что делать с этим прямо сейчас?
Автору Дзена и копирайтеру. Если пишете про технологии или финансы, SHAP-графики (объяснимость, shap объяснимость) отлично работают как иллюстрация к тезису «почему ИИ принял такое решение». Красно-синие полоски понятны читателю без технического бэкграунда. Вставляйте скриншоты waterfall-графиков в статьи, они повышают доверие.
ML-инженеру и аналитику данных. Не используйте KernelSHAP, если для вашей модели есть специализированное расширение. TreeSHAP для деревьев быстрее на порядки. Начните с таблицы «тип модели, тип расширения, ограничения» и повесьте её рядом с рабочим местом.
Предпринимателю и руководителю. Если ваша компания использует ML для принятия решений (кредитный скоринг, рекомендации, прогноз оттока), требуйте от команды SHAP-отчёты. В России Центробанк всё внимательнее смотрит на объяснимость моделей в финансовом секторе. SHAP-объяснимость модели, это не каприз, а подготовка к будущим требованиям.
По моему опыту, главная ценность статьи-первоисточника не в формулах (они есть в документации), а в навигации по 15 расширениям: автор описывает каждое словами, объясняя, когда оно нужно. Для российских ML-инженеров это экономит часы, которые иначе уйдут на чтение оригинальных статей на английском. Честная оговорка: SHAP показывает вклад признаков, но не причинно-следственную связь. «Признак X сдвинул прогноз» не значит «X стал причиной события». Путать корреляцию и причинность с SHAP так же легко, как и без него, просто графики выглядят убедительнее.
Четыре аксиомы Шепли, это не абстракция из учебника по теории игр. Это единственная математическая гарантия того, что объяснение модели не врёт, не теряет часть предсказания и не приписывает бесполезному признаку чужой вклад. Разберитесь с расширениями один раз, и выбор метода объяснимости перестанет быть гаданием.
Курс по нейросетям для авторов
Научитесь использовать ИИ в работе с контентом, от генерации идей до аналитики
Попробовать бесплатно
Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».
Читайте также

SoftBank дал $50 млн библиотеке Трампа и через два месяца получил землю под дата-центр
SoftBank в январе перечислил 50 миллионов долларов в фонд президентской библиотеки Дональда Трампа, а спустя два месяца получил от федерального правительства…

Google Arts & Culture собрал 50+ историй о танго: наследие ЮНЕСКО впервые в одном месте
Google второго июня открыла на платформе Google Arts & Culture коллекцию о танго, где собраны больше 50 историй о легендах жанра, современных музыкантах и…
Suno маркирует каждый трек: нейросеть для музыки получит водяные знаки и лимит скачиваний
Suno 5 июня 2025 года объявила о новых мерах против спама в музыке, сгенерированной нейросетью: водяных знаках, ограничении скачиваний и партнёрстве с…
Комментарии