Впровадження SHAP/LIME для пояснюваності ML-моделей

Впровадження SHAP/LIME для пояснюваності ML-моделей

Напрямки AI-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1439
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    997
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1264
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    712
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1002

Впровадження SHAP/LIME для пояснюваності ML-моделей

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

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

Як працюють SHAP та LIME?

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

LIME (Locally Interpretable Model-agnostic Explanations, Ribeiro et al.) працює інакше: навколо об'єкта генерується випадкова хмара збурень, для кожного отримується передбачення 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-інженери. Гарантуємо прозорість та підтримку після впровадження.

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