Технологии 9 августа 2018

Feature engineering: шесть шагов для создания успешной модели машинного обучения

Далее

Исследования в области машинного обучения приводят к созданию новых алгоритмов и методик. Даже такой метод, как feature engineering, существующий уже несколько десятилетий, постоянно обновляется. Команды разработчиков должны постоянно учиться и прокачивать свои навыки, генерируя новые подходы в машинном обучении. «Хайтек» перевел и дополнил статью VentureBeat, чтобы рассказать о современных методиках в feature engineering и дать советы разработчикам по созданию моделей с добавленной стоимостью.

Метод feature engineering так же стар, как и data science. Но почему-то он становится все более забытым. Высокий спрос на машинное обучение вызвал ажиотаж среди ученых-исследователей. Сегодня у них огромный опыт создания инструментов и алгоритмов. Но у них недостаточно отраслевых знаний, требуемых для feature engineering. Исследователи пытаются компенсировать это инструментами и алгоритмами. Однако алгоритмы теперь являются лишь товаром и сами по себе не генерируют корпоративное IP-портфолио (портфель интеллектуальных прав, принадлежащих компании — «Хайтек»).


Feature engineering (с англ. «создание показателей, признаков») — техника решения задач машинного обучения, позволяющая увеличить качество разрабатываемых алгоритмов. Предусматривает превращение данных, специфических для предметной области, в понятные для модели векторы. Чтобы эффективно решить задачу с feature engineering, необходимо быть экспертом в конкретной области и понимать, что влияет на конкретную целевую переменную. Поэтому многие разработчики называют feature engineering искусством, требующим решения большого количества задач и наработки опыта.

Сегодня такие стартапы, как ContextRelevant и SparkBeyond, разрабатывают новые инструменты, которые упростят для пользователей процесс создания и отбора показателей (feature selection).


Обобщенные данные тоже становятся товаром, а облачные сервисы машинного обучения (MLaaS), такие, как Amazon ML и Google AutoML, теперь позволяют даже менее опытным членам команды запускать модели данных и получать их прогнозы в течение нескольких минут. Но в результате этого набирают обороты те компании, которые развивают организационную компетенцию в сборе или изготовлении собственных данных, создаваемых при feature engineering. Простого сбора данных и построения моделей уже недостаточно.

Корпорации многому учатся у победителей соревнований по моделированию, таких как KDD Cup и Heritage Provider Network Health Prize. Своими успехами они обязаны именно грамотному подходу к методу feature engineering.

Ян Лекун, Facebook: прогностические модели мира — решающее достижение в ИИ

Методы feature engineering

Для техники feature engineering ученые разработали ряд методов.

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

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

Команды машинного обучения часто используют биннинг для разбивания отдельных функций на несколько для лучшего понимания. Например, разделение функции «возраст» на «молодой» для <40 лет, «средний»=»» для=»» 40–60=»» лет=»» и «пожилой»=»»>60 лет.


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


Некоторые другие примеры преобразований:

  • масштабирование значений между min-max переменной (например, возраста) в диапазоне [0, 1];
  • разделение количества посещений каждого типа ресторана в качестве индикатора «интереса» в кухнях мира.

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

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

Примеры использования формул:

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

Джианкарло Суччи: «Попытка спроектировать программу без багов — утопия»

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

  • Анализ основных компонентов (Principal component analysis, PCA) и анализ независимых компонентов (Independent component analysis, ICA) сопоставляют существующие данные с другим пространством объектов.
  • Глубокий синтез функций (Deep feature synthesis, DFS) позволяет переносить промежуточные результаты обучения из средних слоев нейронных сетей.

Основы для успешной разработки

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

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

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

Мы все — сенсоры: CEO SQream Ами Галь — о том, как обрабатывают big data

3. Идеальные новые функции. Подумайте о способах создания новых данных для лучшего описания и решения заданной проблемы. Знания в предметной области и привлечение экспертов на этом этапе обеспечат повышение ценности feature engineering.

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

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

Измерение производительности модели должно успешно применяться в бизнесе. Сегодня команды имеют обширный набор параметров измерения, которые выходят далеко за рамки точности: отзыв, оценка F1 и кривая рабочей характеристики приемника (Receiver operating characteristic, ROC).

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

Новая алхимия

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


Важные принципы для успеха в feature engineering:

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


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