Вопрос или проблема
После прочтения нескольких учебников и статей о рекомендательных системах, я не могу понять, следует ли мне разбивать набор данных на обучающую и тестовую выборки или использовать весь набор данных, чтобы позволить модели запомнить все взаимодействия пользователей/товаров в процессе обучения.
Если я считаю, что могу переобучать модель каждый день, имеет ли смысл позволять модели переобучаться на всех данных, если модель будет рекомендовать только известные товары для известных пользователей (в этом случае использования)?
Кроме того, при использовании внедрений, как в моделях с двумя башнями, может ли внедрение знать, как внедрить пользователя с невидимым идентификатором пользователя? Достаточно ли использовать характеристики пользователя, чтобы внедрить невидимого пользователя?
Спасибо,
Жереми
Это зависит от вашей модели и вашей мотивации.
Если вы обучаете модель на основе контента, то ваши данные будут состоять из характеристик товара/пользователя. В этом случае вы можете захотеть выделить некоторых пользователей/товары для тестирования, если хотите, чтобы ваша модель рекомендовала невидимые товары пользователям. В противном случае вы можете захотеть рекомендовать только те товары, которые были включены в весь набор данных всякий раз, когда вы обучаете новую модель.
Если вы обучаете модель на основе совместной фильтрации, то ваши данные будут состоять из взаимодействий пользователь-товар. В этом случае вы можете захотеть отложить некоторые взаимодействия для тестирования. Вы можете выбрать пользователя/товар и поместить их в тестовый набор со всеми его взаимодействиями или просто взять несколько взаимодействий и оставить пользователей/товары в обучающем наборе.
lightfm.cross_validation.random_train_test_split случайным образом разбивает взаимодействия.
Этот пример neo4j является очень базовым учебным материалом и не упоминает о разбивке на обучающую и тестовую выборки.
Ответ или решение
Следует ли обучать модель на всей выборке в системах рекомендаций?
Когда мы говорим о системах рекомендаций, одним из ключевых вопросов является то, нужно ли делить данные на обучающую и тестовую выборки или же использовать весь набор данных для обучения модели. Этот вопрос имеет комплексный характер и зависит от нескольких факторов, включая тип модели, данные и цели проекта.
1. Тип модели
Системы рекомендаций можно классифицировать на два основных типа: основанные на контенте и коллаборативные.
- Контентные модели: Эти модели работают на основе признаков пользователей и объектов (например, характеристики товаров). Если ваша модель ориентирована на предсказание предпочтений пользователей для новых, ранее не виденных объектов, имеет смысл выделить некоторую часть данных для тестирования. Это позволит вам оценить, как модель справляется с непроверенными объектами.
- Коллаборативные модели: Они фокусируются на взаимодействиях между пользователями и объектами. Для таких моделей, тестирование также имеет значение, и вам стоит рассмотреть возможность оставления части взаимодействий для проверки. В этом случае можно выбрать таких пользователей или объекты, которые будут полностью исключены из обучающей выборки, чтобы протестировать, как хорошо модель может рекомендовать на основе имеющихся данных.
2. Возможность переобучения
Если вы собираетесь регулярно обновлять модель (например, ежедневно), существует соблазн использовать всю выборку для обучения. При этом важно помнить, что дублирование данных может привести к переобучению модели. Модель может «запомнить» взаимодействия, но это не всегда хорошо сказывается на ее способности рекомендовать новинки. Особенно это критично, если поведение пользователей со временем изменяется.
С другой стороны, подход с использованием всей выборки может оказаться полезным, если ваша цель — рекомендовать только известные элементы.
3. Обучение представлений
Еще одной важной темой является использование векторных представлений, таких как модели с двумя «башнями» (two-towers), которые используют векторизацию для представления пользователей и объектов. Здесь стоит отметить, что модель может не уметь интерпретировать пользователей с новыми идентификаторами, если они не были включены в обучающую выборку. Однако использование функций пользователей в качестве признаков может помочь создавать представление для незнакомых пользователей. Это создаст контекст для рекомендаций, даже если идентификатор пользователя был ранее неизвестен.
4. Рекомендации
Для достижения оптимальных результатов, рекомендуется использовать следующий подход:
- Разделение данных на тренировочные и тестовые: Всегда выделяйте часть данных для тестирования, чтобы объективно оценить качество модели.
- Регулярное обновление: Если ваш проект подразумевает частое переобучение модели на новых данных, убедитесь, что модель остается гибкой и адаптивной.
- Использование признаков пользователей: При построении векторных представлений учитывайте возможности использования дополнительных признаков для улучшения рекомендаций для незнакомых пользователей.
Заключение
Каждая ситуация уникальна, и принятие решения о тренировке модели на всех данных или же их разделении должно основываться на поставленных задачах и особенностях ваших данных. Всесторонний анализ является неотъемлемой частью процесса разработки системы рекомендаций для достижения наилучших результатов.