Приложение генеративного ИИ для увеличения табличных данных

Эта статья была написана в сотрудничестве с Леонардо Мечилли (Mechillileonardo: старший специалист по данным @ BIP xTech) и Роберто Руссо (Роберторуссо: специалист по данным @ BIP xTech).

Оглавление:

Что такое синтетические данные?
В каких приложениях могут быть полезны синтетические данные?
Как генерировать синтетические табличные данные?
Эксперимент SDV< br /> ∘ CTGAN: подход глубокого обучения к генерации синтетических данных
Метрики оценки синтетических данных
Каковы альтернативы в области генерации синтетических данных?
Ссылки

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

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

Недавний подход к этому ограничению исходит из области Генерации синтетических данных (SDG), целью которой является создание искусственных данных для экономии времени и затрат на их сбор.

Что такое синтетические данные?

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

Существует несколько классов моделей, позволяющих генерировать синтетические данные:

  • Для табличных данных: обычные методы избыточной выборки и генеративные модели, основанные на статистических (например, гауссовских копулах) или моделях машинного/глубокого обучения (например, генеративно-состязательных сетях — GAN).
  • Для данных временных рядов: авторегрессионные модели (AR), GAN, адаптированные к временным данным;
  • Для текстовых данных: языковые модели, основанные на преобразователях, таких как знаменитый GPT-3, разработанный и выпущенный OpenAI.
  • Для изображений и видеоданных: генеративно-состязательные сети, вариационные автоэнкодеры или диффузионные модели. Что касается решений на основе поставщиков, в 2022 году OpenAI представила DALL-E 2, программное обеспечение, способное генерировать сложные изображения из текстовых входов;
  • Для звуковых данных: синтезаторы преобразования текста в речь, такие как Microsoft VALL-E, и программное обеспечение для создания музыки на основе ИИ, такое как Amper Music, которое может создавать полные записи из предварительно записанных сэмплов.

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

Какие приложения могут извлечь выгоду из синтетических данных?

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

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

В некоторых случаях использование редких наблюдений в реальном мире может вызвать проблемы с конфиденциальностью. Искусственные данные могут использоваться для защиты конфиденциальной информации путем создания данных, которые статистически «подобны» реальным, но не содержат никакой идентифицируемой информации. Это позволяет нам работать с конфиденциальной информацией (например, обучающими моделями машинного обучения) без проблем с ограничением конфиденциальности, которые возникают при работе с реальными данными.

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

Множество областей промышленности могут получить преимущества от использования синтетических данных: автомобилестроение и робототехника, финансовые услуги, здравоохранение, производство и безопасность, и это лишь некоторые из них. В целом, использование синтетических данных может помочь всем отраслям, которые страдают либо от нехватки данных, либо, даже когда доступность данных не является проблемой, когда интересующие события редко наблюдаются.

Случаи использования для аналитики в здравоохранении включают моделирование конфиденциальных и личных данных (данные пациентов, данные клинических испытаний, медицинские данные и т. д.). Это часто приводит к необходимости внедрения процедур манипулирования данными для маскировки и анонимизации (т. е. сделать пациента неидентифицируемым). Сбор данных также является очень ресурсоемким процессом как с точки зрения времени, так и денег (например, клинические испытания являются дорогостоящими процедурами, которые могут потребовать месяцев или лет для получения значительных объемов информации); таким образом, отрасль может извлечь значительную выгоду из внедрения процессов ЦУР. Решения на основе синтетических данных могут трансформировать многие аспекты ухода за пациентами, такие как диагностика и рекомендации по лечению, делая обмен медицинской информацией внутри и, возможно, даже снаружи между различными медицинскими учреждениями, более безопасным, быстрым и экономичным.

Обнаружение мошенничества также является проблемой, с которой часто сталкиваются в сфере финансовых услуг. Алгоритмы машинного обучения (например, классификаторы) позволяют обнаруживать мошенничество, которое в противном случае было бы слишком дорогим или слишком сложным для расследования с помощью систем, основанных на правилах. Однако мошенничество — редкое событие, и его часто можно пропустить, что приводит к тому, что классификаторы машинного обучения становятся слишком чувствительными (генерируют слишком много ложных срабатываний) или чрезмерно специфичными (генерируют слишком много ложноотрицательных результатов). Выполнимое решение может состоять в балансировке обучающего набора данных за счет увеличения числа случаев мошенничества с синтетическими образцами, чтобы повысить производительность классификаторов машинного обучения.

Это всего лишь несколько примеров применения синтетических данных. Многие другие варианты использования (например, диагностическое обслуживание, прогнозирование оттока, оценка вероятности дефолта, выявление противодействия отмыванию денег и т. д.) могут легко продемонстрировать полезность, которую инструменты ЦУР имеют и будут продолжать использовать для разработки более точного аналитического инструмента и демократизация данных по отраслям.

Как создать синтетические табличные данные?

Как упоминалось выше, существует два способа генерации синтетических табличных данных:

  • обычные методы передискретизации (например, SMOTE);
  • генеративные модели, на которых мы остановимся в этой статье

Генеративные модели — это класс моделей машинного обучения, используемых для моделирования совместного распределения вероятностей целей (выходных данных) и признаков (входных данных). Это позволяет генерировать новые точки данных (выходные данные), которые имеют те же статистические свойства (т.е. то же распределение), что и исходные данные (входные данные). Выбирая из этого распределения, мы можем получить синтетические данные, которые можно использовать для различных целей, таких как обучение моделей машинного обучения или тестирование конвейеров обработки данных.

Одним из популярных классов генеративных моделей являются генеративно-состязательные сети (GAN). GAN состоят из двух объектов: генератора и дискриминатора. Генератор обучен синтезировать поддельные данные, похожие на настоящие, а дискриминатор обучен отличать настоящие данные от поддельных. Два объекта тренируются в соревновании: генератор пытается создать данные, неотличимые от настоящих, а дискриминатор пытается правильно идентифицировать поддельные данные. В процессе конкуренции генератор совершенствуется для получения более качественных синтетических данных до тех пор, пока дискриминатор больше не сможет различать настоящие и поддельные данные.

Вариационные автоэнкодеры (VAE) – это еще один тип генеративных моделей, который используется для изучения низкоразмерного представления многомерных данных. Структура VAE основана на идее восстановления входных данных при одновременном изучении распределения вероятностей в скрытом пространстве меньшей размерности. Изучая это скрытое пространство, модель может генерировать новые выборки данных, статистические свойства которых аналогичны исходным данным.

Существует ряд библиотек Python с открытым исходным кодом, которые подходят для создания синтетических данных в соответствии с описанным выше процессом. Вот некоторые примеры:

· SDV (Synthetic Data Vault): это пакет Python для создания синтетических данных на основе предоставленного набора данных.

· Synthia: это пакет Python с открытым исходным кодом для моделирования одномерных и многомерных данных, параметризации данных с использованием эмпирических и параметрических методов и управления маргинальными распределениями.

· Gretel (Gretel Synthetics): это пакет Python с открытым исходным кодом от Gretel.ai, который может генерировать структурированные и неструктурированные данные.

· Synthcity: библиотека Python для создания и оценки синтетических табличных данных.

Эксперимент SDV

В следующем эксперименте мы собираемся повысить производительность и надежность модели машинного обучения, используя API с открытым исходным кодом, чтобы попытаться преодолеть проблемы, связанные с несбалансированным набором данных.

После некоторого исследования и сравнения доступного программного обеспечения Python с открытым исходным кодом мы обнаружили, что SDV является одной из наиболее полных, стабильных и производительных библиотек для выполнения этой задачи, и решили провести эксперимент с использованием этой библиотеки. SDV предоставляет набор инструментов для моделирования как одномерных, так и многомерных данных, сохраняя статистические свойства исходных данных. SDV предлагает несколько методов для генерации многомерных данных, начиная от параметрической гауссовой связки и заканчивая CTGAN. Более подробную информацию можно найти в официальной документации.

В теории вероятностей и статистике связка – это математический инструмент, используемый для моделирования структуры зависимостей многомерного распределения. В основе лежит теорема Склара: «Любое многомерное совместное распределение может быть записано в терминах функций одномерного маргинального распределения и связки, описывающей структуру зависимости переменных».

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

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

Библиотеку SDV можно установить с помощью pip в интерпретаторе Python:

pip install sdv

Для проверки полезности генерации синтетических данных мы выбрали набор данных классификации Predictive Maintenance от Kaggle, который содержит уже искусственно сгенерированные записи с машин нескольких типов. Наборы данных Predictive Maintenance представляют собой прекрасный пример дисбаланса классов, когда количество категорий, представляющих сбои (положительные выборки), превышает количество образцов, представляющих исправное состояние (отрицательные выборки). Этот набор данных содержит 9661 отрицательный образец и 339 положительных образцов (3,4% соответствующих случаев). Классификаторы, предназначенные для выявления сбоев, могут значительно выиграть от использования синтетических данных, которые можно использовать для увеличения выборки класса меньшинства и повышения эффективности различения модели.

Данные включают в себя как эндогенные характеристики, такие как скорость вращения машины и ее температура, так и экзогенные характеристики, такие как температура воздуха.

Имея работу с сильно несбалансированным набором данных, для классификации мы решили использовать стратифицированную 5-кратную перекрестную проверку, чтобы оценить производительность по нескольким разбиениям обучающих тестов. На каждой итерации процесса обучения мы создаем новые данные исключительно для набора поездов. Чтобы усреднить случайность, мы вычисляем среднее значение по пяти различным начальным значениям. Мы применяем случайный поиск по сетке в каждой итерации перекрестной проверки. Random Grid Search CV обучает модель с помощью различных комбинаций гиперпараметров, взятых случайным образом, и выбирает ту, которая оптимизирует указанную метрику (мы указываем отзыв в качестве метрики для оптимизации).

Сетка гиперпараметров определяется таким образом:

def random_g():
  
  n_estimators = [int(x) for x in np.linspace(start = 200, stop = 2000, num = 10)]

  # Number of features to consider at every split
  max_features = ['auto', 'sqrt']
  
  # Maximum number of levels in tree
  max_depth = [int(x) for x in np.linspace(10, 110, num = 11)]
  max_depth.append(None)
  
  # Minimum number of samples required to split a node
  min_samples_split = [2, 5, 10]
  
  # Minimum number of samples required at each leaf node
  min_samples_leaf = [1, 2, 4]
  
  # Method of selecting samples for training each tree
  bootstrap = [True, False]
  
  # Create the random grid
  random_grid = {'n_estimators': n_estimators,
                'max_features': max_features,
                'max_depth': max_depth,
                'min_samples_split': min_samples_split,
                'min_samples_leaf': min_samples_leaf,
                'bootstrap': bootstrap}
  return random_grid

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

Следующий код импортирует функции, необходимые для использования генератора данных SDV:

from sdv.metadata import SingleTableMetadata
from sdv.single_table import GaussianCopulaSynthesizer, CTGANSynthesizer

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

results = []

for seed in SEEDS:
    set_seed(seed)
    random_grid = random_g()# Here we instantiate the hyperparameters grid 
    skf = StratifiedKFold(n_splits=K_FOLDS, shuffle=True, random_state=seed)
    
    for train_index, test_index in skf.split(df.loc[:, FEATURE_COLUMNS], 
                                             df.loc[:, LABEL_A]):
        metadata = SingleTableMetadata()
        metadata.detect_from_dataframe(data=df_gen_positives)
        Gaussian = GaussianCopulaSynthesizer(metadata)
        Gaussian.fit(df_gen_positives)
        generated_data = Gaussian.sample(num_rows = len(df_gen_positives))

Num_rows – это количество новых выборок, которые необходимо сгенерировать. Gaussian.sample возвращает новые выборки в виде фрейма данных pandas, готового к использованию.

В первом эксперименте мы используем гауссову связку бета-распределений, используемую для сингулярного моделирования каждой функции. Бета-распределение является выбором по умолчанию при вызове GaussianCopulaSynthesizer, потому что это наиболее гибкое распределение и, следовательно, лучший выбор, когда у нас нет никаких гипотез о распределении функций.

На каждой итерации циклов for мы подгоняем классификатор Random Forest к исходному набору данных и к набору данных, обогащенному синтетическими данными.

X_train, X_test = df.loc[train_index, FEATURE_COLUMNS],    df.loc[test_index, FEATURE_COLUMNS]
y_train, y_test = df.loc[train_index, LABEL_A], df.loc[test_index, LABEL_A]

# Fit classifier on original data
clf = RandomForestClassifier(random_state=seed)

Под кодом для соответствия моделям 10x3, где 10 — это количество выбранных конфигураций гиперпараметров, а 3 — это количество сгибов для выполнения перекрестной проверки с этими конфигурациями. Здесь разделение находится в начальном обучающем тесте, созданном в начале итерации внутреннего цикла for:

rf_random = RandomizedSearchCV(estimator = clf, param_distributions = random_grid, n_iter = 10, cv = 3, verbose = 2, random_state = seed, n_jobs = -1, scoring = 'recall')

# Evaluate classifier on original data
clf = rf_random.best_estimator_
y_pred = clf.predict(X_test)
clf_report = classification_report(y_test, y_pred)
clf_conf_matrix = confusion_matrix(y_test, y_pred)
one_metrics_normal = precision_recall_fscore_support(y_test, y_pred,  average="binary")
results.append(["normal"] + list(one_metrics_normal) + [seed])

# Fit classifier on synthetically enriched data
X_train_syn = np.vstack((X_train, generated_data.loc[:, FEATURE_COLUMNS]))
y_train_syn = np.hstack((y_train, generated_data.loc[:, LABEL_A]))
clf_syn = RandomForestClassifier(random_state=seed)
rf_random_syn = RandomizedSearchCV(estimator = clf_syn, param_distributions = random_grid, n_iter = 10, cv = 3, verbose=2, random_state=seed, n_jobs = -1, scoring='recall')

Чтобы оценить и сравнить производительность двух моделей, мы рассчитываем показатели, подходящие для несбалансированных наборов данных: точность, полнота и F1-оценка. В случаях использования профилактического обслуживания выбор между оптимизацией точности или полнотой для классификатора при неисправностях оборудования будет зависеть от конкретных целей и ограничений приложения. Оптимизация для точности означает, что классификатор предназначен для сведения к минимуму количества ложных срабатываний, т. е. случаев, когда прогнозируется неисправность оборудования, но оно работает правильно. С другой стороны, оптимизация отзыва означает, что классификатор предназначен для минимизации количества ложноотрицательных результатов, т. е. случаев, когда оборудование неисправно, но не обнаруживается классификатором. Последний подход наиболее уместен в ситуациях, когда стоимость ложноотрицательного результата высока, например, когда отказ оборудования может привести к угрозе безопасности или значительному повреждению оборудования. Именно по этой причине мы выбрали отзыв в качестве целевой метрики оптимизации в процессе CV.

Выходные данные были сгенерированы со следующим кодом в каждой итерации:

clf_syn = rf_random_syn.best_estimator_
y_pred_syn = clf_syn.predict(X_test)

# Calculate metrics
clf_report_syn = classification_report(y_test, y_pred_syn)
clf_conf_matrix_syn = confusion_matrix(y_test, y_pred_syn)
one_metrics_syn = precision_recall_fscore_support(y_test, y_pred_syn, average="binary")
results.append(["synthetic"] + list(one_metrics_syn) + [seed])

Приведенные выше результаты показывают нам, что увеличение количества положительных выборок для обучающей выборки может помочь смягчить дисбаланс классов и приводит к немного лучшему отзыву по сравнению с моделью, обученной и настроенной без синтетических данных; это происходит за счет точности, что приводит к немного худшему результату F1. Учитывая, что точность падает по мере увеличения объема синтетических данных, важно учитывать приемлемый компромисс для приведенных выше показателей. Допуск на снижение точности зависит от варианта использования, и параметр, управляющий количеством сгенерированных выборок, должен быть настроен соответствующим образом.

CTGAN: метод глубокого обучения для создания синтетических данных

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

Код остается прежним, за исключением части, связанной с созданием экземпляра генератора:

CTGAN = CTGANSynthesizer(metadata)
CTGAN.fit(df_gen_positives)
generated_data = CTGAN.sample(num_rows = len(df_gen_positives))

Несмотря на то, что модели глубокого обучения требуют больше данных, чем другие менее сложные модели,результаты лучше, чем результаты, полученные без использования синтетических данных, а также более высокая оценка F1:

GAN дали нам представление о том, что они могут сделать даже с минимальными доступными данными. В этом случае синтезированный набор данных CTGAN в сочетании с правильной настройкой гиперпараметров позволил получить очень хороший баланс между точностью и полнотой в отношении Copula и модели, обученной на исходных данных. Этот хороший компромисс отражается в более высокой оценке F1.

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

Влияют ли синтетические данные на интерпретируемость модели?

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

Мы применили важность функции перестановки, которая представляет собой метод оценки важности каждой функции для модели, делающей прогноз. Важность признака перестановки определяется как уменьшение оценки модели при случайном перемешивании одного значения признака. Эта процедура разрывает связь между функцией и целью, поэтому снижение оценки модели указывает на то, насколько модель зависит от функции. Этот метод выигрывает от того, что он не зависит от модели, и его можно вычислять много раз с различными перестановками функции. В обучающем наборе мы выполнили 30 перестановок как в случае, когда данные были дополнены с помощью гауссовой связки (выше), так и в случае, когда данные были дополнены с помощью CTGAN (ниже), а затем взяли среднее значение оценки важности признака, полученное в каждой перестановке. . Мы разделили оценку важности каждой функции на оценку важности самой важной функции (Torque), чтобы можно было сравнить исходные и дополненные наборы данных.

Как мы видим, относительная важность признаков сохраняется в обоих случаях, при этом CTGAN обеспечивает большее сходство с исходными данными.

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

Отличимость (полезный KPI)

"Можем ли мы отличить настоящие записи от искусственных?"

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

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

Оценка TSTR (тренировка на синтетике, проверка на реальном)

«Насколько хороши синтетические данные для обучения модели машинного обучения?»

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

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

MITS (оценка теста на членство)

«Насколько легко злоумышленнику будет получить доступ к реальной информации, проанализировав синтетические данные?»

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

Каковы альтернативы в области создания синтетических данных?

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

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

Поставщики:

  • Clearbox.ai, решение, способное генерировать структурированные данные, поступающие из реляционных баз данных и хранилищ данных;
  • Syntho.ai, платформа для генерации данных, использующая GAN для создания синтетических данных для широкого круга отраслей;
  • Gretel.ai, набор API-интерфейсов, используемых для автоматической тонкой настройки пользовательских моделей ИИ и создания синтетических данных по запросу;
  • AINDO, платформа для генерации данных, использующая искусственный интеллект для создания наборов синтетических данных для различных отраслей и вариантов использования (здравоохранение, финансовые услуги, телекоммуникации и т. д.).

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

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

Рекомендации

[1] https://www.clearbox.ai/blog/2021-06-09-how-to-evaluate-the-robustness-of-synthetic-data

[2] Полное руководство по созданию синтетических тестовых данных для здорового тестирования (ОБНОВЛЕНО) — В ОСНОВНОМ ИИ

[3] https://www.kaggle.com/code/pedrovinciusmeerholz/machine-preditive-maintenance-svm-98-acc

[4] https://datagen.tech/guides/synthetic-data/synthetic-data/

[5] https://research.aimultiple.com/synthetic-data-generation/

[6] https://research.aimultiple.com/synthetic-data/

[7] https://www.altexsoft.com/blog/synthetic-data-generation/

[8] https://en.wikipedia.org/wiki/Copula_(probability_theory)