Синтетические табличные данные: обучение моделей CTGAN и TabDDPM

Допустим, у вас есть 10 000 записей о клиентах, но целевой класс — отток — составляет жалкие 2%. Модель на реальных данных даёт AUC 0.65 — это провал. Или вы не можете передать датасет подрядчику, потому что там номера паспортов и кредитки. Знакомо? Мы решаем это с помощью генерации синтетических та

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1440
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    997
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1264
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    712
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1002

Допустим, у вас есть 10 000 записей о клиентах, но целевой класс — отток — составляет жалкие 2%. Модель на реальных данных даёт AUC 0.65 — это провал. Или вы не можете передать датасет подрядчику, потому что там номера паспортов и кредитки. Знакомо? Мы решаем это с помощью генерации синтетических табличных данных. За 5+ лет мы обучили десятки моделей для 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.

Почему мы используем 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% проектов это достижимо.

Как проходит обучение

  1. Анализ датасета — проверка типов, пропусков, распределений, дисбаланса.
  2. Выбор архитектуры — CTGAN / TabDDPM / комбинация со SMOTE.
  3. Обучение базовой модели — 100–500 эпох, подбор гиперпараметров (batch size, learning rate, слои).
  4. Оценка качества — TSTR, Column Shapes, визуализация корреляций.
  5. Доработка — увеличение эпох, настройка discriminator (для GAN), прунинг выбросов.
  6. Деплой — упаковка в 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 рабочих дней в зависимости от сложности данных и требований к качеству. Стоимость рассчитывается индивидуально. Инвестиции в качественные синтетические данные окупаются за счёт уменьшения затрат на разметку и сбор. Средняя экономия — до 40% бюджета на сбор и разметку.

Типичные ошибки при генерации
  • Использование одной модели для всех типов данных: нужно учитывать долю категориальных признаков. Для датасетов с >50% категорий лучше подходит TabDDPM.
  • Игнорирование пропусков — они сильно искажают распределение; используйте встроенную обработку CTGAN.
  • Оценка только по визуальному сходству (TSTR обязателен).
  • Слишком мало эпох — CTGAN требует минимум 300, TabDDPM — 500.

Свяжитесь с нами для оценки вашего датасета — мы подготовим прототип за 2 дня. Закажите пилотный проект: получите первые результаты (модель + отчёт по TSTR) уже через 5 рабочих дней.

Подробнее о моделях: CTGAN.