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

Это моя первая статья, которую я публикую на Medium, и мне очень интересно услышать ваши мысли и комментарии.

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

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

Машинное обучение — довольно сложная область, и если вы не понимаете концепции и технических аспектов, связанных с ним, вы рискуете разработать модели, которые могут быть не только неточными или предвзятыми, но и просто бесполезными. Тем не менее, есть много отличных ресурсов, которые могут помочь вам в вашем путешествии с машинным обучением, большинство из них доступны в Интернете. Я лично очень рекомендую все, что написал Эндрю Нг и DeepLearning.IO, а также многие книги О’Рейли, посвященные этой теме.

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

1) Плохо определены объем и сроки

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

Сначала обо всем по порядку.

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

Вернитесь к проблеме снова. Если инженерия данных не подходит для ее решения, как ее может решить машинное обучение? Будет ли это требовать контролируемого или неконтролируемого обучения? Или объединить то и другое вместе? Это проблема глубокого обучения? Или регрессия может решить эту проблему?

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

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

2) Что исследовать?

Почему вам нужно сначала изучить данные, если цель машинного обучения состоит в том, чтобы машина их изучила? Разве машина не сделает это за вас? Это цель машинного обучения, верно?

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

Основные проблемы машинного обучения связаны с тем, что данные:

  • Недостаточный
  • Непредставитель
  • Плохое качество
  • Не имеющий отношения

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

После того, как вы согласовали цели, показатели и пороговые значения, которые будут определять принятие проекта и, следовательно, готовность модели к вводу в эксплуатацию, пришло время…

Изучите данные.

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

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

3) Данные так же хороши, как они есть, зачем вам это менять?

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

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

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

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

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

Очистить данные

Большинство алгоритмов машинного обучения будут с трудом работать с пропущенными значениями. Вы можете справиться с этим несколькими способами, но наиболее распространенным является установка отсутствующих значений в ноль, медиану или среднее значение. Другое преобразование, о котором вам следует подумать, — это обработка текста и категориальных атрибутов. Большинство алгоритмов машинного обучения предпочитают работать с числами, а это значит, что вы должны преобразовать текст в числовые значения. Категориальные данные довольно часто могут обрабатываться с помощью одноразового кодирования, то есть вы «транспонируете» переменные категории в отдельные переменные со значениями 1 и 0 в качестве выходов. Другими преобразованиями, которые вы должны рассмотреть, являются объединение определенных атрибутов или выполнение определенной очистки определенных атрибутов. Честно говоря, Scikit-Learn — ваш лучший друг в этом отделе.

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

Это конец раздела «Как НЕ запускать проекты машинного обучения»   Часть I.

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

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

Питер Брюс, Эндрю Брюс и Питер Гедек «Практическая статистика для специалиста по данным»

Орельен Герон «Практическое машинное обучение с помощью Scikit-Learn, Keras и Tensorflow»