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

  • PatientId: идентификатор пациента.
  • AppointmentID: идентификатор каждой встречи.
  • Пол: мужской или женский.
  • AppointmentDay: день встречи.
  • ScheduledDay: день, когда пациент записался на прием.
  • Возраст: возраст пациента.
  • Район: место встречи.
  • Стипендия: указывает, участвует ли пациент в программе государственной помощи.
  • Гипертония: если у пациента гипертония.
  • Диабет: если у пациента диабет.
  • Алкоголизм: если пациент алкоголик.
  • Инвалид: если у пациента есть инвалидность.
  • Получено SMS: если пациенту было отправлено сообщение
  • Нет - показать: пропустил пациент или нет.

Вступление

Можно увидеть, что большинство людей, почти 80%, приходят на прием к врачу. Но для тех, кто не знает, что может повлиять?

Раздел I. Какие факторы влияют на пропуск приема к врачу?

В этом разделе мы исследуем, какие факторы могут повлиять на пропуск человека на прием.

  1. Имеет ли значение время ожидания до встречи?

Более 40% людей, которые ждали менее 15 дней, приходили на прием к врачу, а из тех, кто ждал более месяца, приходили менее 10%. Для людей, которые опаздывали на прием, большая часть ожидала от 1 недели до 1 месяца. Кажется, что ожидание менее 15 дней увеличивает вероятность того, что человек пойдет на консультацию к врачу.

2. Имеет ли значение возраст?

Можно увидеть, что группы «Молодые взрослые» и «Подростки» имеют тенденцию пропускать больше встреч. Старшие люди, как правило, более надежны в плане появления на работе. Для группы «Чайлдс» существенной разницы между двумя группами нет (обе остались на уровне почти 20%).

3. Пропускает ли встречу, прежде чем снова пропадает?

Мы можем проверить, не пропустил ли человек встречу, и создать новую функцию под названием «missed_appointment_before» и проверить корреляцию с неявкой. У них есть корреляция 0,63, что является значительным.

The correlation between missed before and no-show is: 0.630

Раздел II: Прогнозирование того, что человек пропустит встречу

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

Чтобы справиться с проблемой дисбаланса классов, был использован подход из https://developers.google.com/machine-learning/data-prep/construct/sampling-splitting/imbalanced-data, и были выполнены следующие шаги:

репозитории есть сравнение этого подхода и использования всего набора данных с использованием классификаторов Random Forests и GradientBoosting)

  1. Очистите данные, выполните проектирование функций и одно горячее кодирование категориальных функций
  2. Используйте понижающую дискретизацию и повышающий вес для набора данных перед построением модели
  3. Создайте классификатор
  4. Используйте точность и показатель F1 для оценки результатов

Последней моделью был GradientBoostingClassifier со следующими результатами:

GB - Accuracy: 89.36%
GB - Precision score: 84.55%
GB - Recall score: 96.30%
GB - F1-score: 90.04%

Было бы ошибкой смотреть только на точность, если просто предположить, что все люди придут на встречу, вы получите точность почти 80% (это называется наивным классификатором).

Если мы хотим найти людей, которые пропустят встречу, то тех, кого не хватает наивному классификатору. Было бы неплохо взглянуть на метрику, учитывающую точность и отзывчивость. Это будет оценка F1, поэтому эта окончательная модель была выбрана на основе этой метрики.

Заключение

  • Подождать менее 15 дней до встречи - отличный показатель того, что человек ее не пропустит.
  • Старшие более надежны при посещении врача. Группы "Молодые люди" и "Подростки" часто пропускают встречи.
  • Было возможно построить модель со счетом F1 90% для прогнозирования неявок.