Автор: Амирхоссейн Нуранизаде

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

Катастрофа в создании рекомендательных систем

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

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

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

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

Темные стороны построения рекомендательных систем

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

1. Не только об ученых данных

В компаниях люди обычно думают, что, когда речь идет о рекомендательных системах или проектах машинного обучения в целом, специалисты по данным — это все, что им нужно. Специалисты по данным тратят большую часть своего времени на разработку и тестирование рекомендательных моделей [1], хотя это только один компонент всей системы рекомендательных конвейеров. Есть и другие элементы, которые следует учитывать при построении рекомендательной системы. Нам нужны инженеры по данным для разработки конвейеров преобразования данных и хранилищ данных, инженеры DevOps для обеспечения управления, организации сетей и оркестровки инфраструктуры, а также инженеры-программисты для создания API, систем журналов и баз данных. Разработка всех этих компонентов — утомительная задача для специалиста по данным в одиночку.

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

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

2. Трудно найти нужных людей

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

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

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

3. Трудоемкие задачи

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

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

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

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

Есть надежда на рекомендательные системы

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

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

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

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

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

Например,

  • Бизнес-стратеги и менеджеры могут сосредоточиться на реальных проблемах бизнеса и маркетинговых стратегий, связанных с продуктом, вместо того, чтобы беспокоиться об организации проекта рекомендательной системы и сомневаться в его успехе. Они могут разрабатывать лучшие стратегии и ключевые показатели эффективности для оптимизации эффективности бизнеса, используя все бизнес-данные и используя весь потенциал науки о данных.
  • Исследователи данных могут сосредоточиться на улучшении системы рекомендаций и адаптации ее к конкретным потребностям бизнеса. Они могут выполнять множество методов разработки функций с различными источниками данных, пробовать современные алгоритмы рекомендательной системы, A/B-тестировать различные модели и превосходно использовать машинное обучение.
  • Инженеры данных могут сосредоточиться на разработке сложных конвейеров данных и передовых методах, которые обеспечивают оперативную и надежную обработку необходимых данных.
  • Инженеры по машинному обучению могут сосредоточиться на улучшении всей системы, максимально автоматизировав ее и разработав стратегии цикла обратной связи в соответствии с принципами MLOps.

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

DataChef RecSys на AWS Marketplace Документация DataChef RecSys

Мы в DataChef всегда рады помочь компаниям развернуть, настроить и дополнительно расширить свою рекомендательную систему для удовлетворения их конкретных потребностей от их имени. Так что оставайтесь с нами на связи через [email protected], LinkedIn или Twitter.

Использованная литература:

[1] 76% предприятий отдают приоритет ИИ и машинному обучению в ИТ-бюджетах на 2021 год

[2] Влияние машинного обучения на бизнес

Первоначально опубликовано на https://datachef.co 5 января 2022 г.