Неявка на прием или опоздание на прием к врачу - обычное дело и дорого обходится медицинским учреждениям. Исследование в США показало, что до 30% пациентов пропускают приемы, и ежегодно из-за них теряется 150 миллиардов долларов.

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

Набор данных

Набор данных Kaggle включал 110 тыс. Записей о приемах в государственные учреждения здравоохранения одного бразильского города. Назначения произошли в течение 6 недель в 2016 году.

Вот краткое описание возможностей набора данных:

Идентификаторы пациентов не были уникальными, что позволяет предположить, что один и тот же пациент посещал несколько сеансов в течение 6-недельного периода. Чтобы избежать утечки данных (которая могла бы произойти, если бы для проверки и тестирования использовались данные одного и того же пациента), мы будем включать в наши модели только последнее посещение пациента.

Очистка данных

Было 2 основных этапа очистки:

  1. Двоичное кодирование (1,0). Неявка, пол и инвалидность. Я предположил, что гандикап был двоичным из-за его описания на Kaggle.
  2. Отбрасывание наблюдений, которые имели логические несоответствия, такие как отрицательный возраст, и когда запланированные даты были позже дат встречи.

Функциональная инженерия

Разработка функций использовалась для перекодирования функций datetime и сохранения информации, полученной из предыдущих встреч (до последних).

Предыдущие неявки и предыдущие посещения были рассчитаны путем вычитания 1 из общего количества неявок и назначений каждого пациента соответственно.

Запланированная дата и дата встречи были разделены на день недели (DoW) и день месяца. Плановое время также было разделено на час дня.

Разница в днях - это разница в днях между запланированной датой и датой встречи.

Общие состояния складывались из гипертонии, диабета, инвалидности и алкоголизма. Другими словами, он указывает количество состояний, от которых страдает пациент.

Выбор функции

Характеристики были выбраны на основе их Информационной ценности (IV), которая ранжирует и оценивает характеристики в зависимости от того, насколько хорошо они предсказывают цель.

Характеристики с показателем IV

Оказывается, большинство функций плохо предсказывали цель.

Кроме того, были удалены функции идентификации, избыточные функции и окрестности. Окружение было удалено, потому что мне не удалось найти дополнительную информацию о них, а включение 80 фиктивных переменных в модель было нежелательным.

Около 62 тысяч наблюдений осталось после очистки данных и выбора признаков. 20% из них не явились.

5-кратная перекрестная проверка

Набор данных был разделен на 20% тестовых и 80% наборов данных перекрестной проверки.

Используя 5 групп обучения и проверки, данные были подогнаны по четырем алгоритмам обучения с учителем:

  1. Логистическая регрессия
  2. Наивный байесовский
  3. K-ближайший сосед (KNN)
  4. Случайный лес

RandomCVSearch (5 раз, 10 итераций, 50 совпадений) использовался для настройки гиперпараметров для KNN и Random Forest.

Модели оценивались на основе их средней точности и показателей рабочей характеристики приемника «Площадь под кривой» (ROC AUC).

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

Примечание: я не использовал оценку F1, потому что она зависела от выбранного порога классификации, который я намеревался настроить после выбора модели. Я использовал показатель ROC AUC и точность, потому что мне нужна была лучшая модель независимо от порога.

Проверка с использованием дополнительных данных.

Поскольку перекрестная проверка не была полезной для выбора модели, 80%, использованные для обучения и проверки, были повторно разделены на 60% обучения и 20% проверки. (Ранее перекрестная проверка использовала 64% для обучения и 16% для проверки для каждой складки). Будем надеяться, что наличие большего набора для валидации сделает различия между моделями более очевидными.

Из анализа кривой ROC мы видим, что RandomForest превзошел другие алгоритмы. Его точность также была сопоставима с другими. В дальнейшем мы будем использовать RandomForest в качестве нашей модели.

Настройка пороговых значений классификации

Пороги классификации для RandomForest были настроены на основе предположения, что медицинские учреждения захотят протестировать вмешательства перед их массовым внедрением. Следовательно, точность была важнее отзыва.

Я выбрал порог 0,38, потому что он был примерно в момент сужения двух кривых. Этот порог означал, что неявки будут правильно идентифицироваться в 74% случаев (точность), и около четверти всех неявок будут идентифицированы (отзыв).

Тестирование

Модель была повторно обучена с использованием 80% данных и протестирована на оставшихся 20%.

Оценки тестов были аналогичны оценкам валидации, что говорит о том, что модель хорошо обобщает.

Более пристальный взгляд на RandomForest

Важность функции RandomForest показывает, что разница в днях и предыдущие неявки были важны для прогнозирования неявок.

В частности, для неявок, как правило, большая разница между запланированным и назначенным днем, а также история неявок.

Знание важности функции полезно для выбора мер вмешательства. Например, пациенты, которые заранее записались на прием, скорее всего, забыли о них. Возможное вмешательство могло бы заключаться в том, чтобы иметь больше личных точек соприкосновения с пациентом (например, телефонные звонки, поскольку SMS-сообщения не кажутся эффективными).

С другой стороны, причина может быть более привычной для пациентов, не явившихся в анамнез. Если учреждения не могут убедить этих пациентов явиться, двойное резервирование их места может быть возможным решением.

Заключение

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

*** Посмотрите коды на моем GitHub