Объясняется с помощью графических визуализаций
Искусственные или синтетические данные — это тип данных, которые генерируются искусственно с помощью компьютерных алгоритмов. Противоположностью являются данные реального мира, полученные в результате реальных событий.
В машинном обучении и глубоком обучении мы часто используем синтетические данные для следующих целей.
- Чтобы продемонстрировать, как алгоритмы машинного обучения работают за кулисами.
- Для проверки предположений в моделях машинного обучения.
- Генерировать большой объем данных для моделей глубокого обучения. Получение такого большого количества данных о реальных событиях слишком дорого, сложно и требует много времени.
- Для создания данных, удовлетворяющих определенным условиям, которые обычно недоступны в реальных данных.
- Чтобы получить контроль над данными. Мы можем указать, сколько функций, наблюдений, кластеров и т. д. должно быть в данных, просто изменив значения параметров в алгоритмах генератора данных.
- Для проверки моделей машинного обучения и глубокого обучения.
- Не нужно беспокоиться о конфиденциальности данных, потому что данные синтетические.
Методы, описанные в этой статье, включают в себя 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 долл. США в месяц, и я получу часть вашего членского взноса.
Большое спасибо за вашу постоянную поддержку! Увидимся в следующей статье. Всем удачного обучения!
Использованная литература:
- https://scikit-learn.org/stable/modules/classes.html#samples-generator
- https://scikit-learn.org/stable/datasets/sample_generators.html
Рукшан Прамодита
2022–05–11