Мини-проект, имитирующий задачи риск-аналитика в банке/финтехе: мониторинг качества портфеля, оценка эффективности скоринговой модели (AUC/GINI/KS) и построение дашборда для регулярной отчётности.
Данные: IBM Telco Customer Churn (публичный датасет, использован как открытый аналог банковского портфеля — реальные данные телеком-компании, но задача бинарной классификации "уйдёт/останется" структурно идентична задаче кредитного риска).
- SQL-слой (
sql/01_load_and_query.py) — данные загружены в SQLite, аналитические срезы строятся SQL-запросами (агрегация по когортам, сегментам, поиск проблемных комбинаций признаков) — так же, как мониторинг портфеля строится на ClickHouse/SQL в банке. - Модель + метрики (
notebooks/02_model_and_metrics.py) — GradientBoosting классификатор, расчёт ROC-AUC, GINI, KS-статистики — стандартных метрик оценки скоринговых моделей. - Визуализации (
notebooks/03_visualizations.py) — 4 графика для дашборда.
| Метрика | Значение |
|---|---|
| ROC-AUC | 0.846 |
| GINI | 0.692 |
| KS | 0.544 |
Мониторинг доли клиентов в зоне риска во времени — прямой аналог отслеживания просрочки портфеля по месяцам.
Оценка предиктивной силы модели — насколько хорошо она разделяет "хороших" и "плохих" клиентов.
Как модель распределяет клиентов по риску — видно чёткое разделение между классами в области высоких скор-баллов.
Какие факторы сильнее всего влияют на предсказание оттока — тип контракта и срок обслуживания (tenure) оказались ключевыми драйверами.
-- Динамика оттока по когортам
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 # генерация графиковПроект включает docker-compose.yml для развёртывания Apache Superset поверх
той же churn.db — интерактивная версия того же дашборда с фильтрами и drill-down.
docker compose up -dПодробная пошаговая инструкция: SUPERSET_SETUP.md
- Добавить мониторинг population stability index (PSI) для отслеживания дрейфа данных
- Настроить scheduled refresh данных в Superset (Celery + Redis) для имитации регулярного пересчёта отчётности
- churn-b2b-telecom — портфолио-проект по B2B churn prediction (CatBoost, ROC-AUC 0.849)




