У меня есть набор данных, содержащий 200 000 пользователей, 25000 наименований и 5 миллионов баллов. Я должен вычислить оценку подобия (используя либо косинус, либо корреляцию pearson) всех возможных пар пользователей. У меня есть код, написанный в C#, и когда я его запускаю, я получаю ошибку переполнения памяти. Я пробовал почти все решения (приложение x64, увеличенная память кучи и т. Д.). Конфигурация моего ПК (ядро-i7 3,4 ГГц, 12 ГБ DDR3, 2 ТБ HDD). Есть ли какой-либо ресурс, который может помочь мне выполнить эту задачу?Оценка схожести компьютеров для всех пар пользователей
ответ
... сказал, что я попытаюсь ответить на то, что вы на самом деле спросили. Вы не смогли предоставить свой код или сообщение об ошибке, поэтому я делаю снимок с реальной проблемой.
Число возможных пар N пользователей - N (N-1)/2; для больших значений N это эффективно N^2/2. Для пользователей 2E5 это выходит на 2E10 возможных пар: 20 миллиардов пар. Я бы сказал, что ваше минимальное хранилище - это идентификаторы пользователей по 32 бита, плюс 4 байта для измерения подобия. Это 12 байт на пару, что дает нам 240 ГБ памяти.
Вы не сказали ни слова о своем алгоритме, вашем подходе к данным или используемом вами языке. Если вы пытаетесь сделать все эти вычисления в ОЗУ, курс вы продуваете свой лимит памяти!
Вы находитесь в диапазоне «больших данных». Начните поиск с этих инструментов. Я не знаю ваших ресурсов для проекта, а рекомендации по инструментам находятся далеко за пределами StackOverflow.
Конечно, если вы будете осторожны с алгоритмом, вы сможете справиться с этим. Вы сохраняете только информацию о голых пользователях в памяти, возможно, рейтинги, введенные с помощью идентификатора пользователя. Когда вы вычисляете сходство, вы буферизируете его для записи на диск.
Есть ли еще обработка, которую вы должны выполнить после вычисления сходства, или задача завершена написанием файла? Если вам нужно сделать больше, вам, вероятно, понадобится набор инструментов больших данных с хорошей поддержкой ETL и возможностями доступа к данным, чтобы соответствовать всем фасеткам проекта, которые вы не описали.
- 1. Facebook Api: оценка для всех пользователей
- 2. Оценка спама для кампаний пользователей
- 3. Как перечислить всех пользователей AD и компьютеров AD вместе?
- 4. Добавление компьютеров в LogonWorkstation для списка пользователей
- 5. Оценка Tensorflow: Оценка всех изображений
- 6. Авторизовать пользователей на уровне компьютеров?
- 7. WIN32_Processor :: Is ProcessorId Unique для всех компьютеров
- 8. Составление списка всех пар
- 9. Наборы всех непересекающихся пар
- 10. Средняя оценка всех комментариев
- 11. Оценка объектов AWS S3 для Rails-пользователей
- 12. Parse Различная оценка пользователей для разных объектов
- 13. Создание объекта для записи пользователей Оценка
- 14. Создание тестов для тестирования всех пар
- 15. Пролог предикат для всех пар в списке?
- 16. Замок для карманных компьютеров для карманных компьютеров
- 17. Процент схожести анализ (Java)
- 18. Как получить список первичных пользователей компьютеров
- 19. Сетевая модель схожести документа
- 20. Всех комбинации нот для данного списка оценка
- 21. сумма значений xor всех пар
- 22. получение схожести в Solr
- 23. сравнения схожести Python
- 24. Алгоритм схожести текста
- 25. Расчет схожести в NSStrings
- 26. сопоставление схожести в python
- 27. Опубликовать проект для всех пользователей
- 28. Получить last_login для всех пользователей?
- 29. ASP.NET Кэширование для всех пользователей
- 30. Установить псевдонимы для всех пользователей