Ранжирование объявлений с помощью машинного обучения

Введение в Learning to Rank и наш путь к поисковому ранжированию на основе машинного обучения в OLX

Вступление

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

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

Поиск: отзыв и рейтинг

Функция поиска на любой платформе обычно работает следующим образом: пользователь вводит запрос (строку поиска), может применять некоторые фильтры, такие как марка продукта, ценовой диапазон и т. Д. Эта информация является явной и обычно не упрощается, например, например, если пользователь ищет «iphone» в Кейптауне в категории «Сотовые телефоны», мы получаем псевдозапрос, например:

Этот запрос попадает в нашу поисковую систему, и в зависимости от запроса и фильтров мы получаем от нескольких до более десяти тысяч релевантных результатов, это то, что мы называем Отзыв запроса (вы можете прочитать подробнее о том, как улучшить отзыв здесь). Теперь, в каком порядке мы должны представить это нашему пользователю, поскольку все они соответствуют пользовательскому запросу, это то, что мы назвали проблемой Ранжирование, т.е. учитывая список элементов и пользовательский запрос, как следует ли расположить список элементов таким образом, чтобы наверху были наиболее релевантные результаты.

Структурирование проекта

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

  • Определение базового подхода: определение достойного базового уровня, по которому ваше решение машинного обучения должно превзойти. Это может быть предыдущее решение проблемы или решение, основанное на деловой интуиции.
  • Формализация проблемы машинного обучения: преобразование бизнес-проблемы в проблему машинного обучения, например будь то классификация или регрессия, определение целевой переменной, целевой функции, потерь и т. д.
  • Набор данных и маркировка: создание помеченного (при необходимости) набора данных для обучения и оценки.
  • Разработка и моделирование функций: создание правильных функций для обучения модели, перекрестной проверки, настройки гиперпараметров и т. д.
  • Обслуживание: создание инфраструктуры для обслуживания решения машинного обучения, отвечающего определенным требованиям к производительности.
  • Оценка и эксперименты: определение показателей для оценки модели в автономном режиме, а также в Интернете на этапе A / B-тестирования.

Давайте рассмотрим каждый из них шаг за шагом по мере продвижения вперед.

Определение хорошей базы

В онлайн-объявлениях одним из важных факторов конверсии являются:

  • Близость объекта: мера близости между выбранным пользователем местоположением и местоположением объекта.
  • Свежесть предмета: мера того, как давно предмет был размещен на платформе.

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

               score = ⍺ * proximity + β * freshness

Теперь возникает вопрос, как мы получили веса и β. Простым подходом было бы запустить несколько A / B-тестов, чтобы увидеть, какие веса работают лучше всего. Для измерения производительности можно использовать простой показатель, такой как конверсии на поиск.

Большой! так зачем нам машинное обучение, если мы можем это сделать?

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

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

Формализация проблемы машинного обучения

В широком смысле задача ранжирования или обучения ранжированию может быть сформулирована следующим образом:

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

  • Точечный подход: алгоритм учится, измеряя потери по одному элементу, которые обычно представляют собой разницу между фактической оценкой релевантности и прогнозируемой оценкой релевантности элемента. Это сводит проблему ранжирования к проблеме классификации или регрессии.
  • Парный подход: алгоритм учится, измеряя потери по паре элементов, которые представляют собой разницу в фактическом относительном порядке и прогнозируемом относительном порядке этих двух элементов. Это сводит ранжирование к проблеме попарной классификации.
  • Список - мудрый подход: алгоритм учится, напрямую минимизируя меры IR, такие как NDCG или MAP.

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

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

Набор данных и маркировка

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

Во втором подходе, который мы использовали, прошлые данные журнала поиска используются для создания меток релевантности. Например, предположим, что для поискового запроса мы представили пользователю 100 элементов, из которых пользователь прокручивал до первых 8 элементов и взаимодействовал с ними. Мы конвертируем эти взаимодействия в ярлыки релевантности, например показ имеет оценку релевантности 0, а клик имеет 1. Эти метки служат в качестве цели для проблемы классификации, позже во время прогнозирования вероятность класса соответствующего класса (в в приведенном выше примере click) используется в качестве рейтинга. Если у вас несколько уровней релевантности, вы можете использовать такие методы, как McRank, Prank и т. Д., Чтобы преобразовать вероятности класса в рейтинг.

Возможности

У нас есть различные сигналы на нашей платформе, которые можно использовать для определения релевантности конкретного элемента в контексте поиска, например

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

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

Метрика оценки

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

Мы выбрали NDCG @ K в качестве нашей оценочной метрики для измерения производительности алгоритма в автономном режиме, K можно определить на основе того, сколько элементов пользователь фактически видит в результаты поиска в среднем. Например, если пользователь редко переходит на страницу 2 результатов поиска, то вы можете выбрать K в качестве количества элементов, которые вы показываете на странице 1, так как вы действительно хотите, чтобы соответствующий элемент отображался на странице 1 из результатов поиска. Чтобы измерить эффективность в Интернете, мы можем взглянуть на такие показатели, как конверсии / поиск, или любые другие ключевые показатели эффективности, связанные с обнаруживаемостью в поиске.

Моделирование и обслуживание инфраструктуры

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

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

Результаты

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

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

Команда

Особая благодарность Кристиану Мартинесу, Мулуду Лоунаси, Андресу Пипичелло, Колину Смиту, Хорхе Корильяно, Владану Радосавлевичу, Data Science и Персонализация и актуальность в OLX.

Ресурсы и дополнительная литература

Библиотеки

Плагины поисковых систем

Оценочные показатели