Итак, вы начинающий Data Scientist в начале своего пути. Вы начинаете проходить онлайн-курсы о том, как стать специалистом по данным, и на этих курсах вы сталкиваетесь с разделом под названием «Разработка функций». Вы читаете его и думаете про себя: «Хммм… неужели все так просто?»

Да! Это так просто в теории, но на практике все обстоит иначе.

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

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

Знай свою модель

Для оптимальной работы разных моделей потребуются разные функции. Некоторые модели чувствительны к числовым функциям, например, линейная регрессия. Если необработанные данные имеют широкий диапазон числовых значений, скажем, для одного объекта диапазон составляет от 0,001 до 1, а для другого объекта диапазон составляет от 1000 до 100 000; предварительная нормализация данных может привести к получению лучшей модели, чем использование необработанных данных. Такие простые методы, как нормализация данных, окажут большое влияние на модель линейной регрессии, но если вы используете древовидную модель, такую ​​как дерево решений, это не окажет такого большого влияния. Наличие большого количества бинарных функций, таких как результаты One-Hot Encoding, может хорошо подойти для модели дерева решений. Однако для модели линейной регрессии это будет не так хорошо или даже может ухудшить модель.

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

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

Помните о своей цели

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

Запоминание цели поможет нам генерировать идеи о том, какую функцию мы могли бы создать, которая имеет отношение к цели. Например, если у нас есть 2 типа данных, один для средней цены, которую пользователь обычно покупал, а другой для фактической цены продукта, и ваша цель — найти, какой продукт пользователь, скорее всего, купит. Помня о цели, мы можем создать функцию, которая показывает, соответствует ли этот продукт бюджету пользователя. Мы можем создать своего рода функцию сравнения, то есть фактическую цену, деленную на среднюю цену товара, который обычно покупал пользователь. Чем ближе результат к 1, тем больше цена товара подходит пользователю. Создав такую ​​функцию, мы, вероятно, сможем удалить две другие функции в зависимости от ситуации.

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

Не прекращайте экспериментировать

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

Заключение

Feature Engineering — это простая концепция, но ее правильное выполнение требует большой практики и опыта. Так что не бойтесь экспериментировать. Конечно, мы можем потерпеть неудачу, но когда мы потерпим неудачу; но это также прекрасная возможность для нас продолжить расследование и узнать, «почему» мы потерпели неудачу. Даже эти советы, которые я только что дал вам, являются результатом обучения на всех моих прошлых ошибках. Просто помните: Мы ученые, и продолжать учиться — это то, чем занимаются ученые.