Введение

Недавно мы приняли участие в конкурсе Персональные рекомендации модной одежды Kaggle H&M, в ходе которого перед нами стояла задача создать систему рекомендаций, которая предсказывала бы, какие товары покупатель купит на определенной неделе, начиная с 23 сентября 2020 года.

«Датаизм указывает на то, что одни и те же математические законы применимы как к биохимическим, так и к электронным алгоритмам. […] Вы можете не соглашаться с идеей, что организмы — это алгоритмы, но вы должны знать, что это современная научная догма».

Homo deus Юваля Ноа Харари, глава 11: Религия данных

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

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

Рекомендации везде ❤

Рекомендации стали частью нашей повседневной жизни, и трудно представить, как мир функционировал до этой эпохи. Лично я ЛЮБЛЮ Spotify, создавая персонализированные плейлисты на основе того, что мне нравится — я исследователь, и я готов к новым впечатлениям — новым песням, которые соответствуют моему многожанровому музыкальному вкусу. Но для того, чтобы открыть для себя что-то новое, нужно время — вот почему мне нужно определенное количество песен, которые я могу слушать каждую неделю и добавлять в избранное те, которые мне больше всего нравятся. Как и в случае с Netflix — просто на основе краткой истории того, что вы смотрели и что вам понравилось, вы можете увидеть список сериалов или фильмов, которые вам, скорее всего, тоже понравятся. Сколько времени это сэкономит вам?

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

Что заставляет вас покупать эту куртку?

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

Когда я думаю о покупке одежды в сентябре, первое, что приходит на ум, это перемена погоды. Давайте отправимся в прошлое и окажемся в Нью-Йорке в сентябре 2020 года, который был решающим моментом конкурса. Чтобы было проще, давайте создадим персонаж — Эмили, которой 20 лет, и она учится в колледже.

Лето закончилось, скоро наступит осень, и листья начнут менять цвет. В основном солнечно, иногда пасмурно, днем ​​все еще довольно жарко (74°F ≈ 23°C), но холодно ночью (51°F ≈ 10°C).

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

Здесь мы запечатлели первый момент, когда возникла ПОТРЕБНОСТЬ в покупке. Это одна из вещей, которую мы попытаемся смоделировать — предсказать, что нужно клиенту в конкретный момент.

Что она может сделать сразу, так это открыть интернет-магазин H&M и поискать куртки, которые ей нравятся. Она листает сайт и понимает, что предпочла бы пальто, которое ей понадобится на всю осень.

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

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

Наконец, она просматривает все статьи и приходит к выводу, что хочет чувствовать себя более элегантно в этом сезоне. Ей очень нравится темно-синий цвет, но он стоит почти 200 долларов, и она не может себе его позволить. Поэтому ее второй выбор — классическое кремовое пальто, которое стоит всего 69,99 долларов.

Это третье измерение, на которое мы можем обратить внимание, — деньги.

Когда она знакомится с предложением H&M, она решает пойти в местный магазин. Она не любит покупать одежду в Интернете, не примерив ее. Она ищет ближайшие магазины H&M с помощью Google Maps и обнаруживает, что недалеко от Центрального парка есть магазин, где вечером она встретится с друзьями.

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

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

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

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

  • выбрать другое пальто
  • пойти в другой магазин H&M, чтобы найти тот, который она хотела
  • отбросьте мысль о покупке пальто в этот момент
  • ищите другое пальто от другого бренда

Решение будет зависеть от различных факторов:

  • насколько ей понравилось конкретное пальто («оно было хорошим» вместо «мне оно нравится, и оно должно быть у меня»)
  • как ей срочно нужно было пальто
  • какие альтернативы были доступны в тот конкретный момент
  • как далеко до других магазинов H&M
  • если бы пальто было доступно вообще где-нибудь в Нью-Йорке

Оглядываясь назад, посещение интернет-магазина H&M сыграло решающую роль в выборе НАШЕГО пальто. Представьте, что она этого не сделала и сразу пошла в магазин. Есть шанс, что она пропустит его, если не обратит внимание, проходя мимо. Кроме того, одежду можно представить в привлекательном виде на фотографиях, что также влияет на отдельные решения. Подводя итог, можно сказать, что решения покупателей также зависят от того, как они совершают покупки:

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

Другие факторы, влияющие на решение клиента, которые я могу придумать, это:

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

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

Данные

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

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

Клиенты

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

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

Транзакции

Транзакционные данные — это представление интересов, потребностей и стиля клиента. В таблице 31 788 324 транзакций. Схема выглядит следующим образом:

Иерархия статей

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

Описание статьи

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

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

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

Как видите, они многое говорят нам о продукте. Однако обратите внимание, что были также некоторые примеры с более общими описаниями.

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

Изображения статей

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

Изображения были вертикальными и довольно стандартизированными — большинство из них выглядело как примеры ниже. Они были центрированы, на светлом фоне и с таким же соотношением кадров.

Концептуализация

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

Модель ML: общая потребность в части одежды

Ожидания

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

в период с 10 по 17 июня 2020 года вероятность того, что покупатель купит хлопковую футболку, составляет 10 %, а вероятность того, что он купит теплую куртку, составляет 0,5 %.

* шансы не 0%, потому что некоторые могут поехать в место, где холодно или им это нужно для театральных занятий в школе, например

Какова вероятность того, что покупатель купит футболку или теплую куртку в течение недели, начинающейся 10 июня 2020 года?

Решение / Модели машинного обучения

Модели со склонностью к покупке на уровне типа одежды

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

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

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

Сезонность продаж одежды на основе временных рядов

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

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

Модель ML: стиль клиента

Ожидания

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

Решение / Модели машинного обучения

Встроенные изображения

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

Например, леопардовый принт. Алгоритм мог бы научиться обнаруживать такой паттерн и создавать для него отдельный признак. Значения вектора будут варьироваться от 0 до 1, где 0 означает отсутствие леопардового принта, а 1 — леопардовый принт на всей футболке.

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

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

Вывод алгоритма будет структурирован, как в примере ниже.

Вложения текста

Как и в случае встраивания изображений, подробное описание статей может придать модели еще одно измерение. Возьмем, к примеру, это описание:

Платье длиной до икры из плотного хлопкового поплина. Узкие, съемные, регулируемые бретели, широкая сборка на груди и юбка А-силуэта с мягкой драпировкой. Без подкладки. Это платье из органического хлопка входит в нашу коллекцию раскрашенных вручную полевых цветов. Узор был разработан нашими дизайнерами печати Кавитой, Эбигейл, Холли и Флорентином, которые выбрали свои любимые полевые цветы и воссоздали их акварелью.

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

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

Вывод алгоритма будет структурирован, как в примере ниже.

Системы рекомендаций

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

Фильтрация на основе содержания

Согласно определению, найденному здесь:

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

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

Совместная фильтрация

Согласно определению, найденному здесь:

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

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

Модель ML: доступный запас / срок службы товара

Поскольку существует 105 542 уникальных идентификатора article_id, и мы должны предсказать только 12 статей для каждого клиента, мы выяснили, что, вероятно, не все статьи предлагаются в каждый момент времени. Чтобы лучше понять, как выглядит время жизни article_id, я визуализировал еженедельные продажи выборки статей вместе с линией, представляющей кумулятивную долю от общего объема продаж статьи.

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

Ожидания

Расчетный объем продаж по article_id в неделю (всего или по магазинам).

Здесь вы можете видеть, что может быть некоторое совпадение с моделью временных рядов, предложенной ранее, но обратите внимание, что предыдущая модель была основана на более общем уровне типа продукта, а не на уровне article_id. Модель «запаса» скорее можно использовать для краткосрочных прогнозов, а не для расчетов сезонности.

Решение / Модели машинного обучения

Модель машинного обучения: окончательное решение клиента

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

Окончательная концепция

Окончательная концепция решения, к которому мы пришли, представлена ​​на схеме ниже.

Мы начинаем с источников данных и генерируем функции, используя несколько методов, включая генерацию вложений с помощью нейронных сетей. Затем все функции сохраняются в хранилище функций (см. запись в блоге Сравнение магазинов функций, написанную нашим коллегой Якубом Юрчаком). Когда все функции собраны, можно оценить несколько моделей машинного обучения.

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

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

Модель машинного обучения

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

В таблице ниже представлена ​​общая концепция окончательной модели.

Обзор моделей машинного обучения Kaggle

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

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

Следите за обновлениями!

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

Вам понравился наш пост? Если вы хотите узнать больше, скачайте нашу бесплатную электронную книгу «MLOps: Power Up Machine Learning Process. Введение в Vertex AI, Snowflake и dbt Cloud».

Первоначально опубликовано на https://getindata.com.

Автор блога: Адриан Дембек — Senior Data Scientist