При розробці ML-моделей часто виникає дилема: реальні дані містять PII і не можуть бути використані в dev/тесті, а синтетичні дані з відкритих джерел не відображають специфіку бізнесу. Ми вирішуємо це завдання за допомогою генерації privacy-safe синтетичних даних, що зберігають статистичні властивості реальних даних. Наш підхід гарантує відповідність GDPR: штрафи за витік можуть сягати 20 млн євро, тому ми застосовуємо багаторівневу валідацію приватності.
Наприклад, в одному з проєктів для фінтех-компанії ми згенерували 500 тисяч синтетичних записів про транзакції. Реальні дані містили номери карток та особисті дані — їх використання в тестовому середовищі було неможливе. Синтетичні записи відтворювали розподіл сум, часові патерни та кореляції між ознаками. Модель виявлення шахрайства, навчена на цих даних, показала на реальних даних точність 94% — всього на 2% нижче, ніж при навчанні на оригінальній вибірці. Це дозволило клієнту передавати дані розробникам та партнерам без ризику витоку.
Коли потрібні синтетичні дані
- ML при дефіциті даних: рідкісні захворювання, рідкісні транзакції, аварійні ситуації — прикладів занадто мало для навчання.
- Privacy compliance: не можна використовувати prod-дані в dev/test середовищі.
- Data augmentation: розширення навчальної вибірки для покращення узагальнюваності.
- Балансування класів: генерація прикладів для underrepresented класів.
- Передача даних партнерам або дослідникам без ризиків GDPR.
Методи генерації
GAN-based (CTGAN, TVAE, CopulaGAN) — для табличних даних. CTGAN — це GAN для таблиць, спеціально розроблений для синтезу табличних даних з mix categorical/continuous:
- Conditional Generator з mode-specific normalization для multimodal distributions.
- Training-by-sampling для балансування незбалансованих категоріальних колонок.
from ctgan import CTGAN ctgan = CTGAN(epochs=300, batch_size=500, verbose=True) ctgan.fit( real_data, discrete_columns=['category', 'gender', 'outcome'] ) synthetic_data = ctgan.sample(num_rows=10000) TVAE (Variational Autoencoder) працює краще на даних з сильними залежностями між змінними.
Copula-методи: Gaussian Copula моделює joint distribution через marginals + correlation structure. Працює швидше за GAN, але гірше для складних нелінійних залежностей. SDV (Synthetic Data Vault) — популярна бібліотека для реалізації цих методів.
Дифузійні моделі для зображень, аудіо, медичних знімків: Stable Diffusion, DDPM. Генерація реалістичних синтетичних рентгенів, ЕКГ, шкірних уражень для навчання медичних моделей.
Мовні моделі для тексту: GPT-4/fine-tuned моделі для генерації синтетичних текстів — анкети пацієнтів, юридичні документи, відгуки клієнтів. З контролем через structured prompts + validation.
Порівняння методів генерації
| Метод | Переваги | Обмеження |
|---|---|---|
| CTGAN | Добре працює з таблицями, підтримує категоріальні колонки | Потребує налаштування гіперпараметрів, чутливий до дисбалансу |
| TVAE | Краще зберігає залежності між змінними | Повільніший у навчанні |
| Gaussian Copula | Швидке навчання, легко інтерпретувати | Погано для нелінійних залежностей |
| Дифузійні моделі | Висока якість зображень/аудіо | Високі обчислювальні витрати |
Як забезпечити приватність синтетичних даних?
Синтетичні дані не є автоматично безпечними. Необхідне тестування на приватність:
Membership Inference Attack — атака, при якій атакуючий намагається визначити, чи був конкретний реальний приклад у навчальних даних генератора. Метрика: AUC ROC атаки. Безпечний поріг: AUC < 0.6 (близько до випадкового). Attribute Inference Attack — знаючи частину атрибутів, чи може атакуючий відновити решту? Тест на recovery rate sensitive атрибутів. Детальніше про членські атаки можна прочитати в Shokri et al.
Nearest Neighbor Distance — DCR (Distance to Closest Record): середня мінімальна відстань між синтетичними та реальними записами. Занадто мале значення — ознака копіювання реальних записів. NNDR: відношення відстані до найближчого сусіда в синтетичних до відстані в реальних даних. Значення ~1 = безпечно.
Оцінка приватності проводиться за допомогою Membership inference attack, описаних у роботі Shokri et al.
Чому важливий контроль якості даних?
Синтетичні дані повинні відтворювати корисні статистичні властивості:
| Метрика | Опис | Ціль |
|---|---|---|
| Column distribution similarity | KS-test для continuous, chi-square для categorical | p-value > 0.05 |
| Correlation structure | Pearson/Spearman correlation preservation | δcorr < 0.05 |
| Train-on-synthetic, test-on-real | ML model accuracy gap | < 5% |
| Detection accuracy | Classifier real vs synthetic | AUC < 0.7 |
Додатково перевіряємо продуктивність ML-моделей: якщо модель, навчена на синтетичних даних, показує на реальних даних точність у межах 5% від моделі на реальних даних, якість вважається прийнятною. У середньому після 3-4 ітерацій ми досягаємо розбіжності менше 2%.
Що входить у роботу
- Аудит вихідних даних та PII-сканування.
- Вибір та налаштування генеративної моделі (CTGAN, TVAE, дифузія).
- Генерація синтетичних даних та валідація приватності.
- Документація та навчання команди роботі з даними.
- Інтеграція в CI/CD пайплайн для автоматичної регенерації.
Кейс: синтетичні дані для медичної діагностики
Ми працювали з клінікою, де були тисячі знімків МРТ з рідкісними патологіями. Через GDPR передача даних зовнішнім розробникам була заборонена. Ми навчили дифузійну модель на 5000 знімках і згенерували 20000 синтетичних. Лікарі не змогли відрізнити синтетичні знімки від реальних (точність класифікатора склала 52%). Модель сегментації пухлин, навчена на синтетиці, показала Dice коефіцієнт 0.87 — всього на 0.03 нижче, ніж на реальних даних.Застосування в production
Типовий флоу для dev/test:
- Production data -> Privacy scan -> PII removal -> Synthetic generation.
- Synthetic data -> Privacy validation -> Quality validation.
- Deployment в dev/staging/test environments.
Розробники працюють з realistic даними без доступу до production. Баги в обробці реальних форматів виловлюються при розробці, а не в проді. Економія на штрафах за витік даних та витратах на compliance може становити 5–10 разів.
Термін розробки системи: 4–8 тижнів залежно від типів даних та необхідної складності генерації. Наш досвід — понад 5 років у сфері анонімізації даних, реалізовано понад 20 проєктів для фінтеху та медицини. Отримайте консультацію: ми оцінимо ваш проєкт за один день і запропонуємо оптимальне рішення. Зв'яжіться з нами для обговорення ваших завдань.







