Изучение важного показателя эффективности здравоохранения

Обзор проекта

Прогнозная аналитика становится все более важным инструментом в области здравоохранения, поскольку современные методы машинного обучения (ML) могут использовать большие объемы доступных данных для прогнозирования индивидуальных результатов для пациентов. Например, прогнозы машинного обучения могут помочь поставщикам медицинских услуг определить вероятность заболевания, помочь в диагностике, порекомендовать лечение и спрогнозировать будущее благополучие. В этом проекте я решил сосредоточиться на более логистической метрике здравоохранения - длительности пребывания в больнице (LOS). LOS определяется как время между поступлением в больницу и выпиской, измеряемое в днях.

Пребывание в больнице в США обходится системе здравоохранения не менее 377,5 миллиардов долларов в год, а недавнее законодательство о Медикэр стандартизирует платежи за выполняемые процедуры, независимо от количества дней, которые пациент проводит в больнице. Это стимулирует больницы выявлять пациентов с высоким риском LOS при поступлении. После выявления пациентов с высоким риском LOS можно оптимизировать план лечения, чтобы свести к минимуму LOS и снизить вероятность возникновения внутрибольничного состояния, такого как инфекция стафилококка. Еще одно преимущество заключается в том, что предварительное знание LOS может помочь в логистике, например в планировании распределения комнат и коек.

Постановка задачи

Цель этого проекта - создать модель, которая прогнозирует продолжительность пребывания в стационаре для каждого пациента на момент поступления.

Мои первоначальные мысли заключались в том, что использование метода ансамбля усиления случайного леса или градиентного дерева даст наилучшие результаты. Причина этого в том, что ансамблевые методы объединяют несколько алгоритмов обучения, чтобы получить более высокую прогнозирующую способность, чем то, что можно было бы получить с помощью одного алгоритма, и часто используются в соревнованиях Kaggle. Однако первым шагом был поиск подходящего набора данных.

В качестве отправной точки для поиска данных я интуитивно предполагал, что набор данных в идеале должен включать такие характеристики, как категория диагноза пациента (например, болезнь сердца, роды, травма / отравление и т. Д.), Возраст, пол, семейное положение и раса. После поиска полезной медицинской базы данных я остановился на базе данных MIT MIMIC-III из-за большого количества содержащейся в ней информации. MIMIC описывается следующим образом:

MIMIC - это общедоступный набор данных, разработанный лабораторией вычислительной физиологии Массачусетского технологического института, содержащий обезличенные данные о состоянии здоровья примерно 40 000 пациентов в интенсивной терапии. Он включает в себя демографические данные, показатели жизнедеятельности, лабораторные анализы, лекарства и многое другое.

В качестве примечания: для доступа к MIMIC необходимо пройти учебный курс по этике исследований и комплаенс и заполнить форму заявки на исследование. Единственным очевидным недостатком, который я обнаружил, было то, что база данных не включает педиатрическую информацию (возраст 2–13 лет).

Чтобы предсказать LOS в больнице, данные MIMIC необходимо разделить на зависимую целевую переменную (в данном случае продолжительность пребывания) и независимые переменные (характеристики), которые будут использоваться в качестве входных данных для модели. Поскольку LOS - это не категориальная, а непрерывная переменная (измеряемая в днях), для прогнозирования будет использоваться регрессионная модель. Вполне вероятно (и это оказалось правдой), что данные нуждались в значительной очистке и проектировании функций, чтобы они были в формате, совместимом с моделью обучения. Для этого проекта я использовал библиотеки Pandas и scikit-learn для Python.

Метрики

Ожидаемый результат этого проекта - разработка модели, которая будет лучше прогнозировать LOS в больнице, чем отраслевые стандарты медианы и среднего LOS. Медиана LOS - это просто медиана LOS прошлых госпитализаций. Точно так же вторым широко используемым показателем в здравоохранении является средний или средний LOS. Чтобы измерить производительность, я сравню модель прогнозирования со средней и средней LOS, используя среднеквадратичную ошибку (RMSE). RMSE - это обычно используемая мера различий между значениями, предсказанными моделью, и наблюдаемыми значениями, где более низкий балл означает лучшую точность. Например, идеальная модель прогнозирования будет иметь RMSE, равную 0. Уравнение RMSE для этой работы представлено следующим образом, где (n) - количество записей о госпитализации, (y-шляпа) LOS прогноза и (y) это фактическая LOS.

Конечная цель - разработать модель прогнозирования, которая дает более низкое среднеквадратичное значение, чем средняя или медианная модели.

Для прогнозирования LOS доступно множество регрессионных моделей. Чтобы определить лучшую регрессионную модель для этой работы (из подмножества моделей, которые будут оцениваться), будет использоваться оценка R2 (R-квадрат). R2 - это показатель соответствия модели. Другими словами, это пропорция дисперсии зависимой переменной, которую можно предсказать из независимых переменных. R2 определяется как следующее уравнение, где (y_i) - точка наблюдаемых данных, (ŷ) - среднее значение наблюдаемых данных и (f_i ) прогнозируемое модельное значение.

Наилучшая возможная оценка R2 составляет 1,0, а отрицательное значение означает, что в данном случае она хуже, чем у постоянной модели, среднего или медианного значения.

Исследование данных и разработка функций

После нескольких итераций просмотра содержимого различных таблиц в базе данных MIMIC я выбрал следующие таблицы и загрузил их в DataFrames с помощью Pandas: ADMISSIONS.csv, PATIENTS.csv, DIAGNOSES_ICD.csv, и ICUSTAYS.csv.

Таблица ADMISSIONS содержит такую ​​информацию, как SUBJECT_ID (уникальный идентификатор пациента), HADM_ID (идентификатор госпитализации), ADMITTIME (дата / время поступления), DISCHTIME (время выписки), DEATHTIME и т. Д. В таблице было 58 976 случаев госпитализации и 46 520 уникальных пациентов, что казалось разумным объемом данных для исследования модели прогнозирования. Для начала я создал столбец продолжительности пребывания, взяв разницу между временем поступления и выписки для каждой строки. Я решил отбросить строки с отрицательным значением LOS, поскольку это были случаи, когда пациент умирал до госпитализации. Кроме того, я обнаружил, что 9,8% случаев поступления приводили к смерти, поэтому я удалил их, поскольку они не входят в типичные показатели LOS. Распределение LOS по дням смещено вправо со средним значением 10,13 дня, средним значением 6,56 дня и максимальным значением 295 дней.

В столбце допуска этническая принадлежность было более 30 категорий, которые можно было легко сократить до пяти, указанных ниже. Интересно, что категория азиатские имеет самую низкую медианную LOS набора данных.

Что касается религии, я сократил список до трех категорий: недостижимый (13% поступлений), религиозный (66% поступлений) или не указано (20% поступлений). Группа недостижимая имеет самую низкую медианную LOS.

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

В этом наборе данных есть интересная информация, которая показывает, что при приеме с оплатой за себя (часто означает отсутствие оплаты) LOS намного короче, чем в других категориях страхования. Medicare и Medicaid занимают верхние позиции по медиане LOS, что может быть связано с возрастом пациентов в этих системах.

В таблице ПАЦИЕНТЫ указаны неидентифицированная дата рождения и пол. Поскольку набор данных MIMIC не предоставляет реальную дату рождения для защиты личности пациентов, мне нужно было спроектировать возрастную характеристику, используя следующий декодер: возраст пациента определяется разницей между датой их рождения DOB и датой рождения. дата их первого поступления. Имея это в виду, я объединил фреймы данных PATIENTS и ADMISSIONS и использовал "groupby" для извлечения времени первого поступления для каждого пациента.

df [[‘SUBJECT_ID’, ‘ADMITTIME’]]. groupby (‘SUBJECT_ID’). min (). reset_index ()

Изучив разницу между временем выписки и первым поступлением, я смог взглянуть на возрастное распределение пациентов. Следует отметить, что пациенты ›89 лет относятся к той же возрастной группе в MIMIC.

Хотя данные о новорожденных пациентах включены в набор данных MIMIC, детский возраст - нет. Чтобы добавить измерение к графику возрастного распределения, я посмотрел, что LOS по сравнению с возрастом. Сюжет выделяет группы MIMIC новорожденных и ›89-летних, в которые число поступающих растет с 20 до 80 лет. Из-за дискретного распределения данных по крайнему возрасту я решил преобразовать все возрасты в категории новорожденный, молодой взрослый, средний возраст и старший для использование в модели прогнозирования.

Таблица DIAGNOSES_ICD представляет собой самую большую проблему с точки зрения разработки функций. Таблица состоит из идентификаторов пациента и госпитализации, а также кода ICD9, который описывается следующим образом (источник):

Международная классификация болезней, клиническая модификация (ICD-9-CM) - это адаптация, созданная Национальным центром статистики здравоохранения США (NCHS) и используемая для присвоения диагностических и процедурных кодов, связанных с использованием стационарных, амбулаторных больных и кабинетов врача в США. Состояния.

Я мог бы создать фиктивные переменные для каждого кода, но в данном случае это не имело смысла. В наборе данных MIMIC использовалось 6 984 уникальных кода и 651 047 диагнозов по МКБ-9, поставленных пациентам, поскольку у большинства из них было диагностировано более одного состояния. Посмотрев на таблицу, вы увидите, что код столбца ICD9_CODE использует подход переменной длины символа.

После некоторого расследования я обнаружил, что истинный синтаксис кода - это три цифры, за которыми следует набор десятичных знаков для подкатегорий. Например, код из первой строки - 403.01, который относится к диапазону заболеваний системы кровообращения, а значение .01 дополнительно указывает на хроническую гипертонию почек и связанные с ними заболевания. Кроме того, я заметил, что в МКБ-9 есть 17 основных категорий, поэтому я решил отсортировать все уникальные коды для допуска по этим категориям. Я полагал, что сокращение кодов МКБ-9 с 6984 до 17 сделает модель машинного обучения гораздо более понятной. Кроме того, я не хотел, чтобы какие-либо коды ICD-9 имели только одну целевую строку LOS, поскольку это усложнило бы обучение / тестирование. Наконец, я преобразовал коды сортировки ICD-9 в матрицу допуска-ICD9, сгруппировал диагноз для каждого приема и объединил новые столбцы обратно с первичным фреймом данных допуска в HADM_ID (идентификатор допуска). Вы можете видеть, что каждая строка (поступление) содержит несколько диагнозов, как и должно быть.

Рассмотрение медианы LOS для каждой суперкатегории МКБ-9 показывает впечатляющий разброс между группами кодов диагностики беременность и кожа. Как будет показано позже, категории диагнозов являются наиболее важными функциями при прогнозировании LOS.

Предварительная обработка данных

Даже после завершения проектирования признаков для возраста и МКБ-9 оставались некоторые незакрепленные участки, которые необходимо было исправить, прежде чем данные можно будет использовать для модели прогнозирования. Во-первых, я удостоверился, что никакие признания, приведшие к смерти, не были частью очищенного набора данных. Я удалил все неиспользуемые столбцы и убедился, что в данных нет NaN. Для столбцов тип поступления, тип страхования, религия, этническая принадлежность, возраст и семейное положение я выполнил Pandas get_dummies для преобразования этих категориальных переменных в фиктивные / индикаторные переменные. Окончательный размер DataFrame привел к 48 столбцам функций и 1 столбцу назначения с количеством записей 53 104.

Модель прогноза

Чтобы реализовать модель прогнозирования, я разделил целевую переменную и функции LOS на обучающий и тестовый наборы в соотношении 80:20 с помощью функции scikit-learn train_test_split.

X_train, X_test, y_train, y_test = train_test_split (функции,
LOS, test_size = .20)

Используя обучающий набор, я подобрал пять различных регрессионных моделей (из библиотеки scikit-learn) с настройками по умолчанию, а затем сравнил баллы R2 на тестовом наборе. GradientBoostingRegressor одержал победу с оценкой R2 ~ 37% с набором для тестирования, поэтому я решил сосредоточиться на доработке этой конкретной модели. Из-за прошлого успеха с RandomForestRegressor я играл с параметрами этой модели, но так и не смог превысить оценку GradientBoostingRegressor.

Чтобы уточнить модель GradientBoostingRegressor, я использовал функцию GridSearchCV из scikit-learn для тестирования различных перестановок параметров, таких как n_estimators, max_depth и loss . Лучший результат оценки от GridSearchCV: n_estimators = 200, max_depth = 4 и loss = ls. Это привело к незначительному улучшению: показатель R2 составил ~ 39% с тестовым набором.

Полученные результаты

Прежде чем взглянуть на эталонный тест RMSE, я хотел изучить, какие функции были наиболее важными для прогнозирования продолжительности пребывания в больнице при использовании регрессионной модели с градиентным бустом. У диагнозов, связанных с пренатальными проблемами, самый высокий коэффициент важности, за которым следуют респираторные и травмы. Как я уже упоминал ранее, категории диагнозов МКБ-9 на сегодняшний день являются наиболее важными характеристиками. Фактически, в 20 лучших функциях только экстренный тип госпитализации, пол и Medicaid страхование показали какое-либо значение за пределами диагностических групп.

В разделе метрик я заявил, что RMSE будет использоваться для сравнения модели прогнозирования со стандартными отраслевыми средними и медианными метриками LOS. RMSE модели повышения градиента лучше более чем на 24% (разница в процентах) по сравнению с моделями с постоянным средним или медианным значением.

Хотя тенденция RMSE является многообещающей, я также хотел оценить модель с нескольких других точек зрения. На следующем рисунке показаны первые 20 допусков из набора тестов и напрямую сравниваются фактическое, прогнозируемое (модель повышения градиента), среднее и медианное значения LOS. Это дает более запутанную картину модели прогнозирования; в одних случаях он предсказывает хорошо, а в других - хуже. Однако на основе оценки RMSE модель прогнозирования в целом будет более точной, чем использование медианы или средней LOS.

Последний способ, которым я хотел взглянуть на модель, - это построить график соотношения точных прогнозов в тестовом наборе и допустимой погрешности. Другие исследования квалифицируют прогноз LOS как правильный, если он попадает в определенные пределы погрешности. Отсюда следует, что по мере увеличения допустимой погрешности должна увеличиваться и доля точных прогнозов для всех моделей. Модель прогнозирования повышения градиента работает лучше, чем другие постоянные модели, в диапазоне погрешности до 50%.

Заключение

База данных MIMIC предлагает удивительно хорошую глубину и детализацию медицинских поступлений, что позволило мне создать модель прогнозирования продолжительности пребывания в больнице, которая учитывала множество интересных входных функций. Самым удивительным аспектом этой работы было то, что диагнозы пациента по МКБ-9 играли более важную роль, чем возраст, при прогнозировании продолжительности пребывания в стационаре. Безусловно, самым сложным аспектом этого проекта было преобразование функций диагнозов МКБ-9 в более практичную и интерпретируемую форму суперкатегорий. Однако в этом и заключается наиболее очевидная область для дальнейшего улучшения. Учитывая, что диагнозы имеют такую ​​значимость признаков, было бы целесообразно оценить, приведет ли дополнительное разделение основных категорий МКБ-9 к более совершенной модели прогнозирования. Моя теория заключается в том, что модель прогнозирования станет более точной (более низкая RMSE) с этой оптимизацией, если в наборе данных будет достаточно записей о допуске для поддержки обучения модели разумной диагностики.

Репозиторий GitHub для этого проекта доступен здесь с записной книжкой Jupyter, в которой подробно описаны все разделы, рассмотренные в этой публикации.

MIMIC-III, свободно доступная база данных интенсивной терапии. Johnson AEW, Pollard TJ, Shen L, Lehman L, Feng M, Ghassemi M, Moody B, Szolovits P, Celi LA и Mark RG. Научные данные (2016). DOI: 10.1038 / sdata.2016.35. Доступно по ссылке: http://www.nature.com/articles/sdata201635