Вопрос или проблема
Предположим, что есть 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 фильмов, необходимо создать модель супервизионной рекомендательной системы, которая будет предлагать пользователям до пяти фильмов, а также прогнозировать, какой из предложенных фильмов будет выбран в конечном итоге. Рассмотрим подходы к представлению данных и инструменты для создания такой системы.
Проблема Представления Данных
-
Представление Рекомендаций:
Первоначально можно рассмотреть представление наборов фильмов в формате векторов фиксированной длины. Например, рекомендуется использовать векторы размером 5, в которых место для менее чем 5 фильмов будет заполнено значением 0. Однако, проблема заключается в том, что порядок фильмов в векторе имеет значение. Для этого можно воспользоваться методом, в котором все возможные перестановки одного и того же набора будут рассматриваться как эквивалентные.В качестве примера можно использовать функцию хеширования или создать компактный вектор с комбинациями. Вместо представления каждого из фильмов как отдельного признака, можно создать категориальные признаки представляющие диапазоны предпочтений.
-
Учет Пользовательских Предпочтений:
В описании задачи отсутствует информация о предпочтениях конкретных пользователей, что значительно ограничивает возможности модели. Варианты, предложенные в обсуждении, например, основание на частотах выбора фильмов, действительно могут дать основную проекцию предпочтений на основе данных о населении, но не смогут учитывать уникальные предпочтения отдельных пользователей.
Выбор Алгоритмов
-
На основе правил:
Как упоминалось, алгоритмы, такие как CatBoost или LightGBM, хороши для категориальных данных и не требуют строгого кодирования признаков, как это необходимо для обычных деревьев решений. Они могут адаптироваться к структуре данных и выявлять сложные связи между предложенными фильмами и тем, что выбирает пользователь. -
Алгоритмы на основе последовательностей:
Для более продвинутого решения можно рассмотреть алгоритмы, такие как Recurrent Neural Networks (RNN) или даже Transformers, которые способны учитывать порядок входящих данных и могут быть адаптированы для классической задачи рекомендации.
Обработка Данных и Построение Модели
-
Предварительная Обработка:
- Удалите фильмы, которые редко предлагаются или выбираются, чтобы уменьшить шум в данных.
- Провести анализ частоты выбора фильмов, чтобы провести их ранжирование, исходя из частоты появления. В качестве шага можно использовать классификацию по упоминаемости — фильмы, которые чаще всего выбираются, следует помечать как более приоритетные.
-
Кластеризация:
Внедрение методов кластеризации, таких как K-Means или Hierarchical Clustering, может помочь в группировании похожих последовательностей предложений для дальнейшего обучения модели с уменьшенным числом признаков. -
Обучение Модели:
Построив представление данных, можно обучить модель, руководствуясь частотами выбора фильмов в соответствующих контекстах. Обратите внимание на производительность модели и учитывайте возможность ее дообучения при добавлении новых данных о предпочтениях пользователей.
Заключение
В конечном счете, предложенная модель рекомендательных систем может принести значительную пользу, если будет построена на правильной обработке данных и выбора алгоритмов. Основная цель заключается в правильном представлении наборов фильмов и анализе частоты выбора, что, в сочетании с алгоритмами машинного обучения, позволит сделать точные прогнозы по выбору фильмов и удовлетворить потребности пользователей. Обеспечение гибкости в обработке и анализе данных поможет модели адаптироваться к динамическим изменениям в предпочтениях пользователей.