Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Churn Risk Dashboard — мониторинг качества портфеля и эффективности скоринговой модели

Мини-проект, имитирующий задачи риск-аналитика в банке/финтехе: мониторинг качества портфеля, оценка эффективности скоринговой модели (AUC/GINI/KS) и построение дашборда для регулярной отчётности.

Данные: IBM Telco Customer Churn (публичный датасет, использован как открытый аналог банковского портфеля — реальные данные телеком-компании, но задача бинарной классификации "уйдёт/останется" структурно идентична задаче кредитного риска).

Что внутри

  1. SQL-слой (sql/01_load_and_query.py) — данные загружены в SQLite, аналитические срезы строятся SQL-запросами (агрегация по когортам, сегментам, поиск проблемных комбинаций признаков) — так же, как мониторинг портфеля строится на ClickHouse/SQL в банке.
  2. Модель + метрики (notebooks/02_model_and_metrics.py) — GradientBoosting классификатор, расчёт ROC-AUC, GINI, KS-статистики — стандартных метрик оценки скоринговых моделей.
  3. Визуализации (notebooks/03_visualizations.py) — 4 графика для дашборда.

Результаты модели

Метрика Значение
ROC-AUC 0.846
GINI 0.692
KS 0.544

Визуализации

1. Динамика оттока по когортам (аналог PAR1/PAR30)

Мониторинг доли клиентов в зоне риска во времени — прямой аналог отслеживания просрочки портфеля по месяцам.

PAR dynamics

2. Эффективность модели: ROC / AUC / GINI / KS

Оценка предиктивной силы модели — насколько хорошо она разделяет "хороших" и "плохих" клиентов.

ROC AUC GINI KS

3. Распределение скоринг-баллов

Как модель распределяет клиентов по риску — видно чёткое разделение между классами в области высоких скор-баллов.

Score distribution

4. Топ признаков риска

Какие факторы сильнее всего влияют на предсказание оттока — тип контракта и срок обслуживания (tenure) оказались ключевыми драйверами.

Feature importance

SQL-запросы (примеры)

-- Динамика оттока по когортам
SELECT cohort_month,
       COUNT(*) AS total_clients,
       SUM(ChurnFlag) AS churned,
       ROUND(100.0 * SUM(ChurnFlag) / COUNT(*), 2) AS churn_rate_pct
FROM customers
GROUP BY cohort_month
ORDER BY cohort_month;

-- Топ сегментов риска
SELECT PaymentMethod, InternetService,
       COUNT(*) AS total_clients,
       ROUND(100.0 * SUM(ChurnFlag) / COUNT(*), 2) AS churn_rate_pct
FROM customers
GROUP BY PaymentMethod, InternetService
HAVING total_clients > 50
ORDER BY churn_rate_pct DESC
LIMIT 10;

Как запустить

pip install pandas scikit-learn matplotlib seaborn
python sql/01_load_and_query.py          # SQL-слой и агрегации
python notebooks/02_model_and_metrics.py  # обучение модели, метрики
python notebooks/03_visualizations.py     # генерация графиков

Interactive dashboard (Apache Superset)

Проект включает docker-compose.yml для развёртывания Apache Superset поверх той же churn.db — интерактивная версия того же дашборда с фильтрами и drill-down.

docker compose up -d

Подробная пошаговая инструкция: SUPERSET_SETUP.md

Superset Dashboard

Дальнейшие шаги

  • Добавить мониторинг population stability index (PSI) для отслеживания дрейфа данных
  • Настроить scheduled refresh данных в Superset (Celery + Redis) для имитации регулярного пересчёта отчётности

Связанные проекты

  • churn-b2b-telecom — портфолио-проект по B2B churn prediction (CatBoost, ROC-AUC 0.849)

About

Risk monitoring dashboard: SQL analytics + churn scoring model (AUC/GINI/KS metrics)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages