Завершён
research
ML-бенчмарк сердечно-сосудистых заболеваний
Многоцентровый ML-бенчмарк на 1 904 пациентах из 6 датасетов — CatBoost лидирует с ROC-AUC 0.948
В цифрах
0
ROC-AUC (CatBoost)
0
Пациентов в датасете
0
Алгоритмов сравнено
0
Признаков дают 98% качества
Проблема
Что я решала
Бенчмарки ML для сердечно-сосудистых обычно выбирают один датасет, дают одну метрику и пропускают статтесты. Когда статья пишет "наш XGBoost даёт 92% точности" — это часто на игрушечных 300 пациентах без сравнения с бейзлайном. Врачам не с чем сравнить, воспроизвести почти невозможно.
Мой подход
Как я делала
Объединила шесть открытых кардиологических датасетов в один — 1904 пациента. Прогнала восемь алгоритмов одинаковой процедурой: логистическая регрессия, Random Forest, XGBoost, CatBoost, LightGBM, SVM, KNN и стекинг. Каждая модель — 100 Optuna-проб с 5-fold кросс-валидацией. Не только финальные метрики, но и весь ландшафт гиперпараметров. SHAP-анализ победителя. Статтесты DeLong (для AUC) и McNemar (для accuracy) с поправкой Бонферрони на множественные сравнения. Всё запускается из одного Jupyter-ноутбука.
Выбор технологий
- CatBoost— Победил в бенчмарке, но ещё и самый практичный выбор — нативно обрабатывает пропуски и почти не требует feature engineering на смешанных медицинских данных.
- Optuna— TPE-сэмплер бьёт grid/random на малом бюджете. 100 проб на модель — разумно, не астрономично, а Optuna-прунинг убивает плохие пробы рано.
- SHAP— Model-agnostic объяснения — врач не должен доверять чёрному ящику. Глобальный и попациентный взгляды отвечают на "почему модель так решила".
- DeLong + McNemar— Парные статтесты для AUC и accuracy не дают выдать крошечное улучшение за настоящее. Поправка Бонферрони, потому что тестируешь много пар.
Результат
Что получилось
CatBoost выиграл с 0.948 ROC-AUC и 88.3% accuracy — но это не главное. Настоящий результат: SHAP показал, что 7 признаков из 50+ дают 98% качества модели. Врач собирает 7 измерений вместо 50+ и почти ничего не теряет. Статтесты подтвердили: топ-3 моделей статистически не различимы — нельзя утверждать что побил бейзлайн, если не побил. Каждый результат воспроизводится из ноутбука.