Введение

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

Принимая во внимание, что стоимость доставки пакетов, соответствующих продажам Mercado Libre, рассчитывается на основе их размеров, необходимо иметь модель (или более), которая позволяет нам прогнозировать вес, длину, ширину и высоту каждый продукт, который будет отправлен. Чем точнее эти оценки, тем точнее будет прогноз стоимости доставки, что, в свою очередь, улучшит условия для продавцов и покупателей. Более того, это сводит к минимуму расходы Mercado Envíos (поставки), когда дело доходит до получения ошибочных оценок.

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

На каком основании мы определяем сходство товаров?

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

Данные и функции

Процесс выбора / извлечения признаков и нормализации соответствующих измерений (целей) был основан на определении соответствующего ETL для проблемы.

Шаг 1

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

Шаг 2

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

Шаг 3

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

Почему мы разделяем наборы данных перед применением преобразований, общих для каждого из них?

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

Модель

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

На следующем рисунке показана архитектура и используемый технологический стек:

Ввод

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

  1. X: набор функций для каждого элемента.

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

  • заглавие
  • категория
  • марка
  • модель

Тогда X выглядит следующим образом:

2. y: набор размеров для каждого элемента.

  • масса
  • рост
  • ширина
  • длина

Тогда y выглядит следующим образом:

Препроцессор текста

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

  • Удалить диакритические знаки
  • Токенизатор
  • Программа проверки орфографии
  • Нижний регистр

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

Векторизатор

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

Регрессор KNN

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

Как проходит тренировочный процесс на данном этапе?

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

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

Как проходит процесс прогнозирования на данном этапе?

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

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

Вывод

Это набор прогнозов, оцениваемых моделью, который состоит из списков измерений для каждого элемента. См. Определение y.

Пример

Чтобы проиллюстрировать, как работает модель, процесс прогнозирования, выполняемый для элемента MLA699827356, показан ниже:

Сначала модель анализирует похожие предметы. Следующие элементы визуализируются моделью с примененным фильтром расстояния подобия:

Затем модель получает уже известные размеры для каждого подобного элемента из хранилища размеров:

Наконец, для получения окончательной оценки предметного элемента MLA699827356 вычисляется медиана каждого из параметров:

Модель обслуживания

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

В настоящее время API обслуживает 20 тысяч прогнозов в минуту или 29 миллионов в день. Среднее время вывода для нашей модели составляет 5 мс, и мы обслуживаем его на экземпляре 32 ГБ ОЗУ + 8 ядер.

Вот ответ JSON на статью MLA699827356.

{
    "dimensions": {
        "height": 29.3,
        "length": 10,
        "weight": 2802.5,
        "width": 23.25
    },
    "source": {
        "identifier": "MLA699827356",
        "origin": "similarity"
    }
}

Благодарности