计算所有用户对的相似性得分

时间:2015-10-26 02:16:37

标签: performance machine-learning similarity recommendation-engine

我的数据集包含200,000个用户,25000个项目和500万个评级。我必须计算所有可能的用户对的相似性得分(通过使用余弦或皮尔逊相关)。我有用c#编写的代码,当我运行它时,我得到内存溢出错误。我已经尝试了几乎所有的解决方案(x64应用程序,增加堆内存等)。我的PC配置是(core-i7 3.4 GHz,12 GB DDR3,2TB HDD)。 有没有资源可以帮助我完成这项任务?

1 个答案:

答案 0 :(得分:0)

......那就是说,我会试着回答你实际问的问题。您未能提供您的代码或错误消息,因此我正在解决实际问题。

N个用户的可能对数是N(N-1)/ 2;对于大的N值,这实际上是N ^ 2 / 2.对于2E5用户,这可能是2E10对可能的对:200亿对。我说你的最小存储空间是每个32位的用户ID,加上4个字节用于相似性度量。每对12个字节,给我们240Gb的内存。

您还没有对您的算法,数据方法或您正在使用的语言说过一句话。如果您正在尝试在RAM中进行所有这些计算,当然,那么您的内存限制就会大大增加!

您已经进入了大数据"范围内。使用这些工具开始搜索。我不知道您的项目资源,工具建议远远超出StackOverflow的范围。

当然,如果您对算法非常小心,那么您将能够处理这个问题。您只保留内存中的裸用户信息,可能是用户ID键入的评级。计算相似度时,将其缓冲以写入磁盘。

计算相似度后是否需要进行更多处理,或者通过编写文件完成任务?如果您需要做更多工作,您可能需要一个具有良好ETL支持和数据访问功能的大数据工具集,以适应您尚未描述的所有项目方面。

相关问题