$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Этическое заявление, набор данных, программное обеспечение и подготовка данных
Результаты этого исследования основаны на наборе данных по сердечным заболеваниям UCI Machine Learning Repository. Поскольку это общедоступный и деидентифицируемый ресурс, его использование не требовало одобрения этического комитета. Авторы также подтверждают оригинальность этой рукописи, подтверждая, что она ранее не публиковалась и не была отправлена в другие журналы.
Набор данных по сердечным заболеваниям Кливленда был разделён на тренировочные и тестовые наборы с коэффициентом 80/20. Набор данных обычно содержит 303 экземпляра; Поэтому для обучения было использовано примерно 242 образца, а 61 образец остался в качестве чистого тестового набора. Синтетические образцы, сгенерированные методом GAN или гауссовского резервного метода, добавлялись только к обучающим данным для снижения риска утечки данных. Окончательный дополненный учебный набор включал примерно 242 реальных образца и 1000 синтетических образцов, что дало 1242 учебных образца. Фиксированный набор статической валидации не использовался. Вместо этого во время обучения модели применялась стратифицированная кросс-валидация, при этом каждая складка делила дополненные обучающие данные на подмножества обучения и валидации.
Набор данных загружался в Pandas DataFrame и проверялся на отсутствие значений. Численные признаки с отсутствующими значениями обрабатывались с помощью медианной импутации с классом SimpleImputer из scikit-learn с использованием стратегии = «медиана». Категориальные признаки с отсутствующими значениями обрабатывались с помощью импутации режимов с помощью SimpleImputer по стратегии = 'most_frequent'. Механизмы отсутствия были задокументированы путём вычисления процента отсутствующего для каждого признака с помощью df.isnull().sum() / len(df). Неслучайные закономерности отсутствующих оценивались путём сравнения средних значений других признаков между выборками с и без пропущенных данных с использованием t.-тестов для числовых признаков и хи-квадрата для категорических признаков. Пропущенность затем фиксировалась как «Полностью пропало случайным образом» (MCAR), «Пропало случайно» (MAR) или «Пропущено, а не случайно» (MNAR), где это было применимо.
Для наборов данных с существенной отсутствующей степенью рекомендовал анализ чувствительности путём сравнения медианной/модовой импутации с множественной импутацией по цепочным уравнениям (MICE), используя fancyimpute. IterativeImputer с max_iter = 10 и KNN импутацией с использованием fancyimpute. KNN с k = 5. Разница точности менее 0,03 рассматривалась как указывающая на устойчивость методаимпутации 12. Этот анализ чувствительности считался необязательным для набора данных Кливленда из-за его ограниченной отсутству, но был рекомендован для других клинических наборов данных с отсутствующими значениями более 5%. Паттерны пропущенности также визуализировались с помощью библиотеки missingno путем генерации тепловой матрицы отсутствующих с помощью msno.matrix(df). Кластеризация закономерностей отсутствующей была использована для определения систематического совместного возникновения пропущенных значений, что может указывать на механизмы MNAR, требующие участия клинических экспертов.
Численные признаки стандартизировались с помощью нормализации z-score. StandardScaler от scikit-learn устанавливался на обучающие данные, а затем применялся как к обучающим, так и к тестовым наборам. Категориальные переменные кодировались с помощью однофазного кодирования. Тип боли в груди (cp), включающий четыре категории, был преобразован в четыре бинарных индикаторных столбца с использованием pandas.get_dummies. Талассемия (тал), включающая три категории, была преобразована в три двоичных индикаторных столбца. Поскольку генератор и дискриминатор GAN использовали фиксированную размерность ввода/вывода из 13 признаков, соответствующих исходному набору данных до однофазного кодирования, синтетические сэмплы генерировались в исходном пространстве из 13 признаков и затем проходили через тот же однофазный конвейер кодирования, что и реальные данные. Это сохраняло совместимость с архитектурой GAN, одновременно позволяя использовать закодированные признаки для обучения моделей.
Математические определения и метрики качества
Расстояние Фреше использовалось для сравнения реальных и синтетических распределений признаков. Расстояние Фреше Fr(F, G) между двумя распределениями F и G определялось следующим образом:
Fr2(F,G)=minX,YE|X-Y|2 (1)
где E представляет ожидание, а минимизация выполняется для всех случайных величин X и Y с распределением F и G, соответственно19.
Оптимизация Харриса Хоука (HHO) использовалась в качестве метаэвристического метода оптимизации. HHO вдохновлён кооперативным охотничьим поведением ХаррисХоукс 20. Переход между фазами разведки и эксплуатации контролировался энергией побега E. В фазе исследования, где |E| ≥ 1 обновление было определено следующим образом:
X(t+1) = Xранд (t) - r1 | Xранд (t) - 2r2X (t)|
На этапе эксплуатации, где |E| < 1 обновления определялись энергией побега E = 2E(1 − t/T) и силой прыжка J = 2(1 − r5). В условиях мягкой осады, где ≥ 0,5 и |E| ≥ 0.5 обновление было определено следующим образом:
X(t+1) = ΔX(t) - E|JX кролик (t) - X(t)|
В условиях жёсткой осады, где ≥ 0,5 и |E| < 0.5 обновление было определено следующим образом:
X(t+1) = Xкролик (t) - E|ΔX(t)|
Справедливость оценивалась с использованием статистического паритета и баланса ошибок, следуя Hardt et al.20 и Lima et al.21. В качестве метрик справедливости использовались разница в демографическом паритете, уравнивающая разница шансов и ошибка калибровки по возрасту.

ΔEO = max(|TPRA - TPRB |,| FPRA - FPRB |)
ΔBS=|BS возраст<50 -BS возраст>50 |
где BS — это балл Брайера:

Интерпретируемость панели панелей была основана на значениях SHAP, которые рассчитываются с использованием коалиционной теории игр 18.

где Φi представляет атрибуцию SHAP для признака i, F. f(S) — множество всех признаков, а — прогноз модели для подмножества признаков S.
Дополнение данных на базе GAN
Для решения проблемы дефицита данных и классового дисбаланса была использована Генеративная состязательная сеть (GAN) для генерации синтетических выборок. Архитектура генератора была настроена на TensorFlow/Keras. Он принимал 100-мерный шумовой вектор, дискретируемый из стандартного нормального распределения N(0,1), за которым следовали плотные слои с 128, 256 и 512 единицами с активацией ReLU. Выходной слой содержал 13 единиц, соответствующих исходному размеру объекта, и использовал активацию сигмовидной формы.
Архитектура дискриминатора принимала 13-мерный вектор признаков в качестве входных данных. Он состоял из плотных слоёв с 512, 256 и 128 единицами с активацией LeakyReLU с α = 0,2. Выходной слой содержал один блок с активацией сигмовидной формы для бинарной классификации реальных и синтетических образцов.
GAN обучался для 100 эпох с использованием партии 64 выпускников. Оптимизатор Адама использовался со скоростью обучения 0,0002, β1 = 0,5 и β2 = 0,999. В каждой эпохе дискриминатор поочерёдно обучался на реальных и синтетических партиях, а генератор обманывался дискриминатором. После обучения в генератор были введены 1000 случайных шумовых векторов для получения 1000 синтетических образцов, которые добавлялись только в обучающий набор.
Коллапс режима отслеживался во время обучения GAN, измеряя дисперсию каждого синтетического признака по 100 сгенерированным образцам после каждых 10 эпох. Если дисперсия любого признака опускалась ниже 10% от соответствующей дисперсии реальных данных в течение трёх последовательных проверок, подозревался коллапс режима. Стратегии смягчения включали снижение скорости обучения до 1 × 10⁻4, увеличение размера партии до 128, возобновление тренировок с другой инициализацией веса или замену стандартного GAN на Вассерштейн GAN на градиентный штраф (WGAN-GP), как описано Аржовским и др. 17. Реализация использовала стандартный GAN с резервным вариантом возмущений по Гауссу для обеспечения генерации синтетических данных, когда TensorFlow был недоступен.
Качество синтетических данных оценивалось путём вычисления расстояния Фреше между реальными и синтетическими распределениями признаков с использованием индивидуальной реализации. Классификатор, такой как логистическая регрессия, также был обучен для различия реальных и синтетических образцов; Точность классификации, близкая к вероятности, рассматривалась как признак высокой точности. Был рассчитан AUC с точным отзывом, при этом значения выше 0,9 считались индикатором хорошего захвата распределения. Также были сравнены корреляции Пирсона между парами признаков в реальных и синтетических наборах данных, при этом различия ниже 0,05 считались приемлемым сохранением структуры корреляции.
Когда TensorFlow/Keras был недоступен или обучение GAN не работало, использовался метод резервного варианта возмущения по Гауссу. Для каждого класса среднее (μ) и стандартное отклонение (σ) каждого признака вычислялись из обучающего набора данных. Затем были получены синтетические образцы следующим образом:
Xsynthetic = μ + ε × σ × 0,05, где ε ~ N(0,1)
Метки классов генерировались пропорционально исходному распределению классов. Этот запасной вариант был включён для поддержки воспроизводимости между средами без зависимостей от глубокого обучения.
Выбор гибридных функций
Применялась двухэтапная гибридная стратегия выбора признаков. На первом этапе проводилась статистическая предварительная фильтрация. Для каждого признака xi в наборе признаков X значения делились на две группы согласно бинарной переменной исхода: G0 для y = 0, что означает отсутствие болезни, и G1 для y = 1, указывающее на наличие заболевания. Двухобразный t.-тест Уэлча проводился с использованием scipy.stats.ttest_ind с equal_var = Ложно. Затем размер эффекта Коэна d был вычислен следующим образом:
d = (среднее1 − mean2) / pooled_std
где:
pooled_std = sqrt((std12 + std22)/2)
Имя признака, p-значение и значение Коэна d хранились в таблице результатов. Признаки выбирались, если они соответствовали обоим критериям: p-значение < 0,05 и |Победа Коэна ≥ 0,5. Полученный набор функций был определен как Xfiltered.
T-тест Уэлча был использован, потому что он подходит для непрерывных числовых признаков, таких как возраст, талах и олдпик. Для бинарных категорических признаков, таких как пол и exang, t.-тест даёт результаты, сопоставимые с пропорционным тестом при сравнении двух групп. Многокатегориальные признаки, такие как cp и thal, кодировались в однофазном режиме, и каждый бинарный индикатор тестировался отдельно по переменной исхода. Этот подход был признан уместным, поскольку в наборе данных Кливленда более 30 выборок, признаки были стандартизированы до анализа, и equal_var = Ложные учитывают неравные дисперсии между группами. Для признаков с серьёзными нарушениями нормальности тест Манна–Уитни U рассматривался как альтернативный непараметрический тест.
Порог p < 0,05 следовал традиционной статистической значимости, тогда как |Победа Коэна ≥ 0,5 соответствовало среднему или большому размеру эффекта. Для наборов данных с небольшими выборками или редкими исходами рекомендовались корректировка на основе бутстрапа, коррекция g Хеджеса или ослабленные исследовательские пороги с экспертным клиническим участием. Например, для вычисления доверительных интервалов Коэна d можно использовать 1000 пересэмплеев bootstrap, а g Хеджеса — для коррекции смещения мелкой выборки. Признаки с пограничной статистикой, такими как p-значения от 0,03 до 0,08 или |d| значения от 0,4 до 0,6 были задокументированы для возможного клинического экспертного обзора перед исключением.
На втором этапе к статистически отфильтрованному набору признаков применялась оптимизация Харриса Хоука (HHO). Размер населения HHO был установлен на уровне 20 человек, а максимальное количество итераций — 50. Каждое решение представлялось как двоичный вектор с длиной, равной количеству признаков в Xfiltered, где 1 указывал на выбор признака, а 0 — о том, что он не был выбран. Непрерывные позиции HHO отображались в двоичные векторы с помощью V-образной передаточной функции:
T(x) = |tanh(x)|
Бинарное значение устанавливалось в 1, если T(x) > 0,5, а в противном случае — 0. V-образная функция была выбрана потому, что поддерживает сбалансированное исследование и эксплуатацию при бинарном преобразовании.
Функция приспособленности для каждого решения была определена с помощью логистической регрессии. Модель логистической регрессии была обучена только с использованием признаков, выбранных бинарным вектором, а пятикратная кросс-валидация была выполнена с использованием cross_val_score из scikit-learn. Приспособленность вычислялась следующим образом:
приспособленность = 1 − средняя точность
Популяция позиций ястреба инициализировалось равномерно в диапазоне [−1, 1] с использованием numpy.random.uniform(−1, 1, (population_size, n_features)) с фиксированным случайным семем 42 для воспроизводимости. На каждой итерации оценивалась приспособленность всех ястребов, определялась лучшая позиция ястреба как кролик, а позиции ястреба обновлялись с помощью уравнений HHO разведки и эксплуатации на основе энергии побега. После сходимости был выбран наиболее эффективный бинарный вектор в качестве финального подмножества признаков — Xfinal.
Выбранные признаки были записаны в одном запуске оптимизации HHO с фиксированным случайным началом. Для приложений, требующих более высокой статистической достоверности, рекомендавалось выпустить 30 независимых запусков с разными случайными сидами и выбрать консенсусные функции, появляющиеся как минимум в 80% запусков. Заявленная реализация была основана на одном репрезентативном запуске, поскольку предварительные испытания показали последовательное сходимость.
Обучение и оптимизация модели
Рассматривались три модели: логистическая регрессия, случайный лес и оптимизированная для PSO искусственная нейронная сеть (ANN). Логистическая регрессия была обучена с использованием стратифицированной пятикратной кросс-валидации для поддержания распределения классов. Сила регуляризации C была оптимизирована с использованием пространства поиска C
[0.001, 0.01, 0.1, 1, 10]. Для каждого склочка и каждого значения C модель тренировалась на обучающем сгибе и оценивалась на валидационном сгибе. Было выбрано значение C, максимизирующее точность валидации среднего по сгибам.
Модель Random Forest была обучена с использованием настройки гиперпараметров. Пространство поиска включало max_depth = [5, 10, 15, нет] и min_samples_split = [2, 5, 10]. Поиск по сетке с пятикратной перекрёстной валидацией выполнялся с использованием ROC-AUC в качестве метрики оптимизации через GridSearchCV с оценкой = 'roc_auc'. Выбранная модель случайного леса использовала max_depth = 10 и min_samples_split = 5. Оценка балла вне пакета (OOB) была включена с помощью oob_score = True.
Перенастройка оценивалась путём расчёта разрыва между точностью обучения и результатом OOB:
overfitting_gap = training_accuracy − oob_score
Разрыв переподгонки ниже 0,05 считался признаком хорошей обобщённости, тогда как разрыв выше 0,10 указывал на необходимость сокращения max_depth или увеличения min_samples_split. При балле OOB 0,9296 и типичной точности тренировок от 0,94 до 0,96 разрыв составлял примерно 0,01–0,03.
Классификатор ANN также был оптимизирован с помощью оптимизации роя частиц (Particle Swarm Optimization, PSO). Архитектура ANN состояла из входного слоя, одного скрытого слоя с 64 нейронами, использующими активацию ReLU, и выходного слоя с одним нейроном, использующего активацию сигмовидной формы. PSO инициализировался с 50 частицами и 50 итераций и использовался для оптимизации начальных весов сети. Затем ANN обучалась с использованием стандартной обратной распространения. Поскольку оптимизация PSO проводилась на тех же обучающих данных без вложенной кросс-валидации, этот компонент подвергался осторожности. Для будущих применений рекомендовалась вложенная кросс-валидация с внешним 10-кратным циклом для оценки и внутренним 10-кратным циклом для выбора гиперпараметров PSO. Зазор обобщения ниже 0,08 считался приемлемым, тогда как разрыв выше 0,15 указывал на возможное переподгонка, требующее упрощения модели.
Оценка модели
Оценка модели проводилась с использованием стратифицированной 10-кратной кросс-валидации по итоговому набору признаков Xfinal. В каждом сгибе модели логистической регрессии и случайного леса обучались на обучающих данных и оценивались на основе валидационных данных. Точность, Точность, Отзыв, F1-балл и ROC-AUC рассчитывались с использованием classification_report и roc_auc_score из scikit-learn. Среднее и стандартное отклонение всех метрик вычислялись по 10 кратам.
Зазор обобщения также вычислялся для каждого сгибания следующим образом:
generalization_gap = training_accuracy − validation_accuracy
Был зафиксирован разрыв среднего обобщения по всем 10 кратам. Средний зазор ниже 0,08 считался признаком минимального переподгонки, тогда как разрыв выше 0,15 указывал на переподгонку и необходимость регуляризации или снижения сложности модели. Были проведены тесты Wilcoxon со знаковым рангом для сравнения предлагаемой структуры с базовыми методами в 10 разрядах с использованием α = 0,01.
Анализ объяснимости
Анализ объяснимости проводился с использованием методов, специфичных для модели и независимых от модели. Для логистической регрессии устанавливалась окончательная модель, и для каждого выбранного элемента извлекались значения коэффициентов. Коэффициенты шансов рассчитывались как exp(коэффициенты), а 95% доверительные интервалы — с использованием стандартных ошибок коэффициентов.
Для Random Forest оценки важности Джини извлекались из обученной модели с помощью атрибута feature_importances_ и нормализованы с суммой до 1. Объяснения SHAP создавались с использованием библиотеки SHAP. Объект KernelExplainer был создан с использованием обученной модели и фонового набора данных, таких как 100 случайно выбранных обучающих выборок. Значения SHAP вычислялись для всех экземпляров тестового набора с помощью shap_values. Сводные графики Beeswarm были созданы с использованием shap.summary_plot, а столбчатые графики со средними абсолютными значениями SHAP — с использованием shap.bar_plot.
Для основных признаков, выявленных анализом SHAP, были сгенерированы графики частичной зависимости (PDP). Для каждого выбранного признака создавалась последовательность значений, охватывающих диапазон признаков. Каждое значение подставлялось в столбце признаков, при этом остальные признаки оставались постоянными, и средняя предсказанная вероятность рассчитывалась для всех экземпляров. Значения признаков были нанесены на график по средним предсказаниям с помощью matplotlib. Доверительные интервалы в 95% были добавлены с помощью 100 итераций ресемплирования bootstrap.
Индивидуальные графики условного ожидания (ICE) генерировались для выбранных признаков путём построения траекторий прогноза для отдельных экземпляров по мере изменения значений признаков. Линия PDP была наложена на график ICE. Методы объяснения сравнивались путём вычисления корреляции ранга Спирмана между коэффициентами шансов логистической регрессии и значениями SHAP случайного леса с помощью scipy.stats.spearmanr. Расхождения между методами объяснения были задокументированы для клинической интерпретации. Когда коэффициенты SHAP и логистической регрессии конфликтовали, PDP для этой особенности изучался. Если PDP показывал нелинейную тенденцию, объяснение SHAP давалось приоритетом над коэффициентом логистической регрессии, поскольку Random Forest может зафиксировать нелинейные связи, которые не могут линейные модели.
Протокол обобщения фреймворка для внешней валидации с использованием MIMIC-III
Был разработан внешний протокол валидации для применения фреймворка к базе данных MIMIC-III. Доступ к MIMIC-III потребует одобрения PhysioNet и прохождения необходимого обучения на людях. Предлагаемая когорта будет включать взрослых пациентов в возрасте 18 лет и старше с первым поступлением в реанимацию и кодами ICD-9 410–414 для острого инфаркта миокарда или кодами ICD-10 I20–I25 для ишемической болезни сердца. Критерии исключения включают более 30% отсутствующих значений в целевых признаках, продолжительности пребывания ниже 24 часов, возрасте выше 90 лет, предшествующих кардиохирургических операциях или врождённых заболеваниях сердца.
Предлагаемый результат — крупные побочные сердечные события (MACE) в течение 72 часов после поступления, определяемые как сочетание смертности в больнице, кардиогенного шока или желудочковой аритмии, требующих вмешательства. Временные серии, такие как частота сердечных сокращений и артериальное давление, будут агрегироваться за первые 24 часа пребывания в реанимации с использованием среднего, медианного, минимального, максимума и тренда, где тенденция оценивается как наклон линейной регрессии во времени. Максимальная частота сердечных сокращений будет использоваться как отображённый эквивалент талаха.
Особенности набора данных Кливленда будут сопоставлены с переменными MIMIC-III. Например, thalach будет сопоставлен с максимальной частотой сердечных сокращений, зафиксированной в первые 24 часа пребывания в реанимации, cp — к структурированным оценкам боли и упоминаниям боли в груди, извлеченной с помощью NLP, а oldpeak — с отклонением сегмента ST от отчётов ЭКГ. Создаётся таблица отображения для документирования всех выравниваний объектов.
Перед применением полного конвейера экстракция NLP для олдпика проверяется на 100 случайно выбранных отчётах ЭКГ. Точность, воспоминание и результат F1 рассчитывались на основе ручной аннотации двумя клиницистами. Если оценка F1 ниже 0,85, шаблоны регулярных выражений будут пересмотрены или использоваться структурированные данные ЭКГ из chartevents в качестве альтернативы. Конвейер предварительной обработки затем повторялся на извлеченных данных MIMIC-III, GAN переобучался для дополнения, выбор гибридных функций применялся заново, модели переобучались, генерировались объяснения и сравнивались показатели производительности с результатами наборов данных Кливленда.
Внедрение клинической панели управления
Веб-прототип клинической панели был разработан с использованием фреймворка, таких как Flask или Django. Конечные точки API HL7/FHIR планировались для интеграции с EHR, с аутентификация и авторизация, настроенные в соответствии с институциональными политиками безопасности. Функции отображения данных были разработаны для преобразования данных ЭМК в формат входных моделей.
Пользовательский интерфейс включал три основных вида. Просмотр предварительного скрининга показывал демографические данные пациентов и рассчитывал оценки риска с цветовыми кодами. Вид поддержки принятия решений показывал диаграмму водопада SHAP, показывающую основные факторы, способствующие конкретному пациенту. Взгляд на планирование вмешательства позволял анализировать «что если» путём корректировки изменяемых факторов риска и отображения обновлённых прогнозов рисков. Была включена функция экспорта для сохранения отчётов в формате PDF или их интеграции с системами документации EHR.
Для будущего клинического внедрения была запланирована оценка удобства управления панелями с участием как минимум пяти специалистов. Оценка будет использоваться по шкале удобства использования системы с целевым баллом выше 68, временем выполнения задачи с снижением цели не менее чем на 20% по сравнению с использованием ЭМК и 5-балльной шкалы удовлетворенности для ясности и доверия к объяснению. Эта оценка удобства использования была запланирована как будущий шаг и не была реализована в текущем исследовании.