Мотивация

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

Наш исходный магазин функций состоит как из плотных (агрегированные функции, например, общее количество кликов), так и из редких функций (функций нижнего уровня, например, количество кликов по категориям). Оба типа функций интерпретируемы, готовы к аналитике и могут быть считаны в конвейер кодировщика как есть. Редкие функции, которые легко усваиваются DictVectorizer, хранятся в озере данных как Spark MapTypes:

{«apparel_clicks»: 2, «produ_clicks»: 6, «electronics_clicks»: 1,…}

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

Фреймворк

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

Платформа LatentAF использует алгоритм BlazingText Amazon SageMaker, оптимизированную реализацию word2vec (см. Эту статью IbottaML для получения дополнительных сведений о том, как мы используем BlazingText). Благодаря тому, что все задания по обучению, преобразования и артефакты моделей управляются AWS, мы значительно упростили ту часть производственного конвейера, которую нам необходимо поддерживать. Мы используем модель word2vec skip-gram, но вместо того, чтобы обучать модель изучению встраивания слов, мы загружаем в модели последовательности общих токенов, например последовательность покупок по идентификатору продукта, которая представляет собой недавнюю поездку по магазинам, где изученные вложения представляют продукты. Эти вложения продуктов похожи на вложения слов в том, что похожие и дополнительные продукты будут ближе друг к другу в скрытом векторном пространстве, что дает нам возможность представить больше измерений продукта, чем только его метаданные. Агрегирование этих встраиваний до уровня пользователя позволяет нам фиксировать компонент времени, а также дополнительные отношения на уровне продукта, которых не существует в нашем старом разреженном пространстве функций.

Оценка

Мы провели тщательную оценку этих новых функций, сравнив их с нашим старым набором функций, обучив десятки моделей, которые оценивают склонность пользователя к покупке определенных продуктов. Новые скрытые функции превзошли старые: средний рост AUC составил 8%. Размерность вектора LatentAF не только более предсказуема, но и составляет 1/100 от старого разреженного пространства признаков, что делает эти функции более портативными и более быстрыми для чтения моделями. Мы также немного отрегулировали скрытый размер вектора (см. Таблицу ниже), и word2vec работает очень эффективно даже при сжатии пространства функций ~ 10 000 до 25:

Побочным продуктом этих функций на уровне клиента являются сами скрытые вложения на уровне продукта, с которыми интересно поиграть и с которыми можно доказать, что word2vec изучает эффективные представления продуктов. Сосредоточившись на пространстве встраивания категорий продуктов (представляющих категории продуктов, которые покупают пользователи, например, средства для ухода за волосами, закуски, макаронные изделия и т. Д.), Мы вычисляем косинусное сходство между каждой парой встраивания категорий продуктов в нашем словаре, чтобы представить, как Близкое вложение каждой товарной категории к другой в скрытом векторном пространстве. Для конкретной интересующей товарной категории мы можем увидеть наиболее похожие товарные категории в соответствии с косинусоидальным сходством. Возьмем, к примеру, категорию кетчуп; пять наиболее похожих векторов категорий:

  1. майонез
  2. горчица
  3. соусы
  4. хот-доги
  5. замороженный картофель

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

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

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

Заключение

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

Мы нанимаем

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