Что такое синтетические данные и зачем они бизнесу

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

Они позволяют разрабатывать интерфейсы до подключения production-базы, демонстрировать продукт без показа клиентов, тестировать редкие ошибки и выдавать подрядчику безопаснее подготовленный набор. Но слово «синтетический» не является гарантией приватности.

1
цель определяет способ генерации
2
независимые оси: utility и privacy
0
случайно скопированных реальных записей

Синтетические, обезличенные и замаскированные данные - не одно и то же

ПодходЧто происходитГлавный риск
МаскированиеЧасть реальной записи заменяется или скрываетсяОстальные поля могут идентифицировать человека
ПсевдонимизацияПрямой идентификатор заменяется ключомОбратная связь сохраняется отдельно
АнонимизацияПрименяется процесс снижения риска идентификацииНеполная оценка атак и внешних данных
СинтезГенератор создаёт новые записиЗапоминание, редкие комбинации и вывод о реальных данных

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

Четыре уровня полезности: не всем нужен цифровой двойник базы

Структура
Колонки, типы и объём для разработки кода.
Правдоподобие
Записи проходят бизнес-правила и подходят для QA.
Распределения
Сохранены важные частоты для аналитики.
Связи
Сохранены нужные зависимости для ML-задачи.

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

Шаг 1. Опишите use case и запретите неподходящее использование

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

Паспорт задачи
  1. Кто и где будет использовать данные.
  2. Какой код, отчёт или модель тестируется.
  3. Какие таблицы и поля необходимы.
  4. Какие распределения и связи действительно важны.
  5. Какие редкие случаи требуется воспроизвести.
  6. Допустимая статистическая погрешность.
  7. Недопустимые виды анализа.
  8. Уровень доступа и возможность экспорта.
  9. Кто принимает набор и оценивает приватность.

Шаг 2. Постройте схему и словарь данных

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

Создай спецификацию синтетического набора для [сценарий].
Таблицы и поля: [перечень].
Не используй реальные персональные данные и не придумывай статистику исходной базы.
Для каждого поля предложи: тип, формат, nullable, уникальность, допустимый диапазон или enum, зависимости, негативные тесты и способ программной проверки. Отдельно перечисли предположения, которые должен подтвердить владелец процесса.

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

Шаг 3. Выберите генератор по задаче

МетодПодходит дляОграничение
Правила и библиотеки fake dataФормы, API, QA, demoНе повторяет реальную статистику
LLM по схемеТексты, диалоги, сложные сценарииНужны validators и контроль фактов
Статистическая модельТабличная аналитикаРиск потерять зависимости
Генеративная модель, обученная на microdataИсследования и MLТребует оценки запоминания и раскрытия
Дифференциально приватный синтезФормализованная защита приватностиКомпромисс точности и privacy budget

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

Как генерировать связанные таблицы: клиенты, заказы и позиции

Создавайте данные сверху вниз. Сначала справочники и клиенты, затем заказы со ссылками на существующих клиентов, после - позиции и платежи. Иначе появятся orphan records и невозможные состояния.

  1. Сгенерировать стабильные идентификаторы, не похожие на production ID.
  2. Создать справочники допустимых статусов и продуктов.
  3. Создать родительские записи.
  4. Создать дочерние записи только по существующим ключам.
  5. Вычислить итоги обычным кодом из позиций.
  6. Добавить управляемые ошибки в отдельный negative-набор.
  7. Прогнать referential integrity и бизнес-инварианты.

Не просите LLM одновременно придумать тысячи строк и точно свести бухгалтерские итоги. Пусть она создаёт сценарии и текстовые поля, а вычисления выполняет детерминированный код.

Как использовать ИИ для обращений поддержки и диалогов

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

Создай синтетические обращения поддержки строго по матрице.
Продукт: [описание без закрытых данных].
Категории и доли: [утверждённые параметры].
Каналы: [email/chat/form].
Уровни сложности: [список].
Верни JSON по схеме [schema]. Не используй настоящие бренды, людей, телефоны, адреса, номера договоров и платёжные реквизиты. Добавь scenario_id и ground_truth_label. Не выводи доли из памяти - используй только параметры выше.

Чтобы избежать однообразного «стерильного» текста, отдельно задайте контролируемые вариации. Затем проверьте, что модель не вставила реальные контакты или узнаваемые фрагменты из примера.

Негативные данные нужны не меньше идеальных

Набор, где каждая форма заполнена правильно, проверит только happy path. Реальная система сталкивается с дубликатами, пропущенными полями, неверной кодировкой и нарушенным порядком событий.

Каталог ошибок
  1. Пустое обязательное поле.
  2. Значение за границей диапазона.
  3. Неизвестный enum и неправильный регистр.
  4. Дубликат уникального ключа.
  5. Несуществующий внешний ключ.
  6. Дата окончания раньше начала.
  7. Итог не сходится с позициями.
  8. Смешанные локали и разделители.
  9. Повреждённый Unicode или HTML.
  10. Очень длинный текст и вложенная инструкция.
  11. Повтор события после timeout.
  12. Запрещённое сочетание ролей и прав.

Храните позитивные и намеренно ошибочные записи раздельно и маркируйте ожидаемую ошибку. Иначе команда начнёт «исправлять» полезные negative cases.

Разделите генератор и oracle

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

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

Проверка структурной и сценарной валидности

Schema
Типы, required, enum, форматы и длины.
Relations
Ключи, кардинальность и отсутствие сирот.
Business
Статусы, суммы, даты и разрешённые переходы.
Negative
Ошибка возникает именно там, где ожидается.

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

Как измерять статистическую полезность

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

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

Составь план utility evaluation для синтетического набора.
Целевая задача: [отчёт/модель/тест].
Важные поля и сегменты: [список].
Доступные агрегаты исходных данных: [список].
Предложи проверки структуры, одномерных распределений, важных связей и результата целевой задачи. Для каждой укажи, почему она нужна и кто утверждает допустимое отклонение. Не придумывай пороги.

Почему похожесть на реальные данные повышает риск

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

Проверьте точные совпадения, расстояние до ближайшей реальной записи, уникальные комбинации и редкие категории. Для моделей, обученных на закрытых microdata, рассматривают membership inference и attribute inference. Набор нельзя объявлять безопасным по одному отсутствию совпадающих строк.

Differential privacy и синтетические данные

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

Это не кнопка «анонимизировать». Нужно проверить реализацию, учёт privacy budget, композицию выпусков и пригодность данных. NIST SP 800-226 рекомендует оценивать заявленные гарантии и подчёркивает различие между дифференциально приватным синтезом и методами без формальной гарантии.

Доступ и публикация: синтетический файл всё равно проходит review

Если данные создавались из закрытой базы, не переносите их автоматически в публичное хранилище. ONS требует оценивать disclosure risk перед более широким распространением и отмечает, что публичные копии трудно отозвать.

Решение о доступе
  1. Подтверждён владелец исходных данных.
  2. Описан метод синтеза и использованные поля.
  3. Проверены точные и близкие совпадения.
  4. Оценены редкие записи и inference-риски.
  5. Документирована utility по разрешённым задачам.
  6. Определены лицензия, аудитория и срок доступа.
  7. Сырые training data и модель защищены.
  8. Публичный выпуск одобрен ответственным за данные.

Частые ошибки проектов синтетических данных

ОшибкаПоследствиеИсправление
Перемешали реальные колонкиКомбинации могут остаться идентифицируемымиГенерировать новые записи и оценивать риск
Оптимизировали одну similarity-метрикуСкрыты искажения важных сегментовОценивать целевую задачу и подгруппы
Сохранили только идеальные строкиQA не видит реальные сбоиДобавить маркированный negative-набор
LLM сама подтвердила labelsСогласованные ошибкиНезависимый oracle и human sample
Назвали файл анонимнымЛожное чувство безопасностиФормальная disclosure assessment

План пилота на четыре недели

Неделя 1
Use case, владельцы, схема, риски и приёмка.
Неделя 2
Генератор, правила, positive и negative cases.
Неделя 3
Utility, privacy, исправления и regression-тесты.
Неделя 4
Ограниченный доступ, документация и решение владельца.

Финальный чек-лист качественного набора

Готовность набора
  1. Цель и запрещённые применения записаны.
  2. Выбран минимально необходимый уровень похожести.
  3. Схема, единицы, enum и null документированы.
  4. Первичные и внешние ключи валидны.
  5. Суммы и производные поля вычислены кодом.
  6. Positive и negative cases разделены.
  7. Labels проверены независимым oracle.
  8. Utility измерена на целевой задаче и сегментах.
  9. Проверены совпадения и редкие комбинации.
  10. Оценены релевантные privacy-атаки.
  11. Версии генератора, seed и правил сохранены.
  12. Исходные данные и модель защищены.
  13. Ограничения набора опубликованы вместе с ним.
  14. Уровень доступа одобрен владельцем данных.
  15. Production-ошибки пополняют regression-набор.

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

Что такое синтетические данные простыми словами?
Это искусственно созданные записи, которые повторяют нужную структуру, правила или статистические свойства данных, но не должны описывать конкретных реальных людей. Их используют для разработки, тестов, демонстраций, аналитики и обучения моделей.
Можно ли считать синтетические данные анонимными?
Не автоматически. Генератор может воспроизвести реальную запись, редкую комбинацию или информацию, позволяющую сделать вывод об исходных данных. Перед расширением доступа нужна отдельная оценка риска раскрытия.
Чем синтетические данные отличаются от обезличенных?
Обезличивание преобразует реальные записи и снижает возможность идентификации. Синтез создаёт новые записи. На практике синтетический генератор может быть обучен на реальных данных, поэтому риск и метод всё равно нужно документировать.
Можно ли создать тестовые данные с ChatGPT или другой нейросетью?
Да, особенно тексты, диалоги и сценарии. Передавайте только безопасную схему и утверждённые правила, требуйте структурированный ответ, затем проверяйте данные кодом. Не вставляйте закрытые клиентские записи в обычный промпт.
Как проверить качество синтетических данных?
Сначала проверьте схему, ключи и бизнес-правила. Затем измерьте полезность на конкретной задаче: работе интерфейса, отчёта или модели. Для аналитики отдельно сравните важные распределения и связи по сегментам.
Зачем добавлять ошибки в синтетический набор?
Идеальные записи проверяют только happy path. Маркированные пропуски, дубликаты, неверные статусы, локали и нарушенные связи позволяют проверить валидацию, сообщения об ошибках и восстановление после сбоя.
Что такое differential privacy в синтетических данных?
Это формальная модель, ограничивающая влияние отдельной исходной записи на результат алгоритма. Она может дать более устойчивую гарантию приватности, но требует корректной реализации, учёта privacy budget и оценки потери полезности.
Можно ли публиковать синтетическую клиентскую базу?
Только после решения владельца данных и оценки раскрытия. Нужно проверить метод синтеза, совпадения, редкие комбинации, privacy-атаки, назначение и ограничения. Публичную копию впоследствии трудно полностью отозвать.
← Все статьи блога