Это третья часть учебного пособия Пошаговое руководство PM по созданию продуктов на основе машинного обучения из 6 частей.

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

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

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

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

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

Идея

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

  • Сосредоточьтесь на проблеме. Как уже говорилось, машинное обучение необходимо использовать для решения реальной бизнес-проблемы. Убедитесь, что все заинтересованные стороны в вашей команде и в компании согласны с проблемой, которую вы решаете, и с тем, как вы будете использовать решение.
  • Выберите целевую функцию. В зависимости от проблемы решите, какой должна быть цель модели. Есть ли целевая функция, которую модель пытается предсказать? Есть ли какая-то доля «истины», которую вы пытаетесь доказать, которую вы можете проверить на основании «достоверных» данных, например цены на дома, изменения цен на акции и т. д.? Или вы просто пытаетесь найти закономерности в данных? Например, объединить изображения в группы, у которых есть что-то общее?
  • Определите показатели качества. Как бы вы оценили качество модели? Иногда трудно предвидеть приемлемое качество, не видя результатов, но целенаправленное представление о цели полезно.
  • Проведите мозговой штурм. Ваша цель - решить, какие данные могут помочь вам решить проблему / принять решения. Самый полезный вопрос: «Как специалист в области космоса подойдет к этой проблеме?» Подумайте, на каких переменных / данных будет основано решение. Каждый фактор, который может повлиять на человеческое суждение, должен быть проверен - на этом этапе следует максимально широко охарактеризовать ситуацию. Понимание ключевых факторов может потребовать знания проблемного бизнес-пространства, что является одной из причин, по которой на данном этапе важно активно вовлекать людей из бизнеса / продукта. Группе данных необходимо будет преобразовать эти потенциальные входные данные в характеристики модели. Обратите внимание, что для превращения входных данных в функции может потребоваться дополнительная обработка - подробнее об этом далее.

Подготовка данных

Цель этого этапа - собрать необработанные данные и преобразовать их в форму, которую можно будет использовать в качестве входных данных для вашей модели-прототипа. Для этого вам может потребоваться выполнить сложные преобразования данных. Например, предположим, что одна из ваших характеристик - это отношение потребителей к бренду: сначала вам нужно найти соответствующие источники, в которых потребители говорят о бренде. Если название бренда включает в себя часто используемые слова (например, «Apple»), вам необходимо отделить болтовню о бренде от общей болтовни (о фруктах) и провести ее через модель анализа настроений, и все это, прежде чем вы сможете приступить к построению своего прототип. Не все функции так сложны для создания, но для некоторых может потребоваться значительная работа.

Давайте посмотрим на этот этап более подробно:

  • Как можно быстрее соберите данные для своего прототипа. Сначала определите недостающие данные. В некоторых случаях вам может потребоваться разбить необходимые входные данные, чтобы перейти к более легкодоступному уровню «строительных блоков» необработанных данных или к данным, которые являются близкими к тому, что вам нужно, и которые легче получить. После идентификации найдите самый быстрый и простой способ получить ваши данные. Немасштабируемые методы, такие как быстрая загрузка вручную, написание элементарного скребка или покупка выборки данных, даже если это немного дороже, могут быть наиболее практичным подходом. Слишком много вкладывать в масштабирование сбора данных на этом этапе обычно не имеет смысла, так как вы еще не знаете, насколько полезными будут данные, какой формат лучше всего и т. Д. Следует привлекать деловых людей - они могут помочь найти пути мозгового штурма. чтобы найти данные, которые недоступны, или просто получить их для команды (соответствующие бизнес-функции, которые необходимо задействовать, зависят от потребностей в данных и организационной структуры - здесь могут быть полезны партнерские отношения, развитие бизнеса или маркетинг). Обратите внимание, что в случае алгоритма обучения с учителем вам нужны данные не только для функций модели; вам нужны «достоверные» точки данных для целевой функции вашей модели, чтобы обучить, а затем проверить и протестировать вашу модель. Вернемся к примеру с ценами на жилье - чтобы построить модель, которая прогнозирует цены на жилье, вам нужно показать ей некоторые дома с ценами!
  • Очистка и нормализация данных. На этом этапе большая часть ответственности переходит к вашей команде по обработке и анализу данных. Требуется значительная работа по преобразованию идей и необработанных наборов данных в фактические входные данные модели. Наборы данных необходимо проверять на работоспособность и очищать, чтобы избежать использования неверных данных, нерелевантных выбросов и т. Д. Данные, возможно, потребуется преобразовать в другой масштаб, чтобы упростить работу или согласование с другими наборами данных. Обычно требуется предварительная обработка данных для извлечения соответствующей информации, особенно при работе с текстом и изображениями. Например, включение в модель слишком большого количества больших изображений приводит к огромному количеству информации, которую невозможно обработать, поэтому вам может потребоваться снизить качество, поработать с частью изображения или использовать только контуры объектов. В случае с текстом вам может потребоваться определить релевантные вам сущности в тексте, прежде чем вы решите включить его, выполнить анализ тональности, найти общие n-граммы (часто используемые последовательности из определенного количества слов) или выполнить множество других преобразований. Обычно они поддерживаются существующими библиотеками и не требуют от вашей команды изобретать велосипед, но на это нужно время.

Прототипирование и тестирование

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

  • Создайте прототип. Когда данные будут в хорошем состоянии, группа специалистов по анализу данных может приступить к работе над реальной моделью. Имейте в виду, что на этом этапе в науке много искусства. Это включает в себя множество экспериментов и открытий - выбор наиболее подходящих функций, тестирование нескольких алгоритмов и т. Д. Это не всегда простая задача выполнения, и поэтому сроки получения готовой к эксплуатации модели могут быть очень непредсказуемыми. Бывают случаи, когда первый протестированный алгоритм дает отличные результаты, и случаи, когда ничего из того, что вы пытаетесь не пробовать, работает хорошо.
  • Подтвердите и протестируйте прототип. На этом этапе ваши специалисты по данным будут выполнять действия, которые гарантируют, что окончательная модель будет настолько хорошей, насколько это возможно. Они будут оценивать производительность модели на основе заранее определенных показателей качества, сравнивать производительность различных алгоритмов, которые они пробовали, настраивать любые параметры, влияющие на производительность модели, и в конечном итоге тестировать производительность окончательной модели. В случае обучения с учителем им нужно будет определить, достаточно ли хороши прогнозы модели по сравнению с исходными данными для ваших целей. В случае обучения без учителя существуют различные методы оценки успеваемости в зависимости от проблемы. Тем не менее, есть много проблем, когда просто взгляд на результат очень помогает. В случае кластеризации, например, вы можете легко построить график объектов, которые вы группируете по нескольким измерениям, или даже использовать объекты, которые являются формой носителя, чтобы увидеть, кажется ли кластеризация интуитивно разумной. Если ваш алгоритм помечает документы ключевыми словами, имеют ли они смысл? Есть ли явные пробелы, когда не удается добавить теги или отсутствуют важные варианты использования? Это не заменяет более научные методы, но на практике помогает быстро определить возможности для улучшения. Это также та область, где помогает еще одна пара глаз, поэтому не оставляйте это просто вашей команде по анализу данных.
  • Итерации. На этом этапе вам нужно решить вместе со своей командой, необходимы ли дальнейшие итерации. Как модель работает по сравнению с вашими ожиданиями? Достаточно ли хорошо он работает, чтобы значительно улучшить текущее состояние вашего бизнеса? Есть ли области, где он особенно слаб? Требуется ли большее количество точек данных? Можете ли вы придумать дополнительные функции, которые улучшат производительность? Существуют ли альтернативные источники данных, которые улучшили бы качество входных данных для модели? И т.д. Здесь часто требуется дополнительный мозговой штурм.

Производство

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

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

  • Увеличьте охват данных. Во многих случаях вы создаете прототип своей модели на основе более ограниченного набора данных, чем вы бы фактически использовали в производстве. Например, вы создаете прототип модели для определенного сегмента клиентов, а затем должны расширить ее до всей своей клиентской базы.
  • Масштабирование сбора данных. После того, как вы проверили, какие данные полезны для модели, вам нужно создать масштабируемый способ сбора и приема данных. На этапе прототипирования было нормально собирать данные вручную и в произвольном порядке, но для производства вы хотите максимально автоматизировать это.
  • Обновить данные. Создайте механизм, который обновляет данные с течением времени - либо обновляет существующие значения, либо добавляет новую информацию. Если по какой-либо причине вам не нужно хранить исторические данные, ваша система должна иметь способ хранить растущие объемы данных с течением времени.
  • Масштабные модели. Это касается как науки о данных, так и инженерного аспекта. С точки зрения науки о данных, если вы изменили базовые данные, например расширили количество включаемых вами клиентских сегментов, вам необходимо переобучить и повторно протестировать свои модели. Модель, которая хорошо работает с определенным набором данных, не всегда будет работать с более широким или другим набором данных. С архитектурной точки зрения модель должна иметь возможность масштабирования для более частого запуска на растущих объемах данных. В примере с рекомендациями по фильмам, вероятно, будет больше пользователей, больше фильмов и дополнительная информация о предпочтениях каждого пользователя с течением времени.
  • Проверьте выбросы. Хотя модель в целом может очень хорошо масштабироваться, могут быть небольшие, но важные совокупности, для которых модель не подходит. Например, ваши рекомендации по фильмам могут очень хорошо работать для пользователей в среднем, но для родителей вы будете показывать в основном детские фильмы, потому что они выбирают фильмы для детей из своей учетной записи. Это проблема дизайна продукта - вам нужно отделить рекомендации для родителей от рекомендаций для их детей в продукте, но это не то, что модель вам просто скажет.

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

Примечание об аутсорсинге

Построение модели часто связано с некоторыми очень трудоемкими и сизифичными задачами, такими как создание помеченных данных и тестирование модели. Например, маркировка сотен или тысяч точек данных с правильными категориями в качестве входных данных для алгоритма классификации, а затем проверка правильности выходных данных модели классификации. Очень полезно настроить способ передачи таких задач по требованию на аутсорсинг по мере их возникновения. По моему опыту, вы можете получить приличные результаты от Mechanical Turk, если заставите несколько человек выполнять одно и то же простое задание и брать более частые ответы или какие-то средние. Есть такие платформы, как CrowdFlower, которые дают более надежные результаты, но они и более дорогие. Определенные задачи требуют дополнительной предварительной подготовки людей, выполняющих их (например, если задача специфична для вашего пространства и / или требует предварительных знаний), и в этом случае вы можете проверить такие платформы, как Upwork.

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

Чтобы прочитать больше моих работ по управлению продуктом и подписаться на мой информационный бюллетень, посетите https://producthumans.com/. Скоро появится больше контента (включая машинное обучение)!