Это часть 2 из 2 из генерации табличных данных с помощью веб-семинара по GAN. В части 1 мы рассмотрели, что такое GAN, область их применения и некоторые из наиболее часто используемых архитектур в генерирующих состязательных сетях.

Теперь, когда у нас есть довольно хорошая идея, пришло время рассказать в части 2, как мы можем реализовать GAN, чтобы мы могли генерировать синтетические регулярные табличные данные. В приведенных ниже примерах были выбраны две архитектуры GAN: Vanilla GAN и Conditional GAN ​​.

Набор данных, с которым вы уже хорошо знаком, Кредитное мошенничество от Kaggle. Набор данных содержит транзакции, совершенные европейскими держателями кредитных карт в период с сентября 2013 года. Он представляет в общей сложности 284 807 транзакций, из которых только 492 помечены как мошенничество, что приводит к сильно несбалансированному набору данных, где на положительный класс (мошенничество) приходится всего 0,17% всех транзакций. Было бы неплохо иметь возможность увеличить эти случаи мошенничества, не так ли?

Полный набор данных включает только числовые входные переменные, которые являются результатом преобразования PCA, единственными характеристиками, которые не были преобразованы, являются «Время» и «Сумма». В наборе данных отсутствуют пропущенные значения, что упрощает нашу задачу. Еще один важный момент - асимметрия переменной Amount.

В целях использования GAN для генерации синтетических данных мы будем использовать только класс меньшинства: случаи мошенничества.

Теперь, когда мы знакомы с набором данных, давайте начнем с GAN. Обе описанные далее архитектуры были реализованы с использованием Tensorflow 2.0.

Vanilla GAN

Как объяснялось ранее, Vanilla GAN включает в себя две разные сети в своей архитектуре: Дискриминатор и Генератор.

Для Генератора было решено использовать сеть с 4 плотными слоями, как показано в фрагменте кода ниже:

С другой стороны, Дискриминатор также реализован как сеть с 4 плотными слоями:

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

На изображении ниже изображена тренировка для Vanilla GAN со следующими гиперпараметрами:

  • Размер пакета: 128
  • Число эпох: 500
  • Поколение LR: 5e-4
  • Диск LR: 5e-4

Условный GAN

В Vanilla GAN нет контроля над режимами синтезируемых данных. Условные GAN (CGAN): введите метку y в качестве дополнительного входного параметра как для генератора, так и для дискриминатора. Это дает GAN толчок к тому, что искать, и улучшает общий процесс генерации данных.

Для этой архитектуры было решено также использовать Дискриминатор с 4-мя плотными слоями:

И Генератор с 4-мя плотными слоями, согласно приведенному ниже определению:

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

Полный код для реализации этой Условной GAN можно найти здесь.

Сравнение обучения GAN

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

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

Статистически они очень похожи около 500-й эпохи.

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

На приведенном выше рисунке показано статистическое сравнение с точки зрения среднего значения того, насколько похожи реальные и синтетические наборы данных, созданные с помощью условной GAN. Это довольно простая проверка, но есть и другие, более надежные, которые измеряют другие аспекты сходства наборов данных. Эти методы могут быть такими простыми, как вычисление показателей расстояния, таких как Евклидово расстояние, или показателей расхождения, таких как Кульбака-Лейблера.

Тем не менее, есть один, который лично я считаю более эффективным, так называемый Train Synthetic Test Real (TSTR). Основная идея TSTR состоит в том, чтобы использовать синтетические данные, сгенерированные GAN, для обучения модели, а затем протестировать модель на удерживаемом наборе из реальных данных.

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

Заключение

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

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

Если вы хотите ознакомиться с другими примерами синтетических данных, вы можете найти классные синтезированные наборы данных и сравнения на нашем сайте!

Фабиана Клементе - директор по данным в YData.

Предоставление доступа к данным с конфиденциальностью по дизайну.

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