zoukankan      html  css  js  c++  java
  • 基于物品的协同过滤(二)

    MapReduce实现基于物品的协同过滤:

    实现过程中需要执行多个mapreduce任务。

    初始数据:

    u1,i101,5.0
    u1,i102,3.0
    u1,i103,2.5
    u2,i101,2.0
    u2,i102,2.5
    u2,i103,5.0
    u2,i104,2.0
    u3,i101,2.0
    u3,i104,4.0
    u3,i105,4.5
    u3,i107,5.0
    u4,i101,5.0
    u4,i103,3.0
    u4,i104,4.5
    u4,i106,4.0
    u5,i101,4.0
    u5,i102,3.0
    u5,i103,2.0
    u5,i104,4.0
    u5,i105,3.5
    u5,i106,4.0

    job1: 生成用户对物品喜爱度矩阵

    数据:初始数据

    map:

    key=userid

    value=item:grade

    reduce:

    key=userid

    value=item:grade,item:grade

    结果:

    u1 i101:5.0,i102:3.0,i103:2.5
    u2 i101:2.0,i102:2.5,i103:5.0,i104:2.0
    u3 i107:5.0,i105:4.5,i104:4.0,i101:2.0
    u4 i106:4.0,i103:3.0,i101:5.0,i104:4.5
    u5 i104:4.0,i105:3.5,i106:4.0,i101:4.0,i102:3.0,i103:2.0

    job2: 生成物品与物品的同现矩阵

    数据:job1的结果数据

    map:

    例,将i101 ,i102 ,i103 循环组合

    key=item:item

    value=1

    reduce:

    key=item:item

    value=n

    结果:

    i101:i104 4
    i101:i105 2
    i101:i106 2
    i101:i107 1
    i102:i101 3
    i102:i102 3
    i102:i103 3
    i102:i104 2
    i102:i105 1
    i102:i106 1
    i103:i101 4
    i103:i102 3
    i103:i103 4
    i103:i104 3
    i103:i105 1
    i103:i106 2
    i104:i101 4
    i104:i102 2
    i104:i103 3
    i104:i104 4
    i104:i105 2
    i104:i106 2
    i104:i107 1
    i105:i101 2
    i105:i102 1
    i105:i103 1
    i105:i104 2
    i105:i105 2
    i105:i106 1
    i105:i107 1
    i106:i101 2
    i106:i102 1
    i106:i103 2
    i106:i104 2
    i106:i105 1
    i106:i106 2
    i107:i101 1
    i107:i104 1
    i107:i105 1
    i107:i107 1

    job3:将同现矩阵和用户喜爱度矩阵进行相乘

    数据:job1和job2的输出数据

    map:

    区分不同的数据进行处理,根据文件目录进行区分

    FileSplit split = (FileSplit)context.getInputSplit();
    dirName = split.getPath().getParent().getName();

    job1的数据经过map处理:

    i101 B:u1,5.0
    i102 B:u1,3.0
    i103 B:u1,2.5

    job2的数据经过map处理:

    i101 A:i101,5

    key=item

    value=B:u1,5.0或A:i101,5

    reduce:

    针对同一个item的数据,A的数据,分别和B的数据进行相乘

    key=user

    value=item,score

    u2      i105,4.0

    结果:

    u2 i105,4.0
    u1 i105,10.0
    u4 i105,10.0
    u3 i105,4.0
    u5 i105,8.0
    u2 i104,8.0
    u1 i104,20.0
    u4 i104,20.0
    u3 i104,8.0
    u5 i104,16.0
    u2 i107,2.0
    u1 i107,5.0
    u4 i107,5.0
    u3 i107,2.0
    u5 i107,4.0
    u2 i106,4.0
    u1 i106,10.0
    u4 i106,10.0
    u3 i106,4.0
    u5 i106,8.0
    u2 i101,10.0
    u1 i101,25.0
    u4 i101,25.0
    u3 i101,10.0
    u5 i101,20.0
    u2 i103,8.0
    u1 i103,20.0
    u4 i103,20.0
    u3 i103,8.0
    u5 i103,16.0
    u2 i102,6.0
    u1 i102,15.0
    u4 i102,15.0
    u3 i102,6.0
    u5 i102,12.0
    u2 i105,2.5
    u1 i105,3.0
    u5 i105,3.0
    u2 i104,5.0
    u1 i104,6.0
    u5 i104,6.0
    u2 i106,2.5
    u1 i106,3.0
    u5 i106,3.0
    u2 i101,7.5
    u1 i101,9.0
    u5 i101,9.0
    u2 i103,7.5
    u1 i103,9.0
    u5 i103,9.0
    u2 i102,7.5
    u1 i102,9.0
    u5 i102,9.0
    u2 i105,5.0
    u1 i105,2.5
    u4 i105,3.0
    u5 i105,2.0
    u2 i104,15.0
    u1 i104,7.5
    u4 i104,9.0
    u5 i104,6.0
    u2 i106,10.0
    u1 i106,5.0
    u4 i106,6.0
    u5 i106,4.0
    u2 i101,20.0
    u1 i101,10.0
    u4 i101,12.0
    u5 i101,8.0
    u2 i103,20.0
    u1 i103,10.0
    u4 i103,12.0
    u5 i103,8.0
    u2 i102,15.0
    u1 i102,7.5
    u4 i102,9.0
    u5 i102,6.0
    u2 i105,4.0
    u4 i105,9.0
    u3 i105,8.0
    u5 i105,8.0
    u2 i104,8.0
    u4 i104,18.0
    u3 i104,16.0
    u5 i104,16.0
    u2 i107,2.0
    u4 i107,4.5
    u3 i107,4.0
    u5 i107,4.0
    u2 i106,4.0
    u4 i106,9.0
    u3 i106,8.0
    u5 i106,8.0
    u2 i101,8.0
    u4 i101,18.0
    u3 i101,16.0
    u5 i101,16.0
    u2 i103,6.0
    u4 i103,13.5
    u3 i103,12.0
    u5 i103,12.0
    u2 i102,4.0
    u4 i102,9.0
    u3 i102,8.0
    u5 i102,8.0
    u3 i105,9.0
    u5 i105,7.0
    u3 i104,9.0
    u5 i104,7.0
    u3 i107,4.5
    u5 i107,3.5
    u3 i106,4.5
    u5 i106,3.5
    u3 i101,9.0
    u5 i101,7.0
    u3 i103,4.5
    u5 i103,3.5
    u3 i102,4.5
    u5 i102,3.5
    u4 i105,4.0
    u5 i105,4.0
    u4 i104,8.0
    u5 i104,8.0
    u4 i106,8.0
    u5 i106,8.0
    u4 i101,8.0
    u5 i101,8.0
    u4 i103,8.0
    u5 i103,8.0
    u4 i102,4.0
    u5 i102,4.0
    u3 i105,5.0
    u3 i104,5.0
    u3 i107,5.0
    u3 i101,5.0

    Job4: 矩阵乘法求和

    map:

    不做特殊处理

    key:user

    value:item,score

    reduce:

    将相同的user及item的score的值进行相加。

    key:user  

    value:item,score

    结果:

    u1 i105:15.5
    u1 i104:33.5
    u1 i107:5.0
    u1 i106:18.0
    u1 i101:44.0
    u1 i103:39.0
    u1 i102:31.5
    u2 i105:15.5
    u2 i104:36.0
    u2 i107:4.0
    u2 i106:20.5
    u2 i101:45.5
    u2 i103:41.5
    u2 i102:32.5
    u3 i105:26.0
    u3 i104:38.0
    u3 i107:15.5
    u3 i106:16.5
    u3 i101:40.0
    u3 i103:24.5
    u3 i102:18.5
    u4 i105:26.0
    u4 i104:55.0
    u4 i107:9.5
    u4 i106:33.0
    u4 i101:63.0
    u4 i103:53.5
    u4 i102:37.0
    u5 i105:32.0
    u5 i104:59.0
    u5 i107:11.5
    u5 i106:34.5
    u5 i101:68.0
    u5 i103:56.5
    u5 i102:42.5

    此结果为用户对各个物品的喜爱度。

  • 相关阅读:
    2017-2018-2 20155228 《网络对抗技术》 实验八:Web基础
    2017-2018-2 20155228 《网络对抗技术》 实验七:网络欺诈防范
    2017-2018-2 20155228 《网络对抗技术》 实验六:信息搜集与漏洞扫描
    2017-2018-2 20155228 《网络对抗技术》 实验五:MSF基础应用
    2017-2018-2 20155228 《网络对抗技术》 实验四:恶意代码分析
    2017-2018-2 20155228 《网络对抗技术》 实验三:MAL_免杀原理与实践
    2017-2018-2 20155228 《网络对抗技术》 实验二:后门原理与实践
    2017-2018-2 20155228 《网络对抗技术》 实验一:PC平台逆向破解
    2017-2018 Exp9 网络欺诈技术防范 20155214
    2017-2018 Exp8 Web基础 20155214
  • 原文地址:https://www.cnblogs.com/one--way/p/5654232.html
Copyright © 2011-2022 走看看