Генеративное искусственное интеллекта для временных рядов

Генеративный ИИ для временных рядов

Генерация синтетических временных рядов с помощью GAN: DoppelGANger

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

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

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

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

Как вы генерируете временной ряд данных-близнеца?

Даже для опытного специалиста по анализу данных генерация синтетических данных может быть немного сложной, так как здесь есть много тонкостей, которые нужно учитывать. Действительно, определение наилучшего способа подготовки данных и выбора соответствующих моделей машинного обучения для синтеза данных является одной из основных тем, которые мы обсуждаем в сообществе Data-Centric AI.

В образовательных целях ydata-synthetic был нашим первым выбором, и мы много тестировали его с табличными данными. На этот раз мы экспериментируем с временными рядами данных, используя самую новую модель для генерации синтетических временных рядов — DoppelGANger.

Как можно догадаться по (потрясающему) названию, DoppelGANger играет на слове “Doppelganger” — это немецкое слово, которое означает двойника или двойника человека — и “GAN”, модель искусственного интеллекта.

Будучи основанной на GAN, для DoppelGANger применяются те же общие принципы, что и для GAN: генератор и дискриминатор непрерывно оптимизируются путем сравнения синтетических данных (созданных генератором) с реальными данными (которые дискриминатор или критик пытается отличить от синтетических). Однако, как уже упоминалось ранее, GAN традиционно испытывали сложности с особенностями временных рядов:

  • GAN-ы имеют трудности с захватом долгосрочных временных отношений. Один из распространенных подходов — использовать метод окон, то есть определить более короткие сегменты данных и оценивать модели только на этих сегментах. Такой подход использует TimeGAN. Однако для случаев, когда нам нужно воспроизвести весь временной ряд, с сохранением долгосрочных корреляций, это, к сожалению, невозможно;
  • GAN-ы сталкиваются с проблемой коллапса моды. Если данные имеют многомодальные распределения, то наименее представленные моды в конечном итоге исчезают. Временные ряды особенно подвержены этому, так как диапазон измерений часто является очень переменным;
  • GAN-ы имеют трудности с отображением сложных отношений между измерениями и атрибутами. А также между различными измерениями. Если вы вспомните структуру временных рядов, это будет случай, когда будет сложно отобразить связь между балансом счета и типом транзакции (атрибутом), а также между балансом счета и другими показателями, такими как размеры комиссий.

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

  • Для захвата временных корреляций DoppelGANger использует генерацию пакетов. Вместо генерации одной записи за раз он генерирует пакет записей. Это лучше подходит для длинных временных рядов и помогает сохранить временные корреляции, которые забываются при генерации отдельных записей;
  • Для борьбы с коллапсом моды DoppleGANger использует авто-нормализацию. Вместо нормализации входных данных по глобальным минимальным и максимальным значениям измерений каждый сигнал временного ряда нормализуется индивидуально. Минимальные и максимальные значения каждой соответствующей последовательности используются ​​как метаданные, которые GAN также учится генерировать, что снижает коллапс моды;
  • Чтобы отобразить отношения между измерениями и атрибутами, DoppelGANger моделирует совместное распределение между измерениями и атрибутами и вводит вспомогательного дискриминатора. Генерация атрибутов разделена от генерации измерений, условием являются атрибуты, генерация каждого из них выполняется с помощью отдельного генератора. Кроме того, вводится вспомогательный дискриминатор, который дискриминирует только атрибуты.
Обзор архитектуры DoppelGANger. Изображение взято из статьи Лин и др.

Основные преимущества и когда его использовать

Теперь, когда у нас есть всесторонний обзор его архитектуры и то, как он преодолевает некоторые известные проблемы временных рядов, легче понять, почему DoppelGANger такая популярная модель:

  • Точная генерация временных шаблонов: DoppelGANger разработан для справления как с краткосрочными, так и с долгосрочными шаблонами в данных, и поэтому способен имитировать определенные характеристики, такие как сезонные изменения. Например, захват и недельной, и годовой корреляций в случае использования временных рядов финансовых данных;
  • Реалистичные временные корреляции: DopplelGANger подходит для случаев использования, когда сохранение корреляций между измерениями и атрибутами является важным. Например, воспроизведение тенденций в приложениях электронной коммерции, где паттерны потребления связаны с другими атрибутами (день недели, личные факторы, такие как возраст и пол, или информация о маркетинге и рекламе);
  • Гибкая генерация: DoppleGANger позволяет генерировать синтетические данные в соответствии с различными распределениями метаданных/атрибутов, определенными пользователями. Таким образом, он может поддерживать добавление редких событий, таких как те, которые часто встречаются в медицинских устройствах или транзакциях обнаружения мошенничества.

Давайте рассмотрим конкретный практический случай, хорошо?

Практический пример: Измерение широкополосной Америки

Чтобы исследовать применение DoppelGANger, мы будем использовать набор данных Measuring Broadband America (MBA), доступный бесплатно на сайте Федеральной комиссии связи (FCC) (Информация о лицензировании). Это один из наборов данных, используемых для демонстрации модели DoppelGANger в оригинальной статье, и в нем отражены несколько измерений, таких как время задержки и процент потери пакетов в нескольких домах США, о чем мы подробно расскажем. Вы можете следовать за учебным пособием, используя этот ноутбук, который содержит полный поток.

Чтобы начать учебное пособие, нам сначала нужно создать виртуальное окружение для нашего проекта и установить пакет ydata-synthetic:

Установите ydata-syntehtic. ydata-synthetic использует Tensorflow

Затем мы можем импортировать необходимые модули, а именно известные pandas и matplotlib, а также модули синтезаторов, содержащие параметры моделирования и обучения, и реализацию DoppelGANger:

Импортируйте необходимые пакеты для разработки

Теперь мы можем прочитать данные. Мы видим, что наш набор данных содержит 5 функций с разным поведением: traffic_byte_counter и ping_loss_rate являются непрерывными функциями, которые состоят из измерений интереса. Каждое измерение связано с 3 категориальными функциями, или метаданными, а именно isp, technology и state.

Вот краткий обзор нашего набора данных:

Набор данных FCC MBA: Обзор измерений и метаданных.

Теперь мы можем приступить к определению параметров нашей модели и обучения:

Установка параметров модели и параметров обучения

Эти параметры соответствуют различным настройкам, используемым в реализации DoppelGANger:

  • batch_size определяет количество образцов (точек данных), которые обрабатываются в каждой итерации обучения;
  • lr означает “скорость обучения” и определяет, насколько веса модели обновляются в ответ на оцененную ошибку во время обучения;
  • betas являются коэффициентами регуляризации модели и определяют, как модель адаптирует свои скорости обучения со временем;
  • latent_dim определяет размерность скрытого пространства, которое является пространством меньшей размерности, в котором работает генератор;
  • gp_lambda контролирует силу члена градиентного штрафа в функции потерь, что помогает стабилизировать обучение;
  • pac является степенью упаковки, предназначенной для смягчения коллапса режима;
  • epochs являются количеством итераций обучения;
  • sequence_lenght – это длина каждой временной последовательности;
  • sample_lenght относится к размеру пакета временных рядов, количеству временных шагов, генерируемых в каждом проходе RNN (параметр S в оригинальной статье);
  • rounds – это количество шагов на пакет;
  • measument_cols относится к существующим измерениям в наборе данных.

С определенными параметрами мы можем обучить модель и, наконец, синтезировать новые данные:

Тренировка модели и генерация выборки

Теперь, когда у нас есть вновь созданные синтетические данные, мы можем воспользоваться визуализацией данных, чтобы быстро определить, соответствуют ли синтетические данные поведению исходных данных в общем. Мы можем построить либо всю последовательность, либо более короткое временное окно из 56 точек, чтобы более подробно проверить предварительные результаты и решить, требуется ли какая-либо корректировка параметров:

Реальные и синтетические данные: длина последовательности, учитывающая трафик и синтез пинга.

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

Выводы

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

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

  • Стабильная синтезация данных: Справляясь как с краткосрочными, так и с долгосрочными взаимосвязями, DoppelGANger способен создавать новые реалистичные наборы данных, которые тесно соответствуют исходным данным. Это, пожалуй, самый интересный случай использования подхода, позволяющий специалистам по данным создавать двойник данных своих наборов данных для безопасного и настраиваемого экспериментирования во время циклов разработки;
  • Гибкость и обобщаемость: Способность работать с комплексными контекстами, включающими гетерогенные данные (категориальные, непрерывные, многомерные наборы данных), DoppelGANger может обрабатывать общие характеристики реальных данных, не требуя большого человеческого усилия в процессе преобразования, что естественным образом ускоряет разработку;
  • Множество приложений и отраслей: От обмена данными до сохранения конфиденциальности и генерации высококачественных синтетических данных, DoppelGANger применим в широком спектре случаев использования. Это делает его чрезвычайно интересным для таких различных отраслей, как сети, финансы, безопасность и многое другое.

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

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

Обо мне

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

CDO @ YData | LinkedIn