Статья опубликована в рамках: Научного журнала «Студенческий» № 16(270)
Рубрика журнала: Информационные технологии
Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4, скачать журнал часть 5, скачать журнал часть 6
РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ДЛЯ ДИАГНОСТИКИ СЕРДЕЧНЫХ ЗАБОЛЕВАНИЙ С ИСПОЛЬЗОВАНИЕМ НЕЙРОСЕТЕВОЙ СИСТЕМЫ И РАСПРЕДЕЛЕННОЙ БАЗЫ ДАННЫХ
DEVELOPMENT OF SOFTWARE FOR DIAGNOSING HEART DISEASES USING A NEURAL NETWORK SYSTEM AND A DISTRIBUTED DATABASE
Svyatoslav Smirnov
student, Department of Computational Mathematics and Cybernetics, Ufa University of Science and Technology,
Russia, Ufa
АННОТАЦИЯ
Данная статья представляет исследование методов генерации датасетов для В данной работе исследуется разработка программного обеспечения для диагностики сердечных заболеваний на основе анализа данных электрокардиограмм (ЭКГ) с использованием нейронной сети. Для этого была создана система, интегрирующая информацию о пациентах из распределенной базы данных и знаний. Нейросетевая модель обучалась на наборе данных, предоставленном Кливлендским клиническим фондом для сердечных заболеваний, с последующим анализом результатов и оптимизацией параметров обучения. Разработанное программное обеспечение позволяет загружать данные ЭКГ пациентов, анализировать их и делать прогноз наличия сердечных заболеваний с высокой точностью. Результаты работы системы подтверждают эффективность использования нейросетевых методов в медицинских приложениях.
ABSTRACT
This paper explores the development of software for diagnosing heart diseases based on the analysis of electrocardiogram (ECG) data using a neural network. For this purpose, a system was created that integrates patient information from a distributed database and knowledge. The neural network model was trained on a dataset provided by the Cleveland Clinic Heart Foundation, followed by analysis of the results and optimization of training parameters. The developed software allows you to download patient ECG data, analyze it and make a prediction of the presence of heart disease with high accuracy. The results of the system confirm the effectiveness of using neural network methods in medical applications.
Ключевые слова: электрокардиограмма, нейронные сети, медицинская диагностика, сердечно-сосудистые заболевания, программное обеспечение, анализ данных, машинное обучение, базы данных, информационная поддержка, распределенные базы данных.
Keywords: electrocardiogram, neural networks, medical diagnostics, cardiovascular diseases, software, data analysis, machine learning, databases, information support, distributed databases.
Введение. В современном мире медицинская диагностика становится все более комплексной и требует использования передовых методов анализа данных. В этом контексте разработка программного обеспечения для диагностики сердечных заболеваний на основе анализа данных электрокардиограмм (ЭКГ) приобретает особую важность. Данное исследование нацелено на создание такой системы, которая интегрировала бы информацию о пациентах из распределенной базы данных и знаний, и использовала нейронную сеть для анализа ЭКГ и диагностики сердечных заболеваний с высокой точностью [1].
Сердечно-сосудистые заболевания остаются одной из основных причин смертности во всем мире, поэтому разработка эффективных методов диагностики и прогнозирования таких заболеваний имеет стратегическое значение для общественного здравоохранения. В последние годы машинное обучение и нейронные сети стали все более распространенными инструментами в области медицинской диагностики, позволяя автоматизировать и улучшить процесс анализа медицинских данных.
Цель исследования заключается в разработке программного обеспечения, способного автоматизировать анализ ЭКГ и предоставить врачам точные прогнозы относительно наличия сердечных заболеваний у пациентов. Для достижения этой цели было решено интегрировать информацию о пациентах из распределенных баз данных и знаний, чтобы обеспечить систему максимально полной и точной информацией о пациентах.
Исследование представляет собой важный шаг в направлении разработки интеллектуальных систем поддержки принятия решений в медицинской сфере, способных значительно улучшить качество предоставляемых медицинских услуг и сократить время, затрачиваемое на диагностику сердечно-сосудистых заболеваний.
Разработка базы знаний и построение архитектуры системы. Для того чтобы безошибочно разработать модель базы данных, было проведено логическое моделирование базы данных. Было решено, что для выбранной предметной области достаточно одной таблицы. Результат логического моделирования изображен на рисунке 1.
Рисунок 1. Логическое моделирование базы данных
Далее приводится физическое описание всех объектов базы данных, участвующих в системе мониторинга параметров самочувствия пользователя.
База данных состоит из одной таблицы – HeartDiseaseRecord. Таблица содержит параметры, используемые при работе с нейронной сетью, а также уникальный идентификатор записи, дату создания записи, а также результат прогноза, сделанный нейронной сетью для этого набора данных [2].
Ниже приведено описание всех полей таблиц:
id – уникальный идентификатор записи;
date – дата создания записи;
age – возраст пользователя в полные годы;
sex – пол пользователя;
cp (chest pain type) – тип боли в груди;
trestbpd – артериальное давление в покое (в мм рт. ст.);
chol – холестерин в сыворотке крови в мг/дл;
fbs – уровень сахара в крови выше 120 мг/дл (1 = истинно; 0 = ложно);
restecg – результаты электрокардиограммы в покое;
thalach – максимальная частота сердечных сокращений;
exang – ангина, вызванная физическими упражнениями (1 = да; 0 = нет);
oldpeak – депрессия ST, вызванная физическими упражнениями по отдыху;
slope – наклон пикового сегмента упражнения ST;
ca – количество основных сосудов (0-3), окрашенных флюороскопией;
thal -3 = нормальный; 6 = исправленный дефект; 7 = обратимый дефект;
predict – спрогнозированная вероятность возникновения заболевания.
В результате была получена четкая картина относительно того, как должна выглядеть база данных, поля должна включать в себя таблицу. Следует добавить, что состояние базы данных может отличаться от финальной версии.
Поскольку разработанная система распознавания кардиограмм имеет целью дальнейшее использование медицинскими работниками, есть потребность в разработке удобного пользовательского интерфейса, который будет интуитивно понятен в эксплуатации.
Следовательно, можно сформировать следующие требования к программе:
- возможность загрузки в систему данных электрокардиограммы конкретного пациента;
- отображение сигнала ЭКГ, который был загружен;
- отображение результатов анализа ЭКГ на экране.
Основные этапы работы программы изображены на рисунке 2.
Рисунок 2. Основные этапы работы программы
На рисунке 3 приведена архитектура построенной в работе системы.
Рисунок 3. Архитектура системы
Процесс обучения нейронной сети на основе разработанной базы знаний. Поскольку исходно сигнал ЭКГ является одномерным, а именно временным сигналом, потребность в переводе его в двумерную частотно-временную форму. Для этого используется непрерывное вейвлет-преобразование, посредством которого сигнал ЭКГ можно представить в виде спектрограммы. Спектрограмма дает лучшее понимание динамического поведения системы, а также позволяет выделять разные сигналы системы. Так ЭКГ измерения людей со здоровым сердцем будут иметь отличные спектрограммы от имеющих определенное заболевание [3].
При анализе работы сердечно-сосудистой системы человека с использованием ЭКГ обычно рассматривают три основных сердечных отведения, то есть три составляющих сигнала, полученных из разных участков сердца.
Поскольку каждый сигнал имеет три составляющие, соответственно он будет иметь три спектрограммы. Для того чтобы передать этот сигнал сверточной нейронной сети три спектрограммы помещаются друг на друга, в результате чего образуется одно изображение с тремя каналами (рис. 4).
Рисунок 4. Образование трехканального изображения для подачи на вход нейронной сети
Далее изображения подаются на вход нейронной сети, архитектура которой изображена на рисунке 5. и описан в таблице 1.
Рисунок 5. Архитектура сверточной нейронной сети
Оценка результатов работы ИНС приведена в таблице 2. Все показатели высоки, поэтому можно считать, что реализация сети для классификации ЭКГ удачной.
Таблица 1
Архитектура сверточной нейронной сети
Шар |
Тип |
Размер ядра |
Шаг |
Фильтр ядра |
Входящий размер |
1 |
Conv2D |
3*3 |
1 |
64 |
128*128*3 |
2 |
Conv2D |
3*3 |
1 |
64 |
128*128*64 |
3 |
Pool |
2*2 |
2 |
|
128*128*64 |
4 |
Conv2D |
3*3 |
1 |
128 |
64*64*64 |
5 |
Conv2D |
3*3 |
1 |
128 |
64*64*128 |
6 |
Pool |
2*2 |
2 |
|
64*64*128 |
7 |
Conv2D |
3*3 |
1 |
256 |
32*32*128 |
8 |
Conv2D |
3*3 |
1 |
256 |
32*32*256 |
9 |
Pool |
2*2 |
2 |
|
32*32*256 |
10 |
Full |
|
|
2048 |
16*16*256 |
11 |
Out |
|
|
8 |
2048 |
Таблица 2
Оценки результатов работы ИНС
AUC |
Accuracy |
Specificity |
Sensitivity |
0.914 |
92.10 |
90.56 |
94.13 |
Для обучения нейронной сети был использован набор данных предоставлен Кливлендским клиническим фондом для сердечных заболеваний (Cleveland Clinic Foundation for Heart Disease) [5]. Это файл CSV с 303 строками. Каждая строка содержит информацию о пациенте (образце), а каждый столбец описывает атрибут пациента (признак). Используем признаки прогнозирования наличия у пациента сердечных заболеваний (бинарная классификация).
Описание каждого из признаков представлено в таблице 3. В таблице 4 можно просмотреть как представленные данные в файле CSV.
Таблица 3
Описание признаков для выбранного датасета
Признак |
Объяснение |
Тип признака |
Age |
Возраст в годах |
Числовой |
Sex |
Пол (1 – м, 0 – ж) |
Категория |
CP |
Тип боли в груди (0, 1, 2, 3, 4) |
Категория |
Trestbpd |
Артериальное давление в покое (в мм рт. ст.) |
Числовой |
Chol |
Холестерин в сыворотке крови в мг/дл |
Числовой |
FBS |
Уровень сахара в крови выше 120 мг/дл (1 = истинно; 0 = ложно) |
Категория |
RestECG |
Результаты электрокардиограммы в покое (0, 1, 2) |
Категория |
Thalach |
Максимальная частота сердечных сокращений |
Числовой |
Exang |
Ангина, вызванная физическими упражнениями (1 = да; 0 = нет) |
Категория |
Oldpeak |
Депрессия ST, вызванная физическими упражнениями по отдыху |
Числовой |
Slope |
Наклон пикового сегмента упражнения ST |
Числовой |
CA |
Количество основных сосудов (0-3), окрашенных флюороскопией |
Числовой, категория |
Thal |
3 = нормальный; 6 = исправленный дефект; 7 = обратимый дефект |
Категория |
Target |
Диагностированы сердечные заболевания (1 = правда; 0 = ложно) |
Target |
Таблица 4
Представление данных в CSV файле
|
age |
sex |
cp |
trestbps |
chol |
fbs |
restecg |
thalach |
exang |
oldpeak |
slope |
ca |
thal |
target |
0 |
63 |
1 |
1 |
145 |
233 |
1 |
2 |
150 |
0 |
2.3 |
3 |
0 |
fixed |
0 |
1 |
67 |
1 |
4 |
160 |
286 |
0 |
2 |
108 |
1 |
1.5 |
2 |
3 |
normal |
1 |
2 |
67 |
1 |
4 |
120 |
229 |
0 |
2 |
129 |
1 |
2.6 |
2 |
2 |
reversible |
0 |
3 |
37 |
1 |
3 |
130 |
250 |
0 |
0 |
187 |
0 |
3.5 |
3 |
0 |
normal |
0 |
4 |
41 |
0 |
2 |
130 |
204 |
0 |
2 |
172 |
0 |
1.4 |
1 |
0 |
normal |
0 |
Последний столбец «target» указывает, есть ли у пациента сердечное заболевание (1) или нет (0).
Для обучения нейронной сети набор данных был разделен на обучающую (training set) и проверочную (validation set) выборки в классическом соотношении 80:20. Таким образом в обучающую выборку попало 242 образца, а в проверочную – 61 образец.
Далее были разработаны функции, нормализующие данные по нашему набору данных (рисунки 6 – 8). Исходя из таблицы 3, видно, что таких функций понадобилось 3, согласно количеству типов признаков, присутствующих в датасете [4].
Рисунок 6. Функция нормализации для числовых признаков
Рисунок 7. Функция нормализации для признаков типа категория, которые записаны в виде строки
Рисунок 8. Функция нормализации для признаков типа категория, которые записаны в виде числа
Для эксперимента топология нейронной сети изменялась путем изменения количества скрытых слоев (1, 3, 5 слоев).
В качестве функции ошибки использована бинарная кросс-энтропия, хорошо подходящая для задачи бинарной классификации.
В качестве метрики при обучении сети используется точность (accuracy) – удел правильных ответов сети.
Для выбора оптимального оптимизатора было проведено сравнение точности работы сети на тестовых данных при использовании трех популярных оптимизаторов – SGD, Rmsprop и Adam. Результаты эксперимента отражены в таблице 5. Видно, что самую высокую точность сеть показала при использовании оптимизатора Rmsprop.
Таблица 5
Точность и ошибка сети на тестовых данных в зависимости от использованного оптимизатора
Оптимизатор |
Точность |
Ошибка |
||||
1 шар |
3 слоя |
5 слоев |
1 шар |
3 слоя |
5 слоев |
|
SGD |
80.06% |
68.90% |
69.86% |
48.62% |
55.74% |
60.44% |
Rmsprop |
85.43% |
89.71% |
92.99% |
30.81% |
23.63% |
19.45% |
Adam |
82.40% |
90.56% |
90.65% |
35.50% |
24.04% |
20.64% |
Размер мини-выборок выбран равным 32, то есть сеть изменяет весовые коэффициенты после обработки каждых 32 объектов.
Опытным путем было определено оптимальное количество эпох обучения. Было проведено обучение сети при разном количестве эпох – 15, 20, 25, 30, 35. Результаты эксперимента отражены в таблице 6. Таким образом оптимальное количество эпох обучения составило 30, так как при меньшем или большем количестве эпох обучения сеть показывала более низкую точность на тестовой выборке. При малом количестве эпох это обусловлено тем, что сеть не успела выделить достаточное количество признаков на обучающих данных, а при большем количестве эпох – из-за начальных признаков переобучения.
Таблица 6
Точность сети на тестовых данных в зависимости от количества эпох обучения
Количество эпох обучения |
15 |
20 |
25 |
30 |
35 |
Точность тестовой выборке |
92.99% |
90.93% |
92.96% |
97.89% |
94.50% |
Далее обученная нейронная сеть была сохранена в формате «*.mlmodel», чтобы ее можно было использовать при разработке приложения.
Готовая подсистема была реализована с помощью языка программирования Python и библотек машинного обучения TensorFlow и Keras. Она позволяет ввести данные о пользователе, которые будут классифицированы нейронной сетью и с определенной вероятностью сделает вывод возможное заболевание сердца у пользователя или нет.
В конце обучения сети точность на данных, на которых проводилось обучение, составила 97.89%, а на проверочной выборке (validation data) – 81.97%. Значение функции потерь (loss) соответственно составили 9.81% на обучающей выборке 55.24% на проверочной выборке (validation loss) (рисунок 9).
Рисунок 9. Вывод библиотеки Keras
Были построены графики изменения ошибки (рисунок 10) и точности сети в процессе обучения (рисунок 11).
Рисунок 10. График изменения ошибки при обучении нейронной сети
Рисунок 11. График изменения точности при обучении нейронной сети
На данных графиках видно, что при обучении сети на каждой эре ошибка на наборе данных для обучения и наборе данных для проверки уменьшается, а качество обучения увеличивается, то есть переобучение не возникло. Если сначала, на первых эпохах обучения ошибка снижается как на данных для обучения, так и на проверочных данных, то ближе к концу обучения значение ошибки уменьшается только на данных для обучения, а на наборе данных для проверки значение ошибки почти не меняется. Также на наборе данных для проверки почти не увеличивается качество обучения. Это свидетельствует о том, что если продолжить обучать сеть, ее обобщающая способность снизится – она будет хуже распознавать новые изображения, которые не видела в процессе обучения.
Видно, что графики имеют вид ломаных прямых. Это обусловлено тем, что количество данных в обрабатываемой выборке ограничено. Для повышения точности системы можно увеличить обучающую выборку.
Заключение. В данном исследовании была разработана и протестирована система программного обеспечения для диагностики сердечных заболеваний на основе анализа данных электрокардиограмм с использованием нейронной сети. Проведенные эксперименты показали высокую точность и эффективность разработанной системы, что подтверждает возможность применения нейросетевых методов в медицинских приложениях.
Интеграция информации о пациентах из распределенных баз данных и знаний позволила создать систему, способную предоставлять врачам точные прогнозы относительно наличия сердечных заболеваний у пациентов. Это открывает новые перспективы в области медицинской диагностики и позволяет значительно улучшить качество предоставляемых медицинских услуг.
Результаты данного исследования могут быть использованы в различных медицинских учреждениях для автоматизации процесса диагностики сердечных заболеваний и повышения эффективности работы медицинского персонала. Дальнейшие исследования в этом направлении могут быть направлены на расширение функциональности системы и ее адаптацию к другим типам медицинских данных.
Список литературы:
- Школьникова М. А. и др. Основные тенденции заболеваемости и смертности от сердечно-сосудистых заболеваний детей и подростков в Российской Федерации //Российский вестник перинатологии и педиатрии. – 2008. – Т. 53. – №. 4.
- Максименко А. Н., Костылева В. В., Разин И. Б. Подходы к преобразованию реляционных баз данных в базы знаний // Международный журнал профессиональных наук. 2021. № 2-2021. С. 55-62.
- Олейник А.Г. Организация хранения «открытых» наборов атрибутов сущностей в реляционных базах данных // Труды Кольского научного центра РАН. Информационные технологии. 2021. Выпуск 12, Т.12 №5. С. 128-139.
- А.Ф. Берман, М.А. Грищенко, О.А. Николайчук, А.Ю. Юрин. Проблемно-ориентированный редактор продукционных баз знаний // Программные продукты и системы / Software & Systems № 2 (110), 2015. – с. 13-19.
- Kemp B., Olivan J. European data format ‘plus’(EDF+), an EDF alike standard format for the exchange of physiological data //Clinical neurophysiology. – 2003. – Т. 114. – №. 9. – С. 1755-1761.
Оставить комментарий