Мотивация:

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

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

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

Набор данных:

Набор данных содержит 5,6 млн наблюдений и 27 входных функций. Целевая переменная (СТАТУС) может принимать 3 значения: одобрено, отклонено и отменено. В учебных целях я рассматривал только одобренный или отклоненный статус, и поэтому я создаю двоичный классификатор.

Разработка функций:

Здесь происходит предварительная обработка данных.

  1. Сначала я вручную удалил менее важные функции, такие как Prior_auth_num, Prior_auth_created_date, account_id, direction_for_use, plan_code, state_code и т. д. Этот процесс уменьшил количество моих функций с 27 до 14.
  2. удаление нулевых значений. это уменьшило количество наблюдений с 5,6 млн до 5,1 млн.
  3. сохранение только тех замечаний, статус которых одобрен или отклонен. Этот шаг уменьшает количество наблюдений с 5,1 млн до 4,8 млн.
  4. для категориальных признаков с высокой кардинальностью удалены менее часто используемые категории для каждого признака. наблюдения сократились с 4,8 млн до 2,9 млн.
  5. для категориальных функций с несколькими категориями мы используем кодировщик меток
  6. для категориальных функций с высокой кардинальностью мы используем хеширование функций для их кодирования. Количество функций увеличилось с 14 до 282.
  7. Я также попробовал целевое кодирование, но это не дало такой точности, как хеширование признаков.
  8. класс несбалансирован, поэтому мы применяем избыточную выборку, чтобы получить одинаковые выборки в каждом классе состояния. после этого шага количество наблюдений увеличивается до 3,6 млн с 282 функциями.
  9. Мы масштабируем наш набор данных, чтобы получить среднее значение = 0 и дисперсию = 1.

Выбор модели:

  1. XGB: я попробовал классификатор xgb и настроил гиперпараметры на количество деревьев. Я получил точность 80% с этим.
  2. Глубокая нейронная сеть: затем я построил нейронную сеть с 3 скрытыми слоями, размером пакета 32, оптимизатором Адама и бинарной кросс-энтропийной потерей. Это дало мне точность обучения 86% и точность тестирования 83%.

Методы кодирования для преобразования категориальных признаков в числовые

1) Хэширование функций

Кодирование признаков для категориальных признаков с высокой кардинальностью.

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

Следовательно, хеширование функций используется, когда кардинальность функций высока. Так что это похоже на one-hot, но с меньшим количеством измерений, и из-за коллизий происходит некоторая потеря информации. Следовательно, это форма уменьшения размерности.

2) Целевое кодирование

Он заменяет категориальное значение средним значением целевой переменной.

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