Вопрос или проблема
Я работаю над проектом с многометочной рекомендационной системой и пытаюсь оценить его как задачу ранжирования.
Я вычисляю recall@k и precision@k, которые выглядят достаточно хорошо. Recall увеличивается, а Precision уменьшается, когда я пробую более высокие значения K, что ожидаемо.
Однако NDCG@K увеличивается до определенного значения K, а затем остается неизменным. Как можно объяснить такое поведение?
Трудно дать точный ответ относительно вашей конкретной проблемы (в основном значения K, вокруг которого вы больше не видите роста), и, думаю, вы уже могли продвинуться в этом вопросе.
Но с теоретической точки зрения DCG — это отношение релевантности, деленное на функцию дисконтирования. В задачи ранжирования с многометочными метками вы будете использовать бинарную функцию релевантности (либо 0, либо 1, в зависимости от того, принадлежит ли метка набору истинных меток). По определению функция дисконтирования является убывающей функцией, так что для больших значений K вклады неправильно ранжированных элементов будут стремиться к 0. Наиболее распространенная версия DCG использует функцию дисконтирования $\frac{1}{\log(rank)}$, следовательно, вклады очень плохо ранжированных положительных меток будут приблизительно $O(\frac{1}{\log K})$, таким образом, практически равными 0 для очень больших K.
Этого можно избежать, изменив функцию дисконтирования на функцию, убывающую медленнее (например, изменив основание логарифма или используя log(log(rank), низкую степень rank).
Также в общем случае NDCG@K стремится к 1, когда K стремится к бесконечности.
См. эту статью для теоретической проработки характеристик NDCG.
Ответ или решение
Вопрос о том, почему значение NDCG@K (нормализованного оценочного выигрыша на позиции K) остаётся стабильным в определённом диапазоне K для задачи рекомендательной системы с экстремально многометочной разметкой, является интересной проблемой, требующей тщательного анализа. Давайте разберёмся в деталях этого явления, применяя подход TEA (Теория, Пример, Применение).
Теория
Для начала необходимо понять основную теорию, лежащую в основе показателя NDCG@K. NDCG (нормализованный DCG) является метрикой, оценивающей качество ранжирования списка рекомендаций. DCG (Discounted Cumulative Gain), часть которого нормализованная в NDCG, измеряет, насколько хорошо система выдала релевантные рекомендации. Метрика DCG вычисляется как сумма релевантностей результатов, делённых на логарифмическую функцию ранга каждой позиции. Таким образом, вклад в общую оценку уменьшается при движении вниз по списку:
[ \text{DCG}p = \sum{i=1}^{p} \frac{rel_i}{\log_2(i + 1)} ]
Здесь (rel_i) — релевантность элемента на позиции (i). NDCG нормализует DCG, сравнивая его с идеальным DCG (iDCG), что позволяет получить значения в диапазоне от 0 до 1.
Когда (K) увеличивается, NDCG может не изменяться по нескольким причинам:
-
Дисконтовая Функция: Вложенные функции дисконта, такие как (\frac{1}{\log(rank)}), уменьшают значимость находящихся ниже позиций. На больших значениях K вклад неправильно ранжированных элементов становится практически нулевым, что стабилизирует NDCG.
-
Конвергенция: На больших K, NDCG имеет тенденцию к конвергенции к 1, что объясняет отсутствие изменений в значении, когда K превышает определённый порог. Это связано с тем, что выданные рекомендации достаточно хорошо покрывают множество релевантных меток.
Пример
Рассмотрим пример: вы работаете над рекомендательной системой, которая должна предлагать новостные статьи пользователю. Предположим, что у вас есть список новостей, релевантность которых оценена в бинарной шкале (релевантна или нет).
При анализе NDCG@K для K = 5, 10, 15 вы наблюдаете, что NDCG значительно увеличивается с K = 5 до K = 10, но затем почти не изменяется между K = 10 и K = 15. Это может происходить потому, что до K = 10 модель способна точно ранжировать наиболее релевантные статьи, и дальнейшее увеличение K включает элементы с незначительным вкладом в общую оценку из-за их меньшей релевантности и расположения на более низких позициях.
Применение
Для решения вашей конкретной задачи в рамках предложенного анализа можно рассмотреть несколько стратегий:
-
Анализ Функции Дисконта: Изменение базы логарифмической функции или выбор альтернативной функции могут привести к более медленному уменьшению вклада нижестоящих позиций. Например, можно использовать функцию с более низкой степенью уменьшения вклада.
-
Проверка Порога К: Определение оптимального K с помощью анализа результатов экспериментов и кривой NDCG, чтобы избежать избыточного увеличения K, которое не приносит существенной пользы.
-
Оптимизация Моделей: Пересмотр и улучшение модели для лучшего ранжирования позиций, что может включать улучшение генерации признаков или более тщательный подбор гиперпараметров модели.
-
Обогащение Данных: Разработка и внедрение более совершенных методов генерации данных, которые могут помочь системе лучше различать релевантные и нерелевантные метки.
Рассмотрение и внедрение этих подходов может помочь улучшить или объяснить текущую стабильность NDCG@K в вашем проекте. В конечном итоге, стабильность NDCG на высоких уровнях K – это не обязательно проблема, а может быть индикатором эффективности модели в нахождении релевантных позиций на начальных этапах ранжирования.