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


19

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

[оригинальные данные -> построить модель машинного обучения -> использовать модель ml для генерации синтетических данных .... !!!]

Является ли это возможным ? Пожалуйста, укажите мне на соответствующий ресурс, если это возможно.

Ответы:


27

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

По сути, вы оцениваете многомерное распределение вероятностей, связанное с процессом. После того как вы оценили распределение, вы можете сгенерировать синтетические данные с помощью метода Монте-Карло или аналогичных методов повторной выборки. Если ваши данные напоминают некоторое параметрическое распределение (например, логнормальное), тогда этот подход прост и надежен. Самое сложное - оценить зависимость между переменными. См .: https://www.encyclopediaofmath.org/index.php/Multi-dimensional_statistical_analysis .

Если ваши данные нерегулярны, то непараметрические методы проще и, вероятно, более надежны. Многомерная оценка плотности ядра - это метод, который доступен и привлекателен для людей с фоном ML. Общее введение и ссылки на конкретные методы см .: https://en.wikipedia.org/wiki/Nonparametric_statistics .

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

Напротив, вы предлагаете это:

[оригинальные данные -> построить модель машинного обучения -> использовать модель ml для генерации синтетических данных .... !!!]

Это делает нечто иное, чем метод, который я только что описал. Это решило бы обратную проблему : «какие входные данные могут генерировать любой заданный набор выходных данных модели». Если ваша модель ML не слишком приспособлена к вашим исходным данным, эти синтезированные данные не будут выглядеть как ваши исходные данные во всех отношениях или даже больше.

Рассмотрим модель линейной регрессии. Одна и та же модель линейной регрессии может соответствовать идентичным данным, которые имеют очень разные характеристики. Знаменитая демонстрация этого через квартет Анскомба .

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

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

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


время читать больше о Монте-Карло и многомерном статистическом анализе ... спасибо за хорошее объяснение .. !!!
hadooper

2

Существует очень распространенный подход к работе с несбалансированными наборами данных, называемый SMOTE, который генерирует синтетические образцы из класса меньшинства. Это работает, возмущая выборки меньшинства, используя различия с соседями (умноженное на некоторое случайное число между 0 и 1)

Вот цитата из оригинальной статьи:

Синтетические образцы генерируются следующим образом: Возьмите разницу между рассматриваемым вектором признаков (образцом) и его ближайшим соседом. Умножьте эту разницу на случайное число от 0 до 1 и добавьте ее к рассматриваемому вектору признаков.

Вы можете найти больше информации здесь .


1

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.