Skip to content

alekFil/maternal_health_risk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Разработка модели машинного обучения для прогнозирования рисков для здоровья беременных

  • Обобщенный блокнот-отчет с анализом финальной модели на тесте: Open In Colab

  • Демонстрация приложения: Maternal Health Risk App

covers

Описание работы

Цель работы: Построить и обучить модель машинного обучения (МО), которая позволит предсказать уровень уровень риска для здоровья беременной.

Планируемое использование результата работы: Заказчику необходимо приобрести инструмент, который поможет врачу оперативно оценить уровень риски для здоровья пациента.

Входные данные: Заказчик предоставил набор данных о пациентах (беременных) с указанием характеристики здоровья и его возраста.

Данные содержат 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. Предполагаемый уровень интенсивности риска во время беременности.

data

Датасет представлен на 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

Анализ

Анализ матрицы ошибок позволил определить сильные и слабые стороны модели. Были проанализированы ошибки и сделаны выводы.

Confusion matrixROC-AUC

Вероятности для класса 'mid risk' зачастую очень близки к вероятностям класса 'low risk'. Это указывает, что модели недостаточно данных, чтобы увереннее выявить средний риск среди характеристик, которые указывают на низкий риск. Например, у пациента с возрастной группой 'older age' и нормальным артериальным давлением, нормальной температурой тела, модель предсказывает низкий риск, хотя фактический риск - 'mid risk'. Аналогичные случаи наблюдаются и у других пациентов.

То есть некоторые пациенты имеют характеристики, которые приводят к неоднозначным решениям модели. Например, у пациента с возрастной группой 'medium age' и нормальным артериальным давлением, уровень глюкозы и температуры тела находятся в стандартном диапазоне, что может затруднять правильное присвоение риска.

Исходя из этих наблюдений, можно сделать вывод, что модель нуждается в дополнительном обучении или рассмотрении более сложных или дополнительных признаков для более точного определения класса 'mid risk'.

Также стоит обратить внимание на возможные дисбалансы в данных или несбалансированность классов, что может влиять на производительность модели.

Кроме того, необходимо не забывать, что уровень глюкозы в крови указан в странном диапазоне, поскольку нормальный уровень не превышает 6.0.

Выводы

  • Качество модели зависит от размера и качества датасета:
    • В данных имеется много дубликатов, приведших к значительному сокращению данных для обучения.
    • В данных имеется дисбаланс классов, влияющий на качество предсказания класса "Средний риск".
    • Имеются сомнения в качестве разметки данных, влияющем на качество предсказания класса "Средний риск".
  • Качество модели может быть улучшено за счет обогащения данных новыми наблюдениями.

Запуск проекта

Чтобы развернуть проект необходимо:

  1. Клонировать репозиторий: git clone https://github.com/alekFil/maternal_health_risk.git
  2. Установить зависимости: 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published