Credit Decision Explainer
Не просто SHAP feature-importance, а **counterfactual explanations через DiCE**: «если бы у вас было +6 месяцев стажа на текущей работе и DTI ≤30%, скоринг был бы выше порога одобрения». Compliant с ФЗ-353 (потребкредитование) и EU AI Act. Готовый к нагрузке скоринг-движков банков и МФО.
Клиент получил отказ от кредитного скоринга. По закону банк/МФО обязан объяснить причину. Стандартная отписка «не прошёл по скоринг-модели» вызывает жалобы в ЦБ и Роспотребнадзор. Credit Explainer даёт настоящее explanation: какие именно факторы снизили скор + counterfactual — что конкретно нужно изменить, чтобы пройти. Клиент уходит с пониманием, банк — с снижением жалоб.
Counterfactual — «вот что нужно изменить, чтобы получить одобрение»
SHAP-only решения дают «вот почему отказали» (post-hoc). Counterfactual дополняет actionable знанием: «при стаже работы 12 мес и DTI 28% вам бы одобрили». Это превращает отказ из тупика в дорожную карту. Клиенты возвращаются через 6 месяцев когда условие выполнено — банк получает повторного клиента с уже выполненными требованиями.
Пошаговая архитектура
Ваша скоринг-модель как input
Не меняем — pass-through. xgboost / catboost / FT-Transformer / любая ML-модель с predict_proba. Wrapper подключается к существующему API.
SHAP-values
TreeSHAP для tree-моделей (миллисекунды на decision), KernelSHAP для остальных. Получаем contribution каждой feature к финальному скоринг-баллу.
Top-N negative contributors
Из всех features выбираются те, что **снизили** скор: «стаж работы 4 мес: −0.18», «DTI 38%: −0.12», «текущая просрочка: −0.32».
Counterfactual generation (DiCE)
Diverse Counterfactual Explanations: генерация N альтернативных feature-наборов с минимальными изменениями, при которых модель одобрит. Constraint'ы: features должны быть actionable (стаж — да, возраст — нет).
Filtering на «реалистичность»
Counterfactuals проходят через feasibility-rules: возраст ≥ текущего, DTI ≥ 0, текущая просрочка убирается только во времени (не сейчас). Откидываются «фантазии».
LLM-перевод
GigaChat / YandexGPT переводит технические SHAP-числа в человеко-читаемый текст с тоном для клиента (не банковский жаргон). Структура: «Причины отказа» + «Что можно изменить».
PDF + audit-trail
Финальный документ — PDF с logo банка, графиком top-features, текстом, юридической формулировкой. Хранится в audit-log с timestamps.
Стек, который не запирает
SHAP — TreeSHAP для tree-based моделей (xgboost, catboost, lightgbm). KernelSHAP для остальных
DiCE (Diverse Counterfactual Explanations) — Microsoft library для counterfactual generation
Feasibility-rules engine — кастомный набор constraints (actionable features list)
GigaChat для NL-rendering (длинный context — все SHAP-values + counterfactuals fit'ятся)
PostgreSQL для audit-log: каждое explanation сохраняется с user_id, model_version, timestamp
WeasyPrint для PDF-генерации с фирменным дизайном банка
Идеально для
- Банки с алгоритмическим скорингом (потребкредиты, ипотека, кредитные карты)
- МФО — массовая выдача, высокая жалобная нагрузка
- BNPL-сервисы (Долями, Подели и т.п.)
- Страховщики с алгоритмическим андеррайтингом (КАСКО, ДМС)
Границы кейса
- Не меняет вашу скоринг-модель — только объясняет её решения
- Не выдаёт кредит — это решение банка остаётся таким же
- Не работает с моделями без access (если model — закрытая внешняя API без predict_proba — нужна оборачивающая proxy-модель)
- Не обещает 100% reduction жалоб — некоторые клиенты будут жаловаться вне зависимости от качества объяснения
Частые вопросы
Нужна proxy-модель: обучаем suplemental модель на open data, фитим её к решениям closed-source. SHAP применяется к proxy. Качество объяснений падает на 5-10%, но всё ещё лучше «не прошёл по скорингу».
Что ещё может пригодиться
Покажем на ваших данных
за 1-2 недели
Подключаемся к ограниченной выборке, разворачиваем PoC на ваших реальных кейсах. Оценка качества, точности и UX — на вашей специфике, не на наших красивых демо.