Три причины, почему вы не должны игнорировать это

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

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

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

1. Feature Engineering позволяет вам использовать все соответствующие функции в ваших данных

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

2. Feature Engineering может ускорить процесс обучения

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

В качестве конкретного примера, в нашем Практическом курсе машинного обучения мы недавно продемонстрировали влияние масштабирования признаков: используя Автомобильный набор данных UCI, алгоритм обучения (мы использовали Ridge) сошелся за 846 итераций для необработанных данных, в то время как после нормализации данных потребовалось всего 12 итераций.

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

3. Разработка функций может помочь в создании более качественных моделей

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

Еще один пример, в котором может помочь проектирование признаков, — удаление выбросов. Выбросы могут иметь огромное влияние на то, как строится модель, как показывают 3-е и 4-е изображения в этом рендеринге четверки Аскомба. Их удаление может значительно улучшить качество модели.

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

Заключение

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

Если вам нужна помощь в начале работы или выводе вашего проекта машинного обучения на новый уровень, мы в DataGrid Software будем рады вам помочь.