Каково на самом деле разработать модель для реального бизнес-кейса

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

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

  1. Загрузите некоторые данные (возможно, один или несколько файлов CSV).
  2. Возможно, сделайте небольшую очистку, или есть вероятность, что набор данных уже достаточно чистый.
  3. Выполните некоторую предварительную обработку, например, преобразование категориальных данных в числовые.
  4. Просмотрите данные по множеству подходящих моделей, пока не найдете лучшую.
  5. Потратьте много времени на настройку гиперпараметров, разработку функций и выбор модели, поскольку очень небольшое улучшение может означать, что вы прыгнете на несколько позиций вверх в таблице лидеров.
  6. Конец

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

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

  1. Переведите бизнес-вопрос в вопрос с данными.
  2. Подумайте, как модель машинного обучения может подключиться к существующему стеку технологий.
  3. Тратьте много времени на извлечение, преобразование и очистку данных.
  4. Уделите много времени исследовательскому анализу, предварительной обработке и извлечению признаков.
  5. Постройте модель.
  6. Выберите лучшую модель, которую можно интегрировать в существующий стек технологий с наименьшими затратами на разработку.
  7. Оптимизируйте модель до тех пор, пока она не станет «достаточно хорошей» с учетом ценности для бизнеса.
  8. Разверните модель.
  9. Мониторинг модели в производстве.
  10. При необходимости переучитесь.
  11. Версия сборки 2.
  12. Продолжайте до тех пор, пока модель не перестанет использоваться в бизнесе.

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

Вам нужно будет перевести бизнес-вопрос в вопрос с данными.

В соревновании Kaggle проблема, которую необходимо решить, будет четко определена заранее. Например, на одном из последних конкурсов под названием Северсталь: обнаружение дефектов стали вам предоставляются некоторые тщательно отобранные данные, и проблема четко формулируется в виде проблемы с данными.

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

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

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

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

Данные не будут чистыми

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

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

Точно так же все необходимые данные могут быть получены не из одного простого источника. Для проекта по науке о данных вам может потребоваться получить данные из комбинации любого из следующего: SQL-запросы (иногда по нескольким базам данных), сторонние системы, парсинг веб-страниц, API или данные от партнеров. Подобно очистке данных, эта часть часто может быть очень трудоемкой частью проекта.

Выбор функций очень важен

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

Построение модели - самая маленькая часть процесса

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

Вы потратите меньше времени, чем думаете на настройку модели

В соревнованиях Kaggle нет ничего необычного в том, чтобы потратить недели на настройку модели, чтобы получить небольшое улучшение оценки модели. Поскольку это небольшое улучшение, вероятно, поднимет вас на несколько позиций вверх в таблице лидеров. Например, в текущем соревновании «Северстали» разница в баллах между позициями 1 и 2 в таблице лидеров в настоящее время составляет всего 0,002. Определенно стоит потратить время на то, чтобы немного улучшить свой результат, так как это может принести вам главный приз.

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

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

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

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

Работа на этом не заканчивается

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

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

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

Выводы

Этот пост отчасти был вдохновлен этим твитом Чипа Хуена.

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

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

Спасибо за прочтение!