Способ диагностики послеоперационных осложнений в хирургии
- Авторы: Соломаха А.А.1, Горбаченко В.И.1
-
Учреждения:
- Федеральное государственное бюджетное образовательное учреждение высшего образования «Пензенский государственный университет» Министерства науки и высшего образования Российской Федерации
- Выпуск: Том 15, № 4 (2022)
- Страницы: 314-322
- Раздел: Оригинальные статьи
- URL: https://vestnik-surgery.com/journal/article/view/1634
- DOI: https://doi.org/10.18499/2070-478X-2022-15-4-314-322
- ID: 1634
Цитировать
Полный текст
Аннотация
В России и зарубежных странах научные исследования в хирургии принято выполнять в соответствии с постулатами доказательной медицины. Однако реализация этих принципов требует глубоких знаний хирургии и математического моделирования. Авторы: хирург и программист в области машинного обучения разработали математические модели, участвующие в диагностике послеоперационных осложнений в хирургии. В данной работе исследована глубокая полносвязная нейронная сеть для диагностики послеоперационных осложнений на клиническом примере острого аппендицита. В качестве обучающего множества параметров использовался набор, разработанный авторами на основе реальных клинических данных, имеющий номер государственной регистрации в виде базы данных. Для выбора значимых признаков предложен подход на межквантильном размахе F1-меры и к кодированию составных категориальных признаков, отличающийся компактным представлением. Для предварительной обработки обучающих данных предлагается использовать повышающий автоэнкодер. Автоэнкодер преобразует выбранные признаки в пространство более высокого измерения, что, согласно теореме Ковера, облегчает классификацию признаков. Глубокая нейронная сеть реализована с использованием библиотек Keras и TensorFlow. Для обучения нейросети применен алгоритм Adam с адаптивной скоростью обучения. Для снижения эффекта переобучения использован современный метод регуляризации — dropout. Проведены анализ и выбор метрик качества классификатора. Для оценки характеристик нейросети использована кросс-валидация по k блокам. Обученная нейронная сеть показала высокие диагностические показатели на тестовом наборе данных.
Полный текст
1. ВВЕДЕНИЕ
В данной работе рассматривается нейросетевая диагностика послеоперационных осложнений на клиническом примере острого аппендицита. Проблемы ранней диагностики, лечения, профилактики и прогнозирования осложнений острого аппендицита являются актуальными в клинической хирургии. Гнойно-воспалительные осложнения после аппендэктомии встречаются у 2.7%–39.1% больных [1–2]. До сих пор летальность при остром аппендиците варьируется от 0.1% до 1.6% [1–2]. Решение перечисленных проблем требует разработки методов предсказания послеоперационных осложнений острого аппендицита. В [3–4] разработаны искусственные нейронные сети, диагностирующие наличие острого аппендицита. В [5] проводится исследование факторов риска, связанных с осложнениями острого аппендицита, конкретные виды осложнений исследованы в [6], сведения о нормальном и осложнённом исходе операции представлены нами в разработанной базе данных. Однако математические модели, позволяющие диагностировать риск развития послеоперационных осложнений в хирургии в соответствии с принципами доказательной медицины, отсутствуют, хотя предсказательная медицина и нейросетевое моделирование применяются в хирургии [7–10]. В настоящее время, очень популярны нейронные сети глубокой архитектуры, использующие специфические алгоритмы обучения и функции активации [11–12]. Глубокие нейросети меньше склонны к переобучению и обеспечивают высокую точность по сравнению с обычными нейросетями [12].
Целью работы явилась необходимость разработки способа диагностики послеоперационных осложнений в хирургии на основе анализа медицинских данных с помощью нейросетевого моделирования.
2. ОТБОР И ПРЕДВАРИТЕЛЬНАЯ ОБРАБОТКА ПРИЗНАКОВ
Для диагностики послеоперационных осложнений в хирургии будем руководствоваться набором признаков зарегистрированной нами базы данных.
2.1. Метод отбора лучшей комбинации признаков
Для отбора обучающих признаков предложен подход, основанный на методе обёртки [14, 15]. Для отбора значимых признаков предлагается подход, основанный на межквантильном размахе. Формируется таблица размера , где N — количество комбинаций признаков, которые необходимо проверить, а M — количество экспериментов для одной комбинации. Используется M экспериментов для снижения влияния случайного характера обучения сети. Результаты обучения сети в виде F1-меры [16] записываются в таблицу. Использование F1-меры позволяет получить более стабильный результат, чем среднее значение, которое сильно зависит от предельных значений выборки. После формирования таблицы значений, для каждой строки вычисляются нижний (0.25 квантиль, или первый Q1) и верхний (0.75 квантиль, или третий Q3) квантили [16]. Выбирается комбинация признаков (строка таблицы), обеспечивающая наименьший разброс метрики F1-меры — межквантильный размах (разницу между 0.25 и 0.75 квантилями).
2.2. Преобразование признаков
После отбора признаков необходимо произвести преобразование данных: заполнение пропусков в обучающих данных, кодирование и масштабирование данных. Для масштабирования числовых признаков использовали масштабирование по минимаксу (min-maxscaling), или нормализацию – приведение переменных к одному диапазону [17]. Входные переменные нормализовались так, чтобы признаки изменялись в диапазоне [0, 1]. Каждая входная переменная нормализовалась независимо от других переменных. Масштабы входных и выходных переменных не связаны. Использовали линейную нормализацию
,3600, 7220],"469777927":[0, 0],"469777928":[3, 4]}">
где — нормализованное значение jго признака в iом примере, — исходное значение jго признака в iом примере, — допустимый диапазон изменения нормализованных признаков [0, 1], — диапазон изменения исходных значений jго признака.
Для кодирования качественных переменных использовали приём, известный в современном машинном обучении, как One-HotEncoding (унитарное кодирование) [18]. В таком случае, если категориальный признак принимал n значений, то он заменялся вектором из n значений. В строках таблицы, рассматриваемый признак заменялся единственной единицей в позиции, равной номеру значения признака. В остальных позициях располагались нули.
Набор данных для обучения [13] представлен в виде таблицы, имеющей 30 признаков с параметрами анализов крови, до и после операции, и 12 общих признаков, например, возраст, группа крови и так далее. Ниже представлены общие признаки:
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">пол;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">возраст;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">койко-день;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">группа крови и резус-фактор;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1">основной клинический диагноз;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1">сопутствующий диагноз;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">осложнения;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">оперативные вмешательства;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">длительность оперативных вмешательств;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1">электрокардиограмма (ЭКГ);
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1">клиническая оценка состояния больного;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">наличие осложнений.
Признак "пол" представлен в форме строки, имеющей одно из двух значений: "мужской" или "женский". Признак "возраст" — это целое число, являющееся непрерывным значением, бо́льшим нуля. Признак "койко-день" является целым числом, определяющим общее количество дней в больнице. Признак "группа крови и резус-фактор" представлен в виде строки. Признак "основной клинический диагноз" описывает в словесной форме диагноз больного. Признак "сопутствующий диагноз" — это дополнительный диагноз больного, если таковой имелся. Признак "осложнения" представляет собой словесное описание вида/видов осложнений у пациента, при наличии таковых. Данный признак будет полезен в случае, когда требуется помимо определения наличия осложнения, дополнительно, определить его вид. Признак "оперативные вмешательства" содержит информацию о виде оперативного вмешательства (например, "аппендэктомия"). Данный признак будет известен в полной мере лишь после проведения операции, поэтому его польза для предсказания осложнений до операции сомнительна. Признак "длительность оперативных вмешательств" представляет собой числовые данные, записанные в форме строки (например, "45 мин."). Признак "ЭКГ" представляет собой результаты электрокардиограммы, записанные в виде строки. Признак "клиническая оценка состояния больного" описывает, в форме строки, мнение врача о состоянии больного до операции. Последний признак, "наличие осложнений" представляет собой данные, представленные в форме строки с двумя вариантами: "да" или "нет". В случае, когда осложнения после операции были (у пациента в данном столбце написано "да"), то в столбце "осложнения" содержится вид/виды осложнений.
Оставшиеся признаки из набора данных — анализы крови до и после операции. Перечисление доступных признаков представлено ниже:
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">гемоглобин;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">эритроциты;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">цветовой показатель;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">лейкоциты;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">нейтрофилы палочкоядерные;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1">нейтрофилы сегментоядерные;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1">лимфоциты;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">моноциты;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">скорость оседания эритроцитов;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">общий билирубин;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1">общий белок;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1">амилаза;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">мочевина;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">креатинин;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">глюкоза.
Данные параметров анализов крови были представлены в виде действительных чисел. В нашей задаче требовалось диагностировать наличие осложнений.
Для облегчения работы с большим объёмом данных была использована библиотека pandas [19]. Воспользовавшись встроенными в библиотеку средствами, определяли пропуски в медицинских данных. В окончательном наборе данных присутствует 108 записей. Затем были отобраны столбцы без пропусков. Перечислим клинико-лабораторные показатели:
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">пол;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">возраст;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">койко-день;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1">основной клинический диагноз;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1">гемоглобин;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">эритроциты;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">лейкоциты;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">нейтрофилы палочкоядерные;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1">лимфоциты;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1">наличие осложнений;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">пол;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">возраст;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">сопутствующий диагноз;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1">гемоглобин;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1">эритроциты;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">лейкоциты;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">нейтрофилы палочкоядерные;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">лимфоциты;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1">наличие осложнений.
2.3. Метод кодирования составных категориальных признаков
Признак "основной клинический диагноз" представлен в форме строки и содержит восемь уникальных значений:
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">острый флегмозный аппендицит;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">острый аппендицит;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">острый катаральный аппендицит;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1">острый катаральный аппендицит, тифлит;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">острый гангренозный аппендицит;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">острый гангренозный перфоративный аппендицит;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">острый катаральный аппендицит, мезаденит;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1">острый деструктивный аппендицит.
Заметим, что часть пациентов имеют два диагноза одновременно. В таком случае, необходимо решить, каким образом кодировать такие значения. Традиционное решение заключается в составлении вектора значений, длина которого равна количеству сочетаний диагнозов, и использовать кодирование унитарным кодом. Такой подход приведет к большой избыточности данных. Был предложен отличный от общепринятого подхода способ кодирования категориальных признаков. Предлагается составить вектор, размерность которого будет равна размерности пространства простых диагнозов (а в общем случае значений). Далее, при наличии конкретного диагноза пациента выставить значение данного элемента вектора в 1, в противном случае в 0. Представим диагнозы больных острым аппендицитом для машинного обучения:
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">острый флегмозный аппендицит;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">острый аппендицит;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">острый катаральный аппендицит;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1">тифлит;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1">острый гангренозный аппендицит;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">острый гангренозный перфоративный аппендицит;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">острый деструктивный аппендицит;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">острый панкреатит.
Используя описанный подход, произведём кодирование данных признаков. Результаты представлены в табл. 3.
Таблица 1.Кодированные значения диагнозов
Table 1. Diagnostic values encoded with the proposed method
Исходное значение Text value | Кодированное значение Encoded vector |
острый флегмозный аппендицит acute phlegmonous appendicitis | |
острый аппендицит acute appendicitis | |
острый катаральный аппендицит acute catarrhal appendicitis | |
острый катаральный аппендицит, тифлит acute catarrhal appendicitis, typhlitis | |
острый гангренозный аппендицит acute gangrenous appendicitis | |
острый гангренозный перфоративный аппендицит acute gangrenous perforated appendicitis | |
острый катаральный аппендицит, острый панкреатит acute catarrhal appendicitis. acute pancreatitis | |
острый деструктивный аппендицит acute destructive appendicitis |
2.4. Отбор значимых признаков для задачи выявления осложнений
После определения способа кодирования и масштабирования признаков выполнили предобработку. Для облегчения данной работы использовали библиотеку Scikit-learn [17, 20]. Используя предложенный в разделе 2.1 подход, было отобрано 8 информативных признаков:
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">пол;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">возраст;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">основной клинический диагноз;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">гемоглобин;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">эритроциты;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">лейкоциты;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1">нейтрофилы палочкоядерные;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1">лимфоциты.
К каждому из выбранных признаков путем перебора добавлялись по одному и другие признаки. С использованием F1-меры оценивалось качество работы нейросетевой модели. По результатам обучения 8 моделей, в качестве начального признака был выбран "основной клинический диагноз". Затем, путём полного перебора комбинаций были выбраны наиболее значащие для алгоритма комбинации признаков:
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">основной клинический диагноз, пол, возраст, эритроциты;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">основной клинический диагноз, пол, возраст, гемоглобин, лейкоциты, нейтрофилы палочкоядерные;
Полный перебор осуществлялся следующим образом. К признаку "основной клинический диагноз" добавлялись оставшиеся признаки. В результате было составлено 7 новых комбинаций:
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">основной клинический диагноз, пол;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">основной клинический диагноз, возраст;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">основной клинический диагноз, гемоглобин;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">основной клинический диагноз, эритроциты;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1">основной клинический диагноз, лейкоциты;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1">основной клинический диагноз, нейтрофилы палочкоядерные;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">основной клинический диагноз, лимфоциты.
Затем добавлялся третий признак
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">основной клинический диагноз, пол, возраст;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">основной клинический диагноз, пол, гемоглобин;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1">основной клинический диагноз, пол, эритроциты;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">основной клинический диагноз, пол, лейкоциты;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">основной клинический диагноз, пол, нейтрофилы палочкоядерные;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">основной клинический диагноз, пол, лимфоциты;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1">основной клинический диагноз, нейтрофилы палочкоядерные, возраст;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1">основной клинический диагноз, нейтрофилы палочкоядерные, гемоглобин;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">основной клинический диагноз, нейтрофилы палочкоядерные, эритроциты;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">основной клинический диагноз, нейтрофилы палочкоядерные, лейкоциты;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">основной клинический диагноз, нейтрофилы палочкоядерные, лимфоциты.
Этот процесс повторяется до тех пор, пока не будут перебраны все оставшиеся признаки.
Отбор признаков производился с помощью финальной модели машинного обучения, описанной в следующем разделе.
3. ИНСТРУМЕНТАРИЙ, АРХИТЕКТУРА И ОБУЧЕНИЕ НЕЙРОННОЙ СЕТИ
Разработка и исследование нейронной сети проводились с использованием библиотеки Keras [21].
3.1. Выбор архитектуры нейронной сети
После ряда экспериментов с различными архитектурами, функциями активации, методами обучения и видами нейронов была выбрана нейронная сеть (рис. 1).
Рис. 1. Архитектура классификатора, построенная с использованием метода "прореживания" нейронов (dropout).
Figure 1. Architecture of the classifier built using the method of “dropout” neurons
В слоях C1, C3, C5, C7 в качестве функции обработки применялся сумматор, вычисляющий взвешенную сумму, гдеи — компоненты вектора весов и входного вектора слоя сети. В скрытых слоях использована функция активации ReLU (RectifiedLinearUnit)[17]4540, 9080],"469777927":[0, 0],"469777928":[3, 4]}">
4540, 9080],"469777927":[0, 0],"469777928":[3, 4]}">
где s – взвешенная сумма. В выходном слое используется асимметричная логистическая функция активации
где s – взвешенная сумма. Данная функция хорошо подходит в качестве выходной функции активации, так как она распределена от 0 до 1, что можно трактовать как вероятность наличия осложнений.
Количество нейронов в слоях классификатора определялось по формуле
, 4540, 9080],"469777927":[0, 0],"469777928":[3, 4]}">
где — коэффициент, — размерность входного вектора, — вычисленное количество нейронов. Были экспериментально подобраны коэффициенты k:
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">для слоя C1 коэффициент k = 1.0;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">для слоя C3 коэффициент k = 0.5;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">для слоя C5 коэффициент k = 0.2.
В слое C7 имеется один нейрон, определяющий вероятность наличия осложнений.
Классификатор обучался методом Adam [11, 17]. Данный метод обучения имеет адаптивный параметр — скорость сходимости. Благодаря особенности метода, можно избежать попадания в часть локальных минимумов. Для инициализации начальных параметров модели использовался метод Ксавье (Xavierinitialization) [17]. Для преодоления переобучения сети использовалась перекрестная проверка (CrossValidation) с разделением обучающего набора на три множества: обучающий набор (70%) — для обучения сети, проверочный (15%) — для подсчёта метрик качества на каждой итерации и останова обучения и тестовый (15%) — для оценки качества обученной модели.
Чтобы на каждой итерации обучения работать с лучшей моделью, использован callback-метод [22]. Если на текущей итерации на проверочном наборе точность нейросети не улучшилась, то сохраняются параметры нейросети с предыдущей итерации. Этот подход способствуют предотвращению переобучения сети.
3.2. Регуляризация "прореживанием" нейронов
Для предотвращения переобучения нейронной сети использован специфический прием регуляризации — "прореживание" (dropout) нейронов [17]. В этом подходе на каждой итерации обучения для каждого нейрона (кроме нейронов выходного слоя) устанавливалась вероятность, с которой нейрон будет исключён из сети — уровень отключения (dropoutrate). Экспериментальным путём был настроен параметр p — уровень отключения нейронов:
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">для слоя C2 порог p = 0.30;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">для слоя C4 порог p = 0.15;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">для слоя C6 порог p = 0.05.
Алгоритм обучения строился следующим образом: на каждой новой итерации обучения для каждого нейрона определялась вероятность удаления. Если нейрон удаляется, то его выход полагается равным нулю. Нулевой выход нейрона означает, что нейрон фактически не участвует в вычислениях на данной итерации. При эксплуатации полученной модели участвовали все нейроны, однако, выход каждого нейрона умножался на вероятность сохранения, с которой нейрон оставляли при обучении. Применение обученной с использованием dropout сети эквивалентно усреднению по ансамблю сетей, что лучше, чем применение одной модели.
3.3. Предварительная обработка данных автоэнкодером
Предложено для повышения точности классификации применить повышающий (overcomplete) автоэнкодер. Такой автоэнкодер нелинейно преобразует входные векторы в пространство бо́льшей размерности. Согласно теореме Ковера [23], такое преобразование повышает вероятность линейного разделения признаков, следовательно, повышает точность классификации.
Для решения этой проблемы была построена вспомогательная нейронная сеть по типу повышающего автоэнкодера. Перед тем, как выполнять классификацию, данные будут отображены в пространство бо́льшей размерности, что теоретически увеличит вероятность успешной классификации. Затем, преобразованные данные будут поданы на вход классификатора, которому выполнить классификацию будет значительно легче.
Автоэнкодер состоит из двух частей: энкодера (encoder) и декодера (decoder). Обученный автоэнкодер на выходе выдаёт вектор значений очень близкий к тому, который был получен на входе. На рис. 2 представлены составные части автоэнкодера, на котором выполнялось разделение признаков.
|
|
Рис. 2. Архитектура автоэнкодера: а) энкодер, б) декодер.
Figure 2. Architecture of autoencoder, (a) encoder (b) decoder
Энкодер (рис. 2) включает скрытые слои, аналогичные слоям классификатора, описанного ранее. Выходной слой использует линейную функцию активации. На рис. 2 слои энкодера пронумерованы: E1, E2 и E3. Количество нейронов зависит от размерности входных признаков. Коэффициент задаётся для каждого слоя:
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">для слоя E1 коэффициент k= 1.35;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">для слоя E2 коэффициент k= 1.75;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">для слоя E3 коэффициент k= 2.00.
Данный параметр подбирался экспериментально.
Скрытые слои декодера (рис. 2) аналогичны слоям классификатора. В качестве выходной функции активации использовалась сигмоидальная функция активации, аналогичная выходной функции классификатора.
На рис. 2 слои пронумерованы D1, D2 и D3. Количество нейронов зависит от размерности выходных признаков, как и в энкодере. Коэффициент k был экспериментально подобран для каждого слоя:
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">для слоя D1 коэффициент k = 1.75;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">для слоя D2 коэффициент k = 1.35;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">для слоя D3 коэффициент k = 1.00.
Автоэнкодер был обучен методом с адаптивной скоростью обучения adadelta [24], показавшим лучшие значения качества обучения, чем метод Adam.
При обучении автоэнкодера, для исключения проблем исчезновения и взрывного роста градиента, для инициализации весов использовался метод Ксавье. Для преодоления эффекта переобучения использовалось обучение с ранним остановом (earlystopping) и перекрёстной проверкой. Набор данных для обучения был разделён в пропорциях: обучающая выборка — 90%, проверочная выборка — 10%.
4. АНАЛИЗ РЕЗУЛЬТАТОВ
4.1. Метрики качества нейросетевого классификатора
Задача диагностики послеоперационных осложнений — это задача бинарной классификации, поскольку учитывается наличие или отсутствие осложнения. Чтобы оценить и выбрать лучший классификатор нейронной сети, рассмотрим метрики качества задач бинарной классификации[16–17]. В таких задачах метки классов принадлежат множеству {0, 1}. Объекты с меткой "1" называются положительными, а с меткой "0" — отрицательными. Нейронная сеть возвращает число с плавающей запятой. В случае сигмоидной функции активации в выходном слое сети — это число от 0 до 1. С помощью точки отсечки — порогового значения, разделяющего классы, ответ классификатора превращается из плавающего в двоичный. Если сигнал нейрона превышает точку отсечки, это положительный результат, в противном случае - отрицательный.
В бинарной классификации каждое индивидуальное предсказание может иметь четыре результата: истинно-положительный (truepositive или TP); истинно-отрицательный (truenegative или TN); ложно-положительный (falsepositive или FP); ложно-отрицательный (falsenegative или FN). Истинно положительным исход будет, когда фактический класс данного примера 1 (положительный) и модель на выходе выдаст 1 (положительный). Истинно отрицательным исход будет, когда наблюдаемый класс 0 (отрицательный) и модель выдаст 0 (отрицательный). Ложно-положительное значение имеет место, когда фактический класс 0 (отрицательный), а модель для него сформирует выход 1 (положительный). При ложно-отрицательном выходе целевая переменная принимает значение 1 (положительный), а на выходе модель выдаст 0 (отрицательный). Результаты этих вычислений представляются в виде матрицы ошибок (confusionmatrix).
В качестве метрик, оценивающих качество нейросетевой модели, были выбраны метрики, реализованные в Scikit-learn [16–17]:
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">оценка прецизионности или положительная прогностическая ценность (positivepredictivevalue);
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">оценка чувствительности или доля истинно-положительных срабатываний (truepositiverate);
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">F1-мера;
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1">оценка специфичности (specificity) или для истинно-отрицательных срабатываний (truenegativerate);
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1">ROC-кривая (ROC-curve);
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1">площадь под ROC-кривой (ROC AUC);
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1">количество ошибок I рода (количество ложно-положительный – значение метрики FP);
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1">количество ошибок II рода (количество ложно-отрицательный – значение метрики FN);
- 8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1">матрица ошибок.
Оценка прецизионности (precision) показывает точность предсказанного положительного исхода (когда у пациента могут быть осложнения)
4540, 9080],"469777927":[0, 0],"469777928":[3, 4]}">
где — число истинно-положительных наблюдений, — число истинно-отрицательных наблюдений, — число ложно-положительных наблюдений, — число ложно-отрицательных наблюдений, — общее число наблюдений.
Чувствительность (sensivity) модели показывает долю положительных исходов, которую алгоритм смог правильно обнаружить
.4540, 9080],"469777927":[0, 0],"469777928":[3, 4]}">
Прецизионность и чувствительность модели бывает целесообразно объединить в одну метрику, которая называется F1-мера. Данная метрика является средним гармоническим прецизионности и чувствительности
.4540, 9080],"469777927":[0, 0],"469777928":[3, 4]}">
Метрика F1-мера будет близка к нулю, если хотя бы один из её аргументов близок к нулю. Причём прецизионность и полнота оказывают одинаковое влияние. Особенность данной метрики в том, что среднее гармоническое придаёт малым значениям больший вес. Поэтому, высокое значение метрики F1-мера можно обеспечить только высокими значениями этих двух метрик.
Специфичность (specificity) модели измеряет способность алгоритма предсказывать отрицательные исходы (долю пациентов без осложнений)
.4540, 9080],"469777927":[0, 0],"469777928":[3, 4]}">
Для оценки качества бинарной классификации применяется ROCанализ, основанный на построении характеристической кривой обнаружения, или кривой ошибок — ROCкривой. ROC-кривая показывает соотношение между долей верно классифицированных примеров (True Positive Rate — TPR) т. е. чувствительностью, и долей неверно классифицированных примеров (FalsePositiveRate)
.
Площадь под ROCкривой (AUC — AreaUnderROCCurve) говорит о прогностической силе модели, причем AUC=1 соответствует идеальному классификатору. Для реальных классификаторов площадь под ROC-кривой больше 0,7–0,8, соответствует достаточно высокой точности классификации.
Для обучающих данных использовали кросс-валидацию по k блокам (k-foldCV)[25]. В этом методе исходное множество примеров разбивается на непересекающихся частей. Производится k итераций. На каждой итерации производится модель, которая обучается на частях выборки, тестируется на части обучающей выборки, которая не участвовала в обучении. Каждая из k частей единожды используется для тестирования. Итоговая оценка точности получается усреднением оценок на каждой итерации. В реализации использован класс StratifiedKFold из библиотеки Scikit-leam. Для обучения автоэнкодера и классификатора набор данных был разделен на 10 подмножеств.
4.2. Анализ результатов экспериментов
Эксперименты проводились на компьютере с процессором IntelCore i5 2,4 ГГц с 8 ГБ оперативной памяти DDR3 1600 МГц под управлением операционной системы macOSMojave версии 10.14.6. Были использованы следующие библиотеки: Scikit-Leam версии 0.22.2.postl, TensorFlow версии 2.1.0, NumPy версии 1.17.0, Keras версии 2.3.1. Время обучения повышающего автоэнкодера составляло 8 секунд. Классификатор обучался за 11 секунд. Представленное время обучения было рассчитано для одной итерации перекрестной проверки.
Описанные показатели качества были рассчитаны для окончательной комбинации значимых атрибутов. В табл. 2 показаны значения показателей качества модели на основе выбранной комбинации функций. Показатели получения с использованием кросс-валидации для k блоков.
Таблица 2. Результаты экспериментов для комбинации признаков
Table 2. Experimental results for the first combination of features
Метрика Metric | Значения метрик Metric values | |
Среднее Average | Медиана Median | |
Прецизионность Precision | 0.8167 | 0.8750 |
Чувствительность Sensitivity | 0.6167 | 0.7500 |
F1-мера F1-score | 0.6843 | 0.7500 |
Специфичность Specifity | 0.8289 | 0.8571 |
ROC AUC | 0.7804 | 0.8036 |
Вероятность ошибки I рода Probability of a I type error | 0.1833 | 0.1250 |
Вероятность ошибки II рода Probability of a II type error | 0.1711 | 0.1429 |
На рис. 3 представлена ROC-кривая усредненных значений.
Рис. 3.Усредненная ROCкривая
Figure 3. Averaged ROC curve
Построенная нейросетевая модель позволяет хирургу объективно оценить риск развития осложнений в хирургии на основе клинического мышления и нейросетевого метода.
ЗАКЛЮЧЕНИЕ
В статье предложен подход к выбору признаков, который использует межквантильный размах. Такой подход позволил получить высокий и стабильный результат метрики F1мера. Предлагаемый подход может применяться для решения различных задач классификации табличных данных. Предложен подход к кодированию составных категориальных признаков, отличающийся компактным представлением. Для повышения точности нейросетевой диагностики использован повышающий автоэнкодер, проектирующий признаки в пространство большей размерности. Применение автоэнкодера позволит повысить качество модели. Разработана и исследована полносвязная нейронная сеть глубокой архитектуры, позволяющая диагностировать послеоперационные осложнения в хирургии. Для снижения эффекта переобучения использован современный метод регуляризации — dropout. Для обучения нейросети применен алгоритм Adam с адаптивной скоростью обучения и кросс-валидацией по k блокам. Исследование нейросети показало высокие показатели качества диагностики.
Об авторах
Анатолий Анатольевич Соломаха
Федеральное государственное бюджетное образовательное учреждение высшего образования «Пензенский государственный университет» Министерства науки и высшего образования Российской Федерации
Email: anatoly.solomakha@yandex.ru
ORCID iD: 0000-0002-1070-6029
хирург, трансфузиолог, врач высшей категории, к.м.н., доцент, действительный член Российской академии медико-технических наук, оказывал медицинскую помощь больным, осуществил сбор и обработку данных больных, подготовил базу данных, которая имеет номер государственной регистрации в Роспатенте. Разработал концепцию и дизайн исследования совместно с Горбаченко В. И, принимал участие в написании рукописи статьи, редактировании.
Россия, Пенза, Российская ФедерацияВладимир Иванович Горбаченко
Федеральное государственное бюджетное образовательное учреждение высшего образования «Пензенский государственный университет» Министерства науки и высшего образования Российской Федерации
Автор, ответственный за переписку.
Email: anatoly.solomakha@yandex.ru
ORCID iD: 0000-0002-1012-8855
SPIN-код: 1045-0906
д.т.н., профессор, заведующий кафедрой «Компьютерные технологии», разрабатывал концепцию и дизайн исследования, принимал участие в подготовке базы данных, занимался статистической обработкой данных, нейросетевым моделированием, принимал участие в написании рукописи статьи, её редактировании
Россия, Пенза, Российская ФедерацияСписок литературы
- Совцов С. А. Острый аппендицит: что изменилось в начале нового века?(с комментарием).Хирургия. Журнал им. Н. П. Пирогова.2013;7:37–42.
- Simillis C, Symeonides P, Shorthouse AJ, Tekkis PP. A meta-analysis comparing conservative treatment versus acute appendectomy for complicated appendicitis (abscess or phlegmon).Surgery.2010;147:818–829.doi.org/10.1016/s0090-3671(10)79895-5
- Prabhudesai SG. Artificial neural Networks: Useful Aid in Diagnosing Acute Appendicitis.World Journal of Surgery.2008; 2:305–309.doi.org/10.1007/s00268-007-9299-5
- Park SY, Kim SM. Acute appendicitis diagnosis using artificial neural networks.Technology and health care.2015;23:559–565.doi.org/10.3233/thc-150994
- Juliano Y, Rosa OM, Novo NF, Favaro ML. Risk factors associated with complications of acute appendicitis.Journal of Brazilian College of Surgeons.2017;6:560–566.doi.org/10.26226/morressier.58fa1765d462b80290b50f65
- Bakti N, Hussain A, El-Hassani S. A rare complication of acute appendicitis: Superior mesenteric vein thrombosis.International Journal of Surgery Case Reports. 2011; 8: 250–252.doi.org/10.1016/j.ijscr.2011.08.003
- Brigham KL, Johns MME. Predictive Health: How We Can Reinvent Medicine to Extend Our Best Years.Basic Books.2012; 256.
- Miner L, Bolding P, Hilbe J. Practical Predictive Analytics and Decisioning Systems for Medicine: Informatics Accuracy and Cost-Effectiveness for Healthcare Administration and Delivery Including Medical Research. Academic Press.2014;1110.
- Joskowicz L. Computer-aided surgery meets predictive, preventive, and personalized medicine. EPMA Journal.2017;8:1–4. doi.org/10.1007/s13167-017-0084-8
- Хайкин С. Нейронные сети: полный курс. М.: Вильямс.2006;1104.
- Гудфеллоу Я., Бенджио И., Курвиль А. Глубокое обучение.М.: ДМК Пресс, 2018.652с.
- Аггарвал Ч. Нейронные сети и глубокое обучение.СПб.: ООО "Диалектика".2020;752.
- П. А. Ващенко, А. А. Соломаха, В. И. Горбаченко, А. О. Хазратов. Клинико-лабораторные параметры больных острым аппендицитом. Свидетельство о государственной регистрации базы данных № 2014621431. Дата государственной регистрации в Реестре баз данных 10 октября 2014 г.
- Zheng A, Casari A. Feature Engineering for Machine Learning: Principles and Techniques for Data Scientists. O'Reilly Media. 2018; 218.
- Chandrashekar G, Sahin F. A survey on feature selection methods.Computers & Electrical Engineering.2014;40: 1: 16–28.doi.org/10.1016/j.compeleceng.2013.11.024
- Брюс П., Брюс Э. Практическая статистика для специалистов DataScience. СПб.: БХВ Петербург. 2018;304.
- Жерон О. Прикладное машинное обучение с помощью Scikit‑Learn, Keras и TensorFlow: концепции, инструменты и техники для создания интеллектуальных систем. СПб.: ООО "Диалектика".2020;1040.
- Brownlee J. Why One-Hot Encode Data in Machine Learning? https://machinelearningmastery.com/why-one-hot-encode-data-in-machine-learning/
- Хейдт М., Груздев А. В. Изучаем pandas.М.: ДМК Пресс.2019;682.
- Scikit-Learn // https://scikit-learn.org/stable/
- Шолле Ф. Глубокое обучение на Python. СПб.: Питер.2018; 400.
- Keras: The Python Deep Learning library. Usage of callbacks. https://keras.io/callbacks/
- Cover TM. Geometrical and Statistical Properties of Systems of Linear inequalities with Applications in Pattern Recognition.IEEE Transactions on Electronic Computers. 1965; EC14: 3: 326–334.doi.org/10.1109/pgec.1965.264137
- Zeiler MD. ADADELTA: An Adaptive Learning Rate Method. 2012; https://arxiv.org/abs/1212.5701
- Рашка С., Мирджалили В. Python и машинное обучение: машинное и глубокое обучение с использованием Python, scikit-learn и TensorFlow 2. СПБ.: ООО "Диалектика".2020;848.