Синтетичний словник даних: генерація, конфіденційність і тестування

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

Синтетичні дані є однією з найшвидше зростаючих областей в інженерії даних і ML - і вона має щільний словник, запозичений зі статистики, машинного навчання і інженерії конфіденційності. Якщо ваша команда створює платформу даних, працює над конвеєрами навчання машинного навчання або керує обмеженнями GDPR, ви регулярно стикаєтеся з цією термінологією.

Що таке синтетичні дані?

** Синтетичні дані ** — це штучно створені дані, які імітують статистичні властивості реальних даних, але не містять фактичних записів про реальних людей. Він використовується для тренування моделей, коли реальні дані є рідкісними, для тестування програмного забезпечення, коли виробничі дані не можуть бути спільними, і для відповідності приватності, коли особисті дані не повинні залишати регульоване середовище.

Існує декілька підходів до ** синтетичного створення даних **:

** Синтез за правилами ** генерує дані відповідно до чітких правил бізнесу, наприклад, генерує реальні поштові індекси Великої Британії, номери телефонів або номери національного страхування. Він швидкий і детермінований, але не може захоплювати складні статистичні відносини.

** Синтез на основі GAN** використовує ** Генеративну суперечливу мережу (GAN) ** — дві нейронні мережі (генератор і дискримінатор), навчені протистояти одна одній. Генератор навчається створювати синтетичні зразки, які дискримінатор не може відрізнити від реальних даних. Інженери кажуть: * “Ми тренували табличний GAN на даних клієнтських транзакцій - він захоплює кореляції моделей витрат без виставлення будь-яких реальних транзакцій.” *

Варіаційний автокодувальник (VAE) є ще одним підходом до глибинного навчання — він вивчає стиснуте представлення (латентний простір) розподілу даних і вибирає з нього вибірки для створення синтетичних записів.

Механізми приватності

** Диференціальна приватність (DP) ** це математична структура для додавання контрольованого шуму до даних або алгоритмів, так, що присутність особи в наборі даних не може бути надійним чином виведено з виводу. Ключові параметри:

  • ** Epsilon (epsilon) ** — бюджет конфіденційності; нижче epsilon означає більші гарантії конфіденційності, але більше шуму (менше користі)
  • ** Бюджет конфіденційності ** — загальна кількість епсілонів, « витрачених » на всі запиту або операції з набором даних
  • ** Шум ** — випадкове збурення, додане для досягнення диференціальної гарантії конфіденційності

Інженери обговорюють: * “На epsilon 1.0, синтетична корисність даних надто погіршена для моделі, щоб збігатися - чи можемо ми виправдати epsilon 3.0, враховуючи модель загрози?” *

** Маскування даних ** — це простіший метод, який замінює чутливі значення реалістичних замінників (наприклад, заміняє справжню назву випадково створеною назвою). На відміну від синтетичних даних, замасковані дані зберігають структуру рівня рядка початкового набору даних. Розрізнення має значення: * “Маскування добре для середовищ QA, але для тренування моделей нам потрібні синтетичні дані, які зберігають кореляції між колонками.” *

Універсальність, вірність і тестування

Компроміс між корисністю та конфіденційністю є центральною проблемою синтетичних даних: більший захист приватності (більше шуму, сильніша анонімність), як правило, означає менш корисні дані. Вірагідність вимірює, наскільки синтетичні дані відповідають статистичним властивостям реальних даних — розподілам, кореляціям і кардинальності. Потрібність вимірює, чи є синтетичні дані достатньо хорошими для їхньої призначеної мети — тренування моделі, запуску тесту інтеграції або демонстрації продукту.

Метрики оцінки включають ** статистичні виміри подібності ** (розбіжність KL, відстань Дженсена- Шеннона, відстань Вассерштейна) і виконання завдання нижче по течії (тренаж на синтетичному, тест на реальному — TSTR).

У ** синтетичному управлінні тестовими даними ** команди підтримують бібліотеки синтетичних наборів даних, що відображають виробничі схеми, використовувані в CI-конвейерах і інтеграційних тестах. Ключовим викликом є ** посилальна цілісність ** - забезпечення зв’язків зовнішніх ключів в синтетичних даних залишаються чинними. Таблиця синтетичних замовлень має посилатися на синтетичних клієнтів, а не на сирітські ідентифікатори.

** Розширення даних ** — це пов’ язана з цим практика розширення реального набору даних синтетичними додаваннями, що поширені у комп’ ютерному зорі (поворот і перевертання зображень) і НЛП (перефразування речень).

Наступні кроки

Якщо ваша команда використовує будь- які інструменти синтетичних даних — Faker, Gretel, Mostly AI, SDV — витрачайте 30 хвилин на читання їхньої документації, особливо на словник, пов’ язаний з конфіденційністю. Потім напишіть опис англійською мовою у одному абзаці поточного підходу вашої команди до тестування даних, використовуючи принаймні п’ ять термінів з цієї статті. Точність у цьому словнику сигналізує про зрілість у практиці інженерії даних.

Навигація Nuance: спільні фрази для синтетичних обговорень даних

Синтетичні дані — створення штучних наборів даних, що імітують реальні — швидко стає ключовим елементом сучасної розробки програмного забезпечення. Але мова навколо неї може бути щільною, наповненою технічними термінами і нюансованими дискусіями про користь (наскільки близько синтетичні дані представляють реальність) проти приватності. Для розробників, які вивчають професійну англійську, особливо тих, чия перша мова не є англійською, розуміння цих тонкощів є ключовим для ефективного спілкування в інженерних командах. Це не просто про те, щоб знати визначення; це про те, щоб зрозуміти намір за фразою і як різні терміни пов’язані один з одним.

Одна з часто зустрічається областей плутанини виникає при обговоренні компромісів. Фрази на кшталт «компроміс між користю і приватністю» не є просто технічним рівнянням. Вони представляють навмисний балансуючий акт. Команда може приділяти велику увагу високої корисності - генерації синтетичних даних, які близько відповідають статистичним властивостям оригіналу - але це може випадково витікати чутливу інформацію, що порушує гарантії конфіденційності. І навпаки, максимізація приватності за допомогою таких методів, як диференційна приватність, може зменшити ризик виявлення окремих записів, але це також може зменшити корисність набору даних для нижчих завдань. Фрази на кшталт «прийнятий рівень шуму» часто використовуються для опису досягнутого балансу; розробник може сказати: «Ми повинні переконатися, що синтетичні дані зберігають 95% своєї початкової корисності, зберігаючи диференціальну приватність на epsilon = 0.1». Інша поширена фраза, яку ви почуєте, це «земна істина», що стосується фактичних, реальних даних - і мета синтетичних даних завжди полягає в тому, щоб якомога ближче наблизити цю землю до істини.

Крім того, будьте в курсі того, як технічні обговорення оформлені. Замість того, щоб просто сказати «ми використовуємо GANs», розробник може сказати: «Ми використовуємо Generative Adversarial Networks для виробництва синтетичних даних про клієнтські транзакції, зосереджуючись на збереженні розподілу високоцінних покупок, одночасно зменшуючи потенційні ризики конфіденційності». Аналогічно, коментар перегляду коду може читатися так: «Ця PR генерує синтетичні дані; переконайтеся, що стратегія вибірки відповідно відображає початковий набір даних і розгляньте можливість додавання журналювання для моніторингу рівня шуму, введений під час генерації». Ці фрази розроблені для того, щоб викликати конкретні дії і продемонструвати розуміння ширших наслідків.

Нарешті, пам’ ятайте, що чітка документація є ключем. Під час опису синтетичного конвеєра даних, уникайте жаргонних слів і пояснюйте процес простою англійською мовою, підкреслюючи зроблені * припущення * і потенційні обмеження створених даних.

Ось приклад використання python-nagt для створення спрощеного синтетичного набору даних:

import nagt
from nagt.datasets import Dataset
from nagt.generators import Generator

# Create a generator for customer data (simplified)
generator = Generator(
    num_records=100,
    fields=['age', 'income', 'purchase_amount'],
    params={
        'age': {'dist': 'uniform', 'min': 18, 'max': 65},
        'income': {'dist': 'normal', 'mean': 50000, 'stddev': 20000},
        'purchase_amount': {'dist': 'lognormal', 'mean': 100, 'sigma': 50}
    }
)

# Create a dataset from the generator
dataset = Dataset.from_generator(generator)

# Print some sample data (for demonstration) - this would normally be used to test and validate
print(dataset.sample(10))

Цей приклад демонструє базовий синтетичний процес генерації даних за допомогою python-nagt. Важливо пам’ятати, що справжня цінність полягає не тільки в самому коді, але і в подальших обговореннях навколо його дизайну, перевірки і постійного моніторингу - розмов, де розуміння цих нюансових фраз є найважливішим.

Поширені запитання

Про що ця стаття "Синтетичний словник даних: генерація, конфіденційність і тестування"?

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

Чи безкоштовна ця стаття?

Так. Усі статті на CoderSlingo, включно з цією, доступні безкоштовно без реєстрації.

Скільки часу займає читання "Синтетичний словник даних: генерація, конфіденційність і тестування"?

Приблизно 9 min.