Объясняется с помощью графических визуализаций

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

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

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

Методы, описанные в этой статье, включают в себя 7 утилит Scikit-learn (алгоритмы генератора данных), которые используются для создания различных типов синтетических данных. Я также включу графические визуализации и конкретные варианты использования для каждого типа.

Давайте начнем!

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

Обычно синтетические данные генерируются алгоритмами путем извлечения чисел из распределения. Этот процесс включает в себя своего рода случайность. Случайное состояние в алгоритмах генератора данных используется для управления любой такой случайностью, чтобы получить согласованные результаты при различных исполнениях. Вы можете использовать любое целое число для случайного состояния, как я описал здесь. По умолчанию используется None, который использует экземпляр глобального случайного состояния из np.random и дает разные результаты при разных исполнениях.

Алгоритмы генератора данных в Scikit-learn

1. make_blobs

Алгоритм Scikit-learn make_blobs создает мультиклассовые наборы данных, содержащие отдельные большие двоичные объекты (кластеры). Точки данных в каждом кластере нормально распределены. Он имеет параметры для центров управления и стандартных отклонений каждого кластера.

Важные гиперпараметры

  • n_samples: общее количество точек данных (наблюдений/выборок) для создания. Обычно это целое число. По умолчанию 100.
  • n_features: количество признаков (переменных) для каждой точки данных. По умолчанию 2.
  • centers:количество кластеров (BLOB-объектов) для создания. Обычно это принимает целочисленное значение. По умолчанию None.
  • cluster_std: стандартное отклонение кластеров. Это принимает значение с плавающей запятой. По умолчанию 1.0.
  • random_state: используется для управления случайностью и получения согласованных результатов при различных запусках. Вы можете использовать любое целое число. По умолчанию None.

Возврат

  • X: сгенерированные образцы в виде (n_samples, n_features).
  • y: Целочисленные метки (начиная с 0) для каждой выборки, указывающие, к какому кластеру принадлежит выборка.

Случаи использования

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

2. сделать_круги

Алгоритм Scikit-learn make_circles генерирует большой круг, содержащий меньший круг в двумерном пространстве. Данные подчиняются гауссовскому (нормальному) распределению.

Важные гиперпараметры

  • n_samples: общее количество точек данных (наблюдений/выборок) для создания. Обычно это целое число. Значение по умолчанию — 100. Мы также можем указать количество точек данных для каждого внешнего круга и внутреннего круга отдельно, используя двухэлементный кортеж.
  • random_state: используется для управления случайностью и получения согласованных результатов при различных запусках. Вы можете использовать любое целое число. По умолчанию None.
  • коэффициент:коэффициент масштабирования между внутренним и внешним кругом. Это принимает значение с плавающей запятой от 0 до 1. По умолчанию 0,8.
  • шум: стандартное отклонение гауссовского шума, добавленное к данным. Это принимает значение с плавающей запятой. Значение по умолчанию — None, что означает отсутствие шума.

На следующем рисунке показан пример данных, сгенерированных алгоритмом make_circles с гауссовским шумом 0,05.

Возврат

  • X: сгенерированные образцы в виде (n_samples, 2).
  • y: Целочисленные метки (0 или 1) для каждого образца, указывающие, к какому кругу принадлежит образец.

Случаи использования

  • Сделать сферические границы решений для задач бинарной классификации.
  • Чтобы показать разницу между PCA и Kernel PCA.

3. make_moons

Алгоритм Scikit-learn make_moons генерирует два чередующихся полукруга, называемых лунами, в двумерном пространстве. Данные подчиняются гауссовскому (нормальному) распределению.

Важные гиперпараметры

  • n_samples: общее количество точек данных (наблюдений/выборок) для создания. Обычно это целое число. Значение по умолчанию — 100. Мы также можем указать количество точек данных для каждой луны отдельно, используя двухэлементный кортеж.
  • шум: стандартное отклонение гауссовского шума, добавленное к данным. Это принимает значение с плавающей запятой. Значение по умолчанию — None, что означает отсутствие шума.
  • random_state: используется для управления случайностью и получения согласованных результатов при различных запусках. Вы можете использовать любое целое число. По умолчанию None.

На следующем рисунке показан пример данных, сгенерированных алгоритмом make_moons с гауссовским шумом 0,05.

Возврат

  • X: сгенерированные образцы в виде (n_samples, 2).
  • y: Целочисленные метки (0 или 1) для каждого образца, говорящие о том, к какой луне принадлежит образец.

Случаи использования

  • Сделать нелинейные границы решений для задач бинарной классификации.
  • Чтобы показать разницу между PCA и Kernel PCA.

4. make_classification

Алгоритм Scikit-learn make_classification создает случайный набор данных классификации n-классов (мультиклассов). Данные нормально распределены. Шум добавляется к данным с помощью n_informative, n_redundant и n_clusters_per_class параметры.

Важные гиперпараметры

  • n_samples: общее количество точек данных (наблюдений/выборок) для создания. Обычно это целое число. По умолчанию 100.
  • n_features: количество признаков (переменных) для каждой точки данных. По умолчанию 20.
  • n_redundant:количество избыточных функций. Это занимает целое число. По умолчанию 2.
  • n_informative:количество функций, используемых для построения модели классификации, используемой для создания выходных данных. Это занимает целое число. По умолчанию 2.
  • n_repeated:количество повторяющихся (дублированных) объектов. Это занимает целое число. Значение по умолчанию – 0.
  • n_classes:количество классов в данных. Это занимает целое число. По умолчанию 2.
  • n_clusters_per_class:количество кластеров на класс. Это занимает целое число. По умолчанию 2.
  • class_sep: принимает значение с плавающей запятой. По умолчанию 1.0. Большие значения распределяют кластеры/классы и упрощают задачу классификации.
  • random_state: используется для управления случайностью и получения согласованных результатов при различных запусках. Вы можете использовать любое целое число. По умолчанию None.

На следующем рисунке показан пример данных, сгенерированных алгоритмом make_classification с тремя классами.

Возврат

  • X: сгенерированные образцы в виде (n_samples, n_features).
  • y: Целочисленные метки (начиная с 0) для каждого образца, указывающие, к какому классу принадлежит образец.

Случаи использования

  • Генерировать данные для задач мультиклассовой классификации.
  • Для создания нелинейных границ решений для задач бинарной классификации.

5. сделать_регрессия

Алгоритм Scikit-learn make_regression генерирует случайные данные для задач регрессии.

Важные гиперпараметры

  • n_samples: общее количество точек данных (наблюдений/выборок) для создания. Это целое число. По умолчанию 100.
  • n_features: количество признаков (переменных) для каждой точки данных. По умолчанию 100.
  • n_informative:количество функций, используемых для построения линейной модели, используемой для создания выходных данных. Это целое число. По умолчанию 10.
  • n_targets: количество целей регрессии. Другими словами, это размер выходных данных регрессии (y). Это целое число. Значение по умолчанию равно 1, что означает, что выход по умолчанию является скаляром.
  • bias: член смещения (отрезок) базовой линейной модели.
  • шум: стандартное отклонение гауссовского шума, добавленное к данным. Это принимает значение с плавающей запятой. Значение по умолчанию — 0,0, что означает отсутствие шума.
  • random_state: используется для управления случайностью и получения согласованных результатов при различных запусках. Вы можете использовать любое целое число. По умолчанию None.

Возврат

  • X: сгенерированные образцы в виде (n_samples, n_features).
  • y: выходные значения. Это содержит скалярные значения, когда n_targets=1. Количество значений равно количеству выборок, заданных параметром n_samples.

Случаи использования

  • Для генерации данных для задач регрессии.

6. make_swiss_roll

Алгоритм Scikit-learn make_swiss_roll создает набор данных о швейцарских рулетах в трехмерном пространстве. Швейцарский рулет — это двухмерное многообразие (форма), которое можно сгибать и скручивать в многомерном пространстве, таком как трехмерное.

Важные гиперпараметры

  • n_samples:количество точек данных (наблюдений/выборок) на швейцарской булавке. Это целое число. По умолчанию 100.
  • шум: стандартное отклонение гауссовского шума, добавленное к данным. Это принимает значение с плавающей запятой. Значение по умолчанию — 0,0, что означает отсутствие шума.
  • random_state: используется для управления случайностью и получения согласованных результатов при различных запусках. Вы можете использовать любое целое число. По умолчанию None.

На следующем рисунке показан пример данных, сгенерированных алгоритмом make_swiss_roll с гауссовым шумом 1,0.

Возврат

  • X: сгенерированные образцы в виде (n_samples, 3).
  • t:одномерное положение выборки в соответствии с основным размером точек в многообразии.

Случаи использования

  • Продемонстрировать сравнение различных методов обучения.

7. make_s_curve

Алгоритм Scikit-learn make_s_curve создает набор данных S-образной кривой в трехмерном пространстве.

Важные гиперпараметры

  • n_samples: количество точек данных (наблюдений/выборок) на кривой S. Это целое число. По умолчанию 100.
  • шум: стандартное отклонение гауссовского шума, добавленное к данным. Это принимает значение с плавающей запятой. Значение по умолчанию — 0,0, что означает отсутствие шума.
  • random_state: используется для управления случайностью и получения согласованных результатов при различных запусках. Вы можете использовать любое целое число. По умолчанию None.

На следующем рисунке показан пример данных, сгенерированных алгоритмом make_s_curve с гауссовым шумом 1,0.

Возврат

  • X: сгенерированные образцы в виде (n_samples, 3).
  • t:одномерное положение выборки в соответствии с основным размером точек в многообразии.

Случаи использования

  • Продемонстрировать сравнение различных методов обучения.

Краткое содержание

  • Алгоритмы make_blobs и make_classification создают наборы данных классификации n-классов (мультиклассов). Точки данных в каждом случае нормально распределены.
  • make_classification имеет множество параметров для управления данными. make_blobs — это упрощенный вариант make_classification.
  • make_blobsобеспечивает больший контроль над центрами и стандартными отклонениями каждого кластера.
  • Как make_circles, так и make_moons создают данные в двухмерном пространстве для задач классификации.
  • make_regressionсоздает случайные данные для задач регрессии.
  • Как make_swiss_roll, так и make_s_curveгенерируют данные в трехмерном пространстве для многообразного обучения — подход для нелинейного методы уменьшения размерности.

Это конец сегодняшнего поста.

Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы или отзывы.

Надеюсь, вам понравилось читать эту статью. Если вы хотите поддержать меня как автора, рассмотрите возможность подписаться на членство, чтобы получить неограниченный доступ к Medium. Это стоит всего 5 долл. США в месяц, и я получу часть вашего членского взноса.



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

Использованная литература:

  1. https://scikit-learn.org/stable/modules/classes.html#samples-generator
  2. https://scikit-learn.org/stable/datasets/sample_generators.html

Рукшан Прамодита
2022–05–11