Подготовка данных к моделированию — один из первых фундаментальных этапов работы с данными

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

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

Конвейер подготовки данных

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

Сбор данных. Первым шагом является сбор данных, которые вы хотите использовать для обучения модели машинного обучения. Данные могут поступать из разных источников, таких как файлы CSV, базы данных, API, датчики IoT и другие.

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

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

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

Термин конвейер также используется программным объектом, принадлежащим библиотеке Scikit-learn в Python. Это позволяет нам указать этапы обработки данных, чтобы облегчить кодирование и уменьшить количество ошибок.

Если вы хотите узнать о конвейерах Scikit-Learn, прочитайте статью ниже.



Сбор данных

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

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

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

Другие источники данных могут быть

  • Публичные и частные API
  • Прямые поставщики
  • Опросы

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

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

Вот статья, которая посвящена именно процессу создания набора данных



Практический пример этапа сбора данных

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

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

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

Предварительная обработка данных

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

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

Термины «стандартизация» и «нормализация» часто используются взаимозаменяемо. На самом деле они не совсем одинаковы.

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

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

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

Практический пример этапа предварительной обработки данных

Давайте подумаем о тексте. Много текста организовано в корпус (список документов). Эти данные следует сначала обработать, прежде чем они будут переданы в модель машинного обучения.

Гипотетический конвейер может быть:

  • токенизация текста
  • остановить удаление слова
  • стемминг / лемматизация
  • векторизация

Это некоторые из наиболее распространенных шагов предварительной обработки текстовых данных.

Преобразование данных

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

Уменьшение размерности используется для уменьшения количества признаков в данных. Этот шаг может быть полезен, когда у вас много данных, но ограничены ресурсы, например время обработки модели машинного обучения. Одним из наиболее часто используемых методов является PCA (анализ основных компонентов).

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

Прочитайте, как сделать выбор функций с помощью метода под названием Boruta в Python.



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

Практический пример этапа преобразования данных

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

Внедрить PCA в Sklearn довольно просто — этот фрагмент кода отражает общую суть обучения и применения PCA в Python.

from sklearn.decomposition import PCA

pca = PCA(n_components=2)

pca.fit(X_train)

X_train_pca = pca.transform(X_train)

# we have successfully reduced the entire feature set to just two variables
x0 = X_train_pca[:, 0]
x1 = X_train_pca[:, 1]

Разделение данных на обучающие, проверочные и тестовые наборы

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

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

Проверочный набор. Проверочный набор используется для оценки производительности модели машинного обучения во время обучения и проверки ее гиперпараметров.

Набор тестов. Набор тестов используется для оценки производительности модели машинного обучения после обучения.

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

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

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

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

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



Практический пример использования train_test_split от Sklearn

Sklearn предоставляет классный API для управления разделением данных. Проверьте этот код.

from sklearn.model_selection import train_test_split

# X is out feature set, y is the target column
X_trainval, X_test, y_trainval, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
X_train, X_val, y_train, y_val = train_test_split(X_trainval, y_trainval, test_size=0.25, random_state=42)

print(f"Training set shape: {X_train.shape}")
print(f"Validation set shape: {X_val.shape}")
print(f"Test set shape: {X_test.shape}")

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

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

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

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

Заключение

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

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

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

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

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

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



Рекомендуемые чтения

Для интересующихся вот список книг, которые я рекомендовал по каждой теме, связанной с ML. На мой взгляд, есть НЕОБХОДИМЫЕ книги, которые сильно повлияли на мою профессиональную карьеру.
Отказ от ответственности: это партнерские ссылки Amazon. Я получу небольшую комиссию от Amazon за то, что порекомендую вам эти товары. Ваш опыт не изменится, и вы не будете платить больше, но это поможет мне масштабировать свой бизнес и создавать еще больше контента на основе ИИ.

Полезные ссылки (написано мной)