Как я могу гарантировать, что все пользователи и все элементы появятся в обучающем наборе моей рекомендательной системы?

#python #training-data #recommender-systems #test-data

Вопрос:

Я создаю рекомендательную систему на Python, используя набор данных MovieLens (https://grouplens.org/datasets/movielens/latest/). Для того, чтобы моя система работала правильно, мне нужно, чтобы все пользователи и все элементы отображались в учебном наборе. Однако я еще не нашел способа сделать это. Я попытался использовать sklearn.model_selection.train_test_split раздел набора данных, относящийся к каждому пользователю, а затем объединил результаты, тем самым добившись успеха в создании обучающих и тестовых наборов данных, содержащих по крайней мере один рейтинг, присвоенный каждым пользователем. Что мне сейчас нужно, так это найти способ создания обучающих и тестовых наборов данных, которые также содержат по крайней мере один рейтинг для каждого фильма.

Ответ №1:

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

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

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