Общий подход заключается в проведении традиционного статистического анализа вашего набора данных для определения многомерного случайного процесса, который будет генерировать данные с одинаковыми статистическими характеристиками. Преимущество этого подхода заключается в том, что ваши синтетические данные не зависят от вашей модели 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 (например, дерево решений), в которых их можно инвертировать для создания синтетических данных, хотя это требует некоторой работы. См .: Генерация синтетических данных для сопоставления шаблонов интеллектуального анализа данных .
Существует очень распространенный подход к работе с несбалансированными наборами данных, называемый SMOTE, который генерирует синтетические образцы из класса меньшинства. Это работает, возмущая выборки меньшинства, используя различия с соседями (умноженное на некоторое случайное число между 0 и 1)
Вот цитата из оригинальной статьи:
Вы можете найти больше информации здесь .
источник
Увеличение данных - это процесс синтетического создания выборок на основе существующих данных. Существующие данные слегка нарушаются, чтобы генерировать новые данные, которые сохраняют многие из исходных свойств данных. Например, если данные являются изображениями. Пиксели изображения можно поменять местами. Многие примеры методов дополнения данных можно найти здесь .
источник