У меня есть список многих пользователей (более 10 миллионов), каждый из которых представлен идентификатором пользователя, а затем 10 чисел с плавающей запятой, указывающих их предпочтения. Я хотел бы эффективно вычислить матрицу подобия пользователя, используя подобие косинуса на основе mapreduce. Однако, поскольку значения являются числами с плавающей запятой, трудно определить ключ в структуре mapreduce. Какие-либо предложения?mapreduce способ вычисления матрицы подобия пользователя
ответ
Я думаю, что самым простым решением будет Mahout библиотека. В Mahout есть несколько сокращений мажоритарных сокращений, которые могут работать в вашем случае использования.
Первый - это Mahath's ItemSimilarityJob
, который является частью его системных библиотек рекомендаций. Конкретную информацию для этой работы можно найти here. Вам просто нужно предоставить входные данные в требуемом формате и выбрать VectorSimilarityMeasure
(что для вашего случая будет SIMILARITY_COSINE) вместе с любыми дополнительными оптимизациями. Поскольку вы рассчитываете рассчитать подобие пользователя и пользователя на основе вектора предпочтений десяти значений с плавающей запятой, то вы можете назначить простой 1-к-10 числовой хеш для индексов вектора и создать простой .csv-файл vectorIndex, userID, decimalValue как ввод задания задания сходства Mahout (идентификатор пользователя - числовое значение Int или Long). Результатом вывода должен быть текстовый файл с разделителями, разделенный вкладкой userID, userID, сходство.
Во втором решении может быть RowSimilarityJob
Mahout, включенном в его математическую библиотеку. Я никогда не использовал его сам, но некоторую информацию можно найти here и в этом previous stackoverflow thread. Вместо ввода .csv в качестве входных данных вам необходимо будет перевести ваши входные данные как DistributedRowMatrix
, а идентификаторы пользователей - это строки матрицы. Результат, я считаю, также будет файлом последовательности DistributedRowMatrix
, содержащим данные о сходстве пользователя и пользователя, которые вы ищете.
Я полагаю, какое решение лучше зависит от того, какой формат ввода/вывода вы предпочитаете. Всего наилучшего.
- 1. вычисления матрицы подобия со смешанными данными
- 2. Самый эффективный способ построения матрицы подобия
- 3. Эффективная кластеризация матрицы подобия
- 4. Правильный способ вычисления нормальной матрицы?
- 5. Вывод матрицы подобия элемента в mahout
- 6. Эффективный способ вычисления процента подобия между наборами данных
- 7. Самый эффективный способ вычисления подобия по высокоразмерным данным
- 8. создать косинус подобия матрицы NumPy
- 9. Правильный способ вычисления косинусной подобия двух словарно-словари в python?
- 10. Ускоренный способ вычисления матрицы расстояния с numpy?
- 11. Быстрый способ вычисления матрицы ядра, python
- 12. Лучший способ вычисления половины симметричной матрицы numpy?
- 13. Ограничить вычисления подобия gensim подмножеству корпуса
- 14. Как создать данные из матрицы подобия?
- 15. Сложность вычисления подобия между двумя последовательностями
- 16. Dendrogram через scipy с учетом матрицы подобия
- 17. Каков самый быстрый способ в Python для вычисления подобия косинуса с учетом разреженных матричных данных?
- 18. Ускорение вычисления матрицы
- 19. Улучшение вычисления матрицы 5D
- 20. Смещение матрицы ядра/подобия в matlab
- 21. Biopython для матрицы подобия - ищет лучшую производительность
- 22. MapReduce код для XX 'матрицы
- 23. косинус подобия для пользователя базы collabrative системы
- 24. Ошибка вычисления матрицы
- 25. Оптимизация вычисления матрицы смежности
- 26. Эффективный алгоритм вычисления матрицы
- 27. Ускорить вычисления разреженной матрицы
- 28. вычисление матрицы с использованием hadoop mapreduce
- 29. Ошибка вычисления матрицы определитель матрицы в MATLAB
- 30. MapReduce MongoDB Агент пользователя