Реализация SHAP/LIME для объяснимости модели Explainable AI

Модель XGBoost даёт AUC 0.91 на валидации. На продакшене появляются неожиданные предсказания — высокие скоры для явно нерелевантных объектов. Feature importance из самого бустинга показывает топ-10 признаков, но не объясняет конкретное предсказание. Этот конкретный объект может получить score 0.87 п

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1459
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1314
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1012
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1275
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    727
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1018

Модель XGBoost даёт AUC 0.91 на валидации. На продакшене появляются неожиданные предсказания — высокие скоры для явно нерелевантных объектов. Feature importance из самого бустинга показывает топ-10 признаков, но не объясняет конкретное предсказание. Этот конкретный объект может получить score 0.87 по неочевидным причинам — и мы как инженеры обязаны дать ответ. Мы внедряем SHAP и LIME для объяснимости моделей в production, и это не просто аудит — это часть ML-пайплайна под ключ.

SHAP и LIME отвечают на разные версии вопроса «почему?». Важно понимать, когда применять каждый метод и где они ломаются.

Как работают SHAP и LIME?

SHAP (SHapley Additive exPlanations, Lundberg & Lee, 2017) основан на теории кооперативных игр Шепли. Идея: вклад каждого признака в предсказание — среднее его маргинальное влияние при всех возможных коалициях признаков. Ключевое свойство: аддитивность. Сумма SHAP values всех признаков + base value (среднее предсказание модели) равна конкретному предсказанию. Это математически точное разложение, не аппроксимация.

LIME (Locally Interpretable Model-agnostic Explanations, Ribeiro et al., 2016) работает иначе: вокруг объекта генерируется случайное облако возмущений, для каждого получается предсказание black-box модели, затем на этом облаке обучается простая интерпретируемая модель (линейная регрессия или дерево). LIME стохастичен, поэтому в продакшене мы фиксируем seed и используем num_samples=5000+.

Какие проблемы решают SHAP и LIME?

  1. Провалы feature importance. Встроенная важность признаков в XGBoost показывает глобальную картину, но не объясняет отдельный случай. SHAP решает это детерминированным разложением.
  2. Чёрный ящик для бизнеса. Регуляторы требуют объяснений по каждому решению. TreeSHAP даёт прозрачность за приемлемое время.
  3. Дрейф модели без сигнала. SHAP values, логируемые в ClickHouse, позволяют отслеживать изменение влияния признаков раньше, чем падение метрик.

TreeSHAP — почему важна архитектурная специализация

Для tree-based моделей (XGBoost, LightGBM, CatBoost, sklearn RandomForest) существует TreeSHAP — алгоритм с полиномиальной сложностью O(TLD²). Это на порядки быстрее наивного KernelSHAP.

import shap import xgboost as xgb model = xgb.XGBClassifier() model.fit(X_train, y_train) explainer = shap.TreeExplainer(model) shap_values = explainer.shap_values(X_test) # Waterfall plot для конкретного предсказания shap.plots.waterfall(explainer(X_test)[0]) # Summary plot — глобальная важность shap.summary_plot(shap_values, X_test) 

На практике TreeSHAP на LightGBM с 500 деревьями обрабатывает 10 000 примеров за 2–3 секунды на CPU. Вполне приемлемо для batch inference.

Почему LIME иногда лучше SHAP?

  • Модель не поддерживается TreeSHAP и слишком медленна для KernelSHAP.
  • Нужно объяснение в терминах «супер-пикселей» для изображений или выделения слов для текстов.
  • Требуется быстрый прототип без глубокой математики.

Но помните: LIME не детерминирован. При разных random_state объяснения для одного объекта могут различаться. В продакшене мы используем фиксированный seed и num_samples=5000+.

Сравнение методов

Характеристика TreeSHAP KernelSHAP LIME
Применимость Только деревья Любая модель Любая модель
Математическая точность Точная Точная Аппроксимация
Стабильность Детерминированная Детерминированная Стохастическая
Скорость (10k объектов) Секунды Часы Минуты
Поддержка текста/изображений Нет Нет нативно Да

Типичные проблемы и решения

Проблема Решение
Долгие объяснения для KernelSHAP Перейти на GradientSHAP или использовать выборку
Нестабильность LIME Фиксировать seed, увеличить num_samples до 5000+
SHAP не работает для LLM Использовать attention weights или partition explainer

Интеграция в production ML pipeline

Объяснения нужны не только для аудита — они часть операционного пайплайна.

Кейс из практики: клиент — страховая компания, расчёт страховых премий (LightGBM, 120 признаков). Требование: агент должен объяснить клиенту по телефону причину высокой премии. Решение: TreeSHAP в inference API. Для каждого предсказания возвращается топ-3 признака с наибольшими SHAP values + автоматический шаблон текста: «Ваша премия выше среднего по следующим причинам: возраст автомобиля (+12%), регион регистрации (+8%), история выплат (+6%)». Latency overhead: 35ms на TreeSHAP при среднем inference 18ms — приемлемо.

Мониторинг: SHAP values логируются в ClickHouse. Раз в неделю агрегируем — дрейф в распределении SHAP values сигнализирует о feature drift раньше, чем падение AUC.

Ограничения, о которых стоит знать

SHAP ≠ causality. Высокий SHAP value у признака означает корреляцию с предсказанием, а не причинно-следственную связь. «Признак X влияет на предсказание» ≠ «изменение X изменит результат в реальности».

Мультиколлинеарность ломает интерпретацию. Если два признака коррелируют (r > 0.8), SHAP делит их влияние произвольно. При интерпретации нужен анализ корреляций.

Для LLM — оба метода дают грубые оценки. Attention weights часто информативнее для задач генерации, но тоже не строгий proxy важности.

Что входит в нашу работу

  • Анализ модели и данных: выбираем подходящий метод — TreeSHAP, KernelSHAP, LIME — с учётом архитектуры и latency-требований.
  • Разработка explainer-модуля: интеграция в существующий inference API.
  • Генерация отчётов: waterfall plot, summary plot, автоматические текстовые шаблоны.
  • Мониторинг: логирование SHAP values в ClickHouse, построение дашбордов дрейфа.
  • Обучение команды: документация, workshop для инженеров и бизнес-пользователей.

Сроки и стоимость

Сроки: от 1 недели на базовую интеграцию одного метода до 3–4 недель на полный pipeline с мониторингом и дашбордами. Стоимость рассчитывается индивидуально под каждый проект. Свяжитесь с нами для предварительной оценки — расскажем, какие результаты получите.

Наш опыт: более 50 проектов по explainable AI, 5 лет на рынке, сертифицированные ML-инженеры. Гарантируем прозрачность и поддержку после внедрения.

Закажите консультацию — поможем сделать вашу модель объяснимой и соответствующей требованиям регуляторов.