Как улучшить мою NLP-модель с несбалансированными данными?

Вопрос или проблема

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

Текущий подход –

  1. векторизовать все заметки, используя модель scispacy от spacy и суммировать все векторы, сгруппированные по id пациента и дню. (200 столбцов)
  2. найти единичные векторы вышеуказанных векторов. (200 столбцов)
  3. использовать функцию скользящего среднего на векторах, сгруппированных по id пациента и дню. (200 столбцов)
  4. найти единичные векторы вышеупомянутых векторов скользящего среднего (200 столбцов)
  5. объединить все вышеуказанные столбцы и использовать их как независимые признаки.
  6. использовать классификатор lgbm.

Данные несбалансированы, и текущий AUC-ROC составляет около .78.

Что еще я могу сделать, чтобы улучшить мой AUC-ROC?
Могу ли я использовать bert для этой задачи? как я должен его использовать?

Я в настоящее время использую скользящее среднее, так как здоровье пациента ухудшается со временем.

Любые предложения/ответы/обратная связь?

Ваш лучший выбор – использовать модуль python ktrain. Есть примерные ноутбуки для каждой задачи NLP (также очень простые и легкие для повторения)

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

Я также призываю вас просмотреть все примеры и найти вдохновение, как конкретно справиться с вашим случаем использования. Этот модуль поддерживает autoNLP с рядом инструментов предварительной обработки данных. Также вы можете выбрать любую модель из библиотеки huggingface.

Ответ или решение

Как улучшить модель NLP для обработки несбалансированных данных?

Если цель вашей модели — прогнозировать вероятность ухудшения здоровья пациентов и выявлять 10 самых больных пациентов в больнице, имеет смысл оптимизировать вашу текущую методологию. Существующая AUC-ROC в 0,78 указывает на простор для улучшений. Рассмотрим несколько подходов:

Анализ текущего подхода

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

Стратегии улучшения

  1. Переход на более продвинутые модели NLP, такие как BERT:

    Использование моделей трансформеров, таких как BERT, может существенно улучшить качество вашей модели. Они предоставляют более точное представление текста благодаря контекстной обработке. Попробуйте использовать предобученные модели BERT из библиотеки Hugging Face и настроить их под вашу задачу.

  2. Аугментация данных:

    Поскольку ваши данные несбалансированы, эффективный способ улучшить модель — это использовать методы аугментации данных. Рассмотрите смещения выборки (oversampling), такие как SMOTE, или undersampling для сбалансировки классов.

  3. Кросс-валидация и гиперпараметрическая оптимизация:

    Проведите кросс-валидацию для лучшего понимания поведения модели. Используйте случайный поиск (random search) или байесовскую оптимизацию для определения оптимальных гиперпараметров.

  4. Взвешенные потери:

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

  5. Эксперименты с семантической агрегацией:

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

Инструменты и библиотеки

Изучите модуль ktrain, который предоставляет простые интерфейсы для работы с продвинутыми моделями NLP. Он поддерживает автотюнинг и может помочь вам экспериментировать с различными подходами к решению вашей задачи. Также, ознакомьтесь с вариантом использования различной предобработки данных и текстовых трансформеров из библиотеки Hugging Face.

Заключение

Совершенствование модели для несбалансированных данных требует комплексного подхода: от выбора правильных инструментов и моделей до применения методик балансировки классов и оптимизации модели. Использование BERT и других аналогичных моделей, а также эффективная обработка и аугментация данных помогут вам повысить вашу AUC-ROC.

Оцените материал
Добавить комментарий

Капча загружается...