возможно, вы можете подумать, что на этот вопрос уже дан ответ, но я не нашел ничего полезного в inte rnet.
Я пытаюсь найти похожих пользователей набора данных фильмов, используя расстояние jaccard . У каждого пользователя есть идентификатор пользователя от 1 до 1000. Для каждого пользователя мы храним просмотренные им фильмы (movieId) и оставленный им рейтинг. movieId - целые числа от 1 до 100.000, а рейтинги - от 1 до 10. Если рейтинг равен 0, то мы предполагаем, что пользователь не смотрел этот конкретный mov ie.
Итак, наша плотная матрица должна выглядит следующим образом:
movie1 | movie2 | movie3 | movie4 | .... | movie100000
user1: 5 0 3 2 .... 0
user2: 0 0 1 4 .... 0
user3: 0 0 0 0 .... 1
..... .... .... .... .... .... ....
user1000: 0 2 0 0 .... 0
Обратите внимание, что, поскольку набор данных слишком велик, будет много нулей. Также эта матрица имеет размер 1000х100000. Это означает, что обычный ноутбук должен будет использовать много оперативной памяти, а алгоритм займет много времени только для построения плотной матрицы. Вот почему я пытаюсь избежать этого подхода. Производительность очень важна.
Есть ли способ обойти это?
Заранее спасибо.