-
Обобщенный блокнот-отчет с анализом финальной модели на тесте:
-
Демонстрация приложения: Maternal Health Risk App
Цель работы: Построить и обучить модель машинного обучения (МО), которая позволит предсказать уровень уровень риска для здоровья беременной.
Планируемое использование результата работы: Заказчику необходимо приобрести инструмент, который поможет врачу оперативно оценить уровень риски для здоровья пациента.
Входные данные: Заказчик предоставил набор данных о пациентах (беременных) с указанием характеристики здоровья и его возраста.
Данные содержат 7 признаков: 5 количественных (входные признаки) и 1 категориальный (целевой признак).
- Age: Age in years when a woman is pregnant. Возраст в годах женщины во время беременности.
- SystolicBP: Upper value of Blood Pressure in mmHg, another significant attribute during pregnancy. Верхнее значение кровяного давления в мм рт.ст.
- DiastolicBP: Lower value of Blood Pressure in mmHg, another significant attribute during pregnancy. Нижнее значение кровяного давления в мм рт.ст.
- BS: Blood glucose levels is in terms of a molar concentration, mmol/L. Уровень глюкозы в крови в молярной концентрации, ммоль/л.
- HeartRate: A normal resting heart rate in beats per minute. Нормальная частота сердечных сокращений в ударах в минуту.
- RiskLevel: Predicted Risk Intensity Level during pregnancy considering the previous attribute. Предполагаемый уровень интенсивности риска во время беременности.
Датасет представлен на Kaggle
- Scikit-learn: Для создания и обучения модели.
- Pandas, Matplotlib, Seaborn: Для анализа данных и визуализации.
- Streamlit: Для разработки и развёртывания интерактивного веб-приложения.
- EDA: Проведен исследовательский и корреляционный анализ данных. В данных обнаружено очень много дубликатов (более 50%). Размер датасета был значительно сокращен. Подробности представлены в ноутбуке
- Метрики и условия моделирования: Выбраны контролируемые и анализируемые метрики: F1_Weighted и ROC-AUC. Подробности представлены в ноутбуке разработки baseline модели.
- Baseline модель: Сформирована модель с использованием алгоритма LogisticRegression. Результат кросс-валидации - F1_Weighted = 0.690. Подробности представлены в ноутбуке разработки baseline модели.
- Проведение экспериментов: Проведены эксперименты по повышению качества модели, сформирована финальная модель. Результат кросс-валидации - F1_Weighted = 0.756. В рамках экспериментов оценена важность признаков, использованы модели, основанные на деревьях решений, в том числе техника градиентного бустинга. Подробности представлены в ноутбуках экспериментов и описании экспериментов.
- Классификация тестовых данных: Оценено качество финальной модели - F1_Weighted = 0.720. Проведен анализ матрицы ошибок. Подробности представлены в финальном ноутбуке.
- Приложение на streamlit: Разработано приложение Maternal Health Risk App
Анализ матрицы ошибок позволил определить сильные и слабые стороны модели. Были проанализированы ошибки и сделаны выводы.
Вероятности для класса 'mid risk' зачастую очень близки к вероятностям класса 'low risk'. Это указывает, что модели недостаточно данных, чтобы увереннее выявить средний риск среди характеристик, которые указывают на низкий риск. Например, у пациента с возрастной группой 'older age' и нормальным артериальным давлением, нормальной температурой тела, модель предсказывает низкий риск, хотя фактический риск - 'mid risk'. Аналогичные случаи наблюдаются и у других пациентов.
То есть некоторые пациенты имеют характеристики, которые приводят к неоднозначным решениям модели. Например, у пациента с возрастной группой 'medium age' и нормальным артериальным давлением, уровень глюкозы и температуры тела находятся в стандартном диапазоне, что может затруднять правильное присвоение риска.
Исходя из этих наблюдений, можно сделать вывод, что модель нуждается в дополнительном обучении или рассмотрении более сложных или дополнительных признаков для более точного определения класса 'mid risk'.
Также стоит обратить внимание на возможные дисбалансы в данных или несбалансированность классов, что может влиять на производительность модели.
Кроме того, необходимо не забывать, что уровень глюкозы в крови указан в странном диапазоне, поскольку нормальный уровень не превышает 6.0.
- Качество модели зависит от размера и качества датасета:
- В данных имеется много дубликатов, приведших к значительному сокращению данных для обучения.
- В данных имеется дисбаланс классов, влияющий на качество предсказания класса "Средний риск".
- Имеются сомнения в качестве разметки данных, влияющем на качество предсказания класса "Средний риск".
- Качество модели может быть улучшено за счет обогащения данных новыми наблюдениями.
Чтобы развернуть проект необходимо:
- Клонировать репозиторий:
git clone https://github.com/alekFil/maternal_health_risk.git
- Установить зависимости:
pip install -r requirements.txt
Запуск Streamlit приложения:
streamlit run app.py
Запуск инференса из командной строки:
python inference.py 23 90 60 7.7 98.0 76
Описание аргументов:
python inference.py --help
Если у вас есть вопросы или предложения по проекту, пожалуйста, свяжитесь со мной.
telegram @alekFil