基于用户的协同过滤算法-适宜于分布式处理的用户相似度计算
做过推荐系统的人估计都会懂得下面公式中基本元素的含义,这里就不多做解释了,这个算法是我在一个项目中开发的,原本该算法是一个并行处理的算法,为了阐述算法的本质,我把它凝练成下面的代码段,重点在于阐述原理。
用户相似度矩阵的计算原理
N(u): 用户u操作过的物品集合
N(i) : 对物品i有过操作的用户集合
Wuv : 用户u,v的相似度
存储模型
Ø使用mongoDB作为数据存储模型,这是因为mongoDB作为非关系数据库在存储嵌套文档时具有更高的效率。
ØmongoDB将数据缓存在内存中,只当必要时才会将数据写入外存,但是对开发者来说其屏蔽了内外存交互的细节。
实验时我用了8台pc机,在其中四台上搭建了一个mongoDB集群,另外四台用于做并发系统,测试数据集是MovieLens,其中用户数量为70000,项目数量为10681,用户行为为1000万。
pc机的配置为
程序运行完毕用时2.1h。