2

Я внедряю систему рекомендаций для фильма с реальными пользовательскими данными. Я планировал использовать метод совместной фильтрации. Тем не менее, такие методы обычно включают в себя огромную матрицу, в которой хранятся пользователи с их номинальными фильмами. Поскольку у меня более десяти тысяч фильмов и сотни тысяч пользователей. Невозможно создать такую ​​огромную разреженную матрицу. Интересно, как все реализуют совместную фильтрацию с таким большим количеством данных? Благодаря!Система рекомендаций с большим объемом данных

+0

В чем проблема с огромной * разреженной матрицей? это должно быть прекрасно. –

+0

Матрица настолько огромная, что я не могу ее создать в моем матлабе. Может ли это быть разрешено с помощью других языков? –

ответ

3

Я бы порекомендовал вам распределенные вычислительные системы, но, по-моему, по-прежнему имеет шкалу, с которой вы можете легко справиться с ней на одной машине.

Apache Mahout содержит библиотеку фильтров совместного использования вкуса, предназначенную для масштабирования на одной машине. Модель - что, 10M точек данных? - должен соответствовать памяти с здоровым размером кучи. Посмотрите на такие вещи, как GenericItemBasedRecommender и FileDataModel.

(погонщик также распределенные реализации на основе Hadoop, но я не думаю, что вам это нужно еще.)

Я автор этого, но с тех пор перешли к коммерциализации крупномасштабных рекомендателей, как Myrrix. Он также содержит автономную версию одиночной машины, которая является бесплатной и open source. Он также будет легко обрабатывать этот объем данных на одной машине. Например, это меньший набор данных, чем тот, который используется в this example. У Myrrix также есть распределенная реализация.

Есть и другие бывшие в употреблении реализации за пределами вышеуказанного, как GraphLab. Другие нераспределенные структуры также, вероятно, достаточно быстры, например, MyMediaLite.

Я бы предложил просто использовать один из них, или если вам действительно интересно, как это происходит, проверьте исходный код и посмотрите на представление данных.

0

Я не использовал матричную форму для хранения моих данных. Вместо этого я использую C++ и создаю некоторые структуры, такие как User, Rating, Item, которые содержат переменные и массивы, которые мне нужны. Это может увеличить сложность алгоритма, но он может эффективно экономить память.

Смежные вопросы