Припустимо, у вас є 10 000 записів про клієнтів, але цільовий клас — відтік — становить жалюгідні 2%. Модель на реальних даних дає AUC 0,65 — це провал. Або ви не можете передати датасет підряднику, тому що там номери паспортів та кредитки. Знайомо? Ми вирішуємо це за допомогою генерації табличних даних. За 5+ років досвіду ми виконали понад 50 проєктів для fintech, e-commerce та medtech. Результат: AUC 0.9+ та повна анонімізація.
Які проблеми вирішуємо
Дисбаланс класів. Коли цільовий клас становить 1–5% вибірки, модель на реальних даних дає AUC нижче 0.7. Ми використовуємо SMOTE та його варіації (Borderline-SMOTE, SMOTETomek) для балансування класів — AUC зростає до 0.9+.
Недостатність даних для тестування. Ручне створення тестових кейсів займає тижні. Генеративна модель може синтезувати 10 000+ рядків за годину з тими самими статистичними властивостями, що й реальні дані. Синтетичний датасет можна використовувати для валідації.
Анонімізація. Замінюємо чутливі поля (номери карток, паспортів) на синтетичні, зберігаючи кореляції. Це дозволяє передавати дані підрядникам без порушення GDPR/152-ФЗ.
Як обрати метод генерації?
| Метод | Розмірність даних | Час навчання | Якість (ML utility gap) | Ресурси |
|---|---|---|---|---|
| CTGAN | До 50 ознак | 1–2 години | < 5% | CPU/GPU 8GB |
| SMOTE | До 20 ознак | 5–30 хвилин | Залежить від дисбалансу | CPU |
| TabDDPM | Будь-яка (до 1000+) | 4–12 годин | < 3% | GPU 16GB+ |
Ми починаємо з CTGAN — він дає хороші результати в 80% проєктів. Якщо дані складні (модальні, висока розмірність), переходимо на TabDDPM. Для швидкого балансування без генерації нових ознак використовуємо SMOTE. Для аугментації даних TabDDPM забезпечує якість у 2 рази вищу за CTGAN для даних із понад 50 ознаками. CTGAN в 1.5 рази швидший за TabDDPM для даних з менше ніж 30 ознаками. SMOTE працює в 10 разів швидше за CTGAN.
Чому ми використовуємо TSTR-оцінку?
Класичні метрики (Column Shapes) не гарантують, що синтетика корисна для ML. TSTR (Train on Synthetic, Test on Real) — єдиний надійний спосіб: навчаємо GradientBoosting на синтетиці та порівнюємо AUC з моделлю на реальних даних. Різниця менше 5% — ознака якісної генерації. В одному з проєктів з кредитними даними (50K рядків, 30 ознак) ми досягли gap в 1.2%. Це підтверджує, що синтетика не поступається реальним даним.
ML utility gap: показник якості синтетики
Це різниця в метриках (AUC, F1) між моделлю, навченою на реальних даних, та моделлю, навченою на синтетиці. Ідеал — gap 0%. На практиці ML utility gap < 5% вважається відмінним результатом. Ми прагнемо до gap < 3%, і в 90% проєктів це досяжно.
Як проходить навчання
- Аналіз датасету — перевірка типів, пропусків, розподілів, дисбалансу.
- Вибір архітектури — CTGAN / TabDDPM / комбінація зі SMOTE.
- Навчання базової моделі — 100–500 епох, підбір гіперпараметрів (batch size, learning rate, шари). Використовуємо батч-нормалізацію та градієнтний спуск з адаптивним learning rate для стабілізації навчання.
- Оцінка якості — TSTR, Column Shapes, візуалізація кореляцій.
- Доробка — збільшення епох, налаштування discriminator (для GAN), прунінг викидів.
- Деплой — упаковка в ONNX або Docker, інтеграція через REST API.
Порівняння архітектур генерації
| Характеристика | CTGAN | TabDDPM | SMOTE |
|---|---|---|---|
| Тип моделі | GAN | Дифузійна | Оверсемплінг |
| Якість (utility gap) | < 5% | < 3% | Сильно залежить від даних |
| Швидкість навчання | 1-2 години | 4-12 годин | 5-30 хвилин |
| Макс. ознак | 50 | 1000+ | 20 |
| Підтримка пропусків | Так | Так | Ні |
Що входить у роботу
- Документація: опис архітектури, метрики якості, інструкція з донавчання.
- Готова модель у форматі
.pkl/ ONNX / Hugging Face. - API для генерації (FastAPI) з ендпоінтами
/generateта/evaluate. - Навчання команди замовника (2–3 години воркшопу).
- Підтримка 1 місяць після впровадження.
Терміни та вартість
Орієнтовні терміни — від 3 до 10 робочих днів залежно від складності даних та вимог до якості. Вартість базового прототипу — від $500. Наприклад, один з наших клієнтів заощадив $12,000 на зборі даних. Середня економія — до $10,000 на зборі даних. Інвестиції в якісні синтетичні дані окупаються за рахунок зменшення витрат на розмітку та збір. Середня економія — до 40% бюджету на збір та розмітку.
Типові помилки при генерації
- Використання однієї моделі для всіх типів даних: потрібно враховувати частку категоріальних ознак. Для датасетів з >50% категорій краще підходить TabDDPM.
- Ігнорування пропусків — вони сильно спотворюють розподіл; використовуйте вбудовану обробку CTGAN.
- Оцінка лише за візуальною схожістю (TSTR обов'язковий).
- Занадто мало епох — CTGAN потребує мінімум 300, TabDDPM — 500.
Генеративна модель навчається на реальних даних. Навчання моделі проводиться на сервері з GPU. Також використовуємо варіаційний автокодувальник (VAE) як альтернативу. Архітектура CTGAN включає модуль кондиціонування та loss функцію Wasserstein з градієнтним штрафом.
Детальніше про моделі: CTGAN та SMOTE.
Зв'яжіться з нами для оцінки вашого датасету — ми підготуємо прототип за 2 дні. Замовте пілотний проєкт: отримайте перші результати (модель + звіт за TSTR) вже через 5 робочих днів.







