mapreduce简单实现基于物品的协同过滤算法
1 101 41 106 32 105 32 101 12 106 22 103 22 104 52 102 23 101 23 106 53 103 44 101 24 102 54 105 44 104 55 105 45 104 56 102 16 104 16 101 46 103 17 104 47 101 17 102 27 105 57 103 27 106 18 101 2
?第一个字段为用户id,第二个字段为商品id,第三个字段为评分。
1. 建立物品的同现矩阵
?101102103104105106101744434102443432103444323104443542105332442106423224?
2. 建立用户的评分矩阵
?
这里以用户4为例:
???????u4101210251030104510541060?
3.? 矩阵相乘
?
?101102103104105106????????u4101744434?1012102443432?1025103444323104443542?104?????? 5105332442?1054106423224?1060结果为:
?
?
下面用mapreduce程序来实现以上的算法。
1. 上传文件
将用户对物品的评分文件上传至hdfs下的/test/cf/moive.txt? 文件下。
2.? 编写mapreduce
该mr程序分为4步。
第一步:按用户分组,计算其对每个物品的评分
第二步:每2个物品一组,计算出现次数,建立同现矩阵
第三步:2个矩阵相乘
第四步:找出推荐的商品
?
编写mr:
第一步:将输入文件为/test/cf/moive.txt ,输出文件为 /test/cf/step1
?
第二步:将输入文件为/test/cf/step1 ,输出文件为 /test/cf/step2
?
第三步:将输入文件为/test/cf/step1和/test/cf/step2 ,输出文件为 /test/cf/step3
?
第四步:将输入文件为/test/cf/step3 ,输出文件为 /test/cf/step4
?