Интеграция данных с течением времени в lightgbm

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

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

В основном, я хочу иметь возможность включать исторические тенденции в модель lightgbm, которую я использую. В основном у меня есть куча категориальных данных о здоровье, но по умолчанию модель в настоящее время проверяет каждое значение изолированно. Например, возьмем кровяное давление (BP). В настоящее время модель получает только одно измерение BP на строку. Таким образом, хотя она знает исторические значения в своем обучающем наборе, она (насколько я понимаю) не учитывает тенденции (например, рост BP за последние 5 встреч).

Многие мои предварительные исследования направили меня на использование прогнозирования временных рядов, но это не совсем то, что я хочу. Я не пытаюсь экстраполировать, какое будет следующее измерение кровяного давления на основе тенденции (что было бы прогнозированием временных рядов), я пытаюсь включить ‘кровяное давление растет, значит, человек более подвержен риску’.

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

Или, возможно, я просто неправильно понимаю, и это вовсе не правильный подход. Или если lightgbm не подходит для этого (я знаю, что xgboost имеет проблемы с экстраполяцией, и он в аналогичном семействе градиентного бустинга).

LightGBM и XGBoost используют по сути один и тот же тип модели, а именно бустинг. Обычно бустинг является “деревяным”, что означает, что (поверхностные) регрессионные/классификационные деревья последовательно подгоняются к остаткам (см. здесь и здесь для некоторых постов о бустинге).

Модели на основе деревьев часто “плохо” учитывают (линейные) временные тенденции. Они могут “игнорировать” или неправильно интерпретировать временные тенденции, закодированные как “дополнительные”. Добавление временных тенденций в виде целых чисел (t=1, 2, 3) может сработать (как монотонно возрастающее значение).

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

Иметь “окно” BP было бы по сути тем же, что и задержка (то есть добавить BP за последний период и за период до этого и т.д.). Это также должно хорошо работать с (деревянным) бустингом. Таким образом, у вас есть BP в качестве характеристики плюс (в дополнение) несколько характеристик запаздывающего BP. Я предлагаю попробовать это в бустинге и сравнить с линейной моделью. Однако один или два “задержанных” значения BP, я думаю, будет достаточно.

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

Включение исторических данных в модель LightGBM: практическое руководство

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

1. Понимание проблемы

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

2. Лаговые признаки и скользящие окна

Одним из самых эффективных методов для обеспечения учета исторических данных в модель является создание лаговых признаков. Лаговые признаки — это значения, которые представляют собой предыдущие измерения (или их комбинации). Например, вы можете создать признак "BP_предыдущее", который будет отражать значение артериального давления за последнюю встречу, и "BP_предпредыдущее" для того, что было дважды до этого. Это позволит модели не только видеть текущее значение, но и тренды.

Кроме того, вы можете использовать скользящие окна. Например, можно взять среднее значение АД за последние 5 встреч. Это будет представлять собой более интегрированное преобразование, улавливающее изменение состояния в динамике:

  • BP_скользящее_среднее_5 = (BP_t + BP_(t-1) + BP_(t-2) + BP_(t-3) + BP_(t-4)) / 5

Таким образом, у вас будет возможность анализировать не только отдельные точечные измерения, но и общий тренд за такое окно.

3. Включение дополнительных временных признаков

Помимо вышеописанных методов, вы можете рассмотреть возможность добавления других признаков, описывающих временные аспекты:

  • Временные метки: Включите информацию о годе, месяце, неделе или дне месяца. Это может иметь значение, если, например, результаты зависят от времени года.
  • Периодические тренды: Используйте синусоидальные признаки для отслеживания сезонных эффектов, если вы замечаете такие изменения.

4. Использование линейных моделей в сочетании с деревьями решений

Следует также отметить, что деревья решений (такие как LightGBM) могут не всегда эффективно захватывать линейные тренды. Одним из решений может стать комбинирование производительности линейные моделей и моделей на основе деревьев. Таким образом, используйте линейные модели для улавливания базовых трендов, а как дополнение применяйте деревья для учета сложных нелинейных зависимостей.

5. Тестирование и валидация

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

Заключение

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

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

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