Об офлайн-оценке системы рекомендаций

Вопрос или проблема

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

  1. Они разбивают офлайн-датасет на тренировочный и тестовый наборы
  2. Они обучают модели на тренировочном датасете
  3. Они оценивают их на тестовом датасете.

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

Например, рассмотрим оценку itemCF на MovieLens: если датасет разбивается случайным образом, порядок выборок перемешивается. Это означает, что мы можем использовать будущие данные для обучения модели и делать предсказания о прошлом:

Тренировочный датасет содержит информацию о том, что Боб купил книгу о Гарри Поттере в апреле 2019 года (это вторая покупка книги о Гарри Поттере), а
тестовый датасет содержит информацию, что Боб купил книгу о Гарри Поттере в марте
2019 года (это первая покупка книги о Гарри Поттере). Метод коллаборативной фильтрации на основе предметов может порекомендовать Гарри Поттера для первой покупки из-за
второй покупки, что противоречит закону причинности и приводит к переоценке производительности метода.

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

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

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

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

.

Ответ или решение

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

Обычно оценка проводится в три этапа:
1. Разбиение исходного датасета на обучающую и тестовую выборки.
2. Обучение моделей на обучающем наборе данных.
3. Оценка моделей на тестовом наборе данных.

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

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

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

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

Оцените материал
Добавить комментарий

Капча загружается...