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

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

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

Вот набор статей из этой серии:

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

Что такое Feature Engineering?

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

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

Разработка функций включает в себя ряд процессов, например

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

В этой серии вы познакомитесь с рядом методов изменения функций с использованием всех этих процессов.

Почему Feature Engineering?

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

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

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

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

Разработка функций против выбора функций

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

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

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

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

Вот еще одна серия статей о выборе функций:





Разделы серий

Эта серия разделена на разделы - вот краткое описание каждого из разделов:

  • Типы функций. Или типы переменных - мы узнаем о непрерывных, дискретных и категориальных переменных (которые могут быть номинальными или порядковыми), а также о переменных времени, даты и смешанных переменных.
  • Распространенные проблемы. В этом сообщении обсуждаются различные проблемы, которые вы можете встретить в реальных наборах данных, такие как недостающие данные, вменение данных, распределение переменных, выбросы и другие.
  • Работа с недостающими значениями. Мы рассмотрим основные методы, используемые для заполнения недостающих данных в вашем наборе данных.
  • Категориальное кодирование: в этом посте будут обсуждаться различные методы преобразования категориальных переменных в числа - частотное кодирование, быстрое кодирование и многое другое.
  • Преобразование функций. Мы рассмотрим математические преобразования, которые можно применить для изменения распределения числовых переменных, например логарифмические или обратные преобразования.
  • Дискретизация переменных. В этой статье рассматриваются процедуры дискретизации переменных, таких как равная ширина, равная частота, дискретное решение с использованием деревьев решений, кластеризация и многое другое.
  • Работа с выбросами. В этом сообщении будет показано, как определять выбросы и удалять их из набора данных.
  • Масштабирование функций. Мы рассмотрим несколько методов масштабирования функций, таких как стандартизация, масштабирование до минимума и максимума, масштабирование до единичной длины вектора и многое другое.
  • Обработка переменных времени и даты и смешанных переменных. Различные способы создания новых функций на основе даты, времени и смешанных переменных.

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

Предпосылки

Читатель этих статей должен иметь некоторое представление о машинном обучении. Мы будем использовать Python в качестве языка программирования, а также библиотеки науки о данных, такие как Pandas, NumPy, Matplotlib. , SciPy, и scikit-learn.

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

Ресурсы

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

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

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

Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить лучшие модели машинного обучения.