作者:wszr12345597 | 来源:互联网 | 2023-07-08 10:40
用户对物品的评分矩阵×物品相似矩阵推荐列表构建物品相似度矩阵的时候可以通过计算两个物品的余弦相似度得出,于是需要构建每个物品在所有用户中的评分矩阵本例中,不采


用户对物品的评分矩阵 × 物品相似矩阵 = 推荐列表
构建物品相似度矩阵的时候可以通过计算两个物品的余弦相似度得出,于是需要构建每个物品在所有用户中的评分矩阵

本例中,不采用余弦相似度的方式计算物品与物品相似度
在MapReduce作业中,输入数据的格式是:用户,物品,评分

第一步、构建用于评分矩阵,表示如下:

第二步、构建物品相似度矩阵。这里采用的方法是:如果两个物品同时出现在某个用户的评分矩阵中,则计数加1,例如,101和102同时出现在A B E中,因此101和102的相似度计为3,依次类推得出整个相似度矩阵,这个矩阵是一个对称矩阵。这一步的输入是第一步的输出。
代码片段如下:

这样得出的结果类似于这样:

第三步、矩阵相乘。就是用第一步的输出矩阵乘以第二步的输出矩阵,这一步颇为复杂,需要将第二步的输出矩阵缓存起来

话不多说,上代码



