Вопрос или проблема
Я хочу классифицировать здоровье пациента как вероятность прогноза и получить 10 самых больных пациентов в больнице. У меня есть заметки о состоянии пациента, медицинские заметки, заметки о диагнозах и лабораторные заметки за каждый день.
Текущий подход –
- векторизовать все заметки, используя модель scispacy от spacy и суммировать все векторы, сгруппированные по id пациента и дню. (200 столбцов)
- найти единичные векторы вышеуказанных векторов. (200 столбцов)
- использовать функцию скользящего среднего на векторах, сгруппированных по id пациента и дню. (200 столбцов)
- найти единичные векторы вышеупомянутых векторов скользящего среднего (200 столбцов)
- объединить все вышеуказанные столбцы и использовать их как независимые признаки.
- использовать классификатор lgbm.
Данные несбалансированы, и текущий AUC-ROC составляет около .78.
Что еще я могу сделать, чтобы улучшить мой AUC-ROC?
Могу ли я использовать bert для этой задачи? как я должен его использовать?
Я в настоящее время использую скользящее среднее, так как здоровье пациента ухудшается со временем.
Любые предложения/ответы/обратная связь?
Ваш лучший выбор – использовать модуль python ktrain. Есть примерные ноутбуки для каждой задачи NLP (также очень простые и легкие для повторения)
Я не уверен, размечены ли ваши данные. Я предполагаю, что нет, поэтому я бы выбрал пример текстовой регрессии. Альтернативно, вы можете выбрать пример текстовой классификации и попробовать переформулировать вашу задачу, чтобы как-то постепенно достичь конечной вероятности, которую вы преследуете.
Я также призываю вас просмотреть все примеры и найти вдохновение, как конкретно справиться с вашим случаем использования. Этот модуль поддерживает autoNLP с рядом инструментов предварительной обработки данных. Также вы можете выбрать любую модель из библиотеки huggingface.
Ответ или решение
Как улучшить модель NLP для обработки несбалансированных данных?
Если цель вашей модели — прогнозировать вероятность ухудшения здоровья пациентов и выявлять 10 самых больных пациентов в больнице, имеет смысл оптимизировать вашу текущую методологию. Существующая AUC-ROC в 0,78 указывает на простор для улучшений. Рассмотрим несколько подходов:
Анализ текущего подхода
Ваш текущий метод включает векторизацию заметок пациентов с помощью модели SciSpacy, а также использование LightGBM в качестве классификатора. Этот процесс достаточно сложен, но при работе с несбалансированными данными существуют более эффективные стратегии.
Стратегии улучшения
-
Переход на более продвинутые модели NLP, такие как BERT:
Использование моделей трансформеров, таких как BERT, может существенно улучшить качество вашей модели. Они предоставляют более точное представление текста благодаря контекстной обработке. Попробуйте использовать предобученные модели BERT из библиотеки Hugging Face и настроить их под вашу задачу.
-
Аугментация данных:
Поскольку ваши данные несбалансированы, эффективный способ улучшить модель — это использовать методы аугментации данных. Рассмотрите смещения выборки (oversampling), такие как SMOTE, или undersampling для сбалансировки классов.
-
Кросс-валидация и гиперпараметрическая оптимизация:
Проведите кросс-валидацию для лучшего понимания поведения модели. Используйте случайный поиск (random search) или байесовскую оптимизацию для определения оптимальных гиперпараметров.
-
Взвешенные потери:
Для работы с несбалансированными данными, добавьте веса для потерь в функцию настройки модели, что позволит алгоритму сильнее реагировать на менее представленные классы.
-
Эксперименты с семантической агрегацией:
Рассмотрите использование средних, медианных и других статистических агрегаций ваших векторов для улучшения общего представления текста. Кроме очевидной средней, иногда другие агрегаты могут уловить важные аспекты данных.
Инструменты и библиотеки
Изучите модуль ktrain
, который предоставляет простые интерфейсы для работы с продвинутыми моделями NLP. Он поддерживает автотюнинг и может помочь вам экспериментировать с различными подходами к решению вашей задачи. Также, ознакомьтесь с вариантом использования различной предобработки данных и текстовых трансформеров из библиотеки Hugging Face.
Заключение
Совершенствование модели для несбалансированных данных требует комплексного подхода: от выбора правильных инструментов и моделей до применения методик балансировки классов и оптимизации модели. Использование BERT и других аналогичных моделей, а также эффективная обработка и аугментация данных помогут вам повысить вашу AUC-ROC.