Я пытаюсь создать систему рекомендаций для совместной фильтрации, в которой я сравниваю пользователей и элементы в разреженной матрице данных.
Данные:
5.149.754 unique ids
7.827.435 unique items
Данные являются неявными, поэтому элементы нравятся пользователям, если они нажимают на них. Таким образом, данные равны либо 1
, либо 0
на элемент.
У меня проблемы с масштабируемостью. Я пытаюсь использовать Pandas
, NumPy
и SciPy
для построения разреженной матрицы пользовательских элементов, но я получаю ошибки (очевидно?):
Unstacked DataFrame is too big, causing int32 overflow
с Pandas Pivot
MemoryError
w / Numpy pivot_table
Даже с Pandas DataFrame
из 642736 строк с ID профиля и ItemIds я получаю эти ошибки. Можно разбить данные на категории по переменным, таким как age
и gender
.
В конечном итоге я пытаюсь рекомендовать элементы пользователям на основе как можно большего числа пользователей / элементов, но я не понимаю ограничений такой системы, поскольку у меня нет опыта работы с таким большим набором данных.
Как бы вы внедрили такую систему? Нужно ли разделять данные? Есть ли какая-нибудь библиотека / документация, которую я должен прочитать, прежде чем продолжить это?