Избегайте создания плотной матрицы на большом наборе данных в Python - PullRequest
0 голосов
/ 23 марта 2020

возможно, вы можете подумать, что на этот вопрос уже дан ответ, но я не нашел ничего полезного в 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. Это означает, что обычный ноутбук должен будет использовать много оперативной памяти, а алгоритм займет много времени только для построения плотной матрицы. Вот почему я пытаюсь избежать этого подхода. Производительность очень важна.

Есть ли способ обойти это?

Заранее спасибо.

...