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

Вступление

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

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

Хотите знать, почему генеративные модели могут быть идеальным методом для создания синтетических данных? Что ж, в генеративных моделях нейронная сеть (NN) используется для аппроксимации основного распределения вероятностей входных данных в многомерном скрытом пространстве. После того, как распределение вероятностей было изучено, модель может генерировать синтетические записи путем случайной выборки из распределения¹. В результате сгенерированные записи не содержат самих исходных данных, но сохраняют исходное базовое распределение вероятностей реального набора данных.

Что такое GAN?

GAN состоит из двух моделей:

  • Генератор, который учится создавать поддельные данные.
  • Дискриминатор, который учится отличать фальшивые данные генератора от настоящих.

Две модели соревнуются друг с другом в игре с нулевой суммой, которая направляет всю систему в сторону оптимизации. В начале обучения генератор не очень хорошо генерирует фальшивые данные, а дискриминатор может легко отловить фальшивые данные. Но по мере обучения генератор учится все лучше и лучше генерировать фальшивые данные и обмануть дискриминатор, пока дискриминатор не сможет определить, является ли вход реальным или нет. Ознакомьтесь с I.Goodfellow et. все, чтобы увидеть математическую концепцию, лежащую в основе GAN.

Табличный GAN:

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

Проблемы включают:

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

Для получения высокореалистичных табличных данных мы будем использовать условные генеративные состязательные сети - CTGAN⁴. Эта модель разработана Xu et al. MIT, и это проект с открытым исходным кодом ». CTGAN использует методы на основе GAN для моделирования распределения табличных данных и выборки строк из распределения. В CTGAN метод нормализации, зависящий от режима, используется для работы со столбцами, которые содержат негауссовские и мультимодальные распределения, в то время как условный генератор и методы обучения с помощью выборки используются для борьбы с проблемами дисбаланса классов⁴.

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

Теперь давайте посмотрим, как использовать CTGAN для создания синтетического набора данных из реального набора данных! Мы используем набор данных Census Income⁶, который является встроенным набором данных в пакете в качестве примера. (Не забудьте pip install ctgan).

Это загружает реальный набор данных:

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

Это возвращает таблицу синтетических данных, идентичных реальным данным.

Теперь давайте проверим, насколько синтетические данные похожи на реальные. Для этого мы будем использовать table_evaluator ⁷, чтобы визуализировать разницу между поддельными и реальными данными. (Не забудьте сначала pip install table-evaluator)

Глядя на график распределения по признакам, матрицу корреляции и график абсолютного среднего логарифма и стандартного стандартного отклонения, мы можем видеть, что синтетические записи довольно хорошо представляют реальные. В качестве примера мы также можем запустить table_evaluator.evaluate(target_col='income'), чтобы получить баллы F1 и показатель сходства Жаккара для каждой функции.

Заключение:

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

Присоединяйтесь ко мне в Project Alesia, чтобы узнать больше о машинном обучении, MLOps, конфиденциальности данных, цифровом благополучии и многом другом!



Ссылка:

  1. Гудфеллоу, Ян Дж., Жан Пуже-Абади, Мехди Мирза, Бинг Сю, Дэвид Вард-Фарли, Шерил Озэр, Аарон Курвиль и Йошуа Бенджио. «Генеративные состязательные сети». Препринт arXiv arXiv: 1406.2661 (2014).
  2. Https://www.freecodecamp.org/news/an-intuitive-introduction-to-generative-adversarial-networks-gans-7a2264a81394/
  3. Сюй, Л., Скулариду, М., Куэста-Инфанте, А., и Верамачанени, К. (2019). Моделирование табличных данных с использованием условного gan. Препринт arXiv arXiv: 1907.00503.
  4. Сюй, Л., Скулариду, М., Куэста-Инфанте, А., и Верамачанени, К. (2019). Моделирование табличных данных с использованием условного gan. Препринт arXiv arXiv: 1907.00503.
  5. Https://github.com/sdv-dev/CTGAN
  6. Https://archive.ics.uci.edu/ml/datasets/adult
  7. Https://pypi.org/project/table-evaluator/
  8. Редакционный обзор предоставлен Prateek Sanyal