Как смоделировать систему рекомендателей с учителем с изменяющимися данными

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

Предположим, что есть 2000 фильмов, и компания хочет рекомендовать некоторые фильмы (например, максимум 5 фильмов) каждому посетителю. Цель состоит в том, чтобы научиться предсказывать, какой фильм будет выбран, если предложен определенный набор фильмов.

   option-1  option-2  option-3  option-4  option-5  Selected-Movie
1. movie1    movie3    movie4                        movie4 
2. movie3    movie4    movie100  movie1000 movie1001 movie1001
3. movie4    movie5    movie34                       movie34

Основываясь на этом наборе данных, я хочу узнать, когда образец 1 предлагается клиенту, он выберет movie4. Поскольку количество признаков может быть очень высоким (здесь 2000 фильмов), я думаю, что использование one-hot-кодирования не будет хорошим вариантом. Подумав, что максимум 5 фильмов могут быть рекомендованы, я подумал, что может быть хорошим вариантом рассматривать вектор размером 5, и если количество рекомендованных фильмов меньше 5, пробелы будут заменены на 0. Однако в этой ситуации важна перестановка фильмов. Например, (1,2,3,4,5) будет отличаться от (2,1,3,4,5), и я хочу рассматривать оба случая как одинаковые. Другими словами, все 5! перестановок должны быть одинаковыми, и между ними нет различий. Более того, с этой представлением данных, я думаю, что не будет возможности использовать Дерево решений, в то время как некоторые алгоритмы, такие как Catboost, работают.

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

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

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


[правка]

Стандартный способ представить набор был бы one-hot-кодирование. Это осуществимо даже с 2000 признаками, при условии, что в данных достаточно примеров. В этом базовом варианте вы, безусловно, могли бы сократить количество признаков, удалив фильмы, которые никогда/редко предлагаются или никогда/редко выбираются. Вряд ли это даст хороший результат, потому что если есть нет никаких или мало случаев, когда фильм предлагается/выбирается, тогда модель не может использовать эту информацию (либо, если и может, это приведет к переобучению).

Я мог бы подумать о паре альтернативных подходов:

  • Применить кластеризацию к последовательностям фильмов как OHE (без целевой переменной), затем обучить модель для каждого кластера: таким образом, для каждой модели будет меньше признаков.

  • Просто ранжировать все фильмы в порядке предпочтения на основе того, как часто фильм выбирается. Учитывая, что нет пользовательских предпочтений, можно предположить, что существует полный порядок по фильмам:

  • первый предпочтительный фильм всегда выбирается, независимо от других предложенных фильмов

  • второй предпочтительный фильм всегда выбирается, если первый не предложен

  • $n^{th}$ предпочтительный фильм всегда выбирается, если другой более предпочтительный фильм не предложен

Чтобы предсказать выбранный фильм, просто выберите наивысший ранжированный среди предложенных 3-5.

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

Моделирование Супервизионной Рекомендательной Системы с Переменными Данные

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

Проблема Представления Данных

  1. Представление Рекомендаций:
    Первоначально можно рассмотреть представление наборов фильмов в формате векторов фиксированной длины. Например, рекомендуется использовать векторы размером 5, в которых место для менее чем 5 фильмов будет заполнено значением 0. Однако, проблема заключается в том, что порядок фильмов в векторе имеет значение. Для этого можно воспользоваться методом, в котором все возможные перестановки одного и того же набора будут рассматриваться как эквивалентные.

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

  2. Учет Пользовательских Предпочтений:
    В описании задачи отсутствует информация о предпочтениях конкретных пользователей, что значительно ограничивает возможности модели. Варианты, предложенные в обсуждении, например, основание на частотах выбора фильмов, действительно могут дать основную проекцию предпочтений на основе данных о населении, но не смогут учитывать уникальные предпочтения отдельных пользователей.

Выбор Алгоритмов

  1. На основе правил:
    Как упоминалось, алгоритмы, такие как CatBoost или LightGBM, хороши для категориальных данных и не требуют строгого кодирования признаков, как это необходимо для обычных деревьев решений. Они могут адаптироваться к структуре данных и выявлять сложные связи между предложенными фильмами и тем, что выбирает пользователь.

  2. Алгоритмы на основе последовательностей:
    Для более продвинутого решения можно рассмотреть алгоритмы, такие как Recurrent Neural Networks (RNN) или даже Transformers, которые способны учитывать порядок входящих данных и могут быть адаптированы для классической задачи рекомендации.

Обработка Данных и Построение Модели

  1. Предварительная Обработка:

    • Удалите фильмы, которые редко предлагаются или выбираются, чтобы уменьшить шум в данных.
    • Провести анализ частоты выбора фильмов, чтобы провести их ранжирование, исходя из частоты появления. В качестве шага можно использовать классификацию по упоминаемости — фильмы, которые чаще всего выбираются, следует помечать как более приоритетные.
  2. Кластеризация:
    Внедрение методов кластеризации, таких как K-Means или Hierarchical Clustering, может помочь в группировании похожих последовательностей предложений для дальнейшего обучения модели с уменьшенным числом признаков.

  3. Обучение Модели:
    Построив представление данных, можно обучить модель, руководствуясь частотами выбора фильмов в соответствующих контекстах. Обратите внимание на производительность модели и учитывайте возможность ее дообучения при добавлении новых данных о предпочтениях пользователей.

Заключение

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

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

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