Мы начинаем урок,
посвященный задаче ранжирования.
Это задача, которая имеет много общего с известными нам задачами регрессии или
классификации, но при этом имеет ряд интересных особенностей,
о которых мы и будем говорить в этом уроке.
Итак, в чем состоит задача ранжирования?
У нас есть выборка, состоящая из l элементов: x1,
..., xl — все это какие-то объекты, имеющие признаковые описания.
Здесь никаких отличий нет.
Отличие — в целевой переменной, в ответах.
Если раньше у нас был свой ответ для каждого объекта в задачах обучения с
учителем, то теперь ответы — это некоторые пары из i-тых и j-тых объектов,
для которых известно, что i-тый объект меньше, чем j-тый объект.
Набор таких пар и является целевой переменной,
является ответом в данной задаче.
Что нам нужно сделать?
Нам нужно построить некоторую модель a,
которая принимает на вход объекты, но при этом требования к ней другие.
Если раньше модель должна была предсказать конкретный ответ для конкретного объекта,
то теперь модель должна быть устроена так, что если i-тый объект меньше j-того,
то и значение модели на i-том объекте будет меньше,
чем значение модели на j-том объекте.
То есть выходы ее должны быть такими, что по ним легко восстановить порядок.
Нам не важно, какие именно по величине эти ответы, главное,
чтобы они были правильно расположены относительно друг друга.
В этом и заключается главное отличие задачи ранжирования от всего остального.
Где это нужно?
Самый главный пример применения модели ранжирования — это, конечно,
ранжирование поисковой выдачи, например в Яндексе.
Нам даются пары запрос-документ, где запрос — это некоторые ключевые слова,
которые ввел пользователь в поисковую строчку, документы — это все документы,
которые есть в поисковом индексе или отобранные некоторым способом.
Наша задача — научиться восстанавливать порядок на этих парах,
причем порядок задан только для пар, у которых один и тот же запрос.
То есть нам нужно уметь ранжировать документы для одного запроса.
Порядок задается асессорами — это специальные люди,
которым на вход даются такие пары,
и их просят оценить релевантность данного документа данному запросу, то есть то,
насколько хорошо данный документ отвечает на данный запрос.
Дальше на основе этих оценок, которые могут быть как числовыми — релевантность
можно оценивать в числах, — так и попарными, то есть асессор может
непосредственно отсортировать документы, которые ему предложены на данный запрос.
Нам требуется данный порядок уметь восстанавливать,
уметь восстанавливать порядок документов для конкретного запроса.
Еще один пример применения ранжирования — это задача рекомендаций,
в которой нам даются пары пользователь и товар, и нужно уметь ранжировать товары
для данного пользователя так, чтобы они максимизировали некоторую метрику.
Опять же порядок задается только для одного пользователя на основе того,
например, какие предпочтения он имеет, какие товары он покупал, а какие нет,
или какие оценки он поставил тем или иным товарам.
Эта задача тоже часто применяется на практике.
У задачи ранжирования есть некоторое количество особенностей.
Во-первых, объекты не являются независимыми — целевая переменная,
ответы зависят от пар объектов, и это необходимо учитывать при решении.
В этой задачи гораздо более сложные метрики качества,
чем в ранжировании или классификации.
Обычно они даже оказываются дискретными, поскольку им важны не конкретные значения
модели, а порядок, который данная модель задает.
И еще одна проблема, о которой мы не будем говорить сейчас, но которая
тоже важна — это то, что в данной задаче важно правильно сформировать выборку.
Например, сходу непонятно, что именно отдавать на разметку асессорам,
какие именно пары из запросов и документов.
Аналогичный вопрос — про рекомендации.
Сразу непонятно, как формировать,
как извлекать предпочтения пользователей из данных.
В следующем видео мы поговорим о наиболее важном аспекте задачи
ранжирования — о том, как измерять качество решения этой задачи.